使用kubeadm升级K8S
时间:2019年3月6日16:50:10
注意:
如下示例为
1.11.2
升级到1.11.7
同样适用于
1.11.x
升级到1.12.x
这种次级版本升级
不支持
1.11
到1.13
这种跨次版本升级方式
-
环境说明:
1.操作系统:
Ubuntu 18.04 LTS
2.K8S部署:Static Pod
方式部署controll plane
一、使用kubeadm upgrade plan
查看当前可升级情况
[root@zxg kubernetes_ubuntu]# kubeadm upgrade plan
[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.11.2
[upgrade/versions] kubeadm version: v1.11.2
[upgrade/versions] Latest stable version: v1.13.3
[upgrade/versions] Latest version in the v1.11 series: v1.11.7
[upgrade/versions] WARNING: No recommended etcd for requested kubernetes version (v1.13.3)
Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT CURRENT AVAILABLE
Kubelet 1 x v1.11.2 v1.11.7
Upgrade to the latest version in the v1.11 series:
COMPONENT CURRENT AVAILABLE
API Server v1.11.2 v1.11.7
Controller Manager v1.11.2 v1.11.7
Scheduler v1.11.2 v1.11.7
Kube Proxy v1.11.2 v1.11.7
CoreDNS 1.1.3 1.1.3
Etcd 3.2.18 3.2.18
You can now apply the upgrade by executing the following command:
kubeadm upgrade apply v1.11.7
Note: Before you can perform this upgrade, you have to update kubeadm to v1.11.7.
_____________________________________________________________________
Components that must be upgraded manually after you have upgraded the control plane with 'kubeadm upgrade apply':
COMPONENT CURRENT AVAILABLE
Kubelet 1 x v1.11.2 v1.13.3
Upgrade to the latest stable version:
COMPONENT CURRENT AVAILABLE
API Server v1.11.2 v1.13.3
Controller Manager v1.11.2 v1.13.3
Scheduler v1.11.2 v1.13.3
Kube Proxy v1.11.2 v1.13.3
CoreDNS 1.1.3 1.1.3
Etcd 3.2.18 N/A
You can now apply the upgrade by executing the following command:
kubeadm upgrade apply v1.13.3
Note: Before you can perform this upgrade, you have to update kubeadm to v1.13.3.
_____________________________________________________________________
二、根据以上提示,先升级kubeadm/kubelet/kubectl
1.下载kubeadm/kubelet/kubectl
安装包 [ 需要在可联网机器上下载 ]
# apt download kubeadm=1.11.7-00 kubectl=1.11.7-00 kubelet=1.11.7-00
# ls
kubeadm_1.11.7-00_amd64.deb kubectl_1.11.7-00_amd64.deb kubelet_1.11.7-00_amd64.deb
2.升级 kubeadm/kubelet/kubectl
到1.11.7
版本
# ls
kubeadm_1.11.7-00_amd64.deb kubectl_1.11.7-00_amd64.deb kubelet_1.11.7-00_amd64.deb
# dpkg -i *.deb
注:以上两步可合并成:apt install kubeadm=1.11.7-00 kubectl=1.11.7-00 kubelet=1.11.7-00
三、下载升级到执行版本需要的镜像
从1.11.2
升级到 1.11.7
需要的新镜像:
- kube-apiserver
- kube-controller-manager
- kube-scheduler
- kube-proxy
下载并推送到镜像仓库:
# PULL [需要联网]
docker pull mirrorgooglecontainers/kube-apiserver:v1.11.7
docker pull mirrorgooglecontainers/kube-controller-manager:v1.11.7
docker pull mirrorgooglecontainers/kube-scheduler:v1.11.7
docker pull mirrorgooglecontainers/kube-proxy:v1.11.7
# TAG
docker tag mirrorgooglecontainers/kube-controller-manager:v1.11.7 myharbor.io/google_containers/kube-controller-manager:v1.11.7
docker tag mirrorgooglecontainers/kube-apiserver:v1.11.7 myharbor.io/google_containers/kube-apiserver:v1.11.7
docker tag mirrorgooglecontainers/kube-scheduler:v1.11.7 myharbor.io/google_containers/kube-scheduler:v1.11.7
docker tag mirrorgooglecontainers/kube-proxy:v1.11.7 myharbor.io/google_containers/kube-proxy:v1.11.7
# PUSH
docker push myharbor.io/google_containers/kube-controller-manager:v1.11.7
docker push myharbor.io/google_containers/kube-apiserver:v1.11.7
docker push myharbor.io/google_containers/kube-scheduler:v1.11.7
docker push myharbor.io/google_containers/kube-proxy:v1.11.7
四、准备升级配置文件: kubeadm.yaml
kubeadm.yaml
文件内容如下:
apiVersion: kubeadm.k8s.io/v1alpha2
kind: MasterConfiguration
api:
advertiseAddress: 0.0.0.0
kubernetesVersion: v1.11.7
imageRepository: myharbor.io/google_containers
networking:
podSubnet: 10.244.0.0/16
nodeRegistration:
criSocket: /var/run/containerd/containerd.sock
kubeProxy:
conf