k8s集群升级

前言

升级 k8s 集群必须 先升级 kubeadm 版本到目的 k8s 版本,也就是说 kubeadm 是 k8s 升级 的 ”准升证”。

升级k8s master服务

在 k8s 的所有 master 进行升级,将管理端服务 kube-controller-manager、kube-apiserver、 kube-scheduler、kube-proxy的版本进行升级

验证当前k8s版本

root@k8s-master2:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.2", GitCommit:"59603c6e503c87169aea6106f57b9f242f64df89", GitTreeState:"clean", BuildDate:"2020-01-18T23:27:49Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"}

各master安装指定新版本kubeadm

#查看 k8s 版本列表
$ apt-cache madison kubeadm 

#安装新版本kubeadm
$ apt-get install kubeadm=1.17.4-00 

#验证  kubeadm 版本
$ kubeadm version 
kubeadm version: &version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.4", GitCommit:"8d8aa39598534325ad77120c120a22b3a990b5ea", GitTreeState:"clean", BuildDate:"2020-03-12T21:01:11Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}

升级计划

#查看升级计划
$kubeadm upgrade plan

可以看到当前k8s v1.17版本中最新的小版本是v.17.5,但是我们只升级到v1.17.4!

image-20200519135933437.png

开始升级

下载镜像
#! /bin/bash
images=(
    kube-apiserver:v1.17.4
    kube-controller-manager:v1.17.4
    kube-scheduler:v1.17.4
    kube-proxy:v1.17.4
    pause:3.1
    etcd:3.4.3-0
    coredns:1.6.5
)

for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done

升级

升级时,最好一台一台升级,把升级的master从haproxy配置里注释掉,然后reload haproxy,这样k8s高可用集群不会导致api-server的调度中断。我这里是自己的虚拟机,就不讲究这么多了

#master1
$ kubeadm upgrade apply v1.17.4 

#master2
$ kubeadm upgrade apply v1.17.4 

#master3
$ kubeadm upgrade apply v1.17.4 
image-20200519141225692.png

image-20200519141248897.png

image-20200519141431877.png

升级kubelet和kubectl

$ apt-get install -y  kubectl=1.17.4-00 kubelet=1.17.4-00

验证版本

$ kubectl  get node
NAME                   STATUS   ROLES    AGE   VERSION
k8s-master1.ning.com   Ready    master   17h   v1.17.4
k8s-master2.ning.com   Ready    master   16h   v1.17.4
k8s-master3.ning.com   Ready    master   16h   v1.17.4
k8s-node1.ning.com     Ready    <none>   16h   v1.17.2
k8s-node2.ning.com     Ready    <none>   16h   v1.17.2

升级node节点

升级各node节点配置文件

注:node节点也需要提前下载镜像,否则有可能导致pod创建失败

$ kubeadm upgrade node --kubelet-version 1.17.4
[upgrade] Reading configuration from the cluster...
[upgrade] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[upgrade] Skipping phase. Not a control plane node.
[upgrade] Using kubelet config version 1.17.4, while kubernetes-version is v1.17.4
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.17" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[upgrade] The configuration for this node was successfully updated!
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.

升级各node节点二进制包

$ apt install kubelet=1.17.4-00 kubeadm=1.17.4-00 kubectl=1.17.4-00

验证最终版本

image-20200519194844827.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容