使用 Istioctl Check-Inject 验证 Istio Sidecar 注入
istioctl experimental check-inject
是一个诊断工具,可帮助您验证特定的 Webhook 是否会在您的 Pod 中执行 Istio 侧车注入。使用此工具检查侧车注入配置是否已正确应用到活动集群。
快速入门
要检查 Istio 侧车注入为何会发生(或不会发生)或将要发生(或将不会发生)的原因,请运行
$ istioctl experimental check-inject -n <namespace> <pod-name>
对于部署,请运行
$ istioctl experimental check-inject -n <namespace> deploy/<deployment-name>
或者,对于标签对,请运行
$ istioctl experimental check-inject -n <namespace> -l <label-key>=<label-value>
例如,如果您在 hello
命名空间中有一个名为 httpbin
的部署,以及一个名为 httpbin-1234
、带有 app=httpbin
标签的 Pod,则以下命令等效
$ istioctl experimental check-inject -n hello httpbin-1234
$ istioctl experimental check-inject -n hello deploy/httpbin
$ istioctl experimental check-inject -n hello -l app=httpbin
示例结果
WEBHOOK REVISION INJECTED REASON
istio-revision-tag-default default ✔ Namespace label istio-injection=enabled matches
istio-sidecar-injector-1-18 1-18 ✘ No matching namespace labels (istio.io/rev=1-18) or pod labels (istio.io/rev=1-18)
如果 INJECTED
字段标记为 ✔
,则该行中的 Webhook 将执行注入,并显示 Webhook 执行侧车注入的原因。
如果 INJECTED
字段标记为 ✘
,则该行中的 Webhook 将不会执行注入,并将显示原因。
Webhook 不会执行注入或注入存在错误的可能原因
没有匹配的命名空间标签或 Pod 标签:确保在命名空间或 Pod 上设置了正确的标签。
没有匹配特定修订版的命名空间标签或 Pod 标签:设置正确的标签以匹配所需的 Istio 修订版。
Pod 标签阻止注入:移除标签或将其设置为适当的值。
命名空间标签阻止注入:将标签更改为适当的值。
多个 Webhook 注入侧车:确保仅启用一个 Webhook 用于注入,或在命名空间或 Pod 上设置适当的标签以定位特定的 Webhook。