Kubernetes版本和版本倾斜支持策略

Kubernetes版本和版本倾斜支持策略

本文档描述了各种Kubernetes组件之间支持的最大版本偏斜。特定的群集部署工具可能会对版本偏斜施加其他限制。
支持的版本

Kubernetes版本用xyz表示,其中x是主要版本,y是次要版本,z是补丁版本,遵循语义版本控制术语。有关更多信息,请参见Kubernetes发行版本控制。

Kubernetes项目维护着最近三个次要版本(1.18、1.17、1.16)的发行分支。

可能会根据严重性和可行性将适用的修补程序(包括安全修补程序)反向移植到这三个发行分支。定期从这些分支中删除补丁发布,并在需要时添加其他紧急发布。

该发行经理人集团拥有这一决定。

有关更多信息,请参见Kubernetes 修补程序版本页面。
支持的版本偏斜
kube-apiserver

在高可用性(HA)群集中,最新和最旧的kube-apiserver实例必须在一个次要版本内。

例:

最新的kube-apiserver是1.18
其他kube-apiserver实例在1.18和1.17受支持

kubelet

kubelet不得比较新kube-apiserver,并且最多可以早于两个次要版本。

例:

kube-apiserver在1.18
kubelet在支持1.18,1.17和1.16

注意:如果kube-apiserverHA群集中的实例之间存在版本偏斜,则会缩小允许的kubelet版本。

例:

kube-apiserver实例位于1.181.17
kubelet1.171.16处受支持(不支持1.18,因为它比kube-apiserver版本1.17的实例新)

kube-controller-manager,kube-scheduler和cloud-controller-manager

kube-controller-manager,kube-scheduler和cloud-controller-manager不得比kube-apiserver与其通信的实例新。它们应与kube-apiserver次要版本匹配,但可能会比以前的次要版本高一个(以允许实时升级)。

例:

kube-apiserver在1.18
kube-controller-manager,kube-scheduler和,cloud-controller-manager分别在1.18和1.17受支持

注意:如果kube-apiserverHA群集中的实例之间存在版本偏斜,并且这些组件可以与kube-apiserver群集中的任何实例通信(例如,通过负载平衡器),这将缩小这些组件的允许版本。

例:

kube-apiserver实例位于1.181.17
kube-controller-manager,kube-scheduler和cloud-controller-manager与可以路由到任何kube-apiserver实例的负载均衡器进行通信
kube-controller-manager,,kube-scheduler和cloud-controller-manager支持在1.17(不支持1.18,因为它比kube-apiserver版本1.17的实例新)

Kubectl

kubectl的一个次要版本(较旧或较新)受支持kube-apiserver。

例:

kube-apiserver在1.18
kubectl在支持1.19,1.18和1.17

注意:如果kube-apiserverHA群集中的实例之间存在版本偏斜,则会缩小支持的kubectl版本。

例:

kube-apiserver实例位于1.181.17
kubectl1.181.17上受支持(其他版本将是从多个kube-apiserver组件之一偏斜的多个次要版本)

支持的组件升级顺序

组件之间受支持的版本偏差会影响组件必须升级的顺序。本节介绍了升级组件的顺序,以将现有群集从1.17版过渡到1.18版。
kube-apiserver

先决条件:

在单实例集群中,现有kube-apiserver实例为1.17
在高可用性群集中,所有kube-apiserver实例的大小均为1.17或1.18(这可确保最旧kube-apiserver实例和最新实例之间的1个次要版本的最大时滞)
的kube-controller-manager,kube-scheduler以及cloud-controller-manager与该服务器进行通信的实例是在版本1.17(这保证它们并不比现有的API服务器版本新,并且是新的API服务器版本1个版本内)
kubelet所有节点上的实例版本为1.17或1.16(这确保它们不比现有API服务器版本新,并且在新API服务器版本的2个次要版本之内)
注册的准入网络钩子能够处理新kube-apiserver实例将发送给它们的数据:
    ValidatingWebhookConfiguration并且MutatingWebhookConfiguration对象已更新为包括1.18中添加的REST资源的任何新版本(或使用v1.15 +中可用的matchPolicy: Equivalent选项)
    Webhook能够处理将发送给他们的REST资源的任何新版本,以及在1.18版中添加到现有版本的任何新字段

升级kube-apiserver到1.18

注意:API弃用和API更改准则的项目政策要求kube-apiserver升级时不要跳过次要版本,即使在单实例集群中也是如此。

kube-controller-manager,kube-scheduler和cloud-controller-manager

先决条件:

kube-apiserver这些组件与之通信的实例的速率为1.18(在HA集群中,这些控制平面组件可以与kube-apiserver集群中的任何实例进行通信,kube-apiserver在升级这些组件之前必须先升级所有实例)

升级kube-controller-manager,kube-scheduler以及cloud-controller-manager以1.18
kubelet

先决条件:

与之通讯的kube-apiserver实例kubelet为1.18

(可选)将kubelet实例升级到1.18(或者可以将实例保留在1.17或1.16)

警告:

不建议kubelet在实例上始终存在两个次要版本的情况下运行群集kube-apiserver:

    必须在的一个次要版本内升级它们,kube-apiserver然后才能升级控制平面
    它增加了运行kubelet版本早于三个维护的次要版本的可能性