Istio Sidecar注入失败:部署Bookinfo应用无Pod生成故障求助
问题根因定位
从事件日志可以直接判定根因为 **kube-apiserver无法连通Istio的sidecar注入Webhook服务,导致ReplicaSet创建Pod请求被拦截超时,所以所有Bookinfo工作负载无法生成Pod实例。
排查步骤
istiod服务配置校验
首先执行以下命令确认istiod服务配置和端点是否正常:# 确认istiod服务IP和事件日志里的目标IP一致 kubectl get svc istiod -n istio-system # 确认istiod服务正确绑定运行中的istiod Pod端点 kubectl get endpoints istiod -n istio-system如果查询到的服务IP和事件日志中的
10.102.193.69不符,或者端点列表为空,说明istiod服务配置异常,重建istiod Deployment即可恢复。kube-apiserver到istiod的网络连通性校验
登录集群任意Master节点,执行以下命令测试连通性:curl -v https://10.102.193.69:443 -k如果请求超时,按集群类型分别排查:
- 云厂商托管集群:确认Master节点安全组出方向规则,允许访问工作节点的443、15017端口,已开放端口的情况下仍出现该问题基本是因为仅配置了工作节点入方向规则,遗漏了Master到工作节点的访问规则。
- 自建集群:检查Master节点的iptables、firewalld规则,以及CNI插件的网络策略配置,确认没有拦截Master到istio-system命名空间下Pod的443端口请求。
sidecar注入配置校验
执行以下命令确认test命名空间注入配置正常:# 确认test命名空间是否开启自动注入 kubectl get ns test --show-labels # 确认sidecar注入webhook配置正常 kubectl get mutatingwebhookconfigurations istio-sidecar-injector -o yaml如果命名空间未打
istio-injection=enabled标签,可手动打上后重新部署Bookinfo应用。
临时规避方案
如果需要快速部署验证业务,可先修改sidecar注入webhook的失败策略为忽略,即可跳过注入校验创建Pod:
kubectl patch mutatingwebhookconfigurations istio-sidecar-injector -p '{"webhooks": [{"name": "sidecar-injector.istio.io", "failurePolicy": "Ignore"}]}'
内容的提问来源于stack exchange,提问作者Gowmi
相关产品推荐
相关产品推荐

