第5章 アプリケーションの OpenShift 4 への移行

5.1. OpenShift 4 の Liveness および Readiness プローブ設定の更新

プローブの YAML 設定は、OpenShift 4 に移行する際に調整される必要があります。

OpenShift 3.11 では、Liveness プローブのデフォルト YAML 設定は以下のコードの例に似ています。

OpenShift 3.11 liveness プローブの YAML 設定サンプル

livenessProbe:
        exec:
          command:
            - /bin/bash
            - '-c'
            - /opt/eap/bin/livenessProbe.sh
        initialDelaySeconds: 60
        periodSeconds: 10
        successThreshold: 1
        failureThreshold: 3

この例では、Liveness プローブは JBoss EAP イメージ内の /opt/eap/bin/livenessProbe.sh にあります。プローブは、60 秒の最初の遅延後にトリガーされ、JBoss EAP サーバーで Pod が開始された後は 10 秒ごとにトリガーされます。

プローブは、livenessProbe.sh スクリプトの呼び出し試行が 3 回行われると失敗とみなされます。コンテナーは正常ではないとみなされ、OpenShift はそれぞれの Pod で JBoss EAP コンテナーを再起動します。

OpenShift 3.11 では、成功または失敗が決まるまで、1 回の呼び出しが 5 秒間続きます。OpenShift 4 では、1 回の呼び出しが 1 秒未満になります。

OpenShift 3.11 では、プローブの呼び出しが 5 秒間続き、10 秒間待機します。つまり、JBoss EAP イメージが正常ではない場合、Pod 内のコンテナーが再起動するまで、3 回にわたる呼び出しが約 35 秒間続きます。

OpenShift 4、3 では、呼び出しが 23 秒間続きます。OpenShift 4 のプローブの設定は、以下のように YAML 設定で調整する必要があります。

OpenShift 4 liveness プローブの YAML 設定サンプル

livenessProbe:
        exec:
          command:
            - /bin/bash
            - '-c'
            - /opt/eap/bin/livenessProbe.sh
        initialDelaySeconds: 60
        periodSeconds: 16
        successThreshold: 1
        failureThreshold: 3

この例では、periodSeconds が 6 秒分増えています。これにより、最初の呼び出しが 1 秒続き、16 秒間にわたり待機します。3 回の呼び出しは、プローブの OpenShift 3.11 の動作とほぼ同等で 約 34 秒続きます。

Readiness プローブの場合、同様の調整を YAML 設定に対して行う必要があります。

OpenShift 4 Readiness プローブの YAML 設定サンプル

readinessProbe:
        exec:
          command:
            - /bin/bash
            - '-c'
            - /opt/eap/bin/readinessProbe.sh
        initialDelaySeconds: 10
        periodSeconds: 16
        successThreshold: 1
        failureThreshold: 3