/tmp/readiness準備プローブについて

この項では、接続用にロードおよびオープンされるTimesTenデータベースを提供するttコンテナがreadyとみなされる、readyの定義について説明します。

TimesTenオペレータは、ttコンテナのファイル・システムに/tmp/readinessというファイルを作成して管理し、コンテナの準備ができているかどうかを判断します。/tmp/readinessファイルが存在する場合、ttコンテナは準備完了とみなされます。ファイルが存在しない場合、ttコンテナは準備ができていないとみなされます。

TimesTenオペレータは、readyのこの定義に対する/tmp/readiness準備プローブを提供および定義します。定義はYAML形式であり、次のようになります:

readinessProbe:
 exec:
   command: 
   - cat
   - /tmp/readiness
 failureThreshold: 1
 periodSeconds: 10
 successThreshold: 1

この例では、Kubernetesは10秒ごとにttコンテナでcatコマンドを実行します。コマンドがリターン・コード0で終了すると、コンテナは準備ができています。コマンドが他の値を返すと、コンテナは準備ができていません。

この準備プローブは、Kubernetesクラスタ内の1つ以上のノードを置き換える場合に便利です。この場合、Kubernetesにノードからワークロードをdrainさせることができます。これにより、Kubernetesは、そのノードで実行されているポッドを削除し、クラスタ内の他のノードで新しいポッドを作成してそれを置き換えます。Kubernetesは、アプリケーションの予算を指定できるポッド停止状態予算をサポートしています。この予算は、特定のデプロイメントで許容される削除済のポッドの数をKubernetesに通知します。たとえば、アプリケーションのレプリカが20個あるデプロイメントを構成するとします。一度に停止しているレプリカを最大5つまで許容するようにKubernetesに通知できます。ワークロードをあるノードから別のノードに移動する際、Kubernetesは一度に5つを超えるレプリカを削除しないように注意し、置き換えの準備ができるのを待ってからさらに削除します。

TimesTenオペレータの場合、/tmp/readiness準備状況プローブを使用して、Kubernetesノードを排出しながら、Kubernetesがアクティブおよびスタンバイの両方のTimesTen Classicデータベースを同時に終了しないようにできます。

TimesTenで1のポッドの中断予算を使用すると、TimesTen全体が停止することなく、1つ以上のノードからワークロードを排出できます。KubernetesがTimesTen ClassicでTimesTenを実行しているポッドを削除する場合、Kubernetesはポッドにアクティブ・データベースまたはスタンバイ・データベースが含まれているかどうかを認識しません。したがって、アクティブ・データベースを含むポッドの削除を選択する場合があります。これによりスタンバイへのフェイルオーバーが発生し、通常時間中に実行されるとアプリケーションが中断されます。これを防ぐ方法はありません。ただし、Kubernetesは、削除されたデータベースが再起動して完全にHealthy状態になるまで、他のデータベースの削除を続行しません。

ポッドの正常性およびHealthy状態の詳細は、「TimesTenポッドの高レベル状態について」を参照してください。

Kubernetesポッドの中断予算の詳細は、https://kubernetes.io/docs/concepts/workloads/pods/disruptions/およびhttps://kubernetes.io/docs/tasks/run-application/configure-pdb/を参照してください。