原先的微服务部署在k8s,现在想引入istio,以后逐步过渡到service mesh
在原有k8s系统上安装istio后(按google默认教程),重新部署微服务
启动正常,显示所有服务都成功启动了,只是多了一个sidecar
然后调用接口,发现系统没有正常启动起来,很多服务并没有启动成功,尽管k8s显示是2/2running
kubctl get po .... -oyaml查看pod详情,发现所有服务的Liveness和Readiness都被istio改写了,用来检查边车的注入结果,只要sidecar注入成功就显示服务成功了。而实际上原来很多服务是依赖于自己的Readiness来保证启动成功的,于是很多服务实际上根本没启动成功,导致后续启动的服务也异常。
于是修改istio默认设置,—set values.sidecarInjectorWebhook.rewriteAppHTTPProbe=false
或者,更新 Istio sidecar 注入的 map :
kubectl get cm istio-sidecar-injector -n istio-system -o yaml | sed -e 's/"rewriteAppHTTPProbe": true/"rewriteAppHTTPProbe": false/' | kubectl apply -f -
然后重新部署服务,
kubctl get po 查看pod详情,发现Liveness和Readiness都正常了,系统成功启动。