云服务器内容精选

  • 资源变更与弃用 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 CS INode 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。
  • 特性门禁及命令行参数 在Kubernetes 1.28版本,kubelet移除了flag –short。因此kubectl version 默认输出与kubectl version –short相同。 在Kubernetes 1.28版本,kube-controller-manager废弃flag--volume-host-cidr-denylist和--volume-host-allow-local-loopback。--volume-host-cidr-denylist是用逗号分隔的一个CIDR范围列表,禁止使用这些地址上的卷插件。--volume-host-allow-local-loopback为false时,禁止本地回路IP地址和--volume-host-cidr-denylist中所指定的CIDR范围。 在Kubernetes 1.28版本,kubelet --azure-container-registry-config被弃用并在未来的版本中会被删除。 请使用--image-credential-provider-config和--image-credential-provider-bin-dir来设置。 在Kubernetes 1.28版本,kube-scheduler: 删除了--lock-object-namespace和--lock-object-name。 请使用--leader-elect-resource-namespace和--leader-elect-resource-name或ComponentConfig来配置这些参数。(--lock-object-namespace用来定义锁对象的命名空间,--lock-object-name用来定义锁对象的名称) 在Kubernetes 1.28版本,KMSv1已弃用,以后只会接收安全更新。请改用KMSv2。在未来版本中,设置--feature-gates=KMSv1=true以使用已弃用的KMSv1功能。 在Kubernetes 1.28版本,移除了如下特性门禁:DelegateFSGroupToCSIDriver、DevicePlugins、KubeletCredentialProviders、MixedProtocolLBService、ServiceInternalTrafficPolicy、ServiceIPStaticSubrange、EndpointSliceTerminatingCondition。
  • 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。更多信息请参见带索引Job的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第三方存储驱动程序作为替代方案。
  • 新增特性及特性增强 社区特性的Alpha阶段默认禁用、Beta阶段一般默认启用、GA阶段将一直默认启用,且不能禁用(会在后续版本中删除这个开关功能)。CCE对新特性的策略与社区保持一致。 版本偏差策略扩展至3个版本 从1.28控制平面/1.25工作节点开始,Kubernetes版本偏差策略将支持的控制平面/工作节点偏差扩展到3个版本。 这使得节点的年度次要版本升级成为可能,同时保持受支持的次要版本。更多细节请参考版本偏差策略。 可追溯的默认StorageClass进阶至GA 在Kubernetes 1.28版本,可追溯默认StorageClass赋值现已进阶至GA。 这项增强特性极大地改进了默认的StorageClasses为PersistentVolumeClaim(PVC)赋值的方式。 PersistentVolume(PV)控制器已修改为:当未设置storageClassName时,自动向任何未绑定的PersistentVolumeClaim分配一个默认的StorageClass。此外,API 服务器中的PersistentVolumeClaim准入验证机制也已调整为允许将值从未设置状态更改为实际的StorageClass名称。更多使用细节请参考默认StorageClass赋值。 原生边车容器(Alpha) 在Kubernetes 1.28版本,原生边车容器以Alpha版本正式发布。其在Init容器中添加了一个新的restartPolicy字段, 该字段在SidecarContainers特性门控启用时可用。需要注意的是,原生边车容器目前仍有些问题需要解决,因此K8S社区建议仅在Alpha阶段的短期测试集群中使用边车功能。 更多使用细节请参考原生边车容器。 混合版本代理(Alpha) 在Kubernetes 1.28版本,发布了用于改进集群安全升级的新机制(混合版本代理)。该特性为Alpha特性。当集群进行升级时,集群中不同版本的kube-apiserver为不同的内置资源集(组、版本、资源)提供服务。在这种情况下资源请求如果由任一可用的apiserver提供服务,请求可能会到达无法解析此请求资源的apiserver中,导致请求失败。该特性能解决该问题。(主要注意的是,CCE本身提供的升级能力即可做到无损升级,因此不存在该特性涉及的场景)。更多使用细节请参考混合版本代理。 节点非体面关闭特性达到GA 在Kubernetes 1.28版本,节点非体面关闭特性达到GA阶段。当一个节点被关闭但没有被Kubelet的Node Shutdown Manager检测到时,StatefulSet的Pod将会停留在终止状态,并且不能移动到新运行的节点上。当用户确认该节点已经处于不可恢复的情况下,可以手动为Node打上out-of-service的污点,以使得该节点上的StatefulSet的Pod和VolumeAttachments被强制删除,并在健康的Node上创建相应的Pod。更多使用细节请参考节点非体面关闭。 NodeSwap特性达到Beta 在Kubernetes 1.28版本,NodeSwap能力进阶至Beta版本。目前仍然处于默认关闭状态,需要使用NodeSwap门控打开。该特性可以为Linux节点上运行的Kubernetes工作负载逐个节点地配置内存交换。需要注意的是,该特性虽然进阶至Beta特性,但仍然存在一些需要增强的问题和安全风险。更多使用细节请参考NodeSwap特性。 Job相关特性 在Kubernetes 1.28版本,增加了Pod更换策略和基于带索引Job的回退限制两个alpha特性。 Pod更换策略 默认情况下,当Pod进入终止(Terminating)状态(例如由于抢占或驱逐机制)时,Kubernetes会立即创建一个替换的Pod,因此这时会有两个Pod同时运行。 在Kubernetes 1.28版本中可以使用JobPodReplacementPolicy 来启用该特性。可以在Job的Spec中定义podReplacementPolicy,目前仅可设置为Failed。在设置为Failed之后,Pod仅在达到Failed阶段时才会被替换,而不是在它们处于终止过程中(Terminating)时被替换。此外,您可以检查Job的.status.termination字段。该字段的值表示终止过程中的Job所关联的Pod数量。 带索引Job的回退限制 默认情况下,带索引的Job(Indexed Job)的 Pod 失败情况会被记录下来,受.spec.backoffLimit字段所设置的全局重试次数限制。这意味着,如果存在某个索引值的Pod一直持续失败,则Pod会被重新启动,直到重试次数达到限制值。一旦达到限制值,整个Job将被标记为失败,并且对应某些索引的Pod甚至可能从不曾被启动。 在Kubernetes 1.28版本中,可以通过启用集群的JobBackoffLimitPerIndex特性门控来启用此特性。开启之后,允许在创建带索引的Job(Indexed Job)时指定.spec.backoffLimitPerIndex字段。当某个Job的失败次数超过设定的上限时,将不再进行重试。 CEL相关特性 在Kubernetes 1.28版本,CEL能力进行了相应的增强。 CRD使用CEL进行Validate的特性进阶至Beta 该特性在v1.25版本就已经升级为Beta版本。通过将CEL表达式直接集成在CRD中,可以使开发者在不使用Webhook的情况下解决大部分对CR实例进行验证的用例。在未来的版本,将继续扩展CEL表达式的功能,以支持默认值和 CRD转换。 基于CEL的准入控制进阶至Beta 基于通用表达式语言 (CEL) 的准入控制是可定制的,对于kube-apiserver接受到的请求,可以使用CEL表达式来决定是否接受或拒绝请求,可作为Webhook准入控制的一种替代方案。在 v1.28 中,CEL准入控制被升级为Beta,同时添加了一些新功能,包括但不限于: ValidatingAdmissionPolicy类型检查现在可以正确处理CEL表达式中的“authorizer”变量。 ValidatingAdmissionPolicy支持对messageExpression字段进行类型检查。 kube-controller-manager组件新增ValidatingAdmissionPolicy控制器,用来对ValidatingAdmissionPolicy中的CEL表达式做类型检查,并将原因保存在状态字段中。 支持变量组合,可以在ValidatingAdmissionPolicy中定义变量,然后在定义其他变量时使用它。 新增CEL库函数支持对Kubernetes的resource.Quantity类型进行解析。 其它特性说明 在Kubernetes 1.28版本,ServiceNodePortStaticSubrange 特性为beta,允许保留静态端口范围,避免与动态分配端口冲突。具体细节请参考为NodePort Service分配端口时避免冲突。 在Kubernetes 1.28版本,增加了alpha特性ConsistentListFromCache,允许kube-apiserver从缓存中提供一致性列表,Get和List请求可以从缓存中读取数据,而不需要从etcd中获取。 在Kubernetes 1.28版本,kubelet能够配置drop-in目录(alpha特性)。该特性允许向kubelet添加对“--config-dir”标志的支持,以允许用户指定一个插入目录,该目录将覆盖位于/etc/kubernetes/kubelet.conf位置的Kubelet的配置。 在Kubernetes 1.28版本,ExpandedDNSConfig升级至GA,默认会被打开。该参数用于允许扩展DNS的配置。 在Kubernetes 1.28版本,提供Alpha特性CRD Validation Ratcheting。该特性允许Patch或者Update请求没有更改任何不合法的字段,将允许CR验证失败。 在Kubernetes 1.28版本,kube-controller-manager添加了--concurrent-cron-job-syncs flag用来设置cron job controller的workers数。
  • 新增特性及特性增强 Webhook匹配表达式(GA) 在Kubernetes1.30版本中,Webhook匹配表达式特性进阶至GA。此特性允许对准入Webhook支持根据特定的条件进行匹配,更细粒度地控制Webhook的触发条件。详细使用方式请参考动态准入控制。 Pod调度就绪态(GA) 在Kubernetes1.30版本中,Pod调度就绪态特性进阶至GA。此特性允许对Pod添加自定义的schedulingGates,并由用户控制何时移除这些gate,当所有gates移除后,Pod才会被认为调度就绪。详细使用方式请参考Pod调度就绪态。 验证准入策略(GA) 在Kubernetes1.30版本中,验证准入策略(ValidatingAdmissionPolicy)特性进阶至GA。该特性支持通过CEL表达式声明资源的验证准入策略。详细使用方式请参考验证准入策略。 基于ContainerResource指标的Pod水平自动扩缩容(GA) 在Kubernetes1.30版本中,基于ContainerResource指标的Pod水平自动扩缩容特性进阶至GA。该特性允许HPA根据Pod中各个容器的资源使用情况来配置自动伸缩,而不仅是Pod的整体资源使用情况,便于为Pod中最重要的容器配置扩缩容阈值。详细使用方式请参考容器资源指标。 传统ServiceAccount令牌清理器(GA) 在Kubernetes1.30版本中,传统ServiceAccount令牌清理器特性进阶至GA。其作为kube-controller-manager的一部分运行,每24小时检查一次,查看是否有任何自动生成的传统ServiceAccount令牌在特定时间段内(默认为一年,通过--legacy-service-account-token-clean-up-period指定)未被使用。如果有的话,清理器会将这些令牌标记为无效,并添加kubernetes.io/legacy-token-invalid-since标签,其值为当前日期。如果一个无效的令牌在特定时间段(默认为1年,通过--legacy-service-account-token-clean-up-period指定)内未被使用,清理器将会删除它。更多使用细节请参考传统ServiceAccount令牌清理器。 Pod拓扑分布中的最小域(GA) 在Kubernetes1.30版本中,Pod拓扑分布中的最小域特性进阶至GA。此特性允许通过Pod的minDomains字段配置符合条件的域的最小数量。负载拓扑约束匹配到的域的数量如果大于minDomains,则该字段没有影响;如果小于minDomains,则会将全局最小值(符合条件的域中匹配 Pod 的最小数量)设为0,该字段必须结合whenUnsatisfiable: DoNotSchedule一起使用,实现在不满足拓扑约束的情况下让Pod不进行调度。详细使用方式参考Pod拓扑分布。
  • 资源变更与弃用 社区1.21 ReleaseNotes CronJob现在已毕业到稳定状态,版本号变为batch/v1。 不可变的Secret和ConfigMap现在已升级到稳定状态。向这些对象添加了一个新的不可变字段,以拒绝更改。此拒绝可保护集群免受可能无意中中断应用程序的更新。因为这些资源是不可变的,kubelet不会监视或轮询更改。这减少了kube-apiserver的负载,提高了可扩展性和性能。更多信息,请参见Immutable ConfigMaps。 优雅节点关闭现在已升级到测试状态。通过此更新,kubelet可以感知节点关闭,并可以优雅地终止该节点的Pod。在此更新之前,当节点关闭时,其Pod没有遵循预期的终止生命周期,这导致了工作负载问题。现在kubelet可以通过systemd检测即将关闭的系统,并通知正在运行的Pod,使它们优雅地终止。 具有多个容器的Pod现在可以使用kubectl.kubernetes.io/默认容器注释为kubectl命令预选容器。 PodSecurityPolicy废弃,详情请参见https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/。 BoundServiceAccountTokenVolume特性进入Beta,该特性能够提升服务账号(ServiceAccount)Token的安全性,改变了Pod挂载Token的方式,Kubernetes 1.21及以上版本的集群中会默认开启。 社区1.20 ReleaseNotes API优先级和公平性已达到测试状态,默认启用。这允许kube-apiserver按优先级对传入请求进行分类。更多信息,请参见API Priority and Fairness。 修复 exec probe timeouts不生效的BUG,在此修复之前,exec 探测器不考虑 timeoutSeconds 字段。相反,探测将无限期运行,甚至超过其配置的截止日期,直到返回结果。 通过此更改,如果未指定值,将使用默认值,默认值为1秒。如果探测时间超过一秒,可能会导致应用健康检查失败。请在升级时确定使用该特性的应用更新timeoutSeconds字段。新引入的 ExecProbeTimeout 特性门控所提供的修复使集群操作员能够恢复到以前的行为,但这种行为将在后续版本中锁定并删除。 RuntimeClass已达到稳定状态。RuntimeClass资源提供了一种机制,用于支持集群中的多个运行时,并将有关该容器运行时的信息公开到控制平面。 kubectl调试已达到测试状态。kubectl调试直接从kubectl提供对常见调试工作流的支持。 Dockershim在1.20被标记为废弃,目前您可以继续在集群中使用Docker。该变动与集群所使用的容器镜像(Image)无关。您依然可以使用Docker构建您的镜像。更多信息,请参见Dockershim Deprecation FAQ。
  • 新增特性及特性增强 Service的负载均衡IP模式(Alpha) 在Kubernetes1.29版本,Service的负载均衡IP模式以Alpha版本正式发布。其在Service的status中新增字段ipMode,用于配置集群内Service到Pod的流量转发模式。当设置为VIP时,目的地址为负载均衡IP和端口的流量将由kube-proxy重定向到目标节点,当设置为Proxy时,流量将被发送到负载均衡器,然后由负载均衡器转发到目标节点。这项特性将有助于解决流量绕过负载均衡器缩导致的负载均衡器功能缺失问题。更多使用细节请参考Service的负载均衡IP模式。 NFTables代理模式(Alpha) 在Kubernetes1.29版本,NFTables代理模式以Alpha版本正式发布。该特性允许kube-proxy运行在NFTables模式,在该模式下,kube-proxy使用内核netfilters子系统的nftables API来配置数据包转发规则。更多使用细节请参考NFTables代理模式。 未使用容器镜像的垃圾收集(Alpha) 在Kubernetes1.29版本,未使用容器镜像的垃圾收集以Alpha版本正式发布。该特性允许用户为每个节点配置本地镜像未被使用的最长时间,超过这个时间镜像将被垃圾回收。配置方法为使用kubelet配置文件中的ImageMaximumGCAge字段。更多使用细节请参考未使用容器镜像的垃圾收集。 PodLifecycleSleepAction(Alpha) 在Kubernetes1.29版本,PodLifecycleSleepAction以Alpha版本正式发布。该特性在容器生命周期回调中引入了Sleep回调程序,可以配置让容器在启动后和停止前暂停一段指定的时间。更多使用细节请参考PodLifecycleSleepAction。 KubeletSeparateDiskGC(Alpha) 在Kubernetes1.29版本,KubeletSeparateDiskGC以Alpha版本正式发布。该特性启用后,即使在容器镜像和容器位于独立文件系统的情况下,也能进行垃圾回收。 matchLabelKeys/mismatchLabelKeys(Alpha) 在Kubernetes1.29版本,matchLabelKeys/mismatchLabelKeys以Alpha版本正式发布。该特性启用后,在Pod的亲和/反亲和配置中新增了matchLabelKeys/mismatchLabelKeys字段,可配置更丰富的Pod间亲和/反亲和策略。更多使用细节请参考matchLabelKeys/mismatchLabelKeys。 clusterTrustBundle投射卷(Alpha) 在Kubernetes1.29版本,clusterTrustBundle投射卷以Alpha版本正式发布。该特性启用后,支持将ClusterTrustBundle对象以自动更新的文件的形式注入卷。更多使用细节请参考clusterTrustBundle投射卷。 基于运行时类的镜像拉取(Alpha) 在Kubernetes1.29版本中,基于运行时类的镜像拉取以Alpha版本正式发布。该特性启用后, kubelet 会通过一个元组(镜像名称,运行时处理程序)而不仅仅是镜像名称或镜像摘要来引用容器镜像。 你的容器运行时可能会根据选定的运行时处理程序调整其行为。基于运行时类来拉取镜像对于基于VM的容器会有帮助。更多使用细节请参考基于运行时类的镜像拉取。 PodReadyToStartContainers状况达到Beta 在Kubernetes1.29版本,PodReadyToStartContainers状况特性达到Beta版本。其在Pod的status中新增了一个名为PodReadyToStartContainers的Condition,该Condition为true表示Pod的沙箱已就绪,可以开始创建业务容器。该特性使得集群管理员可以更清晰和全面地查看 Pod 沙箱的创建完成和容器的就绪状态,增强了指标监控和故障排查能力。更多使用细节请参考PodReadyToStartContainersCondition。 Job相关特性 Pod更换策略达到Beta 在Kubernetes1.29版本,Pod更换策略特性达到Beta版本。该特性确保只有Pod达到Failed阶段(status.phase: Failed)才会被替换,而不是当删除时间戳不为空时,Pod仍处于删除过程中就重建Pod,以此避免出现2个Pod同时占用索引和节点资源。 逐索引的回退限制达到Beta 在Kubernetes1.29版本,逐索引的回退限制特性达到Beta版本。默认情况下,带索引的 Job(Indexed Job)的 Pod 失败情况会被统计下来,受 .spec.backoffLimit 字段所设置的全局重试次数限制。这意味着,如果存在某个索引值的 Pod 一直持续失败,则会 Pod 会被重新启动,直到重试次数达到限制值。 一旦达到限制值,整个 Job 将被标记为失败,并且对应某些索引的 Pod 甚至可能从不曾被启动。该特性可以在某些索引值的 Pod 失败的情况下,仍完成执行所有索引值的 Pod,并且通过避免对持续失败的、特定索引值的Pod进行不必要的重试,更好的利用计算资源。 原生边车容器达到Beta 在Kubernetes1.29版本,原生边车容器特性达到Beta版本。其在initContainers中新增了restartPolicy字段,当配置为Always时表示启用边车容器。边车容器和业务容器部署在同一个Pod中,但并不会延长Pod的生命周期。边车容器常用于网络代理、日志收集等场景。更多使用细节请参考边车容器。 传统ServiceAccount令牌清理器达到Beta 在Kubernetes1.29版本,传统ServiceAccount令牌清理器特性达到Beta版本。其作为kube-controller-manager的一部分运行,每24小时检查一次,查看是否有任何自动生成的传统ServiceAccount令牌在特定时间段内(默认为一年,通过--legacy-service-account-token-clean-up-period指定)未被使用。如果有的话,清理器会将这些令牌标记为无效,并添加kubernetes.io/legacy-token-invalid-since标签,其值为当前日期。如果一个无效的令牌在特定时间段(默认为1年,通过--legacy-service-account-token-clean-up-period指定)内未被使用,清理器将会删除它。更多使用细节请参考传统ServiceAccount令牌清理器。 DevicePluginCDIDevices达到Beta 在Kubernetes1.29版本,DevicePluginCDIDevices特性达到Beta版本。该特性在DeviceRunContainerOptions增加CDIDevices字段,使得设备插件开发者可以直接将CDI设备名称传递给支持CDI的容器运行时。 PodHostIPs达到Beta 在Kubernetes1.29版本中,PodHostIPs特性达到Beta版本。该特性在Pod和downward API的Status中增加hostIPs字段,用于将节点IP地址暴露给工作负载。该字段是hostIP的双栈协议版本,第一个IP始终与hostIP相同。 API优先级和公平性达到GA 在Kubernetes1.29版本,API优先级和公平性(APF)特性达到GA版本。APF以更细粒度的方式对请求进行分类和隔离,提升最大并发限制,并且它还引入了空间有限的排队机制,因此在非常短暂的突发情况下,API 服务器不会拒绝任何请求。 通过使用公平排队技术从队列中分发请求,这样,一个行为不佳的控制器就不会导致其他控制器异常 (即使优先级相同)。更多使用细节请参考API优先级和公平性。 APIListChunking达到GA 在Kubernetes1.29版本,APIListChunking特性达到GA版本。该特性允许客户端在List请求中进行分页,避免一次性返回过多数据而导致的性能问题。 ServiceNodePortStaticSubrange达到GA 在Kubernetes1.29版本,ServiceNodePortStaticSubrange特性达到GA版本。该特性kubelet会根据Nodeport范围计算出预留地址大小,并将Nodeport划分为静态段和动态段。在Nodeport自动分配时,优先分配在动态段,这有助于减小指定静态段分配时的端口冲突。更多使用细节请参考ServiceNodePortStaticSubrange PersistentVolume的阶段转换时间戳达到Beta 在Kubernetes1.29版本,PersistentVolume的阶段转换时间戳特性达到Beta版本。该特性在PV的status中添加了一个lastPhaseTransitionTime字段,表示PV上一次phase变化的时间。通过该字段,集群管理员可以跟踪PV上次转换到不同阶段的时间,从而实现更高效、更明智的资源管理。更多使用细节请参考PersistentVolume的阶段转换时间戳。 ReadWriteOncePod达到GA 在Kubernetes1.29版本中,ReadWriteOncePod特性达到GA版本。该特性允许用户在PVC中配置访问模式为ReadWriteOncePod,确保同时只有一个 Pod能够修改存储中的数据,以防止数据冲突或损坏。更多使用细节请参考ReadWriteOncePod。 CSINodeExpandSecret达到GA 在Kubernetes1.29版本中,CSINodeExpandSecret特性达到GA版本。该特性允许在添加节点时将Secret身份验证数据传递到CSI驱动以供后者使用。 CRD验证表达式语言达到GA 在Kubernetes1.29版本中,CRD验证表达式语言特性达到GA版本。该特性允许用户在CRD中使用通用表达式语言(CEL)定义校验规则,相比webhook更加高效。更多使用细节请参考CRD校验规则。
  • API变更与弃用 在Kubernetes1.29版本中,新创建的CronJob不再支持在.spec.schedule中通过TZ或者CRON_TZ配置时区,请使用.spec.timeZone替代。已经创建的CronJob不受此影响。 在Kubernetes1.29版本中,移除了alpha API ClusterCIDR。 在Kubernetes1.29版本中,kube-apiserver新增启动参数--authentication-config,用于指定AuthenticationConfiguration文件地址,该启动参数与--oidc-*启动参数互斥。 在Kubernetes1.29版本中,移除了KubeSchedulerConfiguration的API版本kubescheduler.config.k8s.io/v1beta3,请迁移至kubescheduler.config.k8s.io/v1。 在Kubernetes1.29版本中,将CEL表达式添加到v1alpha1 AuthenticationConfiguration中。 在Kubernetes1.29版本中,新增对象ServiceCIDR,允许用户动态配置集群分配Service的ClusterIP时所使用的地址范围。 在Kubernetes1.29版本中,kube-proxy新增启动参数--conntrack-udp-timeout、--conntrack-udp-timeout-stream,可对nf_conntrack_udp_timeout和nf_conntrack_udp_timeout_stream内核参数进行设置 。 在Kubernetes1.29版本中,将CEL表达式的支持添加到v1alpha1 AuthenticationConfiguration的WebhookMatchCondition中。 在Kubernetes1.29版本中,PVC.spec.Resource的类型由原先的ResourceRequirements替换为VolumeResourceRequirements。 在Kubernetes1.29版本中,将PodFailurePolicyRule中的OnPodConditions转变为可选字段。 在Kubernetes1.29版本中,FlowSchema与PriorityLevelConfiguration的API版本flowcontrol.apiserver.k8s.io/v1beta3已升级至flowcontrol.apiserver.k8s.io/v1,并进行了以下更改 PriorityLevelConfiguration:.spec.limited.nominalConcurrencyShares字段在省略时自动设为默认值30,并且为了确保与1.28兼容,在1.29中v1版本该字段不允许显示指定为0。在1.30中,将允许v1版本该字段显示指定为0。flowcontrol.apiserver.k8s.io/v1beta3已废弃,并在1.32中不再支持。 在Kubernetes1.29版本中, 优化了kube-proxy的命令行文档,kube-proxy实际上不会将任何socket绑定到由--bind-address启动参数指定的IP。 在Kubernetes1.29版本中,移除了selectorSpread调度器插件,使用podTopologySpread替代。 在Kubernetes1.29版本中,当CSI-Node-Driver没有在运行时,NodeStageVolume操作会重试。 在Kubernetes1.29版本中,ValidatingAdmissionPolicy支持对CRD资源进行校验。使用该特性需开启特性门控ValidatingAdmissionPolicy。 在Kubernetes1.29版本中,kube-proxy新增启动参数--nf-conntrack-tcp-be-liberal,可对内核参数nf_conntrack_tcp_be_liberal进行配置。 在Kubernetes1.29版本中,kube-proxy新增启动参数--init-only,设置后使kube-proxy的init容器在特权模式下运行,进行一些初始化配置,然后退出。 在Kubernetes1.29版本中,CRI的返回体中新增容器的fileSystem字段,表示容器的fileSystem使用信息,而原先只包含镜像的fileSystem。 在Kubernetes1.29版本中,所有内置的CloudProvider全部默认设置为关闭,如果仍需使用,可通过配置DisableCloudProviders和DisableKubeletCloudCredentialProvider特性门控来选择性关闭或者打开。 在Kubernetes1.29版本中,kubelet可通过--node-ips来设置双栈IP(kubelet设置--cloud-provider=external,此时可以使用--node-ips参数来设置节点地址(IPv4/IPv6)),使用该特性需开启特性门控CloudDualStackNodeIPs。
  • 资源变更与弃用 社区1.21 ReleaseNotes CronJob现在已达到稳定状态,版本号变为batch/v1。 不可变的Secret和ConfigMap现在已升级到稳定状态。向这些对象添加了一个新的不可变字段,以拒绝更改。此拒绝可保护集群免受可能无意中中断应用程序的更新。因为这些资源是不可变的,kubelet不会监视或轮询更改。这减少了kube-apiserver的负载,提高了可扩展性和性能。更多信息,请参见Immutable ConfigMaps。 优雅节点关闭现在已升级到测试状态。通过此更新,kubelet可以感知节点关闭,并可以优雅地终止该节点的Pod。在此更新之前,当节点关闭时,其Pod没有遵循预期的终止生命周期,这导致了工作负载问题。现在kubelet可以通过systemd检测即将关闭的系统,并通知正在运行的Pod,使它们优雅地终止。 具有多个容器的Pod现在可以使用kubectl.kubernetes.io/默认容器注释为kubectl命令预选容器。 PodSecurityPolicy废弃,详情请参见https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/。 BoundServiceAccountTokenVolume特性进入Beta,该特性能够提升服务账号(ServiceAccount)Token的安全性,改变了Pod挂载Token的方式,Kubernetes 1.21及以上版本的集群中会默认开启。 社区1.20 ReleaseNotes API优先级和公平性已达到测试状态,默认启用。这允许kube-apiserver按优先级对传入请求进行分类。更多信息,请参见API Priority and Fairness。 修复 exec probe timeouts不生效的BUG,在此修复之前,exec 探测器不考虑 timeoutSeconds 字段。相反,探测将无限期运行,甚至超过其配置的截止日期,直到返回结果。 通过此更改,如果未指定值,将使用默认值,默认值为1秒。如果探测时间超过一秒,可能会导致应用健康检查失败。请再升级时确定使用该特性的应用更新timeoutSeconds字段。新引入的 ExecProbeTimeout 特性门控所提供的修复使集群操作员能够恢复到以前的行为,但这种行为将在后续版本中锁定并删除。 RuntimeClass已达到稳定状态。RuntimeClass资源提供了一种机制,用于支持集群中的多个运行时,并将有关该容器运行时的信息公开到控制平面。 kubectl调试已达到测试状态。kubectl调试直接从kubectl提供对常见调试工作流的支持。 Dockershim在1.20被标记为废弃,目前您可以继续在集群中使用Docker。该变动与集群所使用的容器镜像(Image)无关。您依然可以使用Docker构建您的镜像。更多信息,请参见Dockershim Deprecation FAQ。
  • 资源变更与弃用 extensions/v1beta1中Ingress已弃用,1.19正式暂停使用,迁移到networking.k8s.io/v1beta1 extensions/v1beta1中NetworkPolicy 1.16正式暂停使用,迁移到networking.k8s.io/v1 extensions/v1beta1中PodSecurityPolicy 1.16正式暂停使用,迁移到policy/v1beta1 extensions/v1beta1、apps/v1beta1或apps/v1beta2的DaemonSet、Deployment、和ReplicaSet,迁移至apps/v1,1.16版本暂停使用 PriorityClass升级到scheduling.k8s.io/v1,scheduling.k8s.io/v1beta1和scheduling.k8s.io/v1alpha1 1.17正式废弃 events.k8s.io/v1beta1 Event API中series.state字段废弃,将在1.18版本中移除
  • 参考链接 社区v1.13与v1.15版本之间的CHANGE LOG v1.14到v1.15的变化: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.15.md v1.13到v1.14的变化: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.14.md