所有Pod是否都注入了sidecar
问题描述
Service管理的所有Pod都必须存在istio-proxy容器,否则报此异常。
修复指导
- 登录ASM控制台,选择服务所在网格。单击左侧导航中的“网格配置”,选择“sidecar管理”页签,检查服务所在命名空间是否已注入sidecar。
- 可参考sidecar注入为您的某个负载或者命名空间下的所有工作负载关联的Pod注入sidecar。
这两种场景注入的方法如下:
- 为命名空间下所有工作负载关联的Pod注入sidecar ,即打上标签。请根据下面说明中的不同istio版本打不同的标签。打标签命令如下:
kubectl label ns <namespace> istio-injection=enabled
或者
kubectl label ns <namespace> istio.io/rev=<revision>
系统将根据不同的istio版本为命名空间设置标签:- 设置istio-injection=enabled标签,适用于1.13.9-r3及以下版本、1.15.5-r2及以下版本。
- 设置istio.io/rev=<revision> 标签,适用于1.13.9-r3以上版本、1.15.5-r2以上版本、1.18所有版本。
- 只为某个工作负载注入sidecar
在CCE控制台,在工作负载所在行,单击您的工作负载操作列的“更多 > 编辑YAML”,请根据您的istio版本手动添加annotations字段或者label总段。
- 1.13.9-r3以上版本、1.15.5-r2以上版本、1.18所有版本,设置如下:
labels: istio.io/rev=<revision>
- 1.13.9-r3及以下版本、1.15.5-r2及以下版本,设置如下:
annotations: istio-injection: enabled
- 1.13.9-r3以上版本、1.15.5-r2以上版本、1.18所有版本,设置如下:
您可以单击Installing the Sidecar了解更多sidecar注入的知识。
- 为命名空间下所有工作负载关联的Pod注入sidecar ,即打上标签。请根据下面说明中的不同istio版本打不同的标签。打标签命令如下:
- 如果网格已经开启了命名空间注入,但是Pod未注入sidecar,需要在CCE控制台手动重启Pod。方法如下:
登录CCE控制台,在工作负载所在行,单击操作列的“更多 > 重新部署”。
- 检查工作负载是否配置了主机网络模式。方法如下:
登录CCE控制台,在工作负载所在行,单击操作列的“更多 > 编辑YAML”,查看是否配置了spec.template.spec.hostNetwork: true。如果是,请确认是否可将该字段删除或者配置为false,否则不允许注入sidecar。
- 检查网格实例数量是否已经超出限额。
如果实例总数已经超出 200,那么超出部分的实例将无法注入sidecar。