すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:Knative でのポートプロービングの設定

最終更新日:Dec 28, 2024

liveness probe または readiness probe を設定して、クラウドネイティブアプリケーション、マイクロサービスアプリケーション、またはコンテナ化アプリケーションの正常性状態をプローブできます。これにより、アプリケーションが正常でトラフィックを受信する準備ができていることを確認できます。オープンソースの Kubernetes のプロービングポリシーと比較して、Knative はポッドのコールドスタート時間を短縮するために、より頻繁でアクティブなプローブを採用しています。

仕組み

liveness probe と readiness probe を設定して、アプリケーションが正常でトラフィックを受信する準備ができていることを確認できます。

  • Liveness probe: コンテナの正常性状態を監視するために使用されます。コンテナが Failed 状態の場合、またはコンテナ内のサービスの起動に失敗した場合、liveness probe はコンテナを再起動します。

  • Readiness probe: アプリケーションの自動スケーリングを効率的に管理し、Ready 状態のポッドのみがトラフィックを受信できるようにするために使用されます。これにより、サービスの安定性と応答速度が向上します。

次の図は、Knative でのプローブの仕組みを示しています。

  1. Knative Service CustomResource (CR) で readiness probe または liveness probe を定義します。

  2. kubelet は、指定されたコンテナに liveness probe を送信します。

  3. Knative は readiness probe を書き換えて queue-proxy コンテナに送信します。プロービングは Activator コンポーネントまたは queue-proxy コンテナから開始され、ネットワークリンク全体が設定され、準備ができていることを確認します。

    説明

    プローブが定義されていない場合、Knative はプライマリコンテナのデフォルトの readiness probe を定義します。デフォルトの readiness probe は、Knative サービスのポートで TCP ソケットをチェックします。

  4. Knative は queue-proxy コンテナの readiness probe を定義します。queue-proxy の状態は、プライマリコンテナとサイドカーコンテナを含むすべてのコンテナによって書き換えられた readiness probe の結果を集約します。queue-proxy コンテナが成功応答を返し、Knative ネットワーク層が設定されている場合、Knative はポッドが正常でトラフィックを受け入れる準備ができていると見なします。

前提条件

Knative が ACS クラスタにデプロイされていること。詳細については、Knative のデプロイを参照してください。

カスタムリスニングポートの設定

設定方法

readinessProbe または livenessProbe フィールドを Knative Service に追加して、それぞれ readiness probe と liveness probe を設定します。設定方法は Kubernetes で使用される方法と同じです。詳細については、Liveness、Readiness、および Startup Probe の設定を参照してください。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: runtime
  namespace: default
spec:
  template:
    spec:
      containers:
      - name: first-container
        image: <YOUR-IMAGE>      # 実際のイメージ名に置き換えてください。
        ports:
          - containerPort: 8080
        readinessProbe:       # コンテナの起動後にコンテナの準備ができたことを確認します。
          httpGet:            # TCPソケット接続を介したliveness probeに使用されるポート。
            port: 8080        # readiness probe に containerPort 以外のポートを指定します。
            path: "/health"
        livenessProbe:            # コンテナが稼働しているかどうかを確認します。
          tcpSocket:
            port: 8080
      - name: second-container
        image: <YOUR-IMAGE>
        readinessProbe:             
          httpGet:
            port: 8089
            path: "/health"
        livenessProbe:              
          tcpSocket:
            port: 8089

サポートされているプローブタイプ

プローブタイプ

説明

httpGet

HTTP GET リクエストを送信して、サービスの正常性状態とlivenessを確認し、返されたステータスコードに基づいてプローブが成功したかどうかを確認します。

tcpSocket

TCP 接続を作成しようとして、サービスの正常性状態とlivenessを確認します。

exec

コンテナ内で特定のコマンドを実行し、終了コードに基づいてプローブが成功したかどうかを確認します。

grpc

gRPC Health Checking Protocol で定義されたメソッドを呼び出して、サービスの正常性状態とlivenessを確認します。

説明

カスタム PreStop プローブは、グレースフルシャットダウンをサポートするために Knative によって組み込みの PreStop フックが既に提供されているため、サポートされていません。

参考資料

カスタムドメイン名を使用して HTTPS 経由でサービスにアクセスするための証明書を設定する方法の詳細については、Knative サービスに HTTPS 経由でアクセスするための証明書の設定を参照してください。