istio.io/content/zh/docs/ops/configuration/traffic-management/protocol-selection/index.md

1.8 KiB

title description weight keywords aliases
协议选择 关于怎么声明协议的信息。 10
protocol
protocol sniffing
protocol selection
protocol detection
/zh/help/ops/traffic-management/protocol-selection
/zh/help/ops/protocol-selection
/zh/help/tasks/traffic-management/protocol-selection
/zh/docs/ops/traffic-management/protocol-selection

Istio 默认支持代理所有 TCP 流量,但为了提供附加的能力,比如路由和丰富的指标,使用什么协议必须被确定。协议可以被自动检测或者明确的声明确定。

手动协议选择

通过声明一个 Service 端口,协议可以被手动指定 name: <protocol>[-<suffix>]。 下列协议是被支持的:

  • grpc
  • grpc-web
  • http
  • http2
  • https
  • mongo
  • mysql*
  • redis*
  • tcp
  • tls
  • udp

* 这些协议默认被禁用以阻止偶然地产生试验性的特性。 要启用他们,请配置相应的 Pilot 环境变量

下面是一个 Service 例子,它定义了一个 mysql 端口 和一个 http 端口:

{{< text yaml >}} kind: Service metadata: name: myservice spec: ports:

  • number: 3306 name: mysql
  • number: 80 name: http-web {{< /text >}}

自动协议选择

Istio 可以自动检测出 HTTP 和 HTTP/2 流量。如果协议无法自动确定,流量将会被当作普通 TCP 流量对待。

这个特性是默认开启的。通过设置这些安装选项可以将其关闭:

  • --set values.pilot.enableProtocolSniffingForOutbound=false 为(非指定的或不支持协议的)出站监听器禁用协议检测。
  • --set values.pilot.enableProtocolSniffingForInbound=false 为(非指定的或不支持协议的)入站监听器禁用协议检测。