/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/
を参照してください。