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 フィールドを設定します。

      apiVersion: operator.knative.dev/v1beta1
      kind: KnativeServing
      metadata:
        name: knative-serving
        namespace: knative-serving
      spec:
        config:
          defaults:
            revision-timeout-seconds: "300"
      Copy to Clipboard Toggle word wrap
    • サービス定義の timeoutSeconds フィールドを設定して、リビジョンごとにタイムアウトを設定するには、次の手順を実行します。

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        namespace: my-ns
      spec:
        template:
          spec:
            timeoutSeconds: 300
            containers:
            - image: ghcr.io/knative/helloworld-go:latest
      Copy to Clipboard Toggle word wrap
    注記

    リビジョンタイムアウトを 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 フィールドを設定します。

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
    spec:
      config:
        defaults:
          max-revision-timeout-seconds: "600"
    Copy to Clipboard Toggle word wrap
    注記

    最大リビジョンタイムアウトを 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 分) に設定する例

      apiVersion: operator.knative.dev/v1beta1
      kind: KnativeServing
      metadata:
        name: knative-serving
        namespace: knative-serving
      spec:
        config:
          defaults:
            revision-timeout-seconds: "600"
            revision-response-start-timeout-seconds: "300"
      Copy to Clipboard Toggle word wrap

    • リビジョンごとにタイムアウトを設定するには、サービス定義の responseStartTimeoutSeconds フィールドを設定します。必要な応答開始タイムアウトがリビジョンタイムアウトを超える場合は、それに応じて timeoutSeconds フィールドも調整します。

      リビジョン応答開始タイムアウトを 300 秒 (5 分) に設定したサービス定義の例

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        namespace: my-ns
      spec:
        template:
          spec:
            timeoutSeconds: 600
            responseStartTimeoutSeconds: 300
            containers:
      # ...
      Copy to Clipboard Toggle word wrap

    注記

    リビジョン応答開始タイムアウトとリビジョンタイムアウトを 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 分) に設定する例

      apiVersion: operator.knative.dev/v1beta1
      kind: KnativeServing
      metadata:
        name: knative-serving
        namespace: knative-serving
      spec:
        config:
          defaults:
            revision-idle-timeout-seconds: "300"
      Copy to Clipboard Toggle word wrap

    • リビジョンごとにタイムアウトを設定するには、サービス定義で idleTimeoutSeconds フィールドを設定します。

      リビジョンアイドルタイムアウトを 300 秒 (5 分) に設定したサービス定義の例

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        namespace: my-ns
      spec:
        template:
          spec:
            idleTimeoutSeconds: 300
            containers:
      # ...
      Copy to Clipboard Toggle word wrap

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 に設定されています。

手順

  1. 次のコマンドを実行して、サブスクリプションの 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"}]}}}'
    Copy to Clipboard Toggle word wrap

    または、サブスクリプションで ROUTE_HAPROXY_TIMEOUT の値を直接設定することもできます。

    ROUTE_HAPROXY_TIMEOUT が 900 秒に設定されたサブスクリプション定義

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
    #...
    spec:
      channel: stable
      config:
        env:
          - name: ROUTE_HAPROXY_TIMEOUT
            value: '900'
    #...
    Copy to Clipboard Toggle word wrap

    注記

    ルートを手動で作成し、serving.knative.openshift.io/disableRoute アノテーションを使用して自動生成を無効にした場合は、ルート定義でタイムアウトを直接設定できます。

  2. KnativeServing CR で最大リビジョンタイムアウトを設定します。

    max-revision-timeout-seconds が 900 秒に設定された KnativeServing CR

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
    spec:
      config:
        defaults:
          max-revision-timeout-seconds: "900"
    #...
    Copy to Clipboard Toggle word wrap

    Serverless Operator は、アクティベーター Pod 自体が終了される場合にリクエストが終了しないように、アクティベーターの terminationGracePeriod 値を設定された最大リビジョンタイムアウト値に自動的に調整します。

  3. オプション: 次のコマンドを実行して、タイムアウトが設定されていることを確認します。

    $ oc get deployment activator -n knative-serving -o jsonpath="{.spec.template.spec.terminationGracePeriodSeconds}"
    Copy to Clipboard Toggle word wrap
  4. クラウドプロバイダーで必要な場合は、次のコマンドを実行してロードバランサーのタイムアウトを調整します。

    AWS Classic LB のロードバランサーのタイムアウト調整

    $ oc -n openshift-ingress-operator patch ingresscontroller/default --type=merge --patch=' \
      {"spec":{"endpointPublishingStrategy":  \
      {"type":"LoadBalancerService", "loadBalancer":  \
      {"scope":"External", "providerParameters":{"type":"AWS", "aws":  \
      {"type":"Classic", "classicLoadBalancer":  \
      {"connectionIdleTimeout":"20m"}}}}}}}'
    Copy to Clipboard Toggle word wrap

  5. 必要なタイムアウトが max-revision-timeout-seconds 変数以下の Knative サービスをデプロイします。

    タイムアウトを 800 秒に設定したサービス定義

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: example-service-name
    spec:
      template:
        spec:
          timeoutSeconds: 800
          responseStartTimeoutSeconds: 800
    Copy to Clipboard Toggle word wrap

    重要

    Service Mesh を使用する場合、長時間実行リクエストが処理中にアクティベーター Pod が停止すると、リクエストは中断されます。リクエストの中断を回避するには、ServiceMeshControlPlane CR の terminationDrainDuration フィールドの値を調整する必要があります。

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    #...
    spec:
      techPreview:
          meshConfig:
            defaultConfig:
              terminationDrainDuration: 1000s 
    1
    
    #...
    Copy to Clipboard Toggle word wrap
    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}"
    800s
    Copy to Clipboard Toggle word wrap

4.10.5.2. デフォルトルートのタイムアウトをリビジョンごとに設定する

リビジョンごとにルートタイムアウトを設定することで、他のサービスのグローバルタイムアウト設定に影響を与えることなく、AI やデータ処理アプリケーションなどの固有の要件を持つワークロードのタイムアウトを微調整できます。KnativeServing カスタムリソース (CR)、Service 定義を更新し、serving.knative.openshift.io/setRouteTimeout アノテーションを使用して OpenShift Container Platform ルートタイムアウトを調整することで、特定のリビジョンのタイムアウトを設定できます。

手順

  1. 必要に応じて、KnativeServing CR に max-revision-timeout アノテーションを設定します。

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
    spec:
      config:
        defaults:
          max-revision-timeout-seconds: "900"
    Copy to Clipboard Toggle word wrap
  2. オプション: 次のコマンドを実行して、アクティベーターの終了猶予期間を確認します。

    $ oc get deployment activator -n knative-serving -o jsonpath="{.spec.template.spec.terminationGracePeriodSeconds}"
    
    900
    Copy to Clipboard Toggle word wrap
  3. クラウドプロバイダーで必要な場合は、次のコマンドを実行してロードバランサーのタイムアウトを調整します。

    AWS Classic LB のロードバランサーのタイムアウト調整

    $ oc -n openshift-ingress-operator patch ingresscontroller/default \
      --type=merge --patch='{"spec":{"endpointPublishingStrategy":  \
      {"type":"LoadBalancerService", "loadBalancer":  \
      {"scope":"External", "providerParameters":{"type":"AWS", "aws":  \
      {"type":"Classic", "classicLoadBalancer":  \
      {"connectionIdleTimeout":"20m"}}}}}}}'
    Copy to Clipboard Toggle word wrap

  4. 特定のサービスのタイムアウトを設定します。

    apiVersion: serving.knative.dev/v1f
    kind: Service
    metadata:
      name: <your_service_name>
      annotations:
        serving.knative.openshift.io/setRouteTimeout: "800" 
    1
    
    spec:
      template:
        metadata:
          annotations:
    #...
        spec:
          timeoutSeconds: 800 
    2
    
          responseStartTimeoutSeconds: 800 
    3
    Copy to Clipboard Toggle word wrap
    1
    このアノテーションは、OpenShift Container Platform ルートのタイムアウトを設定します。グローバル最大値を設定する代わりに、各サービスごとにこれを微調整できます。
    2
    これにより、リクエストが特定の値を超えないようにします。
    3
    これにより、最大しきい値に達する前に応答開始タイムアウトがトリガーされないようになります。デフォルト値は 300 です。
    重要

    Service Mesh を使用する場合、長時間実行リクエストが処理中にアクティベーター Pod が停止すると、リクエストは中断されます。リクエストの中断を回避するには、ServiceMeshControlPlane CR の terminationDrainDuration フィールドの値を調整する必要があります。

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    #...
    spec:
      techPreview:
          meshConfig:
            defaultConfig:
              terminationDrainDuration: 1000s 
    1
    
    #...
    Copy to Clipboard Toggle word wrap
    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}"
    800s
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat