- Kubernetes權(quán)威指南:從Docker到Kubernetes實(shí)踐全接觸(第4版)
- 龔正等編著
- 766字
- 2019-09-23 11:04:30
2.7 Kubernetes的版本升級(jí)
2.7.1 二進(jìn)制升級(jí)
Kubernetes的版本升級(jí)需要考慮到不要讓當(dāng)前集群中正在運(yùn)行的容器受到影響。應(yīng)對(duì)集群中的各Node逐個(gè)進(jìn)行隔離,然后等待在其上運(yùn)行的容器全部執(zhí)行完成,再更新該Node上的kubelet和kube-proxy服務(wù),將全部Node都更新完成后,再更新Master的服務(wù)。
◎ 通過(guò)官網(wǎng)獲取最新版本的二進(jìn)制包kubernetes.tar.gz,解壓后提取服務(wù)的二進(jìn)制文件。
◎ 逐個(gè)隔離Node,等待在其上運(yùn)行的全部容器工作完成后,更新kubelet和kube-proxy服務(wù)文件,然后重啟這兩個(gè)服務(wù)。
◎ 更新Master的kube-apiserver、kube-controller-manager、kube-scheduler服務(wù)文件并重啟。
2.7.2 使用kubeadm進(jìn)行集群升級(jí)
kubeadm提供了upgrade命令用于對(duì)kubeadm安裝的Kubernetes集群進(jìn)行升級(jí)。這一功能提供了從1.10到1.11、從1.11到1.12、從1.12到1.13及從1.13到1.14的升級(jí)能力,這里試用一下從1.13到1.14的升級(jí)。
開(kāi)始之前需要注意:
◎ 雖然kubeadm的升級(jí)不會(huì)觸及工作負(fù)載,但還是要在升級(jí)之前做好備份。
◎ 升級(jí)過(guò)程可能會(huì)因?yàn)镻od的變化而造成容器重啟。
繼續(xù)以CentOS 7環(huán)境為例,首先需要升級(jí)的是kubeadm:
# yum install -y kubeadm-1.14.0--disableexcludes=kubernetes
查看kubeadm的版本:
# kubeadm version kubeadm version: &version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:51:21Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
接下來(lái)查看kubeadm的升級(jí)計(jì)劃:
# kubeadm upgrade plan
會(huì)出現(xiàn)預(yù)備升級(jí)的內(nèi)容描述:
[preflight] Running pre-flight checks. [upgrade] Making sure the cluster is healthy: [upgrade/config] Making sure the configuration is correct: [upgrade/config] Reading configuration from the cluster... [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml' [upgrade] Fetching available versions to upgrade to [upgrade/versions] Cluster version: v1.13.2 [upgrade/versions] kubeadm version: v1.14.0 Awesome, you're up-to-date! Enjoy!
按照任務(wù)指引進(jìn)行升級(jí):
# kubeadm upgrade apply 1.14.0 [preflight] Running pre-flight checks. [upgrade] Making sure the cluster is healthy: [upgrade/config] Making sure the configuration is correct: [upgrade/config] Reading configuration from the cluster... [upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml' [upgrade/version] You have chosen to change the cluster version to "v1.14.0" [upgrade/versions] Cluster version: v1.13.2 [upgrade/versions] kubeadm version: v1.14.0 [upgrade/confirm] Are you sure you want to proceed with the upgrade? [y/N]:
輸入“y”,確認(rèn)之后,開(kāi)始進(jìn)行升級(jí)。
運(yùn)行完成之后,再次查詢版本:
# kubectl version Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:35:51Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:45:25Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
可以看到,雖然kubectl還是1.13.2,服務(wù)端的控制平面已經(jīng)升級(jí)到了1.14.0,但是查看Node版本,會(huì)發(fā)現(xiàn)Node版本還是滯后的:
# kubectl get nodes NAME STATUS ROLES AGE VERSION node-kubeadm-1 Ready master 15m v1.13.2 node-kubeadm-2 Ready <none> 13m v1.13.2
然后可以對(duì)節(jié)點(diǎn)配置進(jìn)行升級(jí):
# kubeadm upgrade node config --kubelet-version 1.14.0
接下來(lái),按照和二進(jìn)制升級(jí)一樣的步驟將kubelct升級(jí),這樣就完成了集群的整體升級(jí):
# kubectl get nodes NAME STATUS ROLES AGE VERSION node-kubeadm-1 Ready master 25m v1.14.0 node-kubeadm-2 Ready <none> 22m v1.14.0
- 多媒體技術(shù)應(yīng)用研究
- 計(jì)算機(jī)基礎(chǔ)教育課程改革與教學(xué)優(yōu)化
- 正則化對(duì)偶模型研究及在圖像重構(gòu)中的應(yīng)用
- 計(jì)算機(jī)組成原理
- 大學(xué)計(jì)算機(jī)基礎(chǔ)(文科)
- 光榮與夢(mèng)想:互聯(lián)網(wǎng)口述系列叢書(shū)·許榕生篇
- 計(jì)算機(jī)英語(yǔ)教程(第2版)
- 測(cè)試設(shè)計(jì)思想
- 計(jì)算機(jī)應(yīng)用基礎(chǔ)
- 有道云筆記:記錄,成為更好的自己
- Java Web云應(yīng)用開(kāi)發(fā)
- 計(jì)算機(jī)網(wǎng)絡(luò)簡(jiǎn)明教程
- 大學(xué)計(jì)算機(jī)基礎(chǔ)(第2版)
- 無(wú)處不在的算法
- NTFS文件系統(tǒng)扇區(qū)存儲(chǔ)探秘