k8s版本变化

v1.29

  • 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校验规则。
  • 在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。

v1.28

  • 在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 第三方存储驱动程序作为替代方案。
  • 版本偏差策略扩展至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 中,导致请求失败。该特性能解决该问题。更多使用细节请参考混合版本代理。
  • 节点非体面关闭特性达到 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的失败次数超过设定的上限时,将不再进行重试。
  • 在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字段,用来检查已解析类型。

v1.27

  • SeccompDefault特性已进入稳定阶段
    如需使用SeccompDefault特性,您需要为每个节点的kubelet启用--seccomp-default命令行标志。如果启用该特性,kubelet将为所有工作负载默认使用RuntimeDefault seccomp配置文件,该配置文件由容器运行时定义,而不是使用Unconfined(禁用seccomp)模式。
  • Job可变调度指令
    该特性在Kubernetes 1.22版本中引入,当前已进入稳定阶段。在大多数情况下,并行作业Pod希望在一定的约束下运行,例如希望所有Pod在同一可用区。该特性允许在Job开始前修改调度指令。您可以使用suspend字段挂起Job,在Job挂起阶段,Pod模板中的调度部分(例如节点选择器、节点亲和性、反亲和性、容忍度)允许修改。详情请参见可变调度指令。
  • Downward API HugePages已进入稳定阶段
    在Kubernetes 1.20版本中,Downward API引入了requests.hugepages-<pagesize>和limits.hugepages-<pagesize>,HugePage可以和其他资源一样设置资源配额。
  • Pod调度就绪态进入Beta阶段
    Pod创建后,Kubernetes调度程序会负责选择合适的节点运行pending状态的Pod。在实际使用时,一些Pod可能会由于资源不足长时间处于pending状态。这些Pod可能会影响集群中的其他组件运行(如Cluster Autoscaler)。通过指定/删除Pod的.spec.schedulingGates,您可以控制Pod何时准备好进行调度。详情请参见Pod调度就绪态。
  • 通过Kubernetes API访问节点日志
    此功能当前处于Alpha阶段。集群管理员可以直接查询节点上的服务日志,可以帮助调试节点上运行的服务问题。如需使用此功能,请确保在该节点上启用了NodeLogQuery特性门控,并且kubelet配置选项enableSystemLogHandler和enableSystemLogQuery都设置为true。
  • ReadWriteOncePod访问模式进入Beta阶段
    在Kubernetes 1.22版本中,PV和PVC提供了一种新的访问模式ReadWriteOncePod,该功能当前进入Beta阶段。卷可以被单个Pod以读写方式挂载。如果您想确保整个集群中只有一个Pod可以读取或写入该PVC,请使用ReadWriteOncePod访问模式,详情请参见访问模式。
  • Pod拓扑分布约束中matchLabelKeys字段进入Beta阶段
    matchLabelKeys是一个Pod标签键的列表,用于选择需要计算分布方式的Pod集合。使用matchLabelKeys字段,您无需在变更Pod修订版本时更新pod.spec。控制器或Operator只需要将不同修订版的标签键设为不同的值。调度器将根据matchLabelKeys自动确定取值。详情请参见Pod拓扑分布约束。
  • 快速标记SELinux卷标签功能进入Beta阶段
    默认情况下,容器运行时递归地将SELinux标签赋予所有Pod卷上的所有文件。 为了加快该过程,Kubernetes使用挂载可选项-o context=<label>可以立即改变卷的SELinux标签。详情请参见快速标记SELinux卷标签。
  • VolumeManager重构进入Beta阶段
    重构的VolumeManager后,如果启用NewVolumeManagerReconstruction特性门控,将会在kubelet启动期间使用更有效的方式来获取已挂载卷。
  • 服务器端字段校验和OpenAPI V3已进入稳定阶段
    Kubernetes 1.23中添加了对OpenAPI v3的支持,1.24版本中已进入Beta阶段,1.27已进入稳定阶段。
  • 控制StatefulSet启动序号
    Kubernetes 1.26为StatefulSet引入了一个新的Alpha级别特性,可以控制Pod副本的序号。 从Kubernetes 1.27开始,此特性进入Beta阶段,序数可以从任意非负数开始。详情请参见Kubernetes 1.27: StatefulSet 启动序号简化了迁移。
  • HorizontalPodAutoscaler ContainerResource类型指标进入Beta阶段
    Kubernetes 1.20在HorizontalPodAutoscaler (HPA) 中引入了ContainerResource类型指标。在 Kubernetes 1.27中,此特性进阶至Beta,相应的特性门控 (HPAContainerMetrics) 默认被启用。
  • StatefulSet PVC自动删除进入Beta阶段
    Kubernetes v1.27提供一种新的策略机制,用于控制StatefulSets的PersistentVolumeClaims(PVCs)的生命周期。这种新的PVC保留策略允许用户指定当删除StatefulSet或者缩减StatefulSet中的副本时,是自动删除还是保留从StatefulSet规约模板生成的PVC。详情请参见PersistentVolumeClaim保留。
  • 磁盘卷组快照
    磁盘卷组快照在Kubernetes 1.27中作为Alpha特性被引入。 此特性允许用户对多个卷进行快照,以保证在发生故障时数据的一致性。 它使用标签选择器来将多个PersistentVolumeClaims分组以进行快照。 这个新特性仅支持CSI卷驱动器。详情请参见Kubernetes 1.27:介绍用于磁盘卷组快照的新API。
  • kubectl apply裁剪更安全、更高效
    在Kubernetes 1.5版本中,kubectl apply引入了--prune标志来删除不再需要的资源,允许kubectl apply自动清理从当前配置中删除的资源。然而,现有的--prune实现存在设计缺陷,会降低性能并导致意外行为。Kubernetes 1.27中,kubectl apply提供基于ApplySet的剪裁方式,当前处于Alpha阶段,详情请参见使用配置文件对Kubernetes对象进行声明式管理。
  • 为NodePort Service分配端口时避免冲突
    在Kubernetes 1.27中,您可以启用新的特性门控ServiceNodePortStaticSubrange,为NodePort Service使用不同的端口分配策略,减少冲突的风险。当前该特性处于Alpha阶段。
  • 原地调整Pod资源
    在Kubernetes 1.27中,允许用户调整分配给Pod的CPU和内存资源大小,而无需重新启动容器。当前该特性处于Alpha阶段,详情请参见纵向弹性伸缩。
  • 加快Pod启动
    在Kubernetes 1.27中进行了一系列的参数调整,以提高Pod的启动速度,例如并行镜像拉取、提高Kubelet默认API每秒查询限值等。详情请参见Kubernetes 1.27:关于加快Pod启动的进展。
  • KMS V2进入Beta阶段
    Kubernetes中的密钥管理KMS v2 API进入Beta阶段,对KMS加密提供程序的性能进行了重大改进。详情请参见使用KMS驱动进行数据加密。
  • 在Kubernetes 1.27版本,针对卷扩展 GA 特性的以下特性门禁将被移除,且不得再在 --feature-gates 标志中引用。(ExpandCSIVolumesExpandInUsePersistentVolumesExpandPersistentVolumes
  • 在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 版本以来已被弃用。

v1.26

  • 移除CRI v1alpha2
    Kubernetes 1.26版本不再支持CRI v1alpha2,请使用v1(要求containerd版本>= 1.5.0) 。这意味着Kubernetes 1.26将不支持containerd 1.5.x 及更早的版本;需要升级到containerd 1.6.x或更高版本后,才能将该节点的kubelet升级到1.26。
    说明:
  • 动态资源分配 Alpha API
    在Kubernetes 1.26版本,新增动态资源分配功能,用于Pod之间和Pod内部容器之间请求和共享资源,支持用户提供参数初始化资源。该功能尚处于alpha阶段,需要启用DynamicResourceAllocation特性门禁和resource.k8s.io/v1alpha1 API组,需要为要管理的特定资源安装驱动程序。更多信息,请参见Kubernetes 1.26: 动态资源分配 Alpha API。
  • 节点非体面关闭进入Beta阶段
    在Kubernetes 1.26 中,节点非体面关闭特性是Beta版,默认被启用。当kubelet的节点关闭管理器可以检测到即将到来的节点关闭操作时,节点关闭才被认为是体面的。详情请参见处理节点非体面关闭。
  • 支持在挂载时将Pod fsGroup传递给CSI驱动程序
    将fsGroup委托给CSI驱动程序管理首先在Kubernetes 1.22中作为Alpha特性引入, 并在Kubernetes 1.25中进阶至Beta状态。该特性在Kubernetes 1.26已进入正式发布阶段,详情请参见将卷权限和所有权更改委派给CSI驱动程序。
  • Pod调度就绪态
    Kubernetes 1.26引入了一个新的Pod特性schedulingGates,可以让调度器感知到何时可以进行Pod调度。详情请参见Pod调度就绪态。
  • CPU Manager正式发布
    CPU管理器是kubelet的一部分,从Kubernetes 1.10进阶至 Beta,能够将独占CPU分配给容器。该特性在Kubernetes 1.26已进入稳定阶段,详情请参见控制节点上的CPU管理策略。
  • Kubernetes中流量工程的进步
    优化内部节点本地流量和支持EndpointSlice终止状况升级为正式发布版本, ProxyTerminatingEndpoints功能升级为Beta版本。
  • 支持跨命名空间存储数据源
    Kubernetes 1.26允许在源数据属于不同的命名空间时为PersistentVolumeClaim指定数据源。当前该特性处于Alpha阶段,详情请参见跨命名空间数据源。
  • 可追溯的默认StorageClass进入Beta阶段
    Kubernetes 1.25引入了一个Alpha特性来更改默认StorageClass被分配到 PersistentVolumeClaim (PVC) 的方式。 启用此特性后,您不再需要先创建默认StorageClass,再创建PVC来分配类。 此外,任何未分配StorageClass的PVC都可以在后续被更新。此特性在Kubernetes 1.26 中已进入Beta阶段,详情请参见可追溯的默认StorageClass赋值。
  • PodDisruptionBudget支持指定不健康Pod的驱逐策略
    Kubernetes 1.26允许针对PodDisruptionBudget (PDB) 指定不健康Pod驱逐策略,这有助于在节点执行管理操作期间保持可用性。当前该特性处于Beta阶段,详情请参见不健康的Pod驱逐策略。
  • 支持设置水平伸缩Pod控制器的数量
    kube-controller-manager支持flag --concurrent-horizontal-pod-autoscaler-syncs设置水平伸缩Pod控制器的worker数量。详情请参见集群配置管理。
  • 移除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会失败。
  • 弃用--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.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卷驱动。
  • Pod Security Admission进入稳定阶段,并移除PodSecurityPolicy
    PodSecurityPolicy被废弃,并提供Pod Security Admission取代,具体的迁移方法可参见从PodSecurityPolicy迁移到内置的PodSecurity准入控制器。
  • Ephemeral Containers进入稳定阶段
    临时容器是在现有的Pod中存在有限时间的容器。它对故障排除特别有用,特别是当需要检查另一个容器,但因为该容器已经崩溃或其镜像缺乏调试工具不能使用kubectl exec时。

对cgroups v2的支持进入稳定阶段
Kubernetes支持cgroups v2,与cgroups v1相比提供了一些改进,详情请参见cgroups v2。

v1.24

  •  从kubelet中删除 Dockershim,

    Dockershim自1.20版本被标废弃以来,在1.24版本正式从Kubelet代码中移除。如果还想使用Docker作为容器运行时的话,需要切换到cri-dockerd,或者使用其他支持CRI的运行时比如Containerd/CRI-O等。

    从Docker Engine 切换到Containerd的流程请参见将节点容器引擎从Docker迁移到Containerd

  • 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调度延迟,详细信息请参见存储容量
  • 在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

v1.23

  • FlexVolume废弃,建议使用CSI。
  • HorizontalPodAutoscaler v2版本GA,HorizontalPodAutoscaler API v2在1.23版本中逐渐稳定。不建议使用HorizontalPodAutoscaler v2beta2 API,建议使用新的v2版本API。
  • PodSecurity支持beta,PodSecurity替代废弃的PodSecurityPolicy,PodSecurity是一个准入控制器,它根据设置实施级别的特定命名空间标签在命名空间中的Pod上实施Pod安全标准。在1.23中PodSecurity默认启用。

v1.22

  • Ingress资源不再支持networking.k8s.io/v1beta1和extensions/v1beta1 API。如果使用旧版本API管理Ingress,会影响应用对外暴露服务,请尽快使用networking.k8s.io/v1替代。
  • CustomResourceDefinition资源不再支持apiextensions.k8s.io/v1beta1 API。如果使用旧版本API创建自定义资源定义,会导致定义创建失败,进而影响调和(reconcile)该自定资源的控制器,请尽快使用apiextensions.k8s.io/v1替代。
  • ClusterRole、ClusterRoleBinding、Role和RoleBinding资源不再支持rbac.authorization.k8s.io/v1beta1 API。如果使用旧版本API管理RBAC资源,会影响应用的权限服务,甚至无法在集群内正常使用,请尽快使用rbac.authorization.k8s.io/v1替代。
  • Kubernetes版本发布周期由一年4个版本变为一年3个版本。
  • StatefulSets 支持minReadySeconds。
  • 缩容时默认根据Pod uid排序随机选择删除Pod(LogarithmicScaleDown)。基于该特性,可以增强Pod被缩容的随机性,缓解由于Pod拓扑分布约束带来的问题。更多信息,请参见KEP-2185issues 96748
  • BoundServiceAccountTokenVolume特性已稳定,该特性能够提升服务账号(ServiceAccount)Token的安全性,改变了Pod挂载Token的方式,Kubernetes 1.21及以上版本的集群中会默认开启。

v1.21

  • 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及以上版本的集群中会默认开启。

v1.20

  • 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

v1.19

  • 增加对vSphere in-tree卷迁移至vSphere CSI驱动的支持。in-tree vSphere Volume插件将不再使用,并在将来的版本中删除。
  • apiextensions.k8s.io/v1beta1已弃用,推荐使用apiextensions.k8s.io/v1。
  • apiregistration.k8s.io/v1beta1已弃用,推荐使用apiregistration.k8s.io/v1。
  • authentication.k8s.io/v1beta1、authorization.k8s.io/v1beta1已弃用,1.22将移除,推荐使用authentication.k8s.io/v1、authorization.k8s.io/v1。
  • autoscaling/v2beta1已弃用,推荐使用autoscaling/v2beta2。
  • coordination.k8s.io/v1beta1在1.19中已弃用,1.22将移除,推荐使用v1。
  • Kube-apiserver: componentstatus API已弃用。
  • Kubeadm:kubeadm config view命令已被弃用,并将在未来版本中删除,请使用kubectl get cm -o yaml -n kube-system kubeadm-config来直接获取kubeadm配置。
  • Kubeadm:弃用kubeadm alpha kubelet config enable-dynamic命令。
  • Kubeadm:kubeadm alpha certs renew命令--use-api参数已弃用。
  • Kubernetes不再支持构建hyperkube镜像。
  • Remove --export flag from kubectl get command - kubectl get中移除 --export参数。
  • alpha特性“ResourceLimitsPriorityFunction”已完全删除。
  • storage.k8s.io/v1beta1已弃用,推荐使用storage.k8s.io/v1。

v1.18

  • kube-apiserver
    • apps/v1beta1 and apps/v1beta2下所有资源不再提供服务,使用apps/v1替代。
    • extensions/v1beta1下daemonsets,deployments,replicasets不再提供服务,使用apps/v1替代。
    • extensions/v1beta1下networkpolicies不再提供服务,使用networking.k8s.io/v1替代。
    • extensions/v1beta1下podsecuritypolicies不再提供服务,使用policy/v1beta1替代。
  • kubelet
    • --redirect-container-streaming不推荐使用,v1.20会正式废弃。
    • 资源度量端点 /metrics/resource/v1alpha1以及此端点下的所有度量标准均已弃用。请转换为端点 /metrics/resource下的度量标准:
      • scrape_error --> scrape_error
      • node_cpu_usage_seconds_total --> node_cpu_usage_seconds
      • node_memory_working_set_bytes --> node_memory_working_set_bytes
      • container_cpu_usage_seconds_total --> container_cpu_usage_seconds
      • container_memory_working_set_bytes --> container_memory_working_set_bytes
      • scrape_error --> scrape_error
    • 在将来的发行版中,kubelet将不再根据CSI规范创建CSI NodePublishVolume目标目录。可能需要相应地更新CSI驱动程序,以正确创建和处理目标路径。
  • kube-proxy
    • --healthz-port和--metrics-port参数不建议使用,请使用--healthz-bind-address和--metrics-bind-address。
    • 增加EndpointSliceProxying功能选项以控制kube-proxy中EndpointSlices的使用,默认情况下已禁用此功能。
  • kubeadm
    • kubeadm upgrade node的--kubelet-version参数已弃用,将在后续版本中删除。
    • kubeadm alpha certs renew命令中--use-api参数已弃用。
    • kube-dns已弃用,在将来的版本中将不再受支持。
    • kubeadm-config ConfigMap中存在的ClusterStatus结构体已废弃,将在后续版本中删除。
  • kubectl
    • --dry-run不建议使用boolean和unset values,新版本中server|client|none会被使用。
    • kubectl apply --server-dry-run已弃用,替换为--dry-run=server。
    • kube-scheduler
      • scheduling_duration_seconds指标已弃用。
      • scheduling_algorithm_predicate_evaluation_seconds和scheduling_algorithm_priority_evaluation_seconds指标已弃用,使用framework_extension_point_duration_seconds[extension_point="Filter"]和framework_extension_point_duration_seconds[extension_point="Score"]替代。
      • 调度器策略AlwaysCheckAllPredicates已弃用。
    • 其他变化
      • k8s.io/node-api组件不再更新。作为替代,可以使用位于k8s.io/api中的RuntimeClass类型和位于k8s.io/client-go中的generated clients。
      • 已从apiserver_request_total中删除“client”标签。

    v1.17

    • 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废弃并会在未来版本中移除。

    v1.15

    • 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版本中移除