《K8s集群版本升级运维指南.docx》由会员分享,可在线阅读,更多相关《K8s集群版本升级运维指南.docx(15页珍藏版)》请在第一文库网上搜索。
1、K8s集群版本升级运维指南【摘要】本文分享了K8s集群版本升级(不能跨次要版本升级)的方法步骤。写在前面 分享一些K8s集群版本升级的笔记 为根据官方文档的版本升级记录 以及不同组件的版本偏差要求 理解不足小伙伴帮忙指正那认识一切而不为任何事物所认识的,就是主体作为意志和表象的世界(第一篇世界作为表象初论)升级K8S集群分享一些基本kubeadm升级K8s集群版本的笔记,下面为实际的升级记录,这里一定要注意,不能跨次要版本升级,可以跨补丁版本,即可以1.26.X升级到1.26.y(其中yx+1)或者1.22.x升级到1.23.x,不能1.22.x升级到1.26.x。Kubernetes版本以x
2、.y.z表示,其中X是主要版本,y是次要版本,z是补丁版本,遵循语义版本控制术语。支持的版本偏差kubeapiserver:在高可用性(HA)集群中(可以单纯理解为多master节点的情况),最新版和最老版的kube-apiserver实例版本偏差最多为一个次要版本,即多个master节点的kube-apiservice版本要求。kube1et:kube1et版本不能比kube-apiserver版本新,并且最多只可落后两个次要版本。如果HA集群中的kube-apiserver实例之间存在版本偏差,这会缩小允许的kube1et版本范围。kube-contro11er-manager.kube-
3、schedu1er和c1oud-contro11er-manager:kube-contro11er-managexkube-schedu1er和c1oudcontro11er-manager不能比与它们通信的kube-apiserver实例新O它们应该与kube-apiserver次要版本相匹配,但可能最多旧一个次要版本。kubect1:kubect1在kube-apiserver的一个次要版本(较旧或较新)中支持。kube-proxy:kube-proxy和节点上的kube1et必须是相同的次要版本。kube-proxy版本不能比kube-apiserver版本新。kube-proxy最多
4、只能比kube-apiserver落后两个次要版本。升级工作的基本流程如下: 升级master所有节点升级node所有节点这里升级版本为1.21.1升级1.22.2,下面为具体的升级步骤,实际操作一般以官方文档为准,尤其涉及一些重大版本变更,比如1.23之后不支持docker,只能使用Containerd,还用docker的话只能添加垫片之类的东西。如果升级版本太低不被支持,只能找其他相关资料。版本迭代很快,虽然旧版本也一直在维护。还是建议有稳定版本就升级。确定要升级到哪个版本IIrootvms81.Iirui1ongs.github.io-I1SyU1TIIiSt-showdup1icate
5、skubeadm现有环境II-()()VmS81.1i门i1ongs.giIhub.i()-ZIISiI)1oJWms81Iirui1ongs.github.ioNotReadyCOntrOI,I:iii;.1卜ms82.Iirui1ongs.github.ioNOtReadyIVnIS83.Iirui1ongs.github.ioNotReadyIrootVnIS81.1Irui1Ongs.github.io-ansib1e升级master控制节点上的升级过程应该每次处理一个节点。首先选择一个要先行升级的控制面节点。该节点上必须拥有etckubernetesadmin.conf文件。即管理员
6、使用的kubeconfig证书文件执行wkubeadmupgrade升级kubeadm:IIroo1vms81Iirui1ongs.github.io一1SyUminsta11-ykubeadm122.2-0一验证下载操作正常,并且kubeadm版本正确:IkUbeadnIversion:&version.InfoMajor:T,Minor:22,GitVersionJ15T21:37:34Z,*,GoVersion:,go1.16.8,Compi1er:,gc,P1atform:,1inix/amd64验证升级计划:此命令检查你的集群是否可被升级,并取回你要升级的目标版本。命令也会显示一个包
7、含组件配置版本状态的表格。upgrade/COnfigMakingSUretheConfigUrationisCorreCtupgrade/COnfigReadingconfigurationfromtheCIUSterupgrade/COnfigFYI:YOUCanIookatthisCOnfigfi1evithkubec11-nkube-sys1emgetCnIkubeadm-COnfig-0T:,I1.T.,,:,uKiudcRUnnin1(!usicrh1ih(hc(k,绿upgradeFetChingavai1ab1eVerSicmStoUPgrade豁1mt、Q(二-1一广一川1:
8、,.;二:.舞,upHirdrvcr)mkubcdvcrsicn:丫1?.2.=.缪,);JR1;心T1IIw,T,:,;Uupgrade/VerSions1ateStVerSiOnintheV121series:V121.选择要升级到的目标版本,运行合适的命令,SsudokubeadmUPgradeapp1yv1.22.2pgradesuccessfu1SUCCESS!Yourc1usterwasupgradedto,v1.upgrade/kube1etNowthatyourCOntrOIP1aneisupgraded,peaseproceedwithupgradingyourkube1et
9、sifyouhaven,tairIrootVmS81.Iirui1ongs.github.io一k8s官网提到这里需要升级CNI组件,这里要根据实际情况具体分析,当前不需要。这里如果有其他的master节点,则需要运行sudokubeadmupgradenode设置进入维护模式通过将节点标记为不可调度并腾空节点为节点作升级准备:#将node-to-drain替换为你要腾空的控制面节点名称fikubec11drainnode-to-drain一ignore-daemonsetrootvms81.Iirui1ongs.github.io-升级kube1et和kubect1II)()t妇mK1.!-
10、()1MS.jihub,in,重启kube1etIrootVmS81.Iirui1ongs.github.io-Iroo1vms81.Iirui1ongs.gi1hub.io-解除节点的保护IIrootvnis811iri1ongs.github.I1Skubec11UnCordonvms81.Iirui1ongs.gi1hub.iorodcvms81.1irui1ongs,github.iounc()rd()n(?dMBmaster节点版本以已经替换Ekubect1getnodesA.11:STATUS卜ms81Iirui1ongs.github.ioReady1ane,masterIId卜
11、ms82.Iirui1ongs.gi1hub.ioNOtReadyvms83.Iirui1ongs.github.ioReadyRO1ESAGEVERSIONI1dv1.21.1rootVmS81.Iirui1ongs.github.io升级工作节点Node工作节点上的升级过程应该一次执行一个节点,或者一次执行几个节点,以不影响运行工作负载所需的最小容量。升级kubeadm1SanSibIenode-ayuminsta11-ykubeadmT.22.2-01iSab1eexc1udes=kuberne1esI.()ot,*vS(S1.1irui1origs.gi1hi.i1),i()1.his
12、i1)1oIMhmMI,Sensib1enode-awsudokubeadmupgradenode”#行“kubeadnupgrade”对于工作节点,下面的命令会升级本地的kube1eIIrootVmS81.Iirui1ongs.github.io/ansibioIIVmS81.IinH1ongs,github.i。ReadyICe)I1troIPIanO,master12dV122.卜ms82.Iirui1ongs.github.ioReady12dv1.21.1vms83.Iirui1ongs.github.ioReadyjSchedu1ingDisab1ed12dv1.22.2腾空节点,
13、设置维护状态rootVnIS81Iirui1ongs,github.io-TVansib1e1Skubect1drainVITIS82.Iirui1ongs.github.io-ignore-daemonsetsnodevms82.Iirui1ongs.github.ioCOrdonedWARNING:ignoringDaenIonSe1managedPods:kube-SyStenI/ca1ico-node-n1m7v,kube-SyStemkube-PrOXy-nzm24nodevms82.Iirui1ongs.github.iodrained升级kube1et和kubect116ansi
14、b1e192.168.26.82-aUyUminsta11ykube1et-1.22.2Okubect1-1.22.2-0-disab1eexcIudes=Rubernetes,重启kube1etIII.,sF1.1J)!1一:.),、汁)1(?IIJmu1ISK1.:;/s.jhub.)J,I1SU)!II:m,FrESK1.iW;QnmiIh川).丁卜,;”1SE、IIVns81Iirui1ongs.github.ioReadyI,:,.;:,.J:C:T二;1,一二卜ms82.Iirui1ongs.github.ioReady,Schedu1ingDisab1ednone)13dV1.22.13dv1.22.2取消对节点的保护rootvms81.Hrui1ongs.github.io-1UH(,d(H丫门卜内上二一h.:1,I,一:.-,匚9jn1Ii,:、:.:I,一一:!1.;1UnC()idcn卜、:【心.:【hubU)(h,T.,:UK、.;/:h).:c“”(川(3.