Istio全局配置

全局关闭重试

istio默认重试2次

1
2
3
4
5
6
7
8
9
apiVersion: v1
data:
  mesh: |-
...
...
    defaultHttpRetryPolicy:
      attempts: 0
...
...

全局配置Access log

1
2
3
4
5
6
7
apiVersion: v1
data:
  mesh: |-
    accessLogEncoding: JSON
    accessLogFile: /dev/stdout
    accessLogFormat: "{\"authority\":\"%REQ(:AUTHORITY)%\",\"bytes_received\":\"%BYTES_RECEIVED%\",\"bytes_sent\":\"%BYTES_SENT%\",\"downstream_local_address\":\"%DOWNSTREAM_LOCAL_ADDRESS%\",\"downstream_remote_address\":\"%DOWNSTREAM_REMOTE_ADDRESS%\",\"duration\":\"%DURATION%\",\"istio_policy_status\":\"%DYNAMIC_METADATA(istio.mixer:status)%\",\"method\":\"%REQ(:METHOD)%\",\"path\":\"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%\",\"protocol\":\"%PROTOCOL%\",\"request_id\":\"%REQ(X-REQUEST-ID)%\",\"requested_server_name\":\"%REQUESTED_SERVER_NAME%\",\"response_code\":\"%RESPONSE_CODE%\",\"response_flags\":\"%RESPONSE_FLAGS%\",\"route_name\":\"%ROUTE_NAME%\",\"start_time\":\"%START_TIME%\",\"upstream_cluster\":\"%UPSTREAM_CLUSTER%\",\"upstream_host\":\"%UPSTREAM_HOST%\",\"upstream_local_address\":\"%UPSTREAM_LOCAL_ADDRESS%\",\"upstream_service_time\":\"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%\",\"upstream_transport_failure_reason\":\"%UPSTREAM_TRANSPORT_FAILURE_REASON%\",\"user_agent\":\"%REQ(USER-AGENT)%\",\"x_forwarded_for\":\"%REQ(X-FORWARDED-FOR)%\"}"
...

Sidecar 生命周期

Istio 中 Envoy 就绪后启动应用容器

kubernetes 中,Pod 中的 containers 启动就绪顺序是不确定的。如果应用容器就绪的时候,代理容器没有就绪,那么流量会失败。

Istio 1.7版本中引入配置 holdApplicationUntilProxyStarts,它使 Sidecar 注入器在 Pod 的容器列表的开始处注入 Sidecar,并配置它阻止所有其他容器的启动,直到代理准备好为止。默认情况下禁用此选项。 (Issue #11130)

Istio 中 Envoy 的退出机制以及配置优雅退出

缺省情况下,在收到 SIGTERM 后,Istio-agent 会在等待 terminationDrainDuration (缺省 5S)后退出,由于 Envoy 是 Istio-agent 的子进程,Envoy 也会随之退出。该缺省行为可能对于一些耗时较长的关键业务有影响,导致正在进行业务处理的链接被强制中断。

Istio 1.12 版本中引入环境变量 EXIT_ON_ZERO_ACTIVE_CONNECTIONS 以在排空期间跟踪活动连接,并在活动连接变为零时退出,而不是等待整个排空持续进行。默认情况下这是禁用的issues #34855

1
2
3
4
5
6
7
apiVersion: v1
data:
  mesh: |-
    defaultConfig:
      holdApplicationUntilProxyStarts: true
      proxyMetadata:
        EXIT_ON_ZERO_ACTIVE_CONNECTIONS: "true"

istio全局配置

0%