Cloud Controller Manager(CCM)组件升级检查失败

更新时间:

问题描述

容器服务Kubernetes版Cloud Controller Manager(CCM)组件升级检查失败。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

注意事项

  • 在升级CCM组件时,建议您先了解CCM新功能,详情请参见Cloud Controller Manager新功能发布记录
  • 需要注意,如果在升级检查期间执行了Service变更操作,可能会导致升级检测结果存在误判,请重新发起升级检测即可。如果多次检测后仍未通过,请提交工单处理。
  • 从v1.9.3.164-g2105d2e-aliyun版本起,支持Local模式下(即设定Service的externalTrafficPolicy=Local),Service会自动根据Node上的Pod数量为Node设置权重,权重计算规则请参见Local模式下如何自动设置Node权重。如果您的CCM版本低于v1.9.3.164-g2105d2e-aliyun,升级后将会自动调整SLB后端Node权重,使得Pod流量负载更加均衡,您可以通过流量变化查看负载情况。
  • 若您想知道是哪个实例检查失败,可以选择检查结果右侧的实例信息,实例ID为SLB实例的ID,实例名称由命名空间和Service等组成。

CCM升级检查失败的错误提示及解决方案

错误提示 错误原因 解决方案
create a new load balancer 在进行升级期间的新建Service或者同步已有Service时,新建了SLB实例。 请通过控制台或者执行以下命令,确认Service是否处于pending状态。如果状态为Running,且已经生成外部IP,请重新发起检测;如果处于pending状态,请提交工单。
kubectl get svc [$Svc_Name] -n [$Namespace]
说明
  • [$Svc_Name]为Service名称。
  • [$Namespace]为该Service的命名空间。
modify the slb instance spec SLB的规格和Service中配置的规格不一致。 将Service的annotation下的service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec参数设置为SLB对应的规格,该参数的配置请参见通过Annotation配置负载均衡
delete the load balancer 不存在Service,但对应的SLB实例仍然存在。 如已不需要该SLB实例,请通过SLB控制台手动删除该SLB实例。如果还需要该SLB实例,请提交工单。
modify the slb internet spec SLB的带宽或者支付类别与Service中配置的不一致。
  • 若是带宽问题,需要将Service的annotation下的service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth设置为SLB中对应配置,该参数的配置请参见通过Annotation配置负载均衡
  • 若是支付类别问题,需要将Service的annotation下的service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type设置为SLB中对应配置,该参数的配置请参见通过Annotation配置负载均衡
remove backend servers Endpoint与SLB后端服务器配置不一致。
  • 若您未在SLB控制台修改过后端服务器配置:
    请勿在升级检测期间执行Service的Endpoint变更操作,然后重新发起检测。
  • 若您手动在SLB控制台修改过后端服务器配置:
    请先恢复SLB后端服务器组配置,然后重新发起检测。
add backend servers
stop listener Service的port与SLB监听配置不一致。
  • 若您未在SLB控制台修改过监听配置:
    请勿在升级检测期间执行Service变更操作,然后重新发起检测。
  • 若您手动在SLB控制台修改过监听配置:
    请执行以下命令,查看具体不一致的配置,然后在SLB控制台恢复SLB监听配置,再重新发起检测。
    kubectl -n [$Namespace] describe svc [$Svc_Name]
start listener
delete listener Service的port与SLB监听配置不一致。
  • 若您未在SLB控制台修改过监听配置:
    请勿在升级检测期间执行Service变更操作,然后重新发起检测。
  • 若您手动在SLB控制台修改过监听配置:
    请先删除添加的监听,然后重新发起检测。
create listener Service的port与SLB监听配置不一致。
  • 若您未在SLB控制台修改过监听配置:
    请勿在升级检测期间执行Service变更操作,然后重新发起检测。
  • 若您手动在SLB控制台修改过监听配置:
    请先添加被删除的监听,然后重新发起检测。
update listener Service的port与SLB监听配置不一致。
  • 若您未在SLB控制台修改过监听配置:
    请勿在升级检测期间执行Service变更操作,然后重新发起检测。
  • 若您手动在SLB控制台修改过监听配置:
    请执行以下命令,查看具体不一致的配置,然后在SLB控制台恢复SLB监听配置,例如证书、访问控制、健康检查、Cookie设置等,然后重新发起检测,详情请参见通过Annotation配置负载均衡
    kubectl -n [$Namespace] describe svc [$Svc_Name]

create VServerGroup

Endpoint与SLB后端虚拟服务器组配置不一致。
  • 若您未在SLB控制台修改过虚拟服务器配置:
    请勿在升级检测期间执行Service的Endpoint变更操作,然后重新发起检测。如果多次检测后仍重复出现“create vServerGroup”提示,请提交工单处理。
  • 若您手动在SLB控制台修改过后端服务器配置:
    请先恢复SLB虚拟服务器组配置,然后重新发起检测。
delete VServerGroup Endpoint与SLB后端虚拟服务器组配置不一致。
  • 若您未在SLB控制台修改过虚拟服务器配置:
    请勿在升级检测期间执行Service的Endpoint变更操作,然后重新发起检测。
  • 若您手动在SLB控制台修改过后端服务器配置:
    请先恢复SLB虚拟服务器组配置,然后重新发起检测。
add VServerGroup backends
remove VServerGroup backends
modify loadbalancer instance charge type Servicec中实例计费类型与SLB不一致
  • 若您在SLB控制台手动修改过CLB付费类型为PayByCLCU:
    需要将Service的annotation中service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec 删除。
  • 若您未在SLB控制台修改过计费类型:
    请勿在升级检测期间执行Service的变更操作,然后重新发起检测。

适用于

  • 容器服务Kubernetes版