文档首页/ 应用服务网格 ASM/ 常见问题/ 网格管理/ 金丝雀升级失败常见场景及解决方案
更新时间:2024-09-24 GMT+08:00

金丝雀升级失败常见场景及解决方案

进行金丝雀升级时,升级失败的常见场景和解决方案:

  1. CRD检查失败。

    解决办法新版本Istio 将不支持部分CRD,包括:clusterrbacconfigs 、serviceroles 、servicerolebindings 、policies。若您在当前版本存在即将废弃的资源,则需要删除后再升级。

  2. 升级前检查网关配置信息时,Istio 网关标签错误。

    解决办法:Istio 网关标签(matchLabels)必须为 {app: istio-ingressgateway, istio: ingressgateway}。

  3. 升级前插件检查失败。

    解决办法:ASM从1.8版本开始不再支持如下插件(tracing,kiali,grafana,prometheus)部署,升级前需要将上述插件卸载。您可以自行安装开源版本插件,或者使用APM。

  4. 升级前集群状态检查任务失败。

    解决办法:升级前会检查集群状态,若集群状态异常则无法进行网格升级。

  5. 升级前资源检查任务失败。

    解决办法:金丝雀升级需要有充足资源。

  6. 升级前集群版本检查任务失败。

    解决办法:网格支持的版本如下:

    网格版本

    支持的集群版本

    1.3

    1.13,1.15,1.17,1.19

    1.6

    1.15,1.17

    1.8

    1.15,1.17,1.19,1.21

    1.13

    1.21,1.23

    1.15

    1.21,1.23,1.25,1.27

    1.18

    1.25,1.27,1.28

  7. 升级前组件亲和性检查失败。

    解决办法:若您从非金丝雀版本升级到金丝雀版本,需要满足打了istio:master labels的节点数量大于等于两倍的istiod实例数,并且所有可调度节点数大于等于ingressgateway/egressgateway 实例数量最大值的两倍,若不满足则需要将节点数量扩大到满足调度需求或者将istiod、ingressgateway、egressgateway pod反亲和性设置为尽量满足。

    • 方法一:增加添加istio:master节点,可以从CCE console上进行操作。

    • 方法二:修改pod反亲和策略,可在CCE界面修改yaml。

    preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 1
        podAffinityTerm:
          labelSelector:
            matchExpressions:
                - key: app
                  operator: In
                  values:
                    - istiod (如果是ingressgateway则为istio-egressgateway、istio-ingressgateway)
           namespaces:
             - istio-system
           topologyKey: kubernetes.io/hostname

    或者在CCE界面升级设置工作负载反亲和性,改为尽量满足。

  8. 升级前命名空间自动注入检查失败。

    解决办法:若您从专有网格迁移至基础网格,命名空间存在已经注入的pod,但是该命名空间未开启自动注入,则需要开启该命名空间自动注入