官术网_书友最值得收藏!

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
主站蜘蛛池模板: 呼图壁县| 道真| 肥城市| 慈利县| 海林市| 彭州市| 甘孜| 阳新县| 河东区| 秀山| 牙克石市| 仁化县| 斗六市| 柘城县| 望谟县| 巴彦县| 德钦县| 淮北市| 南陵县| 竹山县| 荆门市| 分宜县| 柘荣县| 乳山市| 舟山市| 瑞安市| 大化| 嘉峪关市| 景洪市| 遂川县| 绥滨县| 胶南市| 宁城县| 孟村| 松溪县| 平凉市| 阿克陶县| 上蔡县| 金平| 泸溪县| 连南|