华为云用户手册

  • 冷却时间说明 节点池中配置的两个冷却时间之间的影响和关系如下: 弹性扩容中的冷却时间 弹性缩容冷却时间:当前节点池扩容出的节点多长时间不能被缩容,作用范围为节点池级别。 弹性缩容中的冷却时间 扩容后缩容冷却时间:autoscaler触发扩容后(不可调度、指标、周期策略)整个集群多长时间内不能被缩容,作用范围为集群级别。 节点删除后缩容冷却时间:autoscaler触发缩容后整个集群多长时间内不能继续缩容,作用范围为集群级别。 缩容失败后缩容冷却时间:autoscaler触发缩容失败后整个集群多长时间内不能继续缩容,作用范围为集群级别。
  • AutoScaler重试扩容的周期说明 当节点池扩容因为资源售罄、配额不足、节点安装过程中错误等原因失败时,AutoScaler 能够重试同一节点池或者切换其他节点池扩容,重试扩容的周期如下: 当节点池资源售罄或者用户配额不足时,AutoScaler将按照5min、10min、20min对节点池进行冷却,最多冷却30min。 同时AutoScaler将在下一个10s切换其他节点池进行扩容,直到扩容出期望的节点或者所有节点池都进入冷却。 当节点池在节点安装过程中发生错误时,节点池会进入5min冷却期。 冷却期过后,AutoScaler才可以重新触发该节点池扩容。 当安装过程中的错误节点被自动回收后,Cluster AutoScaler将在1min内重新评估集群状态,按需触发节点池扩容。 在节点池扩容时,如果节点池节点长时间处于安装中状态,Cluster AutoScaler将最多容忍此类节点15min,超过容忍时间后,将重新评估集群状态,按需触发节点池扩容。
  • 配置节点池弹性伸缩策略 在CCE控制台,单击集群名称进入集群。 单击左侧导航栏的“节点管理”,在目标节点池所在行右上角单击“弹性伸缩”。 若未安装autoscaler插件,请根据业务需求配置插件参数后单击“安装”,并等待插件安装完成。插件配置详情请参见CCE集群弹性引擎。 若已安装autoscaler插件,则可直接配置弹性伸缩策略。 配置节点池弹性伸缩策略。 伸缩配置 自定义扩容规则:单击“添加规则”,在弹出的添加规则窗口中设置参数。您可以设置多条节点弹性策略,最多可以添加1条CPU使用率指标规则、1条内存使用率指标规则,且规则总数小于等于10条。 规则类型可选择“指标触发”或“周期触发”,两种类型区别如下: 表1 自定义规则类型 规则类型 参数设置 指标触发 触发条件:请选择“CPU分配率”或“内存分配率”,输入百分比的值。该百分比应大于autoscaler插件中配置的缩容百分比。 说明: 分配率 = 节点池容器组(Pod)资源申请量 / 节点池Pod可用资源量 (Node Allocatable) 。 如果多条规则同时满足条件,会有如下两种执行的情况: 如果同时配置了“CPU分配率”和“内存分配率”的规则,两种或多种规则同时满足扩容条件时,执行扩容节点数更多的规则。 如果同时配置了“CPU分配率”和“周期触发”的规则,当达到“周期触发”的时间值时CPU也满足扩容条件时,较早执行的A规则会将节点池状态置为伸缩中状态,导致B规则无法正常执行。待A规则执行完毕,节点池状态恢复正常后,B规则也不会执行。 配置了“CPU分配率”和“内存分配率”的规则后,策略的检测周期会因autoscaler每次循环的处理逻辑而变动。只要一次检测出满足条件就会触发扩容(还需要满足冷却时间、节点池状态等约束条件)。 当集群中的节点数已到达集群规模上限时,或CPU、内存达到autoscaler插件设置的上限时,将不会触发指标扩容。 执行动作:达到触发条件后所要执行的动作。 自定义:为节点池增加指定数量的节点。 自动计算:当达到触发条件时,自动扩容节点,将分配率恢复到触发条件以下。计算公式如下: 扩容节点数 = 节点池容器组(Pod)资源申请值 / (单节点可用资源值 * 目标分配率) - 当前节点数 + 1 周期触发 触发时间:可选择每天、每周、每月或每年的具体时间点。 执行动作:达到触发时间值后所要执行的动作,为节点池增加指定数量的节点。 节点数范围:弹性伸缩时节点池下的节点数量会始终介于节点数范围内。 冷却时间:指当前节点池扩容出的节点多长时间不能被缩容。 伸缩对象 规格选择:对节点池中的节点规格单独设置是否开启弹性伸缩。 查看集群级别的弹性伸缩配置,集群级别的配置对所有节点池生效。当前页面仅支持查看集群级别的弹性伸缩策略,如需修改请前往“配置中心”进行设置,详情请参见配置集群弹性伸缩策略。 设置完成后,单击“确定”。
  • 约束限制 仅按需计费节点池支持弹性伸缩。 当节点池中节点为0时,autoscaler插件无法获取节点CPU/内存数据,指标触发的节点弹性规则将不会生效。 GPU/NPU节点驱动未安装成功时,autoscaler插件会认为该节点未完全可用,通过CPU/内存指标触发的节点弹性规则将不会生效。 缩容节点会导致与节点关联的本地持久卷类型的PVC/PV数据丢失,无法恢复,且PVC/PV无法再正常使用。缩容节点时使用了本地持久存储卷的Pod会从缩容的节点上被驱逐,并重新创建Pod,Pod会一直处于pending状态,因为Pod使用的PVC带有节点标签,由于冲突无法调度成功。 使用autoscaler插件时,部分污点/注解可能会影响弹性伸缩功能,因此集群中应避免使用以下污点/注解: 节点避免使用ignore-taint.cluster-autoscaler.kubernetes.io的污点:该污点作用于节点。由于autoscaler原生支持异常扩容保护策略,会定期评估集群的可用节点比例,非Ready分类节点数统计比例超过45%比例会触发保护机制;而集群中任何存在该污点的节点都将从自动缩放器模板节点中过滤掉,记录到非Ready分类的节点中,进而影响集群的扩缩容。 Pod避免使用cluster-autoscaler.kubernetes.io/enable-ds-eviction的注解:该注解作用于Pod,控制DaemonSet Pod是否可以被autoscaler驱逐。详情请参见Kubernetes原生的标签、注解和污点。
  • (停止维护)Kubernetes 1.9及之前版本说明 云容器引擎(CCE)严格遵循社区一致性认证。本文介绍CCE发布Kubernetes 1.9及之前版本所做的变更说明。 表1 v1.9及之前版本集群说明 Kubernetes版本(CCE增强版) 版本说明 v1.9.10-r2 主要特性: ELB负载均衡支持源IP跟后端服务会话保持 v1.9.10-r1 主要特性: 支持对接SFS存储 支持Service自动创建二代ELB 支持公网二代ELB透传源IP 支持设置节点最大实例数maxPods v1.9.10-r0 主要特性: kubernetes对接ELB/Ingress,新增流控机制 Kubernetes同步社区1.9.10版本 支持Kubernetes RBAC能力授权 问题修复: 修复操作系统cgroup内核BUG导致概率出现的节点内存泄漏问题 v1.9.7-r1 主要特性: 增强PVC和PV事件的上报机制,PVC详情页支持查看事件 支持对接第三方认证系统 集群支持纳管EulerOS2.3的物理机 数据盘支持用户自定义分配比例 裸金属场景支持对接EVS云硬盘存储 裸金属场景下支持IB网卡 裸金属场景支持通过CM-v3接口创建节点 v1.9.7-r0 主要特性: 新建集群的Docker版本升级到1706 支持DNS级联 支持插件化管理 Kubernetes同步社区1.9.7版本 支持7层ingress的https功能 有状态工作负载支持迁移调度更新升级 v1.9.2-r3 主要特性: 集群支持创建/纳管CentOS7.4操作系统的节点 kubernetes的Service支持对接DNAT网关服务 NetworkPolicy能力开放 增强型ELB支持Service配置多个端口 问题修复: 修复kubernetes资源回收过程中连不上kube-apiserver导致pod残留的问题 修复节点弹性扩容数据不准确的问题 v1.9.2-r2 主要特性: 经典型ELB支持自定义健康检查端口 经典型ELB性能优化 ELB四层负载均衡支持修改Service的端口 问题修复: 修复网络插件防止健康检查概率死锁问题 修复高可用集群haproxy连接数限制问题 v1.9.2-r1 主要特性: Kubernetes同步社区1.9.2版本 集群节点支持CentOS 7.1操作系统 支持GPU节点,支持GPU资源限制 支持web-terminal插件 v1.7.3-r13 主要特性: 新建集群的Docker版本升级到1706 支持DNS级联 支持插件化管理 增强PVC和PV事件的上报机制 裸金属场景支持对接OBS对象存储 v1.7.3-r12 主要特性: 集群支持创建/纳管CentOS7.4操作系统的节点 kubernetes的Service支持对接DNAT网关服务 NetworkPolicy能力开放 增强型ELB支持Service配置多个端口 问题修复: 修复kubernetes资源回收过程中连不上kube-apiserver导致pod残留的问题 修复节点弹性扩容数据不准确的问题 事件老化周期提示修正:集群老化周期为1小时 v1.7.3-r11 主要特性: 经典型ELB支持自定义健康检查端口 经典型ELB性能优化 ELB四层负载均衡支持修改Service的端口 支持删除命名空间 支持EVS云硬盘存储解绑 支持配置迁移策略 问题修复: 修复网络插件防止健康检查概率死锁问题 修复高可用集群haproxy连接数限制问题 v1.7.3-r10 主要特性: 容器网络支持Overlay L2模式 集群节点支持GPU类型虚机 集群节点支持CentOS 7.1操作系统,支持操作系统选择 Windows集群支持对接二代ELB 支持弹性文件服务SFS导入 裸金属场景支持对接SFS文件存储、OBS对象存储 v1.7.3-r9 主要特性: 工作负载支持跨AZ部署 容器存储支持OBS对象存储服务 支持ELB L7负载均衡 Windows集群支持EVS存储 裸金属场景支持devicemapper direct-lvm模式 v1.7.3-r8 主要特性: 集群支持节点弹性扩容 支持纳管ARM节点 v1.7.3-r7 主要特性: 容器隧道网络集群支持纳管SUSE 12sp2节点 docker支持direct-lvm模式挂载devicemapper 集群支持安装dashboard 支持创建Windows集群 v1.7.3-r6 主要特性: 集群存储对接原生EVS接口 v1.7.3-r5 主要特性: 支持创建HA高可靠集群 问题修复: 节点重启后容器网络不通 v1.7.3-r4 主要特性: 集群性能优化 裸金属场景支持对接ELB v1.7.3-r3 主要特性: 容器存储支持KVM虚拟机挂载 v1.7.3-r2 主要特性: 容器存储支持SFS文件存储 工作负载支持自定义应用日志 开放工作负载优雅缩容 问题修复: 修复容器存储AK/SK会过期的问题 v1.7.3-r1 主要特性: kube-dns支持外部域名解析 v1.7.3-r0 主要特性: Kubernetes同步社区1.7.3版本 支持ELB负载均衡 容器存储支持XEN虚拟机挂载 容器存储支持EVS云硬盘存储 父主题: Kubernetes版本发布记录
  • 容器底层文件存储系统说明 Docker 1.15.6及之前集群版本Docker底层文件存储系统采用xfs格式。 1.15.11及之后版本集群新建节点或重置后Docker底层文件存储系统全部采用ext4格式。 对于之前使用xfs格式容器应用,需要注意底层文件存储格式变动影响(不同文件系统格式文件排序存在差异:如部分java应用引用某个jar包,但目录中存在多个版本该jar包,在不指定版本时实际引用包由系统文件排序决定)。 查看当前节点使用的Docker底层存储文件格式可采用docker info | grep "Backing Filesystem"确认。 Containerd 使用Containerd容器引擎的节点,均采用ext4格式的文件存储系统。
  • 简介 节点是容器集群组成的基本元素。节点取决于业务,既可以是虚拟机,也可以是物理机。每个节点都包含运行Pod所需要的基本组件,包括Kubelet、Kube-proxy 、Container Runtime等。 CCE创建的Kubernetes集群包含Master节点和Node节点,本章讲述的节点特指Node节点,Node节点是集群的计算节点,即运行容器化应用的节点。 在云容器引擎CCE中,主要采用高性能的弹性云服务器ECS或裸金属服务器BMS作为节点来构建高可用的Kubernetes集群。
  • 节点paas用户/用户组说明 在集群中创建节点时,默认会在节点上创建paas用户/用户组。节点上的CCE组件和CCE插件在非必要时会以非root用户(paas用户/用户组)运行,以实现运行权限最小化,如果修改paas用户/用户组可能会影响节点上CCE组件和业务Pod正常运行。 CCE组件正常运行依赖paas用户/用户组,您需要注意以下几点要求: 请勿自行修改节点内目录权限、容器目录权限等。 请勿自行修改paas用户/用户组的GID和UID。 请勿在业务中直接使用paas用户/用户组设置业务文件的所属用户和组。
  • 节点生命周期 生命周期是指节点从创建到删除(或释放)历经的各种状态。 表1 节点生命周期状态说明 状态 状态属性 说明 运行中 稳定状态 节点正常运行状态,并且已连接上集群。 在这个状态的节点可以运行您的业务。 不可用 稳定状态 节点运行异常状态。 在这个状态下的实例,不能对外提供业务,需要重置节点。 创建中 中间状态 创建节点实例后,在节点状态进入运行中之前的状态。 安装中 中间状态 节点处于安装Kubernetes软件的过程中。 删除中 中间状态 节点处于正在被删除的状态。 如果长时间处于该状态,则说明出现异常。 关机 稳定状态 节点被正常停止。 在这个状态下的实例,不能对外提供业务,您可以在弹性云服务器列表页对其进行开机操作。 错误 稳定状态 节点处于异常状态。 在这个状态下的实例,不能对外提供业务,需要重置节点。
  • 弃用和移除 Kubernetes 1.27版本 在Kubernetes 1.27版本,针对卷扩展 GA 特性的以下特性门禁将被移除,且不得再在 --feature-gates 标志中引用。(ExpandCSIVolumes,ExpandInUsePersistentVolumes,ExpandPersistentVolumes) 在Kubernetes 1.27版本,移除--master-service-namespace 命令行参数。该参数支持指定在何处创建名为kubernetes的Service来表示API服务器。自v1.26版本已被弃用,1.27版本正式移除。 在Kubernetes 1.27版本,移除 ControllerManagerLeaderMigration 特性门禁。Leader Migration 提供了一种机制,让 HA 集群在升级多副本的控制平面时通过在 kube-controller-manager 和 cloud-controller-manager 这两个组件之间共享的资源锁,安全地迁移“特定于云平台”的控制器。特性自 v1.24 正式发布,被无条件启用, 在 v1.27 版本中此特性门禁选项将被移除。 在Kubernetes 1.27版本,移除 --enable-taint-manager 命令行参数。该参数支持的特性基于污点的驱逐已被默认启用, 且在标志被移除时也将继续被隐式启用。 在Kubernetes 1.27版本,移除--pod-eviction-timeout 命令行参数。弃用的命令行参数 --pod-eviction-timeout 将被从 kube-controller-manager 中移除。 在Kubernetes 1.27版本,移除 CSI Migration 特性门禁。CSI migration 程序允许从树内卷插件移动到树外 CSI 驱动程序。 CSI 迁移自 Kubernetes v1.16 起正式发布,关联的 CSIMigration 特性门禁将在 v1.27 中被移除。 在Kubernetes 1.27版本,移除 CSIInlineVolume 特性门禁。CSI Ephemeral Volume 特性允许在 Pod 规约中直接指定 CSI 卷作为临时使用场景。这些 CSI 卷可用于使用挂载的卷直接在 Pod 内注入任意状态,例如配置、Secret、身份、变量或类似信息。 此特性在 v1.25 中进阶至正式发布。因此,此特性门禁 CSIInlineVolume 将在 v1.27 版本中移除。 在Kubernetes 1.27版本,移除 EphemeralContainers 特性门禁。对于 Kubernetes v1.27,临时容器的 API 支持被无条件启用;EphemeralContainers 特性门禁将被移除。 在Kubernetes 1.27版本,移除 LocalStorageCapacityIsolation 特性门禁。Local Ephemeral Storage Capacity Isolation 特性在 v1.25 中进阶至正式发布。此特性支持 emptyDir 卷这类 Pod 之间本地临时存储的容量隔离, 因此可以硬性限制 Pod 对共享资源的消耗。如果本地临时存储的消耗超过了配置的限制,kubelet 将驱逐 Pod。 特性门禁 LocalStorageCapacityIsolation 将在 v1.27 版本中被移除。 在Kubernetes 1.27版本,移除 NetworkPolicyEndPort 特性门禁。Kubernetes v1.25 版本将 NetworkPolicy 中的 endPort 进阶至正式发布。 支持 endPort 字段的 NetworkPolicy 提供程序可用于指定一系列端口以应用 NetworkPolicy。 在Kubernetes 1.27版本,移除 StatefulSetMinReadySeconds 特性门禁。对于作为 StatefulSet 一部分的 Pod,只有当 Pod 至少在 minReadySeconds 中指定的持续期内可用(并通过检查)时,Kubernetes 才会将此 Pod 标记为只读。 该特性在 Kubernetes v1.25 中正式发布,StatefulSetMinReadySeconds 特性门禁将锁定为 true,并在 v1.27 版本中被移除。 在Kubernetes 1.27版本,移除 IdentifyPodOS 特性门禁。启用该特性门禁,你可以为 Pod 指定操作系统,此项特性支持自 v1.25 版本进入稳定。 IdentifyPodOS 特性门禁将在 Kubernetes v1.27 中被移除。 在Kubernetes 1.27版本,移除 DaemonSetUpdateSurge 特性门禁。Kubernetes v1.25 版本还稳定了对 DaemonSet Pod 的浪涌支持, 其实现是为了最大限度地减少部署期间 DaemonSet 的停机时间。 DaemonSetUpdateSurge 特性门禁将在 Kubernetes v1.27 中被移除。 在Kubernetes 1.27版本,移除 --container-runtime 命令行参数。kubelet 接受一个已弃用的命令行参数 --container-runtime, 并且在移除 dockershim 代码后,唯一有效的值将是 remote。 Kubernetes v1.27 将移除该参数,该参数自 v1.24 版本以来已被弃用。 Kubernetes 1.26版本 移除v2beta2版本的HorizontalPodAutoscaler API HorizontalPodAutoscaler的autoscaling/v2beta2 API版本将不再在1.26版本中提供,详情请参见各发行版本中移除的API。 用户应迁移至autoscaling/v2版本的API。 移除v1beta1版本的流量控制API组 在Kubernetes 1.26版本后,开始不再提供flowcontrol.apiserver.k8s.io/v1beta1 API版本的FlowSchema和PriorityLevelConfiguration,详情请参见各发行版本中移除的API。但此API从Kubernetes 1.23版本开始,可以使用flowcontrol.apiserver.k8s.io/v1beta2;从Kubernetes 1.26版本开始,可以使用flowcontrol.apiserver.k8s.io/v1beta3。 存储驱动的弃用和移除,移除云服务厂商的in-tree卷驱动。 移除kube-proxy userspace模式 在Kubernetes 1.26版本,Userspace代理模式已被移除,已弃用的Userspace代理模式不再受Linux或Windows支持。Linux用户应使用Iptables或IPVS,Windows用户应使用Kernelspace,现在使用--mode userspace会失败。 Windows winkernel kube-proxy不再支持Windows HNS v1 APIs。 弃用--prune-whitelist标志 在Kubernetes 1.26版本,为了支持Inclusive Naming Initiative,--prune-whitelist标志将被弃用,并替换为--prune-allowlist,该标志在未来将彻底移除。 移除动态Kubelet配置 DynamicKubeletConfig特性门控移除,通过API动态更新节点上的Kubelet配置。在Kubernetes 1.24版本中从Kubelet移除相关代码,在Kubernetes 1.26版本从APIServer移除相关代码,移除该逻辑有助于简化代码提升可靠性,推荐方式是修改Kubelet配置文件然后重启Kubelet。更多信息,请参见在Kubernetes 1.26版本从APIServer移除相关代码。 弃用kube-apiserver命令行参数 在Kubernetes 1.26版本,正式标记弃用 --master-service-namespace 命令行参数,它对APIServer没有任何效果。 弃用kubectl run命令行参数 在Kubernetes 1.26版本,kubectl run未使用的几个子命令将被标记为弃用,并在未来某个版本移除,包括--cascade、--filename、--force、--grace-period、--kustomize、--recursive、--timeout、--wait等这些子命令。 移除与日志相关的原有命令行参数 在Kubernetes 1.26版本,将移除一些与日志相关的命令行参数,这些参数在之前的版本已被弃用。
  • 版本兼容性差异 版本升级路径 版本差异 建议自检措施 v1.23/v1.25 升级至v1.27 容器运行时Docker不再被推荐使用,建议您使用Containerd进行替换,详情请参见容器引擎。 已纳入升级前检查。 v1.23升级至v1.25 在Kubernetes v1.25版本中, PodSecurityPolicy已被移除,并提供Pod安全性准入控制器(Pod Security Admission配置)作为PodSecurityPolicy的替代。 如果您需要将PodSecurityPolicy的相关能力迁移到Pod Security Admission中,需要参照以下步骤进行: 确认集群为CCE v1.23的最新版本。 迁移PodSecurityPolicy的相关能力迁移到Pod Security Admission,请参见Pod Security Admission配置。 确认迁移后功能正常,再升级为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插件升级检查进行自检。 v1.19升级至v1.21 Kubernetes v1.21集群版本修复 了exec probe timeouts不生效的BUG,在此修复之前,exec 探测器不考虑 timeoutSeconds 字段。相反,探测将无限期运行,甚至超过其配置的截止日期,直到返回结果。 若用户未配置,默认值为1秒。升级后此字段生效,如果探测时间超过1秒,可能会导致应用健康检查失败并频繁重启。 升级前检查您使用了exec probe的应用的probe timeouts是否合理。 CCE的v1.19及以上版本的kube-apiserver要求客户侧webhook server的证书必须配置Subject Alternative Names (SAN)字段。否则升级后kube-apiserver调用webhook server失败,容器无法正常启动。 根因:Go语言v1.15版本废弃了X.509 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存在兼容性问题。若Master节点升级成功后,节点升级失败或待升级节点发生重启,则节点有极大概率为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。 正常升级流程不会触发此场景。 在Master升级完成后尽量避免使用暂停升级功能,快速升级完Node节点。 若Node节点升级失败且无法修复,请尽快驱逐此节点上的应用,请联系技术支持人员,跳过此节点升级,在整体升级完毕后,重置该节点。 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" ] } CCE的v1.19及以上版本的kube-apiserver要求客户侧webhook server的证书必须配置Subject Alternative Names (SAN)字段。否则升级后kube-apiserver调用webhook server失败,容器无法正常启动。 根因:Go语言v1.15版本废弃了X.509 CommonName,CCE的v1.19版本的kube-apiserver编译的版本为v1.15。CommonName字段作为hostname处理,最终导致认证失败。 升级前检查您自建webhook server的证书是否配置了SAN字段。 若无自建webhook server则不涉及。 若未配置,建议您配置使用SAN字段指定证书支持的IP及域名。 须知: 为减弱此版本差异对集群升级的影响,v1.15升级至v1.19时,CCE会进行特殊处理,仍然会兼容支持证书不带SAN。但后续升级不再特殊处理,请尽快整改证书,以避免影响后续升级。 v1.17.17版本及以后的集群CCE自动给用户创建了PSP规则,限制了不安全配置的Pod的创建,如securityContext配置了sysctl的net.core.somaxconn的Pod。 升级后请参考资料按需开放非安全系统配置,具体请参见PodSecurityPolicy配置。 1.15版本集群原地升级,如果业务中存在initContainer或使用Istio的场景,则需要注意以下约束: 1.16及以上的kubelet统计QosClass和之前版本存在差异,1.15及以下版本仅统计spec.containers下的容器,1.16及以上的kubelet版本会同时统计spec.containers和spec.initContainers下的容器,升级前后会造成Pod的QosClass变化,从而造成Pod中容器重启。 建议参考表1在升级前修改业务容器的QosClass规避该问题。 v1.13升级至v1.15 vpc集群升级后,由于网络组件的升级,master节点会额外占一个网段。在Master占用了网段后,无可用容器网段时,新建节点无法分配到网段,调度在该节点的pod会无法运行。 一般集群内节点数量快占满容器网段场景下会出现该问题。例如,容器网段为10.0.0.0/16,可用IP数量为65536,VPC网络IP分配是分配固定大小的网段(使用掩码实现,确定每个节点最多分配多少容器IP),例如上限为128,则此时集群最多支撑65536/128=512个节点,然后去掉Master节点数量为509,此时是1.13集群支持的节点数。集群升级后,在此基础上3台Master节点会各占用1个网段,最终结果就是506台节点。 表1 1.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 是
  • v1.27版本 表2 v1.27补丁版本发布说明 CCE集群补丁版本号 Kubernetes社区版本 特性更新 优化增强 安全漏洞修复 v1.27.4-r0 v1.27.4 支持CronHPA定时扩缩容策略。 支持实例配置Security Context。 - 修复部分安全问题。 v1.27.3-r30 v1.27.4 - 支持一键配置监控告警。 修复部分安全问题。 v1.27.3-r20 v1.27.4 支持安装NGINX Ingress控制器插件。 支持安装云原生监控插件以及云原生日志插件,实现对应用指标的监控以及应用日志采集。 支持应用模板市场。 支持自定义资源(CRD)的使用。 支持对接Cloudshell。 优化集群创建时默认创建NAT网关以便于应用访问公网。 修复部分安全问题。 v1.27.3-r10 v1.27.4 CCE Autopilot支持创建1.27集群版本,有关更多信息请参见Kubernetes 1.27版本说明。 - -
  • v1.28版本 表1 v1.28补丁版本发布说明 CCE集群补丁版本号 Kubernetes社区版本 特性更新 优化增强 安全漏洞修复 v1.28.2-r0 v1.28.3 支持CronHPA定时扩缩容策略。 支持实例配置Security Context。 - 修复部分安全问题。 v1.28.1-r10 v1.28.3 CCE Autopilot支持创建1.28集群版本,有关更多信息请参见Kubernetes 1.28版本说明。 - -
  • 组件说明 表3 everest组件 容器组件 说明 资源类型 everest-csi-controller 此容器负责存储卷的创建、删除、快照、扩容、attach/detach等功能。若集群版本大于等于1.19,且插件版本为1.2.x,everest-csi-controller组件的Pod还会默认带有一个everest-localvolume-manager容器,此容器负责管理节点上的lvm存储池及localpv的创建。 Deployment everest-csi-driver 此容器负责PV的挂载、卸载、文件系统resize等功能。若插件版本为1.2.x,且集群所在区域支持node-attacher,everest-csi-driver组件的Pod还会带有一个everest-node-attacher的容器,此容器负责分布式attach EVS,该配置项在部分Region开放。 DaemonSet
  • CSI和Flexvolume存储插件的区别 表1 CSI与Flexvolume Kubernetes插件方案 CCE插件名称 插件特性 使用推荐 CSI everest CSI插件是kubernetes社区推荐的存储插件机制。CCE发布的kubernetes1.15版本及以上版本默认安装CSI插件everest,并用于对接块存储、文件存储、对象存储、极速文件存储等Iaas存储服务。 everest插件包含两部分: everest-csi-controller:提供存储卷的创建、删除、扩容、云盘快照等功能; everest-csi-driver:提供存储卷在node上的挂载、卸载、格式化等功能。 详情请参见everest 针对1.15及以上版本的集群,在创建时将默认安装CSI插件(everest)。CCE会跟随社区持续更新CSI插件的各种能力。 Flexvolume storage-driver Flexvolume插件是kubernetes社区早期实现的存储卷插件机制。自CCE上线伊始,提供的就是Flexvolume数据卷服务。CCE发布的kubernetes 1.13及以下版本安装的插件是“storage-driver”,并用于对接块存储、文件存储、对象存储、极速文件存储等Iaas存储服务。 详情请参见storage-driver 针对已经创建的1.13及以下版本的集群,仍然使用已经安装的Flexvolume存储插件(storage-driver),CCE已停止更新该插件,您可以升级集群版本。 不支持CSI和Flexvolume插件在同一个集群中使用。 不支持将v1.13及以下版本集群的Flexvolume插件转变到CSI插件,v1.13版本的集群可以通过升级集群版本切换为CSI插件,详情请参见。
  • 约束与限制 在CCE所创的集群中,Kubernetes v1.15.11版本是Flexvolume插件(storage-driver)被CSI插件(everest)兼容接管的过渡版本,v1.17及之后版本的集群中将彻底去除对Flexvolume插件(storage-driver)的支持,请您将Flexvolume插件的使用切换到CSI插件上。 CSI插件(everest)兼容接管Flexvolume插件(storage-driver)后,原有功能保持不变,但请注意不要新建Flexvolume插件(storage-driver)的存储,否则将导致部分存储功能异常。
  • 参考链接 社区v1.11与v1.13版本之间的CHANGELOG v1.12到v1.13的变化: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.13.md v1.11到v1.12的变化: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.12.md
  • 对象存储挂载参数 CCE的存储插件everest在挂载对象存储时默认设置了表1和表2的参数,其中表1中的参数不可取消。除了这些参数外,您还可以设置其他的对象存储挂载参数,具体请参见挂载并行文件系统。 表1 默认使用且不可取消的挂载参数 参数 参数值 描述 use_ino 无需填写 使用该选项,由obsfs分配inode编号。读写模式下自动开启。 big_writes 无需填写 配置后可更改写缓存最大值大小 nonempty 无需填写 允许挂载目录非空 allow_other 无需填写 允许其他用户访问并行文件系统 no_check_certificate 无需填写 不校验服务端证书 enable_noobj_cache 无需填写 为不存在的对象启用缓存条目,可提高性能。对象桶读写模式下自动使用。 从everest 1.2.40版本开始不再默认设置enable_noobj_cache参数。 sigv2 无需填写 签名版本。对象桶自动使用。 public_bucket 1 设置为1时匿名挂载公共桶。对象桶只读模式下自动使用。 表2 默认使用且可修改的挂载参数 参数 参数值 描述 max_write 131072 仅配置big_writes的情况下才生效,推荐使用128KB。 ssl_verify_hostname 0 不根据主机名验证SSL证书。 max_background 100 可配置后台最大等待请求数。并行文件系统自动使用。 umask 三位八进制数 配置文件权限的掩码。 例如,如果umask值为022,对于目录权限(最大权限为777)来说,则该目录权限为777 - 022 = 755,即rwxr-xr-x。
  • 在StorageClass中设置挂载参数 在StorageClass中设置挂载参数同样可以通过mountOptions字段实现,如下所示,mountOptions支持挂载的字段请参见对象存储挂载参数。 使用kubectl连接集群,详情请参见通过kubectl连接集群。 创建自定义的StorageClass,示例如下: kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: csi-obs-mount-option provisioner: everest-csi-provisioner parameters: csi.storage.k8s.io/csi-driver-name: obs.csi.everest.io csi.storage.k8s.io/fstype: s3fs everest.io/obs-volume-type: STANDARD reclaimPolicy: Delete volumeBindingMode: Immediate mountOptions: # 挂载参数 - umask=0027 StorageClass设置好后,就可以使用这个StorageClass创建PVC,动态创建出的PV会默认带有StorageClass中设置的挂载参数,具体操作步骤请参见通过动态存储卷使用对象存储。 验证挂载参数是否生效。 本例中将PVC挂载至使用nginx:latest镜像的工作负载,可以登录到运行挂载对象存储卷的Pod所在节点上通过进程详情观察。 执行以下命令: 对象桶:ps -ef | grep s3fs root 22142 1 0 Jun03 ? 00:00:00 /usr/bin/s3fs {your_obs_name} /mnt/paas/kubernetes/kubelet/pods/{pod_uid}/volumes/kubernetes.io~csi/{your_pv_name}/mount -o url=https://{endpoint}:443 -o endpoint={region} -o passwd_file=/opt/everest-host-connector/***_obstmpcred/{your_obs_name} -o nonempty -o big_writes -o sigv2 -o allow_other -o no_check_certificate -o ssl_verify_hostname=0 -o umask=027 -o max_write=131072 -o multipart_size=20 并行文件系统:ps -ef | grep obsfs root 1355 1 0 Jun03 ? 00:03:16 /usr/bin/obsfs {your_obs_name} /mnt/paas/kubernetes/kubelet/pods/{pod_uid}/volumes/kubernetes.io~csi/{your_pv_name}/mount -o url=https://{endpoint}:443 -o endpoint={region} -o passwd_file=/opt/everest-host-connector/***_obstmpcred/{your_obs_name} -o allow_other -o nonempty -o big_writes -o use_ino -o no_check_certificate -o ssl_verify_hostname=0 -o max_background=100 -o umask=027 -o max_write=131072
  • 安装Helm模板包 您可以使用Helm安装模板包(Chart),在使用Helm命令安装模板包前,您可能需要了解三大概念帮助您更好地使用Helm。 模板包(Chart):模板包中含有Kubernetes应用的资源定义以及大量的配置文件。 仓库(Repository):仓库是用于存放共享模板包的地方,您可以从仓库中下载模板包至本地安装,也可以选择直接在线安装。 实例(Release):实例是Helm在Kubernetes集群中安装模板包后的运行结果。一个模板包通常可以在一个集群中安装多次,每次安装都会创建一个新的实例。以MySQL模板包为例,如果您想在集群中运行两个数据库,可以安装该模板包两次,每一个数据库都会拥有自己的release 和release name。 更多关于Helm命令的使用方法请参见使用Helm。 从Helm官方推荐的仓库Artifact Hub中查找模板包,并配置Helm仓库。 helm repo add {repo_name} {repo_addr} 例如,以WordPress模板包为例: helm repo add bitnami https://charts.bitnami.com/bitnami 使用helm install命令安装模板包。 helm install {release_name} {chart_name} --set key1=val1 例如,以安装WordPress为例,步骤1添加的仓库中WordPress的模板包为bitnami/wordpress,并将实例自定义命名为my-wordpress,同时指定一些配置参数。 helm install my-wordpress bitnami/wordpress \ --set mariadb.primary.persistence.enabled=true \ --set mariadb.primary.persistence.storageClass=csi-disk \ --set mariadb.primary.persistence.size=10Gi \ --set persistence.enabled=false 您可以使用helm show values {chart_name}命令查看模板可配置的选项。例如,查看WordPress的可配置项: helm show values bitnami/wordpress 查看已安装的模板实例。 helm list
  • 安装Helm v3 本文以Helm v3.3.0为例进行演示。 如需选择其他合适的版本,请访问https://github.com/helm/helm/releases。 在连接集群的虚拟机上下载Helm客户端。 wget https://get.helm.sh/helm-v3.3.0-linux-amd64.tar.gz 解压Helm包。 tar -xzvf helm-v3.3.0-linux-amd64.tar.gz 将Helm复制到系统path路径下,以下为/usr/local/bin/helm。 mv linux-amd64/helm /usr/local/bin/helm 查看Helm版本。 helm version version.BuildInfo{Version:"v3.3.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
  • 弃用和移除 Kubernetes 1.25版本 清理iptables链的所有权 Kubernetes通常创建iptables链来确保这些网络数据包到达, 这些iptables链及其名称属于Kubernetes内部实现的细节,仅供内部使用场景,目前有些组件依赖于这些内部实现细节,Kubernetes总体上不希望支持某些工具依赖这些内部实现细节。详细信息,请参见Kubernetes的iptables链不是API。 在Kubernetes 1.25版本后,Kubelet通过IPTablesCleanup特性门控分阶段完成迁移,是为了不在NAT表中创建iptables链,例如KUBE-MARK-DROP、KUBE-MARK-MASQ、KUBE-POSTROUTING。关于清理iptables链所有权的信息,请参见清理IPTables链的所有权。 存储驱动的弃用和移除,移除云服务厂商的in-tree卷驱动。 Kubernetes 1.24版本 在Kubernetes 1.24版本后,Service.Spec.LoadBalancerIP被弃用,因为它无法用于双栈协议。请使用自定义annotation。 在Kubernetes 1.24版本后,kube-apiserver移除参数--address、--insecure-bind-address、--port、--insecure-port=0。 在Kubernetes 1.24版本后,kube-controller-manager和kube-scheduler移除启动参数--port=0和--address。 在Kubernetes 1.24版本后,kube-apiserver --audit-log-version和--audit-webhook-version仅支持audit.k8s.io/v1,Kubernetes 1.24移除audit.k8s.io/v1[alpha|beta]1,只能使用audit.k8s.io/v1。 在Kubernetes 1.24版本后,kubelet移除启动参数--network-plugin,仅当容器运行环境设置为Docker时,此特定于Docker的参数才有效,并会随着Dockershim一起删除。 在Kubernetes 1.24版本后,动态日志清理功能已经被废弃,并在Kubernetes 1.24版本移除。该功能引入了一个日志过滤器,可以应用于所有Kubernetes系统组件的日志,以防止各种类型的敏感信息通过日志泄漏。此功能可能导致日志阻塞,所以废弃,更多信息请参见Dynamic log sanitization和 KEP-1753。 VolumeSnapshot v1beta1 CRD在Kubernetes 1.20版本中被废弃,在Kubernetes 1.24版本中移除,需改用v1版本。 在Kubernetes 1.24版本后,移除自1.11版本就废弃的service annotation tolerate-unready-endpoints,使用Service.spec.publishNotReadyAddresses代替。 在Kubernetes 1.24版本后,废弃metadata.clusterName字段,并将在下一个版本中删除。 Kubernetes 1.24及以后的版本,去除了kube-proxy监听NodePort的逻辑,在NodePort与内核net.ipv4.ip_local_port_range范围有冲突的情况下,可能会导致偶发的TCP无法连接的情况,导致健康检查失败、业务异常等问题。升级前,请确保集群没有NodePort端口与任意节点net.ipv4.ip_local_port_range范围存在冲突。更多信息,请参见Kubernetes社区PR。
  • 主要特性 Kubernetes 1.25版本 Pod Security Admission进入稳定阶段,并移除PodSecurityPolicy PodSecurityPolicy被废弃,并提供Pod Security Admission取代,具体的迁移方法可参见从PodSecurityPolicy迁移到内置的PodSecurity准入控制器。 Ephemeral Containers进入稳定阶段 临时容器是在现有的Pod中存在有限时间的容器。它对故障排除特别有用,特别是当需要检查另一个容器,但因为该容器已经崩溃或其镜像缺乏调试工具不能使用kubectl exec时。 对cgroups v2的支持进入稳定阶段 Kubernetes支持cgroups v2,与cgroups v1相比提供了一些改进,详情请参见cgroups v2。 SeccompDefault提升到Beta状态 如果要开启该特性,需要给kubelet增加启动参数为--seccomp-default=true,这样会默认开启seccomp为RuntimeDefault,提升整个系统的安全。1.25集群将不再支持使用注解“seccomp.security.alpha.kubernetes.io/pod”和“container.seccomp.security.alpha.kubernetes.io/annotation”来使用seccomp,请使用pod或container中“securityContext.seccompProfile”字段替代,详情请参见为Pod或容器配置安全上下文。 特性开启后可能应用所需的系统调用会被runtime限制,所以开启后应确保在测试环境调试,不会对应用造成影响。 网络策略中的EndPort进入稳定阶段 Network Policy中的EndPort已进入稳定状态,该特性于1.21版本合入。主要是在NetworkPolicy新增EndPort,可以指定一个Port范围,避免声明每一个Port。 本地临时容器存储容量隔离进入稳定阶段 本地临时存储容量隔离功能提供了对Pod之间本地临时存储容量隔离的支持,如EmptyDir。因此,如果一个Pod对本地临时存储容量的消耗超过该限制,就可以通过驱逐Pod来硬性限制其对共享资源的消耗。 CRD验证表达式语言升级为Beta阶段 CRD验证表达式语言已升级为 beta 版本, 这使得声明如何使用通用表达式语言(CEL)验证自定义资源成为可能。 请参考验证规则指导。 引入KMS v2 API 在Kubernetes 1.25版本,引入KMS v2 alpha1 API以提升性能,实现轮替与可观察性改进。 此API使用AES-GCM替代了AES-CBC,通过DEK实现静态数据加密(Kubernetes Secrets),此过程中无需您额外操作,且支持通过AES-GCM和AES-CBC进行读取。 更多信息,请参考使用 KMS provider进行数据加密指南。 Pod新增网络就绪状况 Kubernetes 1.25引入了对kubelet所管理的新的Pod状况PodHasNetwork的Alpha支持, 该状况位于Pod的status字段中 。详情请参见Pod网络就绪。 应用滚动上线所用的两个特性进入稳定阶段 在Kubernetes 1.25版本,StatefulSet的minReadySeconds进入稳定阶段,允许每个Pod等待一段预期时间来减缓StatefulSet的滚动上线。更多信息,请参见最短就绪秒数。 在Kubernetes 1.25版本,DaemonSet的maxSurge进入稳定阶段,允许DaemonSet工作负载在滚动上线期间在一个节点上运行同一 Pod的多个实例,有助于将DaemonSet的停机时间降到最低。DaemonSet不允许maxSurge和hostPort同时使用,因为两个活跃的Pod无法共享同一节点的相同端口。更多信息,请参见DaemonSet工作负载滚动上线。 对使用用户命名空间运行Pod提供Alpha支持 对使用user namespace运行Pod提供alpha支持,将Pod内的root用户映射到容器外的非零ID,使得从容器角度看是root身份运行,而从主机角度看是常规的非特权用户。目前尚处于内测阶段,需要开启特性门控UserNamespacesStatelessPodsSupport, 且要求容器运行时必须能够支持此功能。更多信息,请参见对使用user namespace运行Pod提供alpha支持。 Kubernetes 1.24版本 从kubelet中删除 Dockershim Dockershim自1.20版本被标废弃以来,在1.24版本正式从Kubelet代码中移除。如果还想使用Docker作为容器运行时的话,需要切换到cri-dockerd,或者使用其他支持CRI的运行时比如Containerd/CRI-O等。 从Docker Engine 切换到Containerd的流程请参见将节点容器引擎从Docker迁移到Containerd。 您需要注意排查是否有agent或者应用强依赖Docker Engine的,比如在代码中使用docker ps,docker run, docker inspect等,需要注意兼容多种runtime,以及切换到标准cri接口。 Beta APIs默认关闭 在社区移除一些长期Beta API的过程中发现,90%的集群管理员并没有关心Beta API默认开始,其实Beta特性是不推荐在生产环境中使用,但是因为默认的打开策略,导致这些API在生产环境中都被默认开启,这样会因为Beta特性的bug带来一些风险,以及升级的迁移的风险。所以在1.24版本开始,Beta API默认关闭,之前已经默认开启的Beta API会保持默认开启。 支持OpenAPI v3 在Kubernetes 1.24版本后,OpenAPI V3默认开启。 存储容量跟踪特性进入稳定阶段 在Kubernetes 1.24版本后,CSIStorageCapacity API支持显示当前可用的存储大小,确保Pod调度到足够存储容量的节点上,减少Volumes创建和挂载失败导致的Pod调度延迟,详细信息请参见存储容量。 gRPC 探针升级到Beta阶段 在Kubernetes 1.24版本后,gRPC探针进入Beta,默认可用特性门控参数GRPCContainerProbe,使用方式请参见配置探针。 特性门控LegacyServiceAccountTokenNoAutoGeneration默认启用 LegacyServiceAccountTokenNoAutoGeneration特性门控进入beta状态,默认为开启状态,开启后将不再为Service Account自动生成Secret Token。如果需要使用永不过期的Token,需要自己新建Secrets并挂载,详情请参见服务账号令牌Secret。 避免 IP 分配给服务的冲突 Kubernetes 1.24引入了一项新功能,允许为服务的静态IP地址分配软保留范围。 通过手动启用此功能,集群将从服务IP地址池中自动分配IP,从而降低冲突风险。 基于Go 1.18编译 在Kubernetes 1.24版本后,Kubernetes基于Go 1.18编译,默认不再支持SHA-1哈希算法验证证书签名,例如SHA1WithRSA、ECDSAWithSHA1算法,推荐使用SHA256算法生成的证书进行认证。 StatefulSet支持设置最大不可用副本数 在Kubernetes 1.24版本后,StatefulSets支持可配置maxUnavailable参数,使得滚动更新时可以更快地停止Pods。 节点非体面关闭进入Alpha阶段 在Kubernetes 1.24中,节点非体面关闭特性是Alpha版。当kubelet的节点关闭管理器可以检测到即将到来的节点关闭操作时,节点关闭才被认为是体面的。详情请参见处理节点非体面关闭。
  • 参考链接 社区v1.9与v1.11版本之间的CHANGELOG v1.10到v1.11的变化: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.11.md v1.9到v1.10的变化: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.10.md
  • 查看HPA策略 您可以查看HPA策略的规则、状态和事件,参照界面中的报错提示有针对性的解决异常事件。 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中单击“策略”,切换至“HPA策略”页签,单击要查看的HPA策略前方的。 在展开的区域中,可以看到规则、状态页签,单击策略操作区域的“事件”,可以看到事件页签。若策略异常,请参照界面中的报错提示进行定位处理。 您还可以在工作负载详情页中查看已创建的HPA策略: 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中单击“工作负载”,单击工作负载名称查看详情。 在该工作负载详情页的“弹性伸缩”页签下可以看到HPA / CustomedHPA策略,您在“策略”页面配置的伸缩策略也会在这里显示。 表1 事件类型及名称 事件类型 事件名称 描述 正常 SuccessfulRescale 扩缩容成功 异常 InvalidTargetRange 无效的TargetRange InvalidSelector 无效选择器 FailedGetObjectMetric 获取对象失败数 FailedGetPodsMetric 获取Pod列表失败指标 FailedGetResourceMetric 获取资源失败数 FailedGetExternalMetric 获取外部指标失败 InvalidMetricSourceType 无效的指标来源类型 FailedConvertHPA 转换HPA失败 FailedGetScale 获取比例尺失败 FailedComputeMetricsReplicas 计算指标副本数失败 FailedGetScaleWindow 获取ScaleWindow失败 FailedRescale 扩缩容失败
  • 查看CustomedHPA策略 您可以查看CustomedHPA策略的规则和最新状态,参照界面中的报错提示有针对性的解决异常事件。 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中单击“策略”,切换至“CustomedHPA策略”页签,单击要查看的CustomedHPA策略前方的。 在展开的区域中,可以看到规则页签,若策略异常,请单击“最新状态”栏中的“详情”,参照展开的详细信息进行定位处理。 您还可以在工作负载详情页中查看已创建的HPA策略: 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中单击“工作负载”,单击工作负载名称查看详情。 在该工作负载详情页的“弹性伸缩”页签下可以看到HPA / CustomedHPA策略,您在“策略”页面配置的伸缩策略也会在这里显示。
  • 资源变更与弃用 apps/v1beta1和apps/v1beta2下所有资源不再提供服务,使用apps/v1替代。 extensions/v1beta1下daemonsets、deployments、replicasets不再提供服务,使用apps/v1替代。 extensions/v1beta1下networkpolicies不再提供服务,使用networking.k8s.io/v1替代。 extensions/v1beta1下podsecuritypolicies不再提供服务,使用policy/v1beta1替代。 extensions/v1beta1 ingress v1.20版本不再提供服务,当前可使用networking.k8s.io/v1beta1。 scheduling.k8s.io/v1beta1 and scheduling.k8s.io/v1alpha1下的PriorityClass计划在1.17不再提供服务,迁移至scheduling.k8s.io/v1。 events.k8s.io/v1beta1中event series.state字段已废弃,将在1.18版本中移除。 apiextensions.k8s.io/v1beta1下CustomResourceDefinition已废弃,将再1.19不在提供服务,使用apiextensions.k8s.io/v1。 admissionregistration.k8s.io/v1beta1 MutatingWebhookConfiguration和ValidatingWebhookConfiguration已废弃,将在1.19不在提供服务,使用admissionregistration.k8s.io/v1替换。 rbac.authorization.k8s.io/v1alpha1 and rbac.authorization.k8s.io/v1beta1被废弃,使用rbac.authorization.k8s.io/v1替代,v1.20会正式停止服务。 storage.k8s.io/v1beta1 CSINode object废弃并会在未来版本中移除。
  • 其他废弃和移除 移除OutOfDisk node condition,改为使用DiskPressure。 scheduler.alpha.kubernetes.io/critical-pod annotation已被移除,如需要改为设置priorityClassName。 beta.kubernetes.io/os和beta.kubernetes.io/arch在1.14版本中已经废弃,计划在1.18版本中移除。 禁止通过--node-labels设置kubernetes.io和k8s.io为前缀的标签,老版本中kubernetes.io/availablezone该label在1.17中移除,整改为failure-domain.beta.kubernetes.io/zone获取AZ信息。 beta.kubernetes.io/instance-type被废弃,使用node.kubernetes.io/instance-type替代。 移除{kubelet_root_dir}/plugins路径。 移除内置集群角色system:csi-external-provisioner和system:csi-external-attacher。
  • API变更与弃用 在Kubernetes 1.28版本,移除特性NetworkPolicyStatus,因此Network Policy不再有status属性。 在Kubernetes 1.28版本,Job对象中增加了新的annotationbatch.kubernetes.io/cronJob-scheduled-timestamp,表示Job的创建时间。 在Kubernetes 1.28版本,Job API中添加podReplacementPolicy和terminating字段,当前一旦先前创建的pod终止,Job就会立即启动替换pod。添加字段允许用户指定是在先前的Pod终止后立即更换Pod(原行为),还是在现有的Pod完全终止后才替换Pod(新行为)。这是一项 Alpha 级别特性,您可以通过在集群中启用JobPodReplacementPolicy 来启用该特性。 在Kubernetes 1.28版本,Job支持BackoffLimitPerIndex字段。当前使用的运行Job的策略是Job中的整个Pod共享一个Backoff机制,当Job达到次Backoff的限制时,整个Job都会被标记为失败,并清理资源,包括尚未运行的index。此字段允许对单个的index设置Backoff。更多信息请参见逐索引的回退限制。 在Kubernetes 1.28版本,添加ServedVersions字段到 StorageVersion API中。该变化由混合代理版本特性引入。该增加字段ServedVersions用于表明API服务器可以提供的版本。 在Kubernetes 1.28版本,SelfSubjectReview 添加到到authentication.k8s.io/v1中,并且kubectl auth whoami走向GA。 在Kubernetes 1.28版本,PersistentVolume有了一个新的字段LastPhaseTransitionTime,用来保存最近一次volume转变Phase的时间。 在Kubernetes 1.28版本,PVC.Status中移除resizeStatus,使用AllocatedResourceStatus替代。resizeStatus表示调整存储大小操作的状态,默认为空字符串。 在Kubernetes 1.28版本,设置了hostNetwork: true并且定义了ports的Pods,自动设置hostport字段。 在Kubernetes 1.28版本,StatefulSet的Pod索引设置为Pod的标签statefulset.kubernetes.io/pod-index。 在Kubernetes 1.28版本,Pod的Condition字段中的PodHasNetwork重命名为PodReadyToStartContainers,用来表明网络、卷等已成功创建,sandbox pod已经创建完成,可以启动容器。 在Kubernetes 1.28版本,在KubeSchedulerConfiguration中添加了新的配置选项 delayCacheUntilActive, 该参数为true时,非master节点的kube-scheduler不会缓存调度信息。这为非主节点的内存减缓了压力,但会导致主节点发生故障时,减慢故障转移的速度。 在Kubernetes 1.28版本,在admissionregistration.k8s.io/v1alpha1.ValidatingAdmissionPolicy中添加namespaceParamRef字段。 在Kubernetes 1.28版本,在CRD validation rules中添加reason和fieldPath,允许用户指定验证失败的原因和字段路径。 在Kubernetes 1.28版本,ValidatingAdmissionPolicy的CEL表达式通过namespaceObject支持namespace访问。 在Kubernetes 1.28版本,将API groups ValidatingAdmissionPolicy 和ValidatingAdmissionPolicyBinding 提升到betav1。 在Kubernetes 1.28版本,ValidatingAdmissionPolicy 扩展了messageExpression字段,用来检查已解析类型。
  • 重要说明 在Kubernetes 1.28版本,调度框架发生变化,减少无用的重试,从而提高调度程序的整体性能。如果开发人员在集群中使用了自定义调度程序插件,请参见调度框架变化进行适配升级。 在Kubernetes 1.28 版本,Ceph FS 树内插件已在 v1.28 中弃用,并计划在 v1.31 中删除(社区没有计划进行 CSI 迁移)。 建议使用 Ceph CSI 第三方存储驱动程序作为替代方案。 在Kubernetes 1.28 版本,Ceph RBD 树内插件已在 v1.28 中弃用,并计划在 v1.31 中删除(社区没有计划进行 CSI 迁移)。建议使用 RBD 模式的 Ceph CSI 第三方存储驱动程序作为替代方案。
共100000条