Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

8.2. ヘルスチェックの設定

ヘルスチェックを設定するには、必要とされるチェックの種類ごとに Pod を作成します。

手順

ヘルスチェックを作成するには、以下の手順を実行します。

  1. liveness コンテナー実行チェックを作成します。

    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
      liveness チェックと liveness チェックのタイプを指定します。
      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 パラメーターは、コンテナー実行チェックの readiness および liveness プローブには影響を与えません。OpenShift Container Platform はコンテナーへの実行呼び出しでタイムアウトにならないため、タイムアウトをプローブ自体に実装できます。プローブでタイムアウトを実装する 1 つの方法として、timeout パラメーターを使用して liveness プローブおよび readiness プローブを実行できます。

      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. liveness 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
      liveness ヘルスチェックと liveness チェックのタイプを指定します。
      4
      コンテナーが起動してから最初のプローブが実行されるまでの秒数を指定します。
      5
      プローブ間の秒数を指定します。
    2. チェックを作成します。

      $ oc create -f <file-name>.yaml
  3. readiness 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
      liveness プローブに使用するイメージを指定します。
      2
      readiness ヘルスチェックと readiness チェックのタイプを指定します。
      3
      ホストの IP アドレスを指定します。host が定義されていない場合は、PodIP が使用されます。
      4
      HTTP または HTTPS を指定します。scheme が定義されていない場合は、HTTP スキームが使用されます。
      5
      コンテナーが起動してから最初のプローブが実行されるまでの秒数を指定します。
      6
      プローブ間の秒数を指定します。
    2. チェックを作成します。

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