金丝雀升级失败常见场景及解决方案
进行金丝雀升级时,升级失败的常见场景和解决方案:
- CRD检查失败。
解决办法:新版本Istio 将不支持部分CRD,包括:clusterrbacconfigs 、serviceroles 、servicerolebindings 、policies。若您在当前版本存在即将废弃的资源,则需要删除后再升级。
- 升级前检查网关配置信息时,Istio 网关标签错误。
解决办法:Istio 网关标签(matchLabels)必须为 {app: istio-ingressgateway, istio: ingressgateway}。
- 升级前插件检查失败。
解决办法:ASM从1.8版本开始不再支持如下插件(tracing,kiali,grafana,prometheus)部署,升级前需要将上述插件卸载。您可以自行安装开源版本插件,或者使用APM。
- 升级前集群状态检查任务失败。
- 升级前资源检查任务失败。
- 升级前集群版本检查任务失败。
网格版本
支持的集群版本
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,1.29,1.30
- 升级前组件亲和性检查失败。
解决办法:若您从非金丝雀版本升级到金丝雀版本,需要满足打了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界面升级设置工作负载反亲和性,改为尽量满足。
- 升级前命名空间自动注入检查失败。
解决办法:若您从专有网格迁移至基础网格,命名空间存在已经注入的pod,但是该命名空间未开启自动注入,则需要开启该命名空间自动注入。