启用了ks里的Istio组件,确认istio-system里的所有pod都运行正常(有2个istiod,一个istiod-1-6-10,一个istiod-1-11-2)。

首先尝试给namespace添加上了 istio-injection=enabled 的label,重新部署delopment时没有自动注入sidecar。于是手动又在某个工作负载里添加了sidecar.istio.io/inject: ‘true’ 注解以及标签,都没有任何反应。

也网上搜了一些答案,修改了kube-api的–enable-admission-plugins,都是没有作用。

也查看了kube-api以及istiod的日志,均未发现什么异常,就感觉istio完全没有启用的样子,麻烦大神帮忙看看,多谢~

    koalawangyang

    三个小问题:

    1. 如果是从3.1.x 升级到 3.2. 时, KS 使用 Canary 升级模式。因此会出现两个istiod。 升级成功之后,需要手动重启你的业务负载使新的 istio proxy 生效。然后卸载老版本 istiod
    2. 目前没有默认启用Namespace 级别的injection。 因此在ns 上设置无效
    3. 请移除Namespace 上的istio 标签。并确认 sidecar.istio.io/inject: ‘true’ 标签在 pod template 中。或者部署一下示例项目看看能否正常启用。如果还是无法注入。检查一下 istio-sidecar-injector-1-11-2 是否正常创建,
    kubectl get mutatingwebhookconfigurations.admissionregistration.k8s.io 
    NAME                            WEBHOOKS   AGE
    istio-sidecar-injector-1-11-2   2          2d

      RolandMa1986

      谢谢大神的回复 😀

      1. 我是从3.1.x通过kubekey升级到3.2的,我已经重启了我的业务负载,也将老版本的istiod-1-6-10停掉了。

      2. 好的

      3. 确认标签打上了,但是仍然无法注入,也检查了,结果如下。

        还有什么其他需要检查的么?

        koalawangyang 看一下webhook 有没有这一段。老的webhook 可以删了

        kubectl get mutatingwebhookconfigurations.admissionregistration.k8s.io istio-sidecar-injector-1-11-2 -oyaml

          RolandMa1986

          好的,我卸载了istio,又重新安装,现在已经没有旧版本的istiod了。

          执行您给的命令,有匹配对应的内容,然后呢

            koalawangyang 这个内容看起来是正确的。如果还是不能注入 istio。 看一下 isito log 是否有webhook请求 。 没有的话要排查K8S日志了。Namespace 上一定不能出现 istio 注解。
            2021-11-19T07:55:02.298658Z info Sidecar injection request for proj1/nginx-6f486479d7-***** (actual name not yet known)

              RolandMa1986

              大佬,我把namespace上的注解移除了以后,重新创建Deployment的时候,sidecare可以正常注入了。但是这样只能手动注入,如果我要开启命名空间的自动注入,要如何操作呢? 🤣

              我主要是误解了,我看教程里都是说要自动注入的话,就给namespace打标签,所以我一直用的这个方式+手动注入,结果都不行~ ks上的istio为什么不支持namespace自动注入呢

              7 天 后

              koalawangyang 这个东西很神奇,我之前在ubantu环境 给namspace打了标签,yaml文件也添加了字段,但是还是无法自动注入,相反在centos环境可以自动注入

                7 天 后