4.10. リビジョンタイムアウトの設定
リビジョンのタイムアウト期間をグローバルまたは個別に設定して、リクエストに費やされる時間を制御できます。
4.10.1. リビジョンタイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
リクエストに基づいて、リビジョンタイムアウトのデフォルトの秒数を設定できます。
前提条件
- OpenShift Serverless Operator および Knative Serving がインストールされている。
クラスターに必要な権限がある。
- OpenShift Container Platform のクラスター管理者パーミッション
- Red Hat OpenShift Service on AWS のクラスター管理者権限または専用管理者権限
- OpenShift Dedicated のクラスター管理者権限または専用管理者権限
手順
リビジョンタイムアウトを設定するには、適切な方法を選択します。
リビジョンタイムアウトをグローバルに設定するには、
KnativeServing
カスタムリソース (CR) のrevision-timeout-seconds
フィールドを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービス定義の
timeoutSeconds
フィールドを設定して、リビジョンごとにタイムアウトを設定するには、次の手順を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注記リビジョンタイムアウトを 600 秒 (10 分) を超える値に設定するには、デフォルトの OpenShift Container Platform ルートタイムアウトと最大リビジョンタイムアウトを増やす必要があります。
デフォルトの 600 秒 (10 分) を超えるリクエストのタイムアウトを設定する方法は、「長時間実行されるリクエスト」を参照してください。
4.10.2. 最大リビジョンタイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
最大リビジョンタイムアウトを設定することで、リビジョンが特定の制限を超えないようにすることができます。処理中のリクエストが中断されるのを防ぐため、最大リビジョンタイムアウトの値はアクティベーターの terminationGracePeriodSeconds
の値を超えないように設定する必要があります。
前提条件
- OpenShift Serverless Operator および Knative Serving がインストールされている。
クラスターに必要な権限がある。
- OpenShift Container Platform のクラスター管理者パーミッション
- Red Hat OpenShift Service on AWS のクラスター管理者権限または専用管理者権限
- OpenShift Dedicated のクラスター管理者権限または専用管理者権限
手順
最大リビジョンタイムアウトを設定するには、
KnativeServing
カスタムリソース (CR) のmax-revision-timeout-seconds
フィールドを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記最大リビジョンタイムアウトを 600 秒 (10 分) を超える値に設定するには、デフォルトの OpenShift Container Platform ルートタイムアウトを増やす必要があります。
デフォルトの 600 秒 (10 分) を超えるリクエストのタイムアウトを設定する方法は、「長時間実行されるリクエスト」を参照してください。
4.10.3. リビジョン応答開始タイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
リビジョン応答開始タイムアウトを設定すると、リクエストがルーティングされた後、リビジョンがネットワークトラフィックの送信を開始するまで Serving が待機する最大期間 (秒単位) を指定できます。リビジョン応答開始タイムアウトは、リビジョンタイムアウトを超えないように設定する必要があります。デフォルトの期間は 300 秒 (5 分) です。
前提条件
- OpenShift Serverless Operator および Knative Serving がインストールされている。
クラスターに必要な権限がある。
- OpenShift Container Platform のクラスター管理者パーミッション
- Red Hat OpenShift Service on AWS のクラスター管理者権限または専用管理者権限
- OpenShift Dedicated のクラスター管理者権限または専用管理者権限
手順
リビジョン応答開始タイムアウトを設定するには、適切な方法を選択します。
タイムアウトをグローバルに設定するには、
KnativeServing
カスタムリソース (CR) のrevision-response-start-timeout-seconds
フィールドを設定します。必要な応答開始タイムアウトがリビジョンタイムアウトを超える場合は、それに応じて、revision-timeout-seconds
フィールドも調整します。リビジョン応答開始タイムアウトをグローバルに 300 秒 (5 分) に設定する例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リビジョンごとにタイムアウトを設定するには、サービス定義の
responseStartTimeoutSeconds
フィールドを設定します。必要な応答開始タイムアウトがリビジョンタイムアウトを超える場合は、それに応じてtimeoutSeconds
フィールドも調整します。リビジョン応答開始タイムアウトを 300 秒 (5 分) に設定したサービス定義の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注記リビジョン応答開始タイムアウトとリビジョンタイムアウトを 600 秒 (10 分) を超える値に設定するには、デフォルトの OpenShift Container Platform ルートタイムアウトと最大リビジョンタイムアウトを増やす必要があります。
デフォルトの 600 秒 (10 分) を超えるリクエストのタイムアウトを設定する方法は、「長時間実行されるリクエスト」を参照してください。
4.10.4. リビジョンアイドルタイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
リビジョンアイドルタイムアウトを設定すると、アプリケーションからデータを受信せずにリクエストを開いたままにできる最大期間を秒単位で指定できます。デフォルトの期間は 0
(無限) です。
前提条件
- OpenShift Serverless Operator および Knative Serving がインストールされている。
クラスターに必要な権限がある。
- OpenShift Container Platform のクラスター管理者パーミッション
- Red Hat OpenShift Service on AWS のクラスター管理者権限または専用管理者権限
- OpenShift Dedicated のクラスター管理者権限または専用管理者権限
手順
リビジョンアイドルタイムアウトを設定する適切な方法を選択します。
タイムアウトをグローバルに設定するには、
KnativeServing
カスタムリソース (CR) のrevision-idle-timeout-seconds
フィールドを設定します。リビジョンアイドルタイムアウトをグローバルに 300 秒 (5 分) に設定する例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リビジョンごとにタイムアウトを設定するには、サービス定義で
idleTimeoutSeconds
フィールドを設定します。リビジョンアイドルタイムアウトを 300 秒 (5 分) に設定したサービス定義の例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.10.5. 長時間実行されるリクエスト リンクのコピーリンクがクリップボードにコピーされました!
Knative によって設定されたデフォルトの 600 秒のタイムアウトを超えるリクエストが早期に終了しないようにするには、次のコンポーネントのタイムアウトを調整する必要があります。
- OpenShift Container Platform ルート
- OpenShift Serverless Serving
- クラウドプロバイダーに応じたロードバランサー
タイムアウトはグローバルまたはリビジョンごとに設定できます。すべての Knative サービスにわたって延長された期間を必要とするリクエストがある場合は、タイムアウトをグローバルに設定できます。また、AI デプロイメントなど、異なるタイムアウト値を必要とする特定のワークロードのリビジョンごとに設定することもできます。
4.10.5.1. デフォルトルートのタイムアウトをグローバルに設定する リンクのコピーリンクがクリップボードにコピーされました!
ルートタイムアウトをグローバルに設定することで、すべてのサービスにわたって一貫したタイムアウト設定を確保でき、同様のタイムアウトのニーズを持つワークロードの管理が簡素化され、個別の調整の必要性が軽減されます。
serverless-operator
サブスクリプションの ROUTE_HAPROXY_TIMEOUT
環境値を更新し、KnativeServing
カスタムリソース (CR) の max-revision-timeout-seconds
フィールドを更新することで、ルートタイムアウトをグローバルに設定できます。これにより、すべての Knative サービスにタイムアウトの変更が適用され、設定された最大値までの特定のタイムアウトを持つサービスをデプロイできるようになります。
ROUTE_HAPROXY_TIMEOUT
は、Serverless Operator によって管理される環境変数であり、デフォルトでは 600
に設定されています。
手順
次のコマンドを実行して、サブスクリプションの
ROUTE_HAPROXY_TIMEOUT
の値を必要なタイムアウト (秒単位) に設定します。これにより、openshift-serverless
namespace 内の Pod が再デプロイされることに注意してください。ROUTE_HAPROXY_TIMEOUT
値を 900 秒に設定するoc patch subscription.operators.coreos.com serverless-operator -n openshift-serverless --type='merge' -p '{"spec": {"config": {"env": [{"name": "ROUTE_HAPROXY_TIMEOUT", "value": "900"}]}}}'
$ oc patch subscription.operators.coreos.com serverless-operator -n openshift-serverless --type='merge' -p '{"spec": {"config": {"env": [{"name": "ROUTE_HAPROXY_TIMEOUT", "value": "900"}]}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、サブスクリプションで
ROUTE_HAPROXY_TIMEOUT
の値を直接設定することもできます。ROUTE_HAPROXY_TIMEOUT
が 900 秒に設定されたサブスクリプション定義Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ルートを手動で作成し、
serving.knative.openshift.io/disableRoute
アノテーションを使用して自動生成を無効にした場合は、ルート定義でタイムアウトを直接設定できます。KnativeServing
CR で最大リビジョンタイムアウトを設定します。max-revision-timeout-seconds
が 900 秒に設定されたKnativeServing
CRCopy to Clipboard Copied! Toggle word wrap Toggle overflow Serverless Operator は、アクティベーター Pod 自体が終了される場合にリクエストが終了しないように、アクティベーターの
terminationGracePeriod
値を設定された最大リビジョンタイムアウト値に自動的に調整します。オプション: 次のコマンドを実行して、タイムアウトが設定されていることを確認します。
oc get deployment activator -n knative-serving -o jsonpath="{.spec.template.spec.terminationGracePeriodSeconds}"
$ oc get deployment activator -n knative-serving -o jsonpath="{.spec.template.spec.terminationGracePeriodSeconds}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラウドプロバイダーで必要な場合は、次のコマンドを実行してロードバランサーのタイムアウトを調整します。
AWS Classic LB のロードバランサーのタイムアウト調整
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要なタイムアウトが
max-revision-timeout-seconds
変数以下の Knative サービスをデプロイします。タイムアウトを 800 秒に設定したサービス定義
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Service Mesh を使用する場合、長時間実行リクエストが処理中にアクティベーター Pod が停止すると、リクエストは中断されます。リクエストの中断を回避するには、
ServiceMeshControlPlane
CR のterminationDrainDuration
フィールドの値を調整する必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- リクエストを中断する Istio プロキシーのシャットダウンを回避するために、値がリクエスト期間を超えていることを確認してください。
検証
Kourier を使用している場合は、次のコマンドを実行して、OpenShift Container Platform ルートでのタイムアウトの現在の値を確認できます。
oc get route <route_name> -n knative-serving-ingress ess -o jsonpath="{.metadata.annotations.haproxy\.router\.openshift\.io/timeout}"
$ oc get route <route_name> -n knative-serving-ingress ess -o jsonpath="{.metadata.annotations.haproxy\.router\.openshift\.io/timeout}" 800s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.10.5.2. デフォルトルートのタイムアウトをリビジョンごとに設定する リンクのコピーリンクがクリップボードにコピーされました!
リビジョンごとにルートタイムアウトを設定することで、他のサービスのグローバルタイムアウト設定に影響を与えることなく、AI やデータ処理アプリケーションなどの固有の要件を持つワークロードのタイムアウトを微調整できます。KnativeServing
カスタムリソース (CR)、Service 定義を更新し、serving.knative.openshift.io/setRouteTimeout
アノテーションを使用して OpenShift Container Platform ルートタイムアウトを調整することで、特定のリビジョンのタイムアウトを設定できます。
手順
必要に応じて、
KnativeServing
CR にmax-revision-timeout
アノテーションを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次のコマンドを実行して、アクティベーターの終了猶予期間を確認します。
oc get deployment activator -n knative-serving -o jsonpath="{.spec.template.spec.terminationGracePeriodSeconds}"
$ oc get deployment activator -n knative-serving -o jsonpath="{.spec.template.spec.terminationGracePeriodSeconds}" 900
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラウドプロバイダーで必要な場合は、次のコマンドを実行してロードバランサーのタイムアウトを調整します。
AWS Classic LB のロードバランサーのタイムアウト調整
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のサービスのタイムアウトを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Service Mesh を使用する場合、長時間実行リクエストが処理中にアクティベーター Pod が停止すると、リクエストは中断されます。リクエストの中断を回避するには、
ServiceMeshControlPlane
CR のterminationDrainDuration
フィールドの値を調整する必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- リクエストを中断する Istio プロキシーのシャットダウンを回避するために、値がリクエスト期間を超えていることを確認してください。
検証
Kourier を使用している場合は、次のコマンドを実行して、OpenShift Container Platform ルートでのタイムアウトの現在の値を確認できます。
oc get route <route-name> -n knative-serving-ingress ess -o jsonpath="{.metadata.annotations.haproxy\.router\.openshift\.io/timeout}"
$ oc get route <route-name> -n knative-serving-ingress ess -o jsonpath="{.metadata.annotations.haproxy\.router\.openshift\.io/timeout}" 800s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow