使用 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 不会执行注入或注入存在错误的可能原因

  1. 没有匹配的命名空间标签或 Pod 标签:确保在命名空间或 Pod 上设置了正确的标签。

  2. 没有匹配特定修订版的命名空间标签或 Pod 标签:设置正确的标签以匹配所需的 Istio 修订版。

  3. Pod 标签阻止注入:移除标签或将其设置为适当的值。

  4. 命名空间标签阻止注入:将标签更改为适当的值。

  5. 多个 Webhook 注入侧车:确保仅启用一个 Webhook 用于注入,或在命名空间或 Pod 上设置适当的标签以定位特定的 Webhook。

这些信息是否有用?
您有任何改进建议吗?

感谢您的反馈!