4.5. 起動プローブ
起動プローブは、サービスが正常に起動したかどうかを確認し、起動プロセスが遅いコンテナーのコールドスタート時間を短縮するのに役立ちます。起動プローブはコンテナーの初期化フェーズ中にのみ実行し、定期的に実行することはありません。起動プローブが失敗した場合、コンテナーは定義された restartPolicy
に従います。
4.5.1. 進捗期限
デフォルトでは、サービスには、サービスが最初の起動を完了するまでの時間制限を定義する進行期限があります。起動プローブを使用する場合は、進行期限が起動プローブに必要な最大時間を超えるように設定されていることを確認してください。進行期限の設定が低すぎると、期限に達する前に起動プローブが終了しない可能性があり、サービスが起動しない可能性があります。
デプロイメント中に次のいずれかの状況が発生した場合は、進行期限を延長することを検討してください。
- サービスイメージはサイズが大きいため、プルに時間がかかります。
-
初期キャッシュの準備のため、サービスが
READY
になるまでに長い時間がかかります。 - クラスターは、新しい Pod にリソースを割り当てるために自動スケーリングに依存します。
4.5.2. 起動プローブの設定
OpenShift Serverless Serving の場合、起動プローブはデフォルトでは定義されません。デプロイメント設定でコンテナーの起動プローブを定義できます。
手順
デプロイメント設定を変更して、サービスの起動プローブを定義します。次の例は、2 つのコンテナーを含む設定を示しています。
定義された起動プローブの例
apiVersion: serving.knative.dev/v1 kind: Service # ... spec: template: spec: containers: - name: first-container image: <image> ports: - containerPort: 8080 # ... startupProbe: 1 httpGet: port: 8080 path: "/" - name: second-container image: <image> # ... startupProbe: 2 httpGet: port: 8081 path: "/"
4.5.3. 進捗期限の設定
進行期限設定を設定して、システムが Knative リビジョンの失敗を報告する前に、デプロイメントの進行に許可される最大時間を指定できます。この時間制限は秒または分単位で指定できます。
進捗期限を効果的に設定するには、次のパラメーターを考慮してください。
-
initialDelaySeconds
-
failureThreshold
-
periodSeconds
-
timeoutSeconds
指定された制限時間内に初期スケールが達成されない場合、Knative Autoscaler コンポーネントはリビジョンを 0
にスケールし、Knative サービスは最終的な Failed
状態になります。
デフォルトでは、進行期限は 600 秒に設定されています。この値は Golang の time.Duration
文字列として指定され、最も近い秒に丸められる必要があります。
手順
進行期限設定を設定するには、デプロイメント設定でアノテーションを使用します。
進捗期限を 60 秒に設定した場合の例
apiVersion: serving.knative.dev/v1 kind: Service ... spec: template: metadata: annotations: serving.knative.dev/progress-deadline: "60s" spec: containers: - image: ghcr.io/knative/helloworld-go:latest