# 升级前须知
升级前，您可以在CCE控制台确认您的集群是否可以进行升级操作。确认方法请参见[集群升级](https://support.huaweicloud.com/usermanual-cce/cce_10_0197.html)。
 #### 注意事项
升级集群前，您需要知晓以下事项：
- **请务必慎重并选择合适的时间段进行升级，以减少升级对您的业务带来的影响。**
- 集群升级前，请参考[Kubernetes版本发布说明](https://support.huaweicloud.com/usermanual-cce/cce_10_0068.html)了解每个集群版本发布的特性以及差异，否则可能因为应用不兼容新集群版本而导致升级后异常。例如，您需要检查集群中是否使用了目标版本废弃的API，否则可能导致升级后调用接口失败，详情请参见[废弃API说明]。
- 在配置中心修改集群配置后的10分钟内请勿进行集群升级操作，否则可能由于操作冲突导致集群升级失败。
集群升级时，以下几点注意事项可能会对您的业务存在影响，请您关注：
- 集群升级过程中，不建议对集群进行任何操作。尤其是**关机、重启或删除节点**等操作，都会导致升级失败。
- 集群升级前，**请确认集群中未执行** **[高危操作](https://support.huaweicloud.com/usermanual-cce/cce_10_0054.html)** ，否则可能导致集群升级失败或升级后配置丢失。例如，常见的高危操作有本地修改集群节点的配置、通过ELB控制台修改CCE管理的监听器配置等。建议您通过CCE控制台修改相关配置，以便在升级时自动继承。
  查看可能涉及的CCE节点配置(注：自动化检查仅当前版本在1.19及以上生效)
  - 
    | 配置                                                    | 类型            | 是否纳入修改自动化检查 | 继承参数                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
    |:---|:---|:---|:---|
    | /opt/cloud/cce/kubernetes/kubelet/kubelet            | kubelet配置文件   | 是          | --allowed-unsafe-sysctls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
    | /opt/cloud/cce/kubernetes/kubelet/kubelet_config.yaml | kubelet配置文件    | 是            | cpu-manager-policy event-qps kube-api-burst kube-api-qps max-pods pod-pids-limit allowed-unsafe-sysctls topology-manager-policy topology-manager-scope resolv-conf container-log-max-files container-log-max-size image-gc-high-threshold image-gc-low-threshold event-burst |
    | /opt/cloud/cce/kubernetes/kube-proxy/kube-proxy         | kube-proxy配置文件 | 是              | 无                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
    | /etc/containerd/default_runtime_spec.json              | containerd配置文件  | 是            | max-concurrent-downloads max-container-log-line-size registry-mirrors insecure-registries                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
    | /etc/docker/daemon.json                                  | docker配置文件      | 是             | docker-base-size max-concurrent-downloads max-size max-file                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    | /etc/sysconfig/docker                                  | docker配置文件     | 是          | --insecure-registries                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
       
    
    
- 集群升级过程中，已运行工作负载业务不会中断，但API Server访问会短暂中断，如果业务需要访问API Server可能会受到影响。
- 升级到或新创建于v1.28.15-r80、v1.29.15-r40、v1.30.14-r40、v1.31.14-r0、v1.32.9-r0、v1.33.7-r0、v1.34.2-r0及以上版本的CCE集群时，CCE会为您创建CCENodeAgency委托，用于生成节点上的CCE组件使用的IAM临时访问凭据。若集群版本为v1.35.1-r0及以上，需确保账号具备统一身份认证服务（IAM）的委托操作权限，否则委托创建将失败。
- 集群升级过程中默认不限制应用调度。但下列旧版本集群升级过程中，仍然会给节点打上"node.kubernetes.io/upgrade"（效果为"NoSchedule"）的污点，并在集群升级完成后移除该污点。
  - 所有v1.15集群
  
  - 所有v1.17集群
  
  - 补丁版本小于等于v1.19.16-r4的1.19集群
  
  - 补丁版本小于等于v1.21.7-r0的1.21集群
  
  - 补丁版本小于等于v1.23.5-r0的1.23集群
   
- 集群升级过程中，如果同时升级插件，在集群资源使用率较高的情况下可能会导致插件Pod抢占业务Pod资源，业务Pod被驱逐重建，插件升级完成后将自动恢复。
- 在将集群升级至v1.28及以上版本时，系统会创建同等数量的新控制节点逐步替换旧节点，升级完成后控制节点的IP地址将发生变更。若您原先直接通过控制节点IP访问集群，请改用集群统一的公网或内网地址进行访问，详见[集群连接信息](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html#cce_10_0107__li752814547369)。
- 集群升级过程中，系统将自动编辑/etc/rc.local文件。此操作可能会触发某些安全程序的相应告警，请您知悉并忽略由此产生的安全告警。
- 建议您在配置节点池弹性伸缩时，勾选"忽略DaemonSet类容器预分配的CPU与内存"配置，否则Daemonset类插件/组件升级引入的资源申请变更，可能影响节点池自动伸缩能力。例如，集群升级过程中会自动升级ICAgent组件，若您未勾选上述忽略配置，您需注意该组件的资源申请是否增加，并动态调节节点池弹性伸缩策略。
  查看常见的DaemonSet类插件
  - 常见的DaemonSet类插件
    
    | 插件名称                          | 核心 DaemonSet 组件                                             | 主要功能                                                                             | 官方文档参考                                                                                         |
    |:---|:---|:---|:---|
    | ICAgent                         | icagent                                                       | 默认安装，升级必涉及，非典型CCE插件（插件市场不可见），以DaemonSet形式部署在CCE集群中，配套AOM、LTS等服务进行监控数据采集、日志数据采集。 | [ICAgent性能规格 -\>CCE资源限制](https://support.huaweicloud.com/productdesc-lts/lts-0724.html)         |
    | CCE容器存储 (Everest)             | everest-csi-driver                                         | 默认安装，升级必涉及，负责容器持久化存储卷的挂载、卸载等操作，是存储功能的基础组件。                                         | [CCE容器存储（Everest）](https://support.huaweicloud.com/usermanual-cce/cce_10_0066.html)               |
    | 云原生监控插件                        | node-exporter                                              | 部署在每个节点上，用于收集节点层面的监控数据（如CPU、内存、磁盘使用量）。                                           | [云原生监控插件](https://support.huaweicloud.com/usermanual-cce/cce_10_0406.html)                      |
    | 云原生日志采集插件                      | fluent-bit cop-logs              | 部署在每个节点上，用于采集容器标准输出、容器文件日志及节点日志。                                                  | [云原生日志采集插件](https://support.huaweicloud.com/usermanual-cce/cce_10_0416.html)                    |
    | CCE节点故障检测 (NPD)                | node-problem-detector                                        | 监控集群节点的健康状况，检测并上报硬件、内核、文件系统等层面的问题。                                               | [CCE节点故障检测](https://support.huaweicloud.com/usermanual-cce/cce_10_0132.html)                    |
    | CCE密钥管理 (对接DEW)                | dew-provider csi-secrets-store | 负责与云凭据管理服务交互，将敏感凭据安全地挂载到业务Pod中。                                                 | [CCE密钥管理（对接 DEW）](https://support.huaweicloud.com/usermanual-cce/cce_10_0370.html)              |
    | AI数据加速引擎插件                     | csi-nodeplugin-fluid                                       | 提供存储组件，为集群中的存储资源提供可观测性，支持数据加速。                                                   | [AI数据加速引擎插件](https://support.huaweicloud.com/usermanual-cce/cce_10_0999.html)                 |
    | CCE AI套件（NVIDIA GPU）          | nvidia-gpu-device-plugin                                   | 为容器提供Nvidia GPU异构算力的kubernetes设备插件                                              | [17.4.1 CCEAI套件 （NVIDIA GPU）](https://support.huaweicloud.com/usermanual-cce/cce_10_0141.html) |
    | CCE AI套件（Ascend NPU）       | huawei-npu-device-plugin                                 | 支持容器里使用huawei NPU设备的管理插件                                                        | [17.4.2 CCEAI套件 （Ascend NPU）](https://support.huaweicloud.com/usermanual-cce/cce_10_0239.html)  |
    | 节点本地域名解析加速 NodeLocal DNSCache | node-local-dns-cache                                        | 为集群中每个节点上部署DNS缓存代理提高集群DNS性能                                                   | [17.5.3 节点本地域名解析加速](https://support.huaweicloud.com/usermanual-cce/cce_10_0404.html)            |
    | CCE容器网络扩展指标                    | dolphin                                                    | 采集各节点上的容器网络监控指标                                                                | [17.3.4 CCE容器网络扩展指标](https://support.huaweicloud.com/usermanual-cce/cce_10_0371.html)           |
       
    
    
 
#### 约束与限制
- 集群升级出现异常时，集群可通过备份数据进行回滚。若您在升级成功之后对集群进行了其它操作（例如变更集群规格），将无法再通过备份数据回滚。
- 集群升级至v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及之后的版本时，集群中若安装以下插件，需升级至对应版本，详情请参见[容器运行时和Kubelet共享磁盘空间说明](https://support.huaweicloud.com/usermanual-cce/cce_10_0341.html)。
  - CCE节点故障检测插件：需升级至1.18.10及以上版本
  
  - 云原生日志采集插件：需升级至1.3.0及以上版本
   
- 容器隧道网络集群升级至1.19.16-r4、1.21.7-r0、1.23.5-r0、1.25.1-r0及之后的版本时，会移除匹配目的地址是容器网段且源地址非容器网段的SNAT规则；如果您之前通过配置VPC路由实现集群外直接访问所有的Pod IP，升级后只支持直接访问对应节点上的Pod IP。
- NGINX Ingress控制器插件新版本（参见[版本记录](https://support.huaweicloud.com/usermanual-cce/cce_10_0034.html#cce_10_0034__section183121449435)）配置优雅退出和ELB删除后端控制器宽限时间，支持无损升级。以下插件版本升级过程可能会出现服务短暂不可用，若集群中已安装下列版本的插件，请选择业务低峰期进行升级，具体版本如下：
  
  | 插件版本    | 小版本范围  |
  |:---|:---|
  | 2.1.x  | x \< 32 |
  | 2.2.x  | x \< 41  |
  | 2.4.x | x \< 4 |
     
  
- 集群升级场景涉及NetworkManager重启，触发DHCP Client主动续租，默认情况下将根据子网DNS配置刷新/etc/resolv.conf，建议您通过VPC控制台修改DNS，详情请参见[怎样修改云服务器的DNS服务器地址？](https://support.huaweicloud.com/vpc_faq/vpc_faq_0105.html)。
- 更多版本升级约束请查看[版本差异说明]。
 
 #### 版本差异说明
| 版本升级路径                                                     | 版本差异                                                                                                                                                                                                                                                                                                                                                                                                          | 建议自检措施                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| 所有升级路径                                                    | 请关注Kubernetes API变更，详情请参见[废弃API说明]。                                                                                                                                                                                                                                                                                                                                          | 检查集群中已使用的API版本，避免使用已废弃的API版本或修改为[废弃API说明]中建议替换的API版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| v1.28升级至v1.29、v1.31                                        | Kubernetes v1.29中更改kube-proxy启动的行为，允许kube-proxy设置低于节点sysctl设置的参数值。如节点nf_conntrack_max内核参数值设置为1000000，而kube-proxy计算的值为131072，那么此内核参数会使用kube-proxy计算的值131072。社区PR链接为：<https://github.com/kubernetes/kubernetes/pull/120448>                                                                                                                                                                                      | 产生大量链接的节点例如网关节点极可能遇到该问题。请务必确认nf_conntrack_max是否曾使用sysctl修改为较大值（例如4294967295或1000000），该参数在节点升级后会以kube-proxy计算的值为准，被刷新覆盖为一个较小值（10w+或20w+），影响业务高峰期流量。 请使用节点池kube-proxy组件配置conntrack-min替代直接修改OS内核参数nf_conntrack_max，参考[节点池配置管理](https://support.huaweicloud.com/usermanual-cce/cce_10_0652.html)。                                                                                                                                                                                                                                                                                                                                                                                           |
| v1.23/v1.25 升级至v1.27          | 容器运行时Docker不再被推荐使用，建议您使用Containerd进行替换，详情请参见[容器运行时说明](https://support.huaweicloud.com/usermanual-cce/cce_10_0462.html)。                                                                                                                                                                                                                                                                                      | 已纳入升级前检查。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| v1.23升级至v1.25                                             | 在Kubernetes v1.25版本中， PodSecurityPolicy已被移除，并提供Pod安全性准入控制器（[Pod Security Admission配置](https://support.huaweicloud.com/usermanual-cce/cce_10_0466.html)）作为PodSecurityPolicy的替代。                                                                                                                                                                                                                               | - 如果您需要将PodSecurityPolicy的相关能力迁移到Pod Security Admission中，需要参照以下步骤进行： 1. 确认集群为CCE v1.23的最新版本。  2. 迁移PodSecurityPolicy的相关能力迁移到Pod Security Admission，请参见[Pod Security Admission配置](https://support.huaweicloud.com/usermanual-cce/cce_10_0466.html)。  3. 确认迁移后功能正常，再升级为CCE v1.25版本。    - 如果您不再使用PodSecurityPolicy能力，则可以在删除集群中的PodSecurityPolicy后，直接升级为CCE v1.25版本。   |
| v1.21/v1.19 升级至v1.23  | 对于社区较老版本的Nginx Ingress Controller来说（社区版本v0.49及以下，对应CCE插件版本v1.x.x），在创建Ingress时没有指定Ingress类别为nginx，即annotations中未添加kubernetes.io/ingress.class: nginx的情况，也可以被Nginx Ingress Controller纳管。但对于较新版本的Nginx Ingress Controller来说（社区版本v1.0.0及以上，对应CCE插件版本2.x.x），如果在创建Ingress时没有显示指定Ingress类别为nginx，该资源将被Nginx Ingress Controller忽略，Ingress规则失效，导致服务中断。                                                                 | 已纳入升级前检查，也可参照[NGINX Ingress控制器插件升级检查](https://support.huaweicloud.com/usermanual-cce/cce_10_0508.html)进行自检。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| v1.19升级至v1.21                                              | Kubernetes v1.21集群版本修复了exec probe timeouts不生效的BUG，在此修复之前，exec 探测器不考虑 timeoutSeconds 字段。相反，探测将无限期运行，甚至超过其配置的截止日期，直到返回结果。 若用户未配置，默认值为1秒。升级后此字段生效，如果探测时间超过1秒，可能会导致应用健康检查失败并频繁重启。                                                                                                                                                                                                                                  | 升级前检查您使用了exec probe的应用的probe timeouts是否合理。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| v1.19升级至v1.21                                              | CCE的v1.19及以上版本的kube-apiserver要求客户侧webhook server的证书必须配置Subject Alternative Names (SAN)字段。否则升级后kube-apiserver调用webhook server失败，容器无法正常启动。 根因：Go语言v1.15版本废弃了X.509 [CommonName](https://golang.google.cn/doc/go1.15#commonname)，CCE的v1.19版本的kube-apiserver编译的版本为v1.15，若客户的webhook证书没有Subject Alternative Names (SAN)，kube-apiserver不再默认将X509证书的CommonName字段作为hostname处理，最终导致认证失败。 | 升级前检查您自建webhook server的证书是否配置了SAN字段。 - 若无自建webhook server则不涉及。  - 若未配置，建议您配置使用SAN字段指定证书支持的IP及域名。                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| v1.15升级至v1.19                                            | CCE v1.19版本的控制面与v1.15版本的Kubelet存在兼容性问题。若控制节点升级成功后，节点升级失败或待升级节点发生重启，则节点有极大概率为NotReady状态。 主要原因为升级失败的节点有大概率重启kubelet而触发节点注册流程，v1.15 kubelet默认注册标签（failure-domain.beta.kubernetes.io/is-baremetal和kubernetes.io/availablezone）被v1.19版本kube-apiserver视为非法标签。 v1.19版本中对应的合法标签为node.kubernetes.io/baremetal和failure-domain.beta.kubernetes.io/zone。   | 1. 正常升级流程不会触发此场景。  2. 在控制节点升级完成后尽量避免使用暂停升级功能，快速升级完Node节点。  3. 若Node节点升级失败且无法修复，请尽快驱逐此节点上的应用，请联系技术支持人员，跳过此节点升级，在整体升级完毕后，重置该节点。                                                                                                                                                                                                                                                                                                                                                                                           |
| v1.15升级至v1.19                                            | CCE的v1.15版本集群及v1.19版本集群将docker的存储驱动文件系统由 xfs切换成ext4，可能会导致升级后的java应用Pod内的import包顺序异常，继而导致Pod异常。                                                                                                                                                                                                                                                                                                                | 升级前查看节点上docker配置文件/etc/docker/daemon.json。检查dm.fs配置项是否为xfs。 - 若为ext4或存储驱动为overlay则不涉及。  - 若为xfs则建议您在新版本集群预先部署应用，以测试应用与新版本集群是否兼容。   ``` { "storage-driver": "devicemapper", "storage-opts": [ "dm.thinpooldev=/dev/mapper/vgpaas-thinpool", "dm.use_deferred_removal=true", "dm.fs=xfs", "dm.use_deferred_deletion=true" ] } ```                                                                                                                                                                                                                     |
| v1.15升级至v1.19                                            | CCE的v1.19及以上版本的kube-apiserver要求客户侧webhook server的证书必须配置Subject Alternative Names (SAN)字段。否则升级后kube-apiserver调用webhook server失败，容器无法正常启动。 根因：Go语言v1.15版本废弃了X.509 [CommonName](https://golang.google.cn/doc/go1.15#commonname)，CCE的v1.19版本的kube-apiserver编译的版本为v1.15。CommonName字段作为hostname处理，最终导致认证失败。                                                                           | 升级前检查您自建webhook server的证书是否配置了SAN字段。 - 若无自建webhook server则不涉及。  - 若未配置，建议您配置使用SAN字段指定证书支持的IP及域名。   须知： 为减弱此版本差异对集群升级的影响，v1.15升级至v1.19时，CCE会进行特殊处理，仍然会兼容支持证书不带SAN。但后续升级不再特殊处理，请尽快整改证书，以避免影响后续升级。                                                                                                                                                                                                                                                                                                                            |
| v1.15升级至v1.19                                            | v1.17.17版本及以后的集群CCE自动给用户创建了PSP规则，限制了不安全配置的Pod的创建，如securityContext配置了sysctl的net.core.somaxconn的Pod。                                                                                                                                                                                                                                                                                                             | 升级后请参考资料按需开放非安全系统配置，具体请参见[PodSecurityPolicy配置](https://support.huaweicloud.com/usermanual-cce/cce_10_0275.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| v1.15升级至v1.19                                            | 1.15版本集群原地升级，如果业务中存在initContainer或使用Istio的场景，则需要注意以下约束： 1.16及以上的kubelet统计[QosClass](https://kubernetes.io/zh/docs/tasks/configure-pod-container/quality-service-pod/)和之前版本存在差异，1.15及以下版本仅统计spec.containers下的容器，1.16及以上的kubelet版本会同时统计spec.containers和spec.initContainers下的容器，升级前后会造成Pod的QosClass变化，从而造成Pod中容器重启。                                                                 | 建议参考[表1]在升级前修改业务容器的QosClass规避该问题。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   
 表11.15版本升级前后QosClass变化 
| init容器（根据spec.initContainers计算） | 业务容器（根据spec.containers计算） | Pod（根据spec.containers和spec.initContainers计算） | 是否受影响 |
|:---|:---|:---|:---|
| Guaranteed                      | Besteffort                | Burstable                                   | 是   |
| Guaranteed                      | Burstable                 | Burstable                                   | 否  |
| Guaranteed                    | Guaranteed                | Guaranteed                                  | 否     |
| Besteffort                      | Besteffort               | Besteffort                                    | 否  |
| Besteffort                     | Burstable                 | Burstable                                    | 否     |
| Besteffort                       | Guaranteed                 | Burstable                                   | 是   |
| Burstable                        | Besteffort               | Burstable                                    | 是   |
| Burstable                       | Burstable                 | Burstable                                     | 否    |
| Burstable                       | Guaranteed               | Burstable                                     | 是    |
   
 #### 废弃API说明
随着Kubernetes API的演化，API会周期性地被重组或升级，部分API会被弃用并被最终删除。以下为各Kubernetes社区版本中被废弃的API，更多已废弃的API说明请参见[已弃用 API 的迁移指南](https://kubernetes.io/zh-cn/docs/reference/using-api/deprecation-guide/)。
- Kubernetes社区v1.33、v1.34版本中无废弃的API
- [Kubernetes社区v1.32版本中废弃的API]
- Kubernetes社区v1.30、v1.31版本中无废弃的API
- [Kubernetes社区v1.29版本中废弃的API]
- Kubernetes社区v1.28版本中无废弃的API
- [Kubernetes社区v1.27版本中废弃的API]
- [Kubernetes社区v1.25版本中废弃的API]
- [Kubernetes社区v1.22版本中废弃的API]
- [Kubernetes社区v1.16版本中废弃的API]
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
当某API被废弃时，已经创建的资源对象不受影响，但新建或编辑该资源时将出现API版本被拦截的情况。
 表2Kubernetes社区v1.32版本中废弃的API 
| 资源名称                                    | 废弃API版本                                | 替代API版本                                                                          | 变更说明                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| FlowSchema 和 PriorityLevelConfiguration | flowcontrol.apiserver.k8s.io/v1beta3 | flowcontrol.apiserver.k8s.io/v1 （该API从社区v1.29版本开始可用） | **flowcontrol.apiserver.k8s.io/v1**中的显着变化： PriorityLevelConfiguration的spec.limited.assuredConcurrencyShares字段已被重命名为spec.limited.nominalConcurrencyShares，仅在未指定时默认为30，并且显式值0不会更改为 30。 |
   
 表3Kubernetes社区v1.29版本中废弃的API 
| 资源名称                                   | 废弃API版本                           | 替代API版本                                                                                                                                                                                                 | 变更说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| FlowSchema 和 PriorityLevelConfiguration | flowcontrol.apiserver.k8s.io/v1beta2 | flowcontrol.apiserver.k8s.io/v1 （该API从社区v1.29版本开始可用） flowcontrol.apiserver.k8s.io/v1beta3 （该API从社区v1.26版本开始可用） | - **flowcontrol.apiserver.k8s.io/v1** 中的显着变化： PriorityLevelConfiguration的spec.limited.assuredConcurrencyShares字段已被重命名为spec.limited.nominalConcurrencyShares，仅在未指定时默认为30，并且显式值0不会更改为 30。   - **flowcontrol.apiserver.k8s.io/v1beta3** 中需要额外注意的变更： PriorityLevelConfiguration的spec.limited.assuredConcurrencyShares字段已被更名为spec.limited.nominalConcurrencyShares。    |
   
 表4Kubernetes社区v1.27版本中废弃的API 
| 资源名称                                     | 废弃API版本                             | 替代API版本                                                                              | 变更说明 |
|:---|:---|:---|:---|
| CSIStorageCapacity                      | storage.k8s.io/v1beta1               | storage.k8s.io/v1 （该API从社区v1.24版本开始可用）                    | -      |
| FlowSchema 和 PriorityLevelConfiguration | flowcontrol.apiserver.k8s.io/v1beta1 | flowcontrol.apiserver.k8s.io/v1beta3 （该API从社区v1.26版本开始可用） | -    |
| HorizontalPodAutoscaler                 | autoscaling/v2beta2                   | autoscaling/v2 （该API从社区v1.23版本开始可用）                          | -        |
   
 表5Kubernetes社区v1.25版本中废弃的API 
| 资源名称                   | 废弃API版本                  | 替代API版本                                                                | 变更说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| CronJob                  | batch/v1beta1            | batch/v1 （该API从社区v1.21版本开始可用）          | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| EndpointSlice             | discovery.k8s.io/v1beta1 | discovery.k8s.io/v1 （该API从社区v1.21版本开始可用） | 此次更新需注意以下变更： - 每个Endpoint中，**topology\["kubernetes.io/hostname"\]** 字段已被弃用，请使用**nodeName**字段代替。  - 每个Endpoint中，**topology\["kubernetes.io/zone"\]** 字段已被弃用，请使用**zone**字段代替。  - **topology** 字段被替换为**deprecatedTopology**，并且在 v1 版本中不可写入。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Event                   | events.k8s.io/v1beta1  | events.k8s.io/v1 （该API从社区v1.19版本开始可用）    | 此次更新需注意以下变更： - **type** 字段只能设置为 **Normal** 和 **Warning** 之一。  - **involvedObject** 字段被更名为 **regarding**。  - **action** 、**reason** 、**reportingController** 和 **reportingInstance** 字段 在创建新的 **events.k8s.io/v1** 版本 Event 时都是必需的字段。  - 使用 **eventTime** 而不是已被弃用的 **firstTimestamp** 字段 （该字段已被更名为 **deprecatedFirstTimestamp** ，且不允许出现在新的 **events.k8s.io/v1** Event 对象中）。  - 使用 **series.lastObservedTime** 而不是已被弃用的 **lastTimestamp** 字段 （该字段已被更名为 **deprecatedLastTimestamp** ，且不允许出现在新的 **events.k8s.io/v1** Event 对象中）。  - 使用 **series.count** 而不是已被弃用的 **count** 字段 （该字段已被更名为 **deprecatedCount** ，且不允许出现在新的 **events.k8s.io/v1** Event 对象中）。  - 使用 **reportingController** 而不是已被弃用的 **source.component** 字段 （该字段已被更名为 **deprecatedSource.component** ，且不允许出现在新的 **events.k8s.io/v1** Event 对象中）。  - 使用 **reportingInstance** 而不是已被弃用的 **source.host** 字段 （该字段已被更名为 **deprecatedSource.host** ，且不允许出现在新的 **events.k8s.io/v1** Event 对象中）。   |
| HorizontalPodAutoscaler | autoscaling/v2beta1    | autoscaling/v2 （该API从社区v1.23版本开始可用）   | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| PodDisruptionBudget      | policy/v1beta1         | policy/v1 （该API从社区v1.21版本开始可用）         | 在 **policy/v1** 版本的 **PodDisruptionBudget** 中将 **spec.selector** 设置为空（{}）时会选择名字空间中的所有 Pod（在 **policy/v1beta1** 版本中，空的 **spec.selector** 不会选择任何 Pod）。如果 **spec.selector** 未设置，则在两个 API 版本下都不会选择任何 Pod。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| PodSecurityPolicy        | policy/v1beta1          | -                                                                      | 从社区v1.25版本开始，PodSecurityPolicy资源不再提供policy/v1beta1版本的API，并且PodSecurityPolicy准入控制器也会被删除。 请使用[Pod Security Admission配置](https://support.huaweicloud.com/usermanual-cce/cce_10_0466.html)替代。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| RuntimeClass           | node.k8s.io/v1beta1    | node.k8s.io/v1（该API从社区v1.20版本开始可用）                                   | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
 表6Kubernetes社区v1.22版本中废弃的API 
| 资源名称                                                                                                                                                                                   | 废弃API版本                                                                 | 替代API版本                                                                          | 变更说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| MutatingWebhookConfiguration ValidatingWebhookConfiguration                                                                                               | admissionregistration.k8s.io/v1beta1                                     | admissionregistration.k8s.io/v1 （该API从社区v1.16版本开始可用） | - **webhooks\[\*\].failurePolicy** 在 v1 版本中默认值从 **Ignore** 改为 **Fail**。  - **webhooks\[\*\].matchPolicy** 在 v1 版本中默认值从 **Exact** 改为 **Equivalent**。  - **webhooks\[\*\].timeoutSeconds** 在 v1 版本中默认值从 **30s** 改为 **10s**。  - **webhooks\[\*\].sideEffects** 的默认值被删除，并且该字段变为必须指定； 在 v1 版本中可选的值只能是 **None** 和 **NoneOnDryRun** 之一。  - **webhooks\[\*\].admissionReviewVersions** 的默认值被删除，在 v1 版本中此字段变为必须指定（**AdmissionReview** 的被支持版本包括 v1 和 v1beta1）。  - **webhooks\[\*\].name** 必须在通过 **admissionregistration.k8s.io/v1** 创建的对象列表中唯一。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| CustomResourceDefinition                                                                                                                                                                 | apiextensions.k8s.io/v1beta1                                              | apiextensions/v1 （该API从社区v1.16版本开始可用）             | - **spec.scope** 的默认值不再是 **Namespaced**，该字段必须显式指定。  - **spec.version** 在 v1 版本中被删除，应改用 **spec.versions**。  - **spec.validation** 在 v1 版本中被删除，应改用 **spec.versions\[\*\].schema**。  - **spec.subresources** 在 v1 版本中被删除，应改用 **spec.versions\[\*\].subresources**。  - **spec.additionalPrinterColumns** 在 v1 版本中被删除，应改用 **spec.versions\[\*\].additionalPrinterColumns**。  - **spec.conversion.webhookClientConfig** 在 v1 版本中被移动到 **spec.conversion.webhook.clientConfig** 中。  - **spec.conversion.conversionReviewVersions** 在 v1 版本中被移动到 **spec.conversion.webhook.conversionReviewVersions**    - **spec.versions\[\*\].schema.openAPIV3Schema** 在创建 v1 版本的 **CustomResourceDefinition** 对象时变成必需字段，并且其取值必须是一个[结构化的 Schema](https://kubernetes.io/zh-cn/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#specifying-a-structural-schema)。  - **spec.preserveUnknownFields: true** 在创建 v1 版本的 **CustomResourceDefinition** 对象时不允许指定；该配置必须在 Schema 定义中使用 **x-kubernetes-preserve-unknown-fields: true** 来设置。  - 在 v1 版本中，**additionalPrinterColumns** 的条目中的 **JSONPath** 字段被更名为 **jsonPath** （补丁 [#66531](https://github.com/kubernetes/kubernetes/issues/66531)）。   |
| APIService                                                                                                                                                                               | apiregistration/v1beta1                                                    | apiregistration.k8s.io/v1 （该API从社区v1.10版本开始可用）       | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| TokenReview                                                                                                                                                                           | authentication.k8s.io/v1beta1                                          | authentication.k8s.io/v1 （该API从社区v1.6版本开始可用）        | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| LocalSubjectAccessReview SelfSubjectAccessReview SubjectAccessReview SelfSubjectRulesReview | authorization.k8s.io/v1beta1                                            | authorization.k8s.io/v1 （该API从社区v1.16版本开始可用）   | **spec.group** 在 v1 版本中被更名为 **spec.groups** （补丁 [#32709](https://github.com/kubernetes/kubernetes/issues/32709)）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| CertificateSigningRequest                                                                                                                                                               | certificates.k8s.io/v1beta1                                             | certificates.k8s.io/v1 （该API从社区v1.19版本开始可用）        | **certificates.k8s.io/v1** 中需要额外注意的变更： - 对于请求证书的 API 客户端而言： - **spec.signerName** 现在变成必需字段（参阅 [已知的 Kubernetes 签署者](https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers)）， 并且通过 certificates.k8s.io/v1 API 不可以创建签署者为 **kubernetes.io/legacy-unknown** 的请求。  - **spec.usages** 现在变成必需字段，其中不可以包含重复的字符串值， 并且只能包含已知的用法字符串。    - 对于要批准或者签署证书的 API 客户端而言： - **status.conditions** 中不可以包含重复的类型。  - **status.conditions\[\*\].status** 字段现在变为必需字段。  - **status.certificate** 必须是 PEM 编码的，而且其中只能包含 CERTIFICATE 数据块。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Lease                                                                                                                                                                                  | coordination.k8s.io/v1beta1                                               | coordination.k8s.io/v1 （该API从社区v1.14版本开始可用）       | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Ingress                                                                                                                                                                                  | networking.k8s.io/v1beta1 extensions/v1beta1 | networking.k8s.io/v1 （该API从社区v1.19版本开始可用）        | - **spec.backend** 字段被更名为 **spec.defaultBackend**。  - 后端的 **serviceName** 字段被更名为 **service.name**。  - 数值表示的后端 **servicePort** 字段被更名为 **service.port.number**。  - 字符串表示的后端 **servicePort** 字段被更名为 **service.port.name**。  - 对所有要指定的路径，**pathType** 都成为必需字段。 可选项为 **Prefix** 、**Exact** 和 **ImplementationSpecific** 。 要匹配 v1beta1 版本中未定义路径类型时的行为，可使用 **ImplementationSpecific**。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| IngressClass                                                                                                                                                                           | networking.k8s.io/v1beta1                                                | networking.k8s.io/v1 （该API从社区v1.19版本开始可用）       | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ClusterRole ClusterRoleBinding Role RoleBinding                                             | rbac.authorization.k8s.io/v1beta1                                         | rbac.authorization.k8s.io/v1 （该API从社区v1.8版本开始可用）    | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| PriorityClass                                                                                                                                                                              | scheduling.k8s.io/v1beta1                                              | scheduling.k8s.io/v1 （该API从社区v1.14版本开始可用）           | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| CSIDriver CSINode StorageClass VolumeAttachment                                               | storage.k8s.io/v1beta1                                                     | storage.k8s.io/v1                                                              | - CSIDriver从社区v1.19版本开始在**storage.k8s.io/v1**中提供。  - CSINode从社区v1.17版本开始在**storage.k8s.io/v1**中提供。  - StorageClass从社区v1.6 版本开始在**storage.k8s.io/v1**中提供。  - VolumeAttachment从社区v1.13版本开始在**storage.k8s.io/v1**中提供。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
 表7Kubernetes社区v1.16版本中废弃的API 
| 资源名称             | 废弃API版本                                                                                                   | 替代API版本                                                              | 变更说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| NetworkPolicy    | extensions/v1beta1                                                                                        | networking.k8s.io/v1 （该API从社区v1.8版本开始可用） | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| DaemonSet         | extensions/v1beta1 apps/v1beta2                                             | apps/v1 （该API从社区v1.9版本开始可用）           | - **spec.templateGeneration** 字段被删除。  - **spec.selector** 现在变成必需字段，并且在对象创建之后不可变更； 可以将现有模板的标签作为选择算符以实现无缝迁移。  - **spec.updateStrategy.type** 的默认值变为 **RollingUpdate** （**extensions/v1beta1** API 版本中的默认值是 **OnDelete**）。                                                                                                                                                                                                                                                                                                                                       |
| Deployment        | extensions/v1beta1 apps/v1beta1 apps/v1beta2  | apps/v1 （该API从社区v1.9版本开始可用）               | - **spec.rollbackTo** 字段被删除。  - **spec.selector** 字段现在变为必需字段，并且在 Deployment 创建之后不可变更； 可以使用现有的模板的标签作为选择算符以实现无缝迁移。  - **spec.progressDeadlineSeconds** 的默认值变为 600 秒 （**extensions/v1beta1** 中的默认值是没有期限）。  - **spec.revisionHistoryLimit** 的默认值变为 10 （**apps/v1beta1** API 版本中此字段默认值为 2，在**extensions/v1beta1** API 版本中的默认行为是保留所有历史记录）。  - **maxSurge** 和 **maxUnavailable** 的默认值变为 25% （在 **extensions/v1beta1** API 版本中，这些字段的默认值是 1）。   |
| StatefulSet      | apps/v1beta1 apps/v1beta2                                                      | apps/v1 （该API从社区v1.9版本开始可用）             | - **spec.selector** 字段现在变为必需字段，并且在 StatefulSet 创建之后不可变更； 可以使用现有的模板的标签作为选择算符以实现无缝迁移。  - **spec.updateStrategy.type** 的默认值变为 **RollingUpdate** （**apps/v1beta1** API 版本中的默认值是 **OnDelete**）。                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| ReplicaSet     | extensions/v1beta1 apps/v1beta1 apps/v1beta2 | apps/v1 （该API从社区v1.9版本开始可用）           | **spec.selector** 现在变成必需字段，并且在对象创建之后不可变更； 可以将现有模板的标签作为选择算符以实现无缝迁移。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| PodSecurityPolicy | extensions/v1beta1                                                                                        | policy/v1beta1 （该API从社区v1.10版本开始可用）      | **policy/v1beta1** API 版本的 PodSecurityPolicy 会在 v1.25 版本中移除。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
