Kubernetes の readiness プローブを構成する(省略可)

このページでは、 Google Cloud ヘルスチェック インフラストラクチャで Cloud Service Mesh を使用して Kubernetes プローブと readiness ゲートを構成する方法について説明します。

前提条件

このガイドは、以下がすでに行われていることを前提としています。

CSM を使用した透過的ヘルスチェック

Cloud Service Mesh Gateway API で、透過的ヘルスチェックが提供されるようになりました。これは、Kubernetes の readiness ステータス データと統合されたユニバーサル ヘルスチェックで、準備完了とマークされた Pod へのトラフィック フローを有効にします。この機能は、HTTP サービスと gRPC サービスの両方で使用できます。

Cloud Service Mesh は、Kubernetes Pod のステータスを Google ヘルスチェック インフラストラクチャに直接公開します。そのため、Pod の readinessProbe に使用しているのと同じ構成が Google ロード バランシング ヘルスチェック インフラストラクチャに透過的に渡され、ヘルスチェックの状態が readiness プローブの状態と調整されます。これは、Transparent Health Checker というコンポーネントを使用して行われます。このコンポーネントは、Pod のヘルス ステータスを提供するすべてのノードで実行されます。

Cloud Service Mesh は、ヘルスチェック インフラストラクチャのソース範囲から送信されるヘルスチェック トラフィックを、予約済みポート(7877)に送信するように構成します。このトラフィックは、ノード上のローカルで透過的ヘルスチェック サーバーにリダイレクトされます。サーバーは、Kubernetes Pod readiness の現在の状態に一致するヘルス ステータスを返します。Kubernetes Pod へのトラフィック フローは、各 Pod に設定された Ready ステータスに基づいて制御されます。必要に応じて、readiness プローブと readiness ゲートの値で「Ready」ステータスを制御できます。透過的ヘルスチェックは、すべての Kubernetes 条件の論理演算子 AND に基づいてステータスを報告します。

Kubernetes プローブ、readiness ゲート、およびその他のチェックを構成して、Kubernetes Pod の readiness ステータスに影響を与えることができます。

HTTP サービスの readiness プローブを構成する(省略可)

必要に応じて、このセクションを whereami サービスの Deployment の HTTP サービスの設定に追加できます。

...
spec:
      containers:
      - name: whereami
        image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1
        ports:
        - containerPort: 8080
        readinessProbe:
          initialDelaySeconds: 1
          periodSeconds: 2
          timeoutSeconds: 1
          successThreshold: 1
          failureThreshold: 1
          httpGet:
            host:
            scheme: HTTP
            path: /
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5

gRPC サービスの readiness プローブを構成する(省略可)

必要に応じて、このセクションを psm-grpc-server の Deployment の gRPC サービスの設定に追加できます。

...
spec:
      containers:
      - name: psm-grpc-server
        image: ${IMAGE_NAME}
        imagePullPolicy: Always
        args:
          ${ARGS}
        ports:
          - containerPort: 50051
        readinessProbe:
          initialDelaySeconds: 1
          periodSeconds: 2
          timeoutSeconds: 1
          successThreshold: 1
          failureThreshold: 1
          grpc:
            port: 50051