IstioProxyImageMismatch
在以下情况,会触发有关 pod 的这条信息:
- 启用 sidecar 自动注入功能(默认启用,除非通过 helm 模版变量
sidecarInjectorWebhook.enabled
明确禁用。) - pod 在启用了 sidecar 注入的命名空间中运行(命名空间带有标签
istio-injection=enabled
) - sidecar 上运行的代理版本与自动注入使用的版本不匹配
升级 Istio 控制平面后,通常会出现这种情况;升级 Istio(包括 sidecar 注入)后,必须重新创建 Istio sidecar 的所有正在运行的工作负载,以允许注入新版本的 sidecar。
通过使用常规的部署策略重新部署应用来更新 sidecar 版本是最简单的方式。对于 Kubernetes deployment:
- 如果您使用的是 Kubernetes 1.15 或更高版本,则可以运行
kubectl rollout restart <my-deployment>
来重新部署。 - 或者,您可以修改 deployment 的
template
字段来强制进行新的部署。通常是通过在 pod 模板定义中添加一个类似force-redeploy=<current-timestamp>
的标签来完成的。