现象
Istio 默认只支持 HTTP/1.1 以上协议版本,并不支持 HTTP/1.0。
原因
Istio 中负责流量转发的是 Envoy。
Envoy 中可以设置支持 HTTP/1.0。
Istio 负责分配“规则”的是 Pilot。
Pilot 的环境变量 PILOT_HTTP10
默认为 0
,即不支持 HTTP/1.0。
解决方法
修改 Pilot 的环境变量 PILOT_HTTP10
为 1
。
阿里云
阿里云安装 Istio 的方式与其他平台不同,因此配置方法需要使用阿里云控制台。
-
进入 Istio 管理,点击右上角
更新
按钮。 -
找到 Pilot 配置项,增加如下配置,并更新。
1
enableHttp10: true
注:此配置项为询问阿里云工程师获得,阿里云文档中未找到。
-
检查 Pilot 环境变量是否生效。
其他平台
其他平台一般使用 Istioctl 或者 Helm 安装,只要在 Pilot 配置项中加入 PILOT_HTTP10
为 1 即可,下面以 Istioctl 安装为例。
-
编辑 Istioctl 安装配置项文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# Istio.yaml apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: # Use the default profile as the base # More details at: https://istio.io/docs/setup/additional-setup/config-profiles/ profile: default values: pilot: # https://github.com/istio/istio/issues/11235 env: PILOT_HTTP10: 1 gateways: ......
-
istioctl apply 该配置文件即可。
1
istioctl manifest apply -f Istio.yaml
-
检查 Pilot 环境变量是否生效。
Istio 1.5.0 及以上版本
1 2
$ kubectl describe deployment istiod -n istio-system | grep PILOT_HTTP10 PILOT_HTTP10: 1
Istio 1.4.x 及以下版本
1 2
$ kubectl describe deployment istio-pilot -n istio-system | grep PILOT_HTTP10 PILOT_HTTP10: 1