更新时间:2024-12-20 GMT+08:00
分享

所有Pod是否都注入了sidecar

问题描述

Service管理的所有Pod都必须存在istio-proxy容器,否则报此异常。

修复指导

  1. 登录ASM控制台,选择服务所在网格。单击左侧导航中的“网格配置”,选择“sidecar管理”页签,检查服务所在命名空间是否已注入sidecar。

    • 未注入,执行2
    • 已注入,执行3

      检查方法如下:

      在CCE控制台,进入集群详情的命名空间页面,单击您的命名空间操作列的“编辑YAML”,如果存在istio.io/rev=<revision>或者istio-injection=enabled标签内容说明已注入sidecar。

      • 1.13.9-r3及以下istio版本、1.15.5-r2及以下istio版本,需存在istio-injection=enabled标签。请注意版本号使用中划线连接。
      • 1.13.9-r3以上istio版本、1.15.5-r2以上istio版本、1.18所有istio版本,需存在istio.io/rev=<revision> 标签。请注意版本号使用中划线连接,如下图:

  2. 可参考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

    您可以单击Installing the Sidecar了解更多sidecar注入的知识。

  3. 如果网格已经开启了命名空间注入,但是Pod未注入sidecar,需要在CCE控制台手动重启Pod。方法如下:

    登录CCE控制台,在工作负载所在行,单击操作列的“更多 > 重新部署”。

  4. 检查工作负载是否配置了主机网络模式。方法如下:

    登录CCE控制台,在工作负载所在行,单击操作列的“更多 > 编辑YAML”,查看是否配置了spec.template.spec.hostNetwork: true。如果是,请确认是否可将该字段删除或者配置为false,否则不允许注入sidecar。

  5. 检查网格实例数量是否已经超出限额。

    如果实例总数已经超出 200,那么超出部分的实例将无法注入sidecar。

相关文档