kubernetes使用kubeadm升级集群

升级前准本 

官网: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/
查看可升级的组件

[root@hadoop01 yum.repos.d]# kubeadm upgrade plan
[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'
[preflight] Running pre-flight checks.
[upgrade] Making sure the cluster is healthy:
[upgrade] Fetching available versions to upgrade to
[upgrade/versions] Cluster version: v1.16.0
[upgrade/versions] kubeadm version: v1.16.2
External components that should be upgraded manually before you upgrade the control plane with 'kubeadm upgrade apply':
COMPONENT   CURRENT   AVAILABLE
Etcd        3.3.11    3.3.15-0

Upgrade to the latest version in the v1.16 series:

COMPONENT            CURRENT   AVAILABLE
API Server           v1.16.0   v1.16.2
Controller Manager   v1.16.0   v1.16.2
Scheduler            v1.16.0   v1.16.2
Kube Proxy           v1.16.0   v1.16.2
CoreDNS              1.6.2     1.6.2

You can now apply the upgrade by executing the following command:

    kubeadm upgrade apply v1.16.2

_____________________________________________________________________

上面提示升级之前先升级外部组件etcd,如果kubelet,kubectl,kubeadm版本低则也需要升级
先导出配置文件

[root@hadoop03 ~]# kubectl -n kube-system get cm kubeadm-config -oyaml >  kubeadm-config.yaml

查看版本kubeadm/kubelet/kubectl

[root@cx--0008 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"archive", BuildDate:"2019-11-25T09:06:09Z", GoVersion:"go1.12.7", Compiler:"gc", Platform:"linux/amd64"}
[root@hadoop03 ~]# kubectl version
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.0", GitCommit:"2bd9643cee5b3b3a5ecbd3af49d09018f0773c77", GitTreeState:"clean", BuildDate:"2019-09-18T14:27:17Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
[root@hadoop03 ~]# kubelet --version
Kubernetes v1.16.0

1 升级ectd组件

  单独升级

2 升级kubeadm/kubelet/kubectl

  2.1) 使用yum列出可用版本
  一般情况下yum list只会列出最新版本

[root@cx--0008 ~]# yum list kubectl --showduplicates | sort -r | grep "1.16"
kubectl.x86_64                       1.16.3-0                        @kubernetes
kubectl.x86_64                       1.16.0-0                        kubernetes 
kubectl.x86_64                       1.16.1-0                        kubernetes 
kubectl.x86_64                       1.16.2-0                        kubernetes 
kubectl.x86_64                       1.16.3-0                        kubernetes
[root@cx--0008 ~]# yum list kubeadm --showduplicates | sort -r | grep "1.16"
kubeadm.x86_64                       1.16.3-0                        @kubernetes
kubeadm.x86_64                       1.16.0-0                        kubernetes 
kubeadm.x86_64                       1.16.1-0                        kubernetes 
kubeadm.x86_64                       1.16.2-0                        kubernetes 
kubeadm.x86_64                       1.16.3-0                        kubernetes
[root@cx--0008 ~]# yum list kubelet --showduplicates | sort -r | grep "1.16"
kubelet.x86_64                       1.16.3-0                        kubernetes 
kubelet.x86_64                       1.16.3-0                        @kubernetes
kubelet.x86_64                       1.16.2-0                        kubernetes 
kubelet.x86_64                       1.16.1-0                        kubernetes 
kubelet.x86_64                       1.16.0-0                        kubernetes 

  2.1) 安装

[root@hadoop01 yum.repos.d]# yum -y install kubeadm.x86_64-1.16.2-0
[root@hadoop01 yum.repos.d]# yum -y install kubelet.x86_64-1.16.2-0
[root@hadoop01 yum.repos.d]# yum -y install kubectl.x86_64-1.16.2-0

3 升级集群

  3.1) 下载升级所需镜像
  在执行kubeadm upgrade apply v1.16.2之前我们先要把需要的镜像版本下载好,以便执行命令就不用长久的等待
  这里我们根据kubectl -n kube-system get cm kubeadm-config -oyaml >  kubeadm-config.yaml 集群配置文件把kubernetesVersion改为要升级的版本号

[root@hadoop01 ~]# kubeadm config images list --config kubeadm-config.yaml
registry.aliyuncs.com/google_containers/kube-apiserver:v1.16.2
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.16.2
registry.aliyuncs.com/google_containers/kube-scheduler:v1.16.2
registry.aliyuncs.com/google_containers/kube-proxy:v1.16.2
registry.aliyuncs.com/google_containers/pause:3.1
registry.aliyuncs.com/google_containers/coredns:1.6.2
[root@hadoop01 ~]# kubeadm config images pull --config kubeadm-config.yaml
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-apiserver:v1.16.2
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-controller-manager:v1.16.2
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-scheduler:v1.16.2
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-proxy:v1.16.2
[config/images] Pulled registry.aliyuncs.com/google_containers/pause:3.1
[config/images] Pulled registry.aliyuncs.com/google_containers/coredns:1.6.2

  3.2 升级开始

[root@hadoop01 yum.repos.d]# kubeadm upgrade apply --certificate-renewal=false --config=kubeadm-config.yaml

////[root@hadoop01 yum.repos.d]# kubeadm upgrade apply  --certificate-renewal=false v1.16.2

  注意: 如果我们的证书有效期是10年或者100年,就不必更新证书了,不然就设 --certificate-renewal=true,更多详细参数请查看官网



猜你喜欢

转载自www.cnblogs.com/linyouyi/p/11932805.html