TimesTenコンテナの準備プローブについて

Kubernetesの準備状況プローブを使用すると、Kubernetesは特定のアプリケーションが準備完了であるかどうかを確認できます。たとえば、アプリケーションの起動時に、長い起動プロシージャを実行する必要があるとします。アプリケーションがKubernetesによって起動された場合、すぐに準備はできていません。起動プロシージャが完了するまで、リクエストまたはワークロードを処理できません。

TimesTen Kubernetesオペレータ(TimesTenオペレータ)は、準備状況という用語の2つの異なる定義に対して2つの準備状況プローブを提供します。TimesTenコンテナがこれらの様々な状況でKubernetesへの準備が整っているかどうかを判断するために、TimesTenオペレータはTimesTenコンテナ内の2つのファイルを作成および管理します。これらのファイルの1つ以上が存在するかどうかは、そのコンテナ内のTimesTenの準備ができているかどうかを示します。

これら2つの定義と、各定義に適用可能な特定のTimesTen準備状況プローブ・ファイルを見てみましょう。定義を確認したら、これらの定義のいずれかがユーザーの状況に適用可能であり、ユーザーの役に立つかどうかを選択します。これらの定義のいずれか1つのみを選択できます。

  • 最初の定義では、TimesTen ClassicデータベースとTimesTen Scaleoutデータベースの両方に対する準備状況を定義します。TimesTen Classicアクティブ・スタンバイ・ペアでは、アクティブ・データベースを提供するttコンテナは準備完了とみなされます。TimesTen Scaleoutでは、要素が稼働中で使用可能であるすべてのインスタンスが準備完了とみなされます。

    この準備の定義のために、TimesTenオペレータは、TimesTenコンテナのファイル・システムにある/tmp/activeファイルを作成および管理します。このファイルがコンテナに存在する場合、コンテナは準備完了です。それ以外の場合、コンテナの準備ができていません。

  • 2番目の定義では、TimesTen Classicデータベース専用の準備状況を定義します。TimesTen Classicでは、TimesTenオペレータによって作成され、ポッドのttコンテナで実行されているTimesTenインスタンスは、そのポッド内のデータベースがロードされ、レプリケーションが構成され、データベースが完全に機能するアクティブまたは完全に機能するスタンバイである場合、準備完了です。停止しているデータベース、または作成中や複製中のデータベースは準備完了ではありません。

    この準備の定義のために、TimesTenオペレータは、TimesTenコンテナのファイル・システムにある/tmp/readinessファイルを作成および管理します。ファイルがコンテナに存在する場合は、コンテナはKubernetesへの準備ができています。それ以外の場合、コンテナの準備ができていません。

TimesTen準備状況プローブの使用を示すコード・スニペットを次に示します。sample TimesTenClassicオブジェクト定義には、TimesTen準備状況プローブが含まれます。Kubernetesは、10秒ごとにttコンテナでcatコマンドを実行します。コマンドがリターン・コード0で終了すると、コンテナは準備ができています。コマンドが他の値を返すと、コンテナは準備ができていません。
apiVersion: timesten.oracle.com/v1
kind: TimesTenClassic
metadata:
  name: sample
spec:
  ttspec:
…
  template:
    spec:
…
      containers:
      - name: tt
        readinessProbe:
          exec: 
            command:
            - cat
            - /tmp/readiness
          failureThreshold: 1
          periodSeconds: 10
          successThreshold: 1

これらのレディネス・プローブについて詳しく説明します。特定のユースケースを見てみましょう。