超时策略

您可以指定应用程序在被视为不健康之前无响应的时间,即被允许的请求响应延迟时间。本文介绍如何配置超时策略。

前提条件

已完成准备工作,并部署httpbin服务和sleep服务。具体操作,请参见准备工作

操作步骤

  1. 验证服务配置。

    1. ACK集群对应的kubeconfig环境下,执行以下命令,进入sleep环境开启bash。

      kubectl exec -it deploy/sleep -- sh
    2. 执行以下命令,向httpbin服务发送请求,要求延迟1秒响应。

      date && curl -I httpbin:8000/delay/1

      预期输出:

      Mon Aug 11 08:49:47 UTC 2025
      HTTP/1.1 200 OK
      server: istio-envoy
      date: Mon, 11 Aug 2025 08:49:48 GMT
      content-type: application/json
      content-length: 235
      access-control-allow-origin: *
      access-control-allow-credentials: true
      x-envoy-upstream-service-time: 1002

      预期输出表明响应延迟了1秒。

    3. 执行以下命令,向httpbin服务发送请求,要求延迟2秒响应。

      date && curl -I httpbin:8000/delay/2

      预期输出:

      Mon Aug 11 08:50:26 UTC 2025
      HTTP/1.1 200 OK
      server: istio-envoy
      date: Mon, 11 Aug 2025 08:50:28 GMT
      content-type: application/json
      content-length: 235
      access-control-allow-origin: *
      access-control-allow-credentials: true
      x-envoy-upstream-service-time: 2002

      预期输出表明响应延迟了2秒。

  2. 使用以下内容,创建虚拟服务,构建测试场景,配置httpbin应用的流量规则,设置允许的timeout时间为2s。具体操作,请参见管理虚拟服务

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: httpbin-vs
      namespace: default
    spec:
      hosts:
        - httpbin
      http:
        - route:
            - destination:
                host: httpbin
          timeout: 2s
  3. 验证配置是否生效。

    1. ACK集群对应的kubeconfig环境下,执行以下命令,进入sleep环境开启bash。

      kubectl exec -it deploy/sleep -- sh
    2. 执行以下命令,向httpbin服务发送请求,设置响应延迟1秒返回。

      curl -I httpbin:8000/delay/1

      预期输出:

      HTTP/1.1 200 OK
      server: istio-envoy
      date: Fri, 11 Aug 2023 06:31:25 GMT
      content-type: application/json
      content-length: 281
      access-control-allow-origin: *
      access-control-allow-credentials: true
      x-envoy-upstream-service-time: 1003

      预期输出表明响应延迟了1秒返回。

    3. 执行以下命令,向httpbin服务发送请求,设置响应延迟2秒返回。

      curl -I httpbin:8000/delay/3

      预期输出:

      HTTP/1.1 504 Gateway Timeout
      content-length: 24
      content-type: text/plain
      date: Fri, 11 Aug 2023 06:31:29 GMT
      server: istio-envoy

      预期输出表明由于timeout设置,返回504错误。