現(xiàn)象
Istio 默認(rèn)只支持 HTTP/1.1 以上協(xié)議版本,并不支持 HTTP/1.0。
原因
Istio 中負(fù)責(zé)流量轉(zhuǎn)發(fā)的是 Envoy。
Envoy 中可以設(shè)置支持 HTTP/1.0。
Istio 負(fù)責(zé)分配“規(guī)則”的是 Pilot。
Pilot 的環(huán)境變量 PILOT_HTTP10 默認(rèn)為 0,即不支持 HTTP/1.0。
解決方法
修改 Pilot 的環(huán)境變量 PILOT_HTTP10 為 1。
阿里云
阿里云安裝 Istio 的方式與其他平臺(tái)不同,因此配置方法需要使用阿里云控制臺(tái)。
-
進(jìn)入 Istio 管理,點(diǎn)擊右上角
更新按鈕。faq -
找到 Pilot 配置項(xiàng),增加如下配置,并更新。
enableHttp10: true注:此配置項(xiàng)為詢(xún)問(wèn)阿里云工程師獲得,阿里云文檔中未找到。
faq -
檢查 Pilot 環(huán)境變量是否生效。
faq
其他平臺(tái)
其他平臺(tái)一般使用 Istioctl 或者 Helm 安裝,只要在 Pilot 配置項(xiàng)中加入 PILOT_HTTP10 為 1 即可,下面以 Istioctl 安裝為例。
-
編輯 Istioctl 安裝配置項(xiàng)文件。
# 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 該配置文件即可。
istioctl manifest apply -f Istio.yaml -
檢查 Pilot 環(huán)境變量是否生效。
Istio 1.5.0 及以上版本
$ kubectl describe deployment istiod -n istio-system | grep PILOT_HTTP10 PILOT_HTTP10: 1Istio 1.4.x 及以下版本
$ kubectl describe deployment istio-pilot -n istio-system | grep PILOT_HTTP10 PILOT_HTTP10: 1


