6.2. 配置健康检查

若要配置健康检查,请为您需要的每一种检查创建一个 pod。

流程

创建健康检查:

  1. 创建存活度容器执行检查:

    1. 创建一个类似以下示例的 YAML 文件:

      apiVersion: v1
      kind: Pod
      metadata:
        labels:
          test: liveness
        name: liveness-exec
      spec:
        containers:
        - args:
          image: k8s.gcr.io/liveness
          livenessProbe:
            exec:  1
              command: 2
              - cat
              - /tmp/health
            initialDelaySeconds: 15 3
      ...
      1
      指定存活度检查以及存活度检查的类型。
      2
      指定要在容器中使用的命令。
      3
      指定容器启动后执行第一个探测前的秒数。
    2. 验证健康检查 pod 的状态:

      $ oc describe pod liveness-exec
      
      Events:
        Type    Reason     Age   From                                  Message
        ----    ------     ----  ----                                  -------
        Normal  Scheduled  9s    default-scheduler                     Successfully assigned openshift-logging/liveness-exec to ip-10-0-143-40.ec2.internal
        Normal  Pulling    2s    kubelet, ip-10-0-143-40.ec2.internal  pulling image "k8s.gcr.io/liveness"
        Normal  Pulled     1s    kubelet, ip-10-0-143-40.ec2.internal  Successfully pulled image "k8s.gcr.io/liveness"
        Normal  Created    1s    kubelet, ip-10-0-143-40.ec2.internal  Created container
        Normal  Started    1s    kubelet, ip-10-0-143-40.ec2.internal  Started container
      注意

      timeoutSeconds 参数不影响容器执行检查的就绪度和存活度探测。您可以在探测本身中使用超时机制,因为 OpenShift Container Platform 无法对进入容器的 exec 调用执行超时。在探测中实施超时的一种方法是使用 timeout 参数来运行存活度或就绪度探测:

      spec:
        containers:
          livenessProbe:
            exec:
              command:
                - /bin/bash
                - '-c'
                - timeout 60 /opt/eap/bin/livenessProbe.sh 1
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
      1
      超时值和探测脚本路径。
    3. 创建检查:

      $ oc create -f <file-name>.yaml
  2. 创建存活度 TCP 套接字检查:

    1. 创建一个类似以下示例的 YAML 文件:

      apiVersion: v1
      kind: Pod
      metadata:
        labels:
          test: liveness
        name: liveness-tcp
      spec:
        containers:
        - name: contaier1 1
          image: k8s.gcr.io/liveness
          ports:
          - containerPort: 8080 2
          livenessProbe:  3
            tcpSocket:
              port: 8080
            initialDelaySeconds: 15 4
            timeoutSeconds: 1  5
      1 2
      指定检查要连接到的容器名称和端口。
      3
      指定存活度健康检查以及存活度检查的类型。
      4
      指定容器启动后执行第一个探测前的秒数。
      5
      指定探测之间的秒数。
    2. 创建检查:

      $ oc create -f <file-name>.yaml
  3. 创建就绪度 HTTP 检查:

    1. 创建一个类似以下示例的 YAML 文件:

      apiVersion: v1
      kind: Pod
      metadata:
        labels:
          test: readiness
        name: readiness-http
      spec:
        containers:
        - args:
          image: k8s.gcr.io/readiness 1
          readinessProbe: 2
          httpGet:
          # host: my-host 3
          # scheme: HTTPS 4
            path: /healthz
            port: 8080
          initialDelaySeconds: 15  5
          timeoutSeconds: 1  6
      1
      指定用于存活度探测的镜像。
      2
      指定就绪度健康检查以及就绪度检查的类型。
      3
      指定主机 IP 地址。如果未定义 host,则使用 PodIP
      4
      指定 HTTPHTTPS。如果未定义 scheme,则使用 HTTP 方案。
      5
      指定容器启动后执行第一个探测前的秒数。
      6
      指定探测之间的秒数。
    2. 创建检查:

      $ oc create -f <file-name>.yaml

为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。