更新时间:2025-09-12 GMT+08:00
分享

K8s废弃资源检查异常处理

检查项内容

检查集群是否存在对应版本已经废弃的资源。

解决方案

  • 问题场景一: 1.25及以上集群中的Service存在废弃的annotation:tolerate-unready-endpoints

    报错日志信息如下:

    some check failed in cluster upgrade: this cluster has deprecated service list: map[test-svc] with deprecated annotation list [tolerate-unready-endpoints]

    以上示例中,需要检查日志信息中所给出的Service(test-svc)是否存在"tolerate-unready-endpoints"的注解,这个注解表示Endpoints控制器是否应该继续为未准备好的Pod创建Endpoints。 如果Service中存在这个已废弃的注解,则将其去掉,并在对应的Service的spec中添加下列字段来替代该注解,详情请参见ServiceSpec

    1. 使用kubectl命令行修改该Service的YAML。
      kubectl edit service test-svc
    2. 删除"tolerate-unready-endpoints"注解,并spec中添加下列字段来替代该注解:
      publishNotReadyAddresses: true

  • 问题场景二: 1.27及以上集群中的Service存在废弃的annotation:service.kubernetes.io/topology-aware-hints

    报错日志信息如下:

    some check failed in cluster upgrade: this cluster has deprecated service list: map[test-svc] with deprecated annotation list [service.kubernetes.io/topology-aware-hints]

    以上示例中,需要检查日志信息中所给出的Service(test-svc)是否存在"service.kubernetes.io/topology-aware-hints"的注解,此注解曾用于在Service中启用拓扑感知提示(topology aware hints),而拓扑感知提示已经进行了更名,如果Service中存在这个已废弃的注解,需要将其去掉,并在对应的Service中用"service.kubernetes.io/topology-mode"的注解进行替换,详情请参见拓扑感知路由(topology aware routing)

    1. 使用kubectl命令行修改该Service的YAML。
      kubectl edit service test-svc
    2. 删除"service.kubernetes.io/topology-aware-hints"注解,并spec中添加"service.kubernetes.io/topology-mode"注解进行替换。

相关文档