Files
sealos/test/old/testUpgrade.md
T
cuisongliu 905ceada4d add infra module (#754)
* hotfix(master): add infra module
2021-12-19 18:38:03 +08:00

137 KiB

upgrade cmd test record

设计理念: 一键升级, 用户无需在意细节。

sealos upgrade --version v1.19.2 --pkg-url kube1.19.2.tar.gz

声明

环境如下:所有主机都是单网卡 192.168.160.1 为网卡路由

主机名称 网卡(ens33) 磁盘 内存 CPU OS-IMAGE KERNEL-VERSION
dev-k8s-master 192.168.160.243 60G 4G 4核 CentOS Linux 8 (Core) 4.4.228-2.el7.elrepo.x86_64
dev-k8s-node 192.168.160.244 20G 4G 4核 CentOS Linux 7 (Core) 4.4.228-2.el7.elrepo.x86_64
centos8-k8s 192.168.160.245 20G 4G 4核 CentOS Linux 7 (Core) 4.18.0-147.el8.x86_64

test case one

目前版本是v1.19.2 ,需要升级只 v1.19.1. sealos 拒绝升级

upgrade logs Output
[root@dev-k8s-master ~]# ./sealos upgrade  --pkg-url kube1.19.1.tar.gz --version v1.19.1 
upgrade cmd will upgrade your kubernetes cluster immediately 
Are you sure you want to proceed with the upgrade?  (y/n)?y
15:06:18 [EROR] [upgrade.go:36] kubernetes new version is lower/equal than current version: New version: v1.19.1, current version: v1.19.2


[root@dev-k8s-master ~]# ./sealos upgrade  --pkg-url kube1.17.12.tar.gz --version v1.17.12  -f
15:08:09 [EROR] [upgrade.go:36] kubernetes new version is lower/equal than current version: New version: v1.17.12, current version: v1.19.2

test case 2

两个master。目前版本是v1.19.1 ,需要升级至 v1.19.2. sealos 可以升级

upgrade logs Output
sealos upgrade  --pkg-url kube1.19.2.tar.gz --version v1.19.2 -f 
16:09:14 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] hostname
16:09:14 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: dev-k8s-master

16:09:14 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] hostname
16:09:14 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: dev-k8s-node

16:09:18 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] mkdir -p /root || true
16:09:18 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] mkdir -p /root || true
16:09:18 [DEBG] [download.go:29] [192.168.160.244:22]please wait for mkDstDir
16:09:18 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] ls -l /root/kube1.19.1.tar.gz 2>/dev/null |wc -l
16:09:18 [DEBG] [download.go:29] [192.168.160.243:22]please wait for mkDstDir
16:09:18 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] ls -l /root/kube1.19.1.tar.gz 2>/dev/null |wc -l
16:09:19 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: 1

16:09:19 [WARN] [download.go:35] [192.168.160.243:22]SendPackage: file is exist
16:09:19 [DEBG] [download.go:44] [192.168.160.243:22]please wait for after hook
16:09:19 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] cd /root && rm -rf kube && tar zxvf kube1.19.2.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
16:09:19 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: 1

16:09:19 [WARN] [download.go:35] [192.168.160.244:22]SendPackage: file is exist
16:09:19 [DEBG] [download.go:44] [192.168.160.244:22]please wait for after hook
16:09:19 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] cd /root && rm -rf kube && tar zxvf kube1.19.2.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
16:09:20 [INFO] [ssh.go:50] [192.168.160.243:22] kube/
16:09:20 [INFO] [ssh.go:50] [192.168.160.244:22] kube/
16:09:20 [INFO] [ssh.go:50] [192.168.160.244:22] kube/shell/init.sh
16:09:20 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubectl
16:09:21 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubectl
16:09:21 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/crictl
16:09:21 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/crictl
16:09:21 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/conntrack
16:09:21 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubeadm
16:09:21 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/conntrack
16:09:21 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubeadm
16:09:21 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubelet-pre-start.sh
16:09:21 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/kubeadm.yaml
16:09:21 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/10-kubeadm.conf
16:09:21 [INFO] [ssh.go:50] [192.168.160.243:22] kube/docker/
16:09:21 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubelet-pre-start.sh
16:09:21 [INFO] [ssh.go:50] [192.168.160.244:22] kube/conf/
16:09:21 [INFO] [ssh.go:50] [192.168.160.244:22] kube/conf/kubeadm.yaml
16:09:22 [INFO] [ssh.go:50] [192.168.160.243:22] kube/docker/README.md
16:09:23 [INFO] [ssh.go:50] [192.168.160.244:22] kube/docker/README.md
16:10:12 [INFO] [ssh.go:50] [192.168.160.244:22] kube/images/README.md
16:10:13 [INFO] [ssh.go:50] [192.168.160.243:22] kube/images/README.md
16:11:59 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: fanux/lvscare:latest
16:12:00 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/cni:v3.8.2
16:12:00 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/kube-controllers:v3.8.2
16:12:00 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-proxy:v1.19.2
16:12:00 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.19.2
16:12:00 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-scheduler:v1.19.2
16:12:00 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
16:12:00 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-controller-manager:v1.19.2
16:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: fanux/lvscare:latest
16:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/node:v3.8.2
16:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/cni:v3.8.2
16:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/kube-controllers:v3.8.2
16:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-proxy:v1.19.2
16:12:22 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.19.2
16:12:22 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-scheduler:v1.19.2
16:12:22 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
16:12:22 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-controller-manager:v1.19.2
16:12:22 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/etcd:3.4.13-0
16:12:22 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/coredns:1.7.0
16:12:23 [ALRT] [upgrade.go:63] UpgradeMaster0
16:12:23 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-master --ignore-daemonsets
16:12:25 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-master cordoned
16:12:25 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-dm9lz, kube-system/kube-proxy-cdx9h
16:12:25 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/calico-kube-controllers-69b47f4dfb-s8cf9
16:12:25 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-f9fd979d6-vqvfs
16:12:40 [INFO] [ssh.go:50] [192.168.160.243:22] pod/calico-kube-controllers-69b47f4dfb-s8cf9 evicted
16:12:40 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-f9fd979d6-zf467 evicted
16:12:40 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-f9fd979d6-vqvfs evicted
16:12:40 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade apply --certificate-renewal=false  -y v1.19.2
16:12:40 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/config] Making sure the configuration is correct:
16:12:42 [INFO] [ssh.go:50] [192.168.160.243:22] [preflight] Running pre-flight checks.
16:12:42 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Running cluster health checks
16:12:44 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/version] You have chosen to change the cluster version to "v1.19.2"
16:12:44 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/versions] Cluster version: v1.19.1
16:12:44 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Pulling images required for setting up a Kubernetes cluster
16:12:44 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/apply] Upgrading your Static Pod-hosted control plane to version "v1.19.2"...
16:12:44 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: b46d6d0fa865381c739f2c1d14a6533f
16:12:44 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 077d332768503c847e8c912c0ff336e7
16:12:44 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: e83c2631205a9e5701a40d9c258c4fef
16:12:44 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Upgrading to TLS for etcd
16:12:44 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Non fatal issue encountered during upgrade: the desired etcd version "3.4.13-0" is not newer than the currently installed "3.4.13-0". Skipping etcd upgrade
16:12:45 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
16:12:45 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-apiserver.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-09-23-16-12-44/kube-apiserver.yaml"
16:12:45 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: b46d6d0fa865381c739f2c1d14a6533f
16:12:50 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: be2b5dd8cf6062dcc303a08b9312bfed
16:12:50 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 2 Pods for label selector component=kube-apiserver
16:12:51 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-apiserver" upgraded successfully!
16:12:51 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 077d332768503c847e8c912c0ff336e7
16:12:51 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 6005bde0e8c95f871f5807a90ef5f58e
16:12:51 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 2 Pods for label selector component=kube-controller-manager
16:12:54 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-controller-manager" upgraded successfully!
16:12:54 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: e83c2631205a9e5701a40d9c258c4fef
16:12:54 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 66c8b1a26f5e481c00ac90b9b45e1116
16:12:54 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 2 Pods for label selector component=kube-scheduler
16:12:56 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-scheduler" upgraded successfully!
16:12:56 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet] Creating a ConfigMap "kubelet-config-1.19" in namespace kube-system with the configuration for the kubelets in the cluster
16:12:56 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
16:12:57 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes
16:12:57 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
16:12:57 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
16:12:57 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
16:12:59 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: CoreDNS
16:13:00 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: kube-proxy
16:13:00 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] systemctl daemon-reload && systemctl restart kubelet
16:13:04 [ALRT] [upgrade.go:90] fourth to uncordon node, 10 seconds to wait for ready
16:13:14 [ALRT] [upgrade.go:95] fifth to judge nodes is ready
16:13:14 [ALRT] [upgrade.go:151] UpgradeOtherMasters
16:13:14 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-node --ignore-daemonsets
16:13:14 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-node cordoned
16:13:14 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-hf5z2, kube-system/kube-proxy-md8nz
16:13:14 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-f9fd979d6-qgsxk
16:13:14 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/calico-kube-controllers-69b47f4dfb-pv6k2
16:13:21 [INFO] [ssh.go:50] [192.168.160.243:22] pod/calico-kube-controllers-69b47f4dfb-pv6k2 evicted
16:13:22 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-f9fd979d6-qgsxk evicted
16:13:22 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-f9fd979d6-rnmmf evicted
16:13:22 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade node --certificate-renewal=false 
16:13:23 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] systemctl daemon-reload && systemctl restart kubelet
16:13:31 [ALRT] [upgrade.go:182] fourth to uncordon node, 10 seconds to wait for ready
16:13:41 [ALRT] [upgrade.go:187] fifth to judge nodes is ready

test case 3

一主一从。 目前集群是v1.19.1 升级至 v1.19.2.

upgrade logs Output
$ kubectl get nodes 
NAME             STATUS   ROLES    AGE    VERSION
dev-k8s-master   Ready    master   114s   v1.19.1
dev-k8s-node     Ready    <none>   81s    v1.19.1
$ kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-69b47f4dfb-x7j6h   1/1     Running   0          102s
kube-system   calico-node-2w4jc                          1/1     Running   0          91s
kube-system   calico-node-vxjps                          1/1     Running   0          102s
kube-system   coredns-f9fd979d6-j86cz                    1/1     Running   0          102s
kube-system   coredns-f9fd979d6-t28hv                    1/1     Running   0          102s
kube-system   etcd-dev-k8s-master                        1/1     Running   0          114s
kube-system   kube-apiserver-dev-k8s-master              1/1     Running   0          114s
kube-system   kube-controller-manager-dev-k8s-master     1/1     Running   0          114s
kube-system   kube-proxy-2cpr9                           1/1     Running   0          91s
kube-system   kube-proxy-nj55s                           1/1     Running   0          102s
kube-system   kube-scheduler-dev-k8s-master              1/1     Running   0          114s
kube-system   kube-sealyun-lvscare-dev-k8s-node          1/1     Running   0          89s


$ sealos upgrade  --pkg-url kube1.19.2.tar.gz --version v1.19.2 -f  
17:02:27 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] hostname
17:02:27 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: dev-k8s-master

17:02:27 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] hostname
17:02:27 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: dev-k8s-node

17:02:33 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] mkdir -p /root || true
17:02:33 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] mkdir -p /root || true
17:02:33 [DEBG] [download.go:29] [192.168.160.244:22]please wait for mkDstDir
17:02:33 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] ls -l /root/kube1.19.1.tar.gz 2>/dev/null |wc -l
17:02:33 [DEBG] [download.go:29] [192.168.160.243:22]please wait for mkDstDir
17:02:33 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] ls -l /root/kube1.19.1.tar.gz 2>/dev/null |wc -l
17:02:33 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: 1

17:02:33 [WARN] [download.go:35] [192.168.160.243:22]SendPackage: file is exist
17:02:33 [DEBG] [download.go:44] [192.168.160.243:22]please wait for after hook
17:02:33 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] cd /root && rm -rf kube && tar zxvf kube1.19.2.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
17:02:35 [INFO] [ssh.go:50] [192.168.160.243:22] kube/
17:02:35 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: 1

17:02:35 [WARN] [download.go:35] [192.168.160.244:22]SendPackage: file is exist
17:02:35 [DEBG] [download.go:44] [192.168.160.244:22]please wait for after hook
17:02:35 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] cd /root && rm -rf kube && tar zxvf kube1.19.2.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
17:02:35 [INFO] [ssh.go:50] [192.168.160.244:22] kube/
17:02:36 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubectl
17:02:37 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/crictl
17:02:38 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/conntrack
17:02:38 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubeadm
17:02:39 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubectl
17:02:39 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubelet-pre-start.sh
17:02:40 [INFO] [ssh.go:50] [192.168.160.243:22] kube/docker/README.md
17:02:41 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/crictl
17:02:41 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/conntrack
17:02:41 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubeadm
17:02:41 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubelet-pre-start.sh
17:02:44 [INFO] [ssh.go:50] [192.168.160.244:22] kube/docker/README.md
17:03:28 [INFO] [ssh.go:50] [192.168.160.243:22] kube/images/README.md
17:03:44 [INFO] [ssh.go:50] [192.168.160.244:22] kube/images/README.md
17:05:30 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: fanux/lvscare:latest
17:05:30 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/node:v3.8.2
17:05:30 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/cni:v3.8.2
17:05:30 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/kube-controllers:v3.8.2
17:05:30 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-proxy:v1.19.2
17:05:30 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.19.2
17:05:30 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/etcd:3.4.13-0
17:05:30 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/coredns:1.7.0
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: fanux/lvscare:latest
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/pause:3.2
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/node:v3.8.2
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/cni:v3.8.2
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/kube-controllers:v3.8.2
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-proxy:v1.19.2
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.19.2
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-scheduler:v1.19.2
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-controller-manager:v1.19.2
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/etcd:3.4.13-0
17:05:43 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/coredns:1.7.0
17:05:47 [ALRT] [upgrade.go:63] UpgradeMaster0
17:05:47 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-master --ignore-daemonsets
17:05:50 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-master cordoned
17:05:50 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-vxjps, kube-system/kube-proxy-nj55s
17:05:50 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/calico-kube-controllers-69b47f4dfb-x7j6h
17:05:50 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-f9fd979d6-t28hv
17:06:05 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-f9fd979d6-j86cz evicted
17:06:05 [INFO] [ssh.go:50] [192.168.160.243:22] pod/calico-kube-controllers-69b47f4dfb-x7j6h evicted
17:06:05 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade apply --certificate-renewal=false  -y v1.19.2
17:06:06 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/config] Making sure the configuration is correct:
17:06:07 [INFO] [ssh.go:50] [192.168.160.243:22] [preflight] Running pre-flight checks.
17:06:07 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Running cluster health checks
17:06:10 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/version] You have chosen to change the cluster version to "v1.19.2"
17:06:10 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/versions] Cluster version: v1.19.1
17:06:10 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Pulling images required for setting up a Kubernetes cluster
17:06:10 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/apply] Upgrading your Static Pod-hosted control plane to version "v1.19.2"...
17:06:10 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: b46d6d0fa865381c739f2c1d14a6533f
17:06:10 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 077d332768503c847e8c912c0ff336e7
17:06:10 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: e83c2631205a9e5701a40d9c258c4fef
17:06:10 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Upgrading to TLS for etcd
17:06:11 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Non fatal issue encountered during upgrade: the desired etcd version "3.4.13-0" is not newer than the currently installed "3.4.13-0". Skipping etcd upgrade
17:06:11 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
17:06:11 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-apiserver.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-09-23-17-06-10/kube-apiserver.yaml"
17:06:11 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: b46d6d0fa865381c739f2c1d14a6533f
17:07:30 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-apiserver
17:07:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-apiserver" upgraded successfully!
17:07:35 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 077d332768503c847e8c912c0ff336e7
17:07:36 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 6005bde0e8c95f871f5807a90ef5f58e
17:07:36 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-controller-manager
17:07:37 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-controller-manager" upgraded successfully!
17:07:37 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-scheduler.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-09-23-17-06-10/kube-scheduler.yaml"
17:07:37 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: e83c2631205a9e5701a40d9c258c4fef
17:07:37 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 66c8b1a26f5e481c00ac90b9b45e1116
17:07:37 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-scheduler
17:07:39 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-scheduler" upgraded successfully!
17:07:39 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet] Creating a ConfigMap "kubelet-config-1.19" in namespace kube-system with the configuration for the kubelets in the cluster
17:07:39 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
17:07:39 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes
17:07:39 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
17:07:39 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
17:07:40 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
17:07:42 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: CoreDNS
17:07:43 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: kube-proxy
17:07:43 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] systemctl daemon-reload && systemctl restart kubelet
17:07:45 [ALRT] [upgrade.go:90] fourth to uncordon node, 10 seconds to wait for ready
17:07:55 [ALRT] [upgrade.go:95] fifth to judge nodes is ready
17:07:55 [ALRT] [upgrade.go:101] UpgradeNodes
17:07:55 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-node --ignore-daemonsets
17:07:55 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-node cordoned
17:07:55 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-2w4jc, kube-system/kube-proxy-2cpr9
17:07:55 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/calico-kube-controllers-69b47f4dfb-chqgt
17:07:59 [INFO] [ssh.go:50] [192.168.160.243:22] pod/calico-kube-controllers-69b47f4dfb-chqgt evicted
17:08:09 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-f9fd979d6-x9q5p evicted
17:08:09 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] 
17:08:09 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] systemctl daemon-reload && systemctl restart kubelet
17:08:12 [ALRT] [upgrade.go:135] fourth to uncordon node
17:08:22 [ALRT] [upgrade.go:141] fifth to judge nodes is ready

$ kubectl get nodes 
[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS   ROLES    AGE     VERSION
dev-k8s-master   Ready    master   8m42s   v1.19.2
dev-k8s-node     Ready    <none>   8m9s    v1.19.2

test case 4

1主1从, 1.18.0 -> 1.18.3

upgrade logs Output
[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS                     ROLES    AGE     VERSION
dev-k8s-master   Ready,SchedulingDisabled   master   10m     v1.18.0
dev-k8s-node     Ready                      <none>   8m31s   v1.18.0

$ sealos  upgrade  --pkg-url /root/kube1.18.3.tar.gz  --version v1.18.3 -f | tee -a upgrade.1180-1183.log 
19:49:44 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] hostname
19:49:44 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: dev-k8s-master

19:49:44 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] hostname
19:49:44 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: dev-k8s-node

19:49:48 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] mkdir -p /root || true
19:49:48 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] mkdir -p /root || true
19:49:48 [DEBG] [download.go:29] [192.168.160.244:22]please wait for mkDstDir
19:49:48 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] ls -l /root/kube1.18.3.tar.gz 2>/dev/null |wc -l
19:49:48 [DEBG] [download.go:29] [192.168.160.243:22]please wait for mkDstDir
19:49:48 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] ls -l /root/kube1.18.3.tar.gz 2>/dev/null |wc -l
19:49:48 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: 1

19:49:48 [WARN] [download.go:35] [192.168.160.244:22]SendPackage: file is exist
19:49:48 [DEBG] [download.go:44] [192.168.160.244:22]please wait for after hook
19:49:48 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] cd /root && rm -rf kube && tar zxvf kube1.18.3.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
19:49:49 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: 1

19:49:49 [WARN] [download.go:35] [192.168.160.243:22]SendPackage: file is exist
19:49:49 [DEBG] [download.go:44] [192.168.160.243:22]please wait for after hook
19:49:49 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] cd /root && rm -rf kube && tar zxvf kube1.18.3.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
19:49:49 [INFO] [ssh.go:50] [192.168.160.244:22] kube/
19:49:49 [INFO] [ssh.go:50] [192.168.160.243:22] kube/
19:49:50 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/sealos
19:49:50 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/sealos
19:49:50 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubectl
19:49:50 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubectl
19:49:50 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/crictl
19:49:50 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/conntrack
19:49:50 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/crictl
19:49:50 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/conntrack
19:49:50 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubeadm
19:49:51 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubelet-pre-start.sh
19:49:51 [INFO] [ssh.go:50] [192.168.160.244:22] kube/conf/
19:49:51 [INFO] [ssh.go:50] [192.168.160.244:22] kube/conf/kubelet.service
19:49:51 [INFO] [ssh.go:50] [192.168.160.244:22] kube/conf/10-kubeadm.conf
19:49:51 [INFO] [ssh.go:50] [192.168.160.244:22] kube/conf/net/calico.yaml
19:49:51 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubelet-pre-start.sh
19:49:51 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/10-kubeadm.conf
19:49:51 [INFO] [ssh.go:50] [192.168.160.243:22] kube/docker/README.md
19:49:51 [INFO] [ssh.go:50] [192.168.160.244:22] kube/docker/README.md
19:50:16 [INFO] [ssh.go:50] [192.168.160.243:22] kube/images/README.md
19:50:33 [INFO] [ssh.go:50] [192.168.160.244:22] kube/images/README.md
19:51:47 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-controller-manager:v1.18.3
19:51:47 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/kube-controllers:v3.8.2
19:51:48 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-proxy:v1.18.3
19:51:48 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.18.3
19:51:48 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-scheduler:v1.18.3
19:51:48 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: fanux/lvscare:latest
19:51:48 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-controller-manager:v1.18.3
19:51:48 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/pause:3.2
19:51:48 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/etcd:3.4.3-0
19:51:48 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/node:v3.8.2
19:51:48 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/cni:v3.8.2
19:51:48 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
19:51:48 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/kube-controllers:v3.8.2
19:51:48 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-proxy:v1.18.3
19:51:48 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.18.3
19:51:48 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-scheduler:v1.18.3
19:51:48 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: fanux/lvscare:latest
19:51:48 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/pause:3.2
19:51:48 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/etcd:3.4.3-0
19:51:49 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/node:v3.8.2
19:52:03 [ALRT] [upgrade.go:67] UpgradeMaster0
19:52:03 [ALRT] [upgrade.go:70] fist to drain node dev-k8s-master
19:52:03 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-master --ignore-daemonsets
19:52:08 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-master cordoned
19:52:08 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-8wz86, kube-system/kube-proxy-9gh7c
19:52:08 [ALRT] [upgrade.go:78] second to exec kubeadm upgrade apply
19:52:08 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade apply --certificate-renewal=false  --yes v1.18.3
19:52:09 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/config] Making sure the configuration is correct:
19:52:09 [INFO] [ssh.go:50] [192.168.160.243:22] [preflight] Running pre-flight checks.
19:52:09 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Running cluster health checks
19:52:24 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/version] You have chosen to change the cluster version to "v1.18.3"
19:52:24 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/versions] Cluster version: v1.18.3
19:52:24 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Will prepull images for components [kube-apiserver kube-controller-manager kube-scheduler etcd]
19:52:24 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulling image for component etcd.
19:52:24 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-kube-scheduler
19:52:24 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-etcd
19:52:31 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-scheduler
19:52:31 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-etcd
19:52:32 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-controller-manager
19:52:32 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-apiserver
19:52:34 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component etcd.
19:52:34 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-scheduler.
19:52:34 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-controller-manager.
19:52:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-apiserver.
19:52:35 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 24a39fba2c7e2f71b2a1a965e28e43f7
19:52:35 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: a275fe1cd259aa3018f3f1d7c0e7a636
19:52:35 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 695b0d5342155481b9239a61ff533e4d
19:52:36 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Upgrading to TLS for etcd
19:52:36 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Non fatal issue encountered during upgrade: the desired etcd version for this Kubernetes version "v1.18.3" is "3.4.3-0", but the current etcd version is "3.4.3". Won't downgrade etcd, instead just continue
19:52:36 [INFO] [ssh.go:50] [192.168.160.243:22] W0923 19:52:36.167110   78651 manifests.go:225] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
19:52:36 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
19:52:36 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Current and new manifests of kube-apiserver are equal, skipping upgrade
19:52:36 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Current and new manifests of kube-controller-manager are equal, skipping upgrade
19:52:36 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Current and new manifests of kube-scheduler are equal, skipping upgrade
19:52:36 [INFO] [ssh.go:50] [192.168.160.243:22] [upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
19:52:36 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet] Creating a ConfigMap "kubelet-config-1.18" in namespace kube-system with the configuration for the kubelets in the cluster
19:52:37 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.18" ConfigMap in the kube-system namespace
19:52:37 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
19:52:37 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes
19:52:37 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
19:52:37 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
19:52:37 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
19:52:39 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: CoreDNS
19:52:40 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: kube-proxy
19:52:40 [ALRT] [upgrade.go:86] third to restart dev-k8s-master kubelet
19:52:40 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] systemctl daemon-reload && systemctl restart kubelet
19:52:42 [ALRT] [upgrade.go:97] fourth to uncordon node, 10 seconds to wait for dev-k8s-master ready
19:52:52 [ALRT] [upgrade.go:103] fifth to judge dev-k8s-master nodes is ready
19:52:52 [ALRT] [upgrade.go:109] UpgradeNodes
19:52:52 [ALRT] [upgrade.go:129] fist to drain node dev-k8s-node
19:52:52 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-node --ignore-daemonsets
19:52:53 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-node cordoned
19:52:53 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-sqkc2, kube-system/kube-proxy-p8v8x
19:52:53 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/calico-kube-controllers-84445dd79f-zdh6n
19:52:53 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-66bff467f8-tbvt8
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-66bff467f8-pvvvp evicted
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] pod/calico-kube-controllers-84445dd79f-zdh6n evicted
19:53:07 [ALRT] [upgrade.go:137] second to exec kubeadm upgrade node on dev-k8s-node
19:53:07 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade node --certificate-renewal=false
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Reading configuration from the cluster...
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Upgrading your Static Pod-hosted control plane instance to version "v1.18.3"...
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 24a39fba2c7e2f71b2a1a965e28e43f7
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: a275fe1cd259aa3018f3f1d7c0e7a636
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 695b0d5342155481b9239a61ff533e4d
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Upgrading to TLS for etcd
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Non fatal issue encountered during upgrade: the desired etcd version for this Kubernetes version "v1.18.3" is "3.4.3-0", but the current etcd version is "3.4.3". Won't downgrade etcd, instead just continue
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Current and new manifests of kube-apiserver are equal, skipping upgrade
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
19:53:07 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] The configuration for this node was successfully updated!
19:53:07 [ALRT] [upgrade.go:145] third to restart kubelet on dev-k8s-node
19:53:07 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] systemctl daemon-reload && systemctl restart kubelet
19:53:14 [ALRT] [upgrade.go:157] fourth to uncordon node, 10 seconds to wait for dev-k8s-node ready
19:53:24 [ALRT] [upgrade.go:162] fifth to judge dev-k8s-node nodes is ready
[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS   ROLES    AGE   VERSION
dev-k8s-master   Ready    master   19m   v1.18.3
dev-k8s-node     Ready    <none>   18m   v1.18.3

test case 5

1主1从 1.16.10 -> 1.19.2.

升级之后报错, 节点处于not ready状态。 CSIDriver not found.
所以跨两个版本以上 ,这边禁止了。 只允许跨1个大版本升级。 如 1.17.12 -> 1.18.8

test case 6

1主1从, 目前版本是v1.16.10 ,需要升级至1.17.12. 升级成功。

upgrade logs Output
$ sealos upgrade --version v1.17.12 --pkg-url /root/kube1.17.12.tar.gz -f | tee -a upgrade.11610-11712.log
20:10:01 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] hostname
20:10:02 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: dev-k8s-master

20:10:02 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] hostname
20:10:02 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: dev-k8s-node

20:10:06 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] mkdir -p /root || true
20:10:06 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] mkdir -p /root || true
20:10:06 [DEBG] [download.go:29] [192.168.160.243:22]please wait for mkDstDir
20:10:06 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] ls -l /root/kube1.17.12.tar.gz 2>/dev/null |wc -l
20:10:06 [DEBG] [download.go:29] [192.168.160.244:22]please wait for mkDstDir
20:10:06 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] ls -l /root/kube1.17.12.tar.gz 2>/dev/null |wc -l
20:10:06 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: 1

20:10:06 [WARN] [download.go:35] [192.168.160.243:22]SendPackage: file is exist
20:10:06 [DEBG] [download.go:44] [192.168.160.243:22]please wait for after hook
20:10:06 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] cd /root && rm -rf kube && tar zxvf kube1.17.12.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
20:10:06 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: 0

20:10:06 [DEBG] [scp.go:26] [ssh]source file md5 value is a4f6fa2b1721bc2bf6fe3172b72497f2
20:10:07 [INFO] [ssh.go:50] [192.168.160.243:22] kube/
20:10:07 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubectl
20:10:08 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/crictl
20:10:08 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/conntrack
20:10:08 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubeadm
20:10:08 [ALRT] [scp.go:100] [ssh][192.168.160.244:22]transfer total size is: 100.00MB ;speed is 100MB
20:10:08 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubelet-pre-start.sh
20:10:08 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/
20:10:08 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/10-kubeadm.conf
20:10:08 [INFO] [ssh.go:50] [192.168.160.243:22] kube/docker/README.md
20:10:09 [ALRT] [scp.go:100] [ssh][192.168.160.244:22]transfer total size is: 200.00MB ;speed is 100MB
20:10:10 [ALRT] [scp.go:100] [ssh][192.168.160.244:22]transfer total size is: 300.00MB ;speed is 100MB
20:10:11 [ALRT] [scp.go:100] [ssh][192.168.160.244:22]transfer total size is: 400.00MB ;speed is 100MB
20:10:12 [ALRT] [scp.go:100] [ssh][192.168.160.244:22]transfer total size is: 500.00MB ;speed is 100MB
20:10:13 [ALRT] [scp.go:100] [ssh][192.168.160.244:22]transfer total size is: 588.50MB ;speed is 88MB
20:10:13 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] md5sum /root/kube1.17.12.tar.gz | cut -d" " -f1
20:10:23 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: a4f6fa2b1721bc2bf6fe3172b72497f2

20:10:23 [DEBG] [scp.go:29] [ssh]host: 192.168.160.244:22 , remote md5: a4f6fa2b1721bc2bf6fe3172b72497f2
20:10:23 [INFO] [scp.go:33] [ssh]md5 validate true
20:10:23 [INFO] [download.go:38] [192.168.160.244:22]copy file md5 validate success
20:10:23 [DEBG] [download.go:44] [192.168.160.244:22]please wait for after hook
20:10:23 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] cd /root && rm -rf kube && tar zxvf kube1.17.12.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
20:10:23 [INFO] [ssh.go:50] [192.168.160.244:22] kube/
20:10:24 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubectl
20:10:25 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/conntrack
20:10:25 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubelet-pre-start.sh
20:10:25 [INFO] [ssh.go:50] [192.168.160.244:22] kube/docker/README.md
20:10:26 [INFO] [ssh.go:50] [192.168.160.243:22] kube/images/README.md
20:10:55 [INFO] [ssh.go:50] [192.168.160.244:22] kube/images/README.md
08d7743c183a: Loading layer  108.7MB/108.7MB
Loaded image: k8s.gcr.io/kube-controller-manager:v1.17.12
20:11:34 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: fanux/lvscare:latest
7c9b0f448297: Loading layer  41.37MB/41.37MB
Loaded image: k8s.gcr.io/coredns:1.6.560.243:22] 
20:11:34 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/etcd:3.4.3-0
20:11:34 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/kube-controllers:v3.8.2
20:11:35 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/pause:3.1
c126ac2cf4e6: Loading layer  37.82MB/37.82MB
Loaded image: k8s.gcr.io/kube-proxy:v1.17.12:22] 
46ac5add7672: Loading layer  118.8MB/118.8MB
Loaded image: k8s.gcr.io/kube-apiserver:v1.17.12 
6851b39bb59b: Loading layer  42.13MB/42.13MB
Loaded image: k8s.gcr.io/kube-scheduler:v1.17.12 
20:11:48 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/node:v3.8.2
20:11:48 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/cni:v3.8.2
20:11:48 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
91e3a07063b3: Loading layer  53.89MB/53.89MB
08d7743c183a: Loading layer  108.7MB/108.7MB
Loaded image: k8s.gcr.io/kube-controller-manager:v1.17.12
20:11:56 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: fanux/lvscare:latest
7c9b0f448297: Loading layer  41.37MB/41.37MB
Loaded image: k8s.gcr.io/coredns:1.6.560.244:22] 
20:11:57 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/etcd:3.4.3-0
20:11:57 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/kube-controllers:v3.8.2
20:11:57 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/pause:3.1
b4e54f331697: Loading layer  21.78MB/21.78MB
b9b82a97c787: Loading layer  5.168MB/5.168MB
1b55846906e8: Loading layer  4.608kB/4.608kB
061bfb5cb861: Loading layer  8.192kB/8.192kB
78dd6c0504a7: Loading layer  8.704kB/8.704kB
c126ac2cf4e6: Loading layer  37.82MB/37.82MB
Loaded image: k8s.gcr.io/kube-proxy:v1.17.12:22] 
46ac5add7672: Loading layer  118.8MB/118.8MB
Loaded image: k8s.gcr.io/kube-apiserver:v1.17.12 
6851b39bb59b: Loading layer  42.13MB/42.13MB
Loaded image: k8s.gcr.io/kube-scheduler:v1.17.12 
20:12:02 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/node:v3.8.2
20:12:02 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/cni:v3.8.2
20:12:02 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
20:12:03 [ALRT] [upgrade.go:67] UpgradeMaster0
20:12:03 [ALRT] [upgrade.go:70] fist to drain node dev-k8s-master
20:12:03 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-master --ignore-daemonsets
20:12:08 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-master cordoned
20:12:08 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod "calico-kube-controllers-688c5dc8c7-z587x"
20:12:08 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod "coredns-5644d7b6d9-jvc58"
20:12:08 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod "coredns-5644d7b6d9-rqp8j"
20:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-5644d7b6d9-jvc58 evicted
20:12:21 [ALRT] [upgrade.go:78] second to exec kubeadm upgrade apply
20:12:21 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade apply --certificate-renewal=false  --yes v1.17.12
20:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/config] Making sure the configuration is correct:
20:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] [preflight] Running pre-flight checks.
20:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Making sure the cluster is healthy:
20:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/version] You have chosen to change the cluster version to "v1.17.12"
20:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/versions] Cluster version: v1.16.10
20:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Will prepull images for components [kube-apiserver kube-controller-manager kube-scheduler etcd]
20:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulling image for component etcd.
20:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-apiserver
20:12:21 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-etcd
20:12:22 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-controller-manager
20:12:22 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-scheduler
20:12:22 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-etcd
20:12:24 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-controller-manager.
20:12:24 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-apiserver.
20:12:25 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component etcd.
20:12:25 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-scheduler.
20:12:25 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 34f32c80333b80e995c0070dfc16cf72
20:12:25 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 63c28a9fde96b2b251ca4690624529ae
20:12:25 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 3fc3850b80e1466c4cabdda8f12faa50
20:12:26 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Upgrading to TLS for etcd
20:12:26 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: etcd-dev-k8s-master hash: 77f5f12e81c13342e0e94eec9d973abe
20:12:26 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "etcd" upgrade
20:12:26 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/etcd.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-09-23-20-12-25/etcd.yaml"
20:12:29 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: etcd-dev-k8s-master hash: 77f5f12e81c13342e0e94eec9d973abe
20:12:29 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: etcd-dev-k8s-master hash: 42bd8cc23ee76f01fe086af38efc9f69
20:12:29 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=etcd
20:12:30 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "etcd" upgraded successfully!
20:12:30 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Waiting for etcd to become available
20:12:30 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Writing new Static Pod manifests to "/etc/kubernetes/tmp/kubeadm-upgraded-manifests473825893"
20:12:30 [INFO] [ssh.go:50] [192.168.160.243:22] [controlplane] Adding extra host path mount "localtime" to "kube-apiserver"
20:12:30 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
20:12:30 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-apiserver.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-09-23-20-12-25/kube-apiserver.yaml"
20:12:30 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 34f32c80333b80e995c0070dfc16cf72
20:12:33 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 34f32c80333b80e995c0070dfc16cf72
20:12:34 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: fcbbb5a07dda4ac18c1c409dd8c21c70
20:12:34 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-apiserver
20:12:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-apiserver" upgraded successfully!
20:12:35 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 63c28a9fde96b2b251ca4690624529ae
20:12:36 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 79561830e5eb0398f029dacf3fe02884
20:12:36 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-controller-manager
20:12:36 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-controller-manager" upgraded successfully!
20:12:36 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 3fc3850b80e1466c4cabdda8f12faa50
20:12:37 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 5a63e5b879c453505335c9d4920890cc
20:12:37 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-scheduler
20:12:38 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-scheduler" upgraded successfully!
20:12:38 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet] Creating a ConfigMap "kubelet-config-1.17" in namespace kube-system with the configuration for the kubelets in the cluster
20:12:38 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.17" ConfigMap in the kube-system namespace
20:12:38 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
20:12:38 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
20:12:38 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
20:12:38 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
20:12:39 [INFO] [ssh.go:50] [192.168.160.243:22] [addons]: Migrating CoreDNS Corefile
20:12:40 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: CoreDNS
20:12:41 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: kube-proxy
20:12:41 [ALRT] [upgrade.go:86] third to restart dev-k8s-master kubelet
20:12:41 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] systemctl daemon-reload && systemctl restart kubelet
20:12:42 [ALRT] [upgrade.go:97] fourth to uncordon node, 10 seconds to wait for dev-k8s-master ready
20:12:52 [ALRT] [upgrade.go:103] fifth to judge dev-k8s-master nodes is ready
20:12:52 [ALRT] [upgrade.go:109] UpgradeNodes
20:12:52 [ALRT] [upgrade.go:129] fist to drain node dev-k8s-node
20:12:52 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-node --ignore-daemonsets
20:12:53 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-node cordoned
20:12:53 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod "calico-kube-controllers-688c5dc8c7-fhbwn"
20:12:53 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod "coredns-5644d7b6d9-4bgl4"
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-5644d7b6d9-z8dh2 evicted
20:13:02 [ALRT] [upgrade.go:137] second to exec kubeadm upgrade node on dev-k8s-node
20:13:02 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade node --certificate-renewal=false
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Reading configuration from the cluster...
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Upgrading your Static Pod-hosted control plane instance to version "v1.17.12"...
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: fcbbb5a07dda4ac18c1c409dd8c21c70
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 79561830e5eb0398f029dacf3fe02884
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 5a63e5b879c453505335c9d4920890cc
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Upgrading to TLS for etcd
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Non fatal issue encountered during upgrade: the desired etcd version for this Kubernetes version "v1.17.12" is "3.4.3-0", but the current etcd version is "3.4.3". Won't downgrade etcd, instead just continue
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
20:13:02 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] The configuration for this node was successfully updated!
20:13:02 [ALRT] [upgrade.go:145] third to restart kubelet on dev-k8s-node
20:13:02 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] systemctl daemon-reload && systemctl restart kubelet
20:13:09 [ALRT] [upgrade.go:157] fourth to uncordon node, 10 seconds to wait for dev-k8s-node ready
20:13:19 [ALRT] [upgrade.go:162] fifth to judge dev-k8s-node nodes is ready

升级过程变化

[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS                     ROLES    AGE     VERSION
dev-k8s-master   Ready,SchedulingDisabled   master   6m      v1.16.10
dev-k8s-node     Ready                      <none>   5m17s   v1.16.10
[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS   ROLES    AGE     VERSION
dev-k8s-master   Ready    master   6m29s   v1.16.10
dev-k8s-node     Ready    <none>   5m46s   v1.16.10
[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS   ROLES    AGE     VERSION
dev-k8s-master   Ready    master   6m32s   v1.16.10
dev-k8s-node     Ready    <none>   5m49s   v1.16.10
[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS                     ROLES    AGE     VERSION
dev-k8s-master   Ready                      master   6m48s   v1.17.12
dev-k8s-node     Ready,SchedulingDisabled   <none>   6m5s    v1.16.10
[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS   ROLES    AGE     VERSION
dev-k8s-master   Ready    master   7m6s    v1.17.12
dev-k8s-node     Ready    <none>   6m23s   v1.16.10
[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS   ROLES    AGE     VERSION
dev-k8s-master   Ready    master   7m9s    v1.17.12
dev-k8s-node     Ready    <none>   6m26s   v1.17.12

$ kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-688c5dc8c7-xzrds   1/1     Running   0          4m4s
kube-system   calico-node-7vsvh                          1/1     Running   0          10m
kube-system   calico-node-q5x7v                          1/1     Running   0          10m
kube-system   coredns-6955765f44-fzxrs                   1/1     Running   0          4m4s
kube-system   coredns-6955765f44-qxk7g                   1/1     Running   0          4m4s
kube-system   etcd-dev-k8s-master                        1/1     Running   0          4m44s
kube-system   kube-apiserver-dev-k8s-master              1/1     Running   0          4m39s
kube-system   kube-controller-manager-dev-k8s-master     1/1     Running   0          4m37s
kube-system   kube-proxy-9fr7k                           1/1     Running   0          3m41s
kube-system   kube-proxy-v6s4g                           1/1     Running   0          4m2s
kube-system   kube-scheduler-dev-k8s-master              1/1     Running   0          4m36s
kube-system   kube-sealyun-lvscare-dev-k8s-node          1/1     Running   0          9m52s

test case 7

1主1从,目前版本是v1.17.12 ,需要升级至 v1.18.3. sealos 可以升级

upgrade logs Output
[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS   ROLES    AGE     VERSION
dev-k8s-master   Ready    master   3h44m   v1.17.12
dev-k8s-node     Ready    <none>   3h43m   v1.17.12
[root@dev-k8s-master ~]# sealos  upgrade --version v1.18.3 --pkg-url /root/kube1.18.3.tar.gz  -f |tee -a upgrade.11712-1183.log
23:51:52 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] hostname
23:51:53 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: dev-k8s-master

23:51:53 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] hostname
23:51:53 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: dev-k8s-node

23:51:57 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] mkdir -p /root || true
23:51:57 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] mkdir -p /root || true
23:51:57 [DEBG] [download.go:29] [192.168.160.244:22]please wait for mkDstDir
23:51:57 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] ls -l /root/kube1.18.3.tar.gz 2>/dev/null |wc -l
23:51:57 [DEBG] [download.go:29] [192.168.160.243:22]please wait for mkDstDir
23:51:57 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] ls -l /root/kube1.18.3.tar.gz 2>/dev/null |wc -l
23:51:57 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: 1

23:51:57 [WARN] [download.go:35] [192.168.160.244:22]SendPackage: file is exist
23:51:57 [DEBG] [download.go:44] [192.168.160.244:22]please wait for after hook
23:51:57 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] cd /root && rm -rf kube && tar zxvf kube1.18.3.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
23:51:57 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: 1

23:51:57 [WARN] [download.go:35] [192.168.160.243:22]SendPackage: file is exist
23:51:57 [DEBG] [download.go:44] [192.168.160.243:22]please wait for after hook
23:51:57 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] cd /root && rm -rf kube && tar zxvf kube1.18.3.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
23:51:58 [INFO] [ssh.go:50] [192.168.160.244:22] kube/
23:51:58 [INFO] [ssh.go:50] [192.168.160.243:22] kube/
23:51:58 [INFO] [ssh.go:50] [192.168.160.243:22] kube/shell/master.sh
23:51:58 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/sealos
23:51:58 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/sealos
23:51:59 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubectl
23:51:59 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubectl
23:51:59 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/crictl
23:51:59 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/crictl
23:51:59 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/conntrack
23:51:59 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubeadm
23:51:59 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/conntrack
23:51:59 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubelet-pre-start.sh
23:51:59 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/
23:51:59 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/10-kubeadm.conf
23:51:59 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/net/
23:51:59 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/net/calico.yaml
23:51:59 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubelet-pre-start.sh
23:51:59 [INFO] [ssh.go:50] [192.168.160.244:22] kube/conf/calico.yaml
23:51:59 [INFO] [ssh.go:50] [192.168.160.244:22] kube/conf/10-kubeadm.conf
23:52:00 [INFO] [ssh.go:50] [192.168.160.243:22] kube/docker/README.md
23:52:00 [INFO] [ssh.go:50] [192.168.160.244:22] kube/docker/README.md
23:52:35 [INFO] [ssh.go:50] [192.168.160.243:22] kube/images/README.md
23:52:55 [INFO] [ssh.go:50] [192.168.160.244:22] kube/images/README.md
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-controller-manager:v1.18.3
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/coredns:1.6.7
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/cni:v3.8.2
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/kube-controllers:v3.8.2
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-proxy:v1.18.3
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.18.3
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-scheduler:v1.18.3
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: fanux/lvscare:latest
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/pause:3.2
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/etcd:3.4.3-0
23:53:43 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/node:v3.8.2
23:53:54 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-controller-manager:v1.18.3
23:53:54 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/coredns:1.6.7
23:53:54 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/cni:v3.8.2
23:53:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
23:53:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/kube-controllers:v3.8.2
23:53:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-proxy:v1.18.3
23:53:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.18.3
23:53:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-scheduler:v1.18.3
23:53:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: fanux/lvscare:latest
23:53:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/pause:3.2
23:53:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/etcd:3.4.3-0
23:53:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/node:v3.8.2
23:53:58 [ALRT] [upgrade.go:67] UpgradeMaster0
23:53:58 [ALRT] [upgrade.go:94] fist to drain node dev-k8s-master
23:53:58 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-master --ignore-daemonsets
23:54:00 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-master cordoned
23:54:01 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-7vsvh, kube-system/kube-proxy-v6s4g
23:54:01 [ALRT] [upgrade.go:102] second to exec kubeadm upgrade node on dev-k8s-master
23:54:01 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade apply --certificate-renewal=false  --yes v1.18.3
23:54:01 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/config] Making sure the configuration is correct:
23:54:01 [INFO] [ssh.go:50] [192.168.160.243:22] [preflight] Running pre-flight checks.
23:54:01 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Running cluster health checks
23:54:06 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/version] You have chosen to change the cluster version to "v1.18.3"
23:54:06 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/versions] Cluster version: v1.17.12
23:54:06 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Will prepull images for components [kube-apiserver kube-controller-manager kube-scheduler etcd]
23:54:06 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulling image for component etcd.
23:54:06 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulling image for component kube-apiserver.
23:54:06 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-etcd
23:54:06 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-kube-scheduler
23:54:06 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-kube-controller-manager
23:54:06 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-kube-apiserver
23:54:07 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-apiserver
23:54:07 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-scheduler
23:54:07 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-etcd
23:54:10 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-scheduler.
23:54:10 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-apiserver.
23:54:11 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component etcd.
23:54:11 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-controller-manager.
23:54:11 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: fcbbb5a07dda4ac18c1c409dd8c21c70
23:54:11 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 79561830e5eb0398f029dacf3fe02884
23:54:11 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 5a63e5b879c453505335c9d4920890cc
23:54:12 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Upgrading to TLS for etcd
23:54:12 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Non fatal issue encountered during upgrade: the desired etcd version for this Kubernetes version "v1.18.3" is "3.4.3-0", but the current etcd version is "3.4.3". Won't downgrade etcd, instead just continue
23:54:12 [INFO] [ssh.go:50] [192.168.160.243:22] W0923 23:54:12.676153  123508 manifests.go:225] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
23:54:12 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
23:54:12 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-apiserver.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-09-23-23-54-11/kube-apiserver.yaml"
23:54:12 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: fcbbb5a07dda4ac18c1c409dd8c21c70
23:54:18 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 3ffb1b5cd637de6412fa95b11cae4700
23:54:18 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-apiserver
23:54:23 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-apiserver" upgraded successfully!
23:54:23 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 79561830e5eb0398f029dacf3fe02884
23:54:24 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 5774a402312acd98241d318951797558
23:54:24 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-controller-manager
23:54:25 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-controller-manager" upgraded successfully!
23:54:25 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 5a63e5b879c453505335c9d4920890cc
23:54:25 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 738192d31444bd5d1118c309bca86763
23:54:25 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-scheduler
23:54:27 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-scheduler" upgraded successfully!
23:54:27 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet] Creating a ConfigMap "kubelet-config-1.18" in namespace kube-system with the configuration for the kubelets in the cluster
23:54:27 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.18" ConfigMap in the kube-system namespace
23:54:27 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
23:54:27 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes
23:54:27 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
23:54:27 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
23:54:27 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
23:54:29 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: CoreDNS
23:54:30 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: kube-proxy
23:54:30 [ALRT] [upgrade.go:116] third to restart kubelet on dev-k8s-master
23:54:30 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] systemctl daemon-reload && systemctl restart kubelet
23:54:37 [ALRT] [upgrade.go:127] fourth to uncordon node, 10 seconds to wait for dev-k8s-master ready
23:54:57 [ALRT] [upgrade.go:74] UpgradeNodes
23:54:57 [ALRT] [upgrade.go:94] fist to drain node dev-k8s-node
23:54:57 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-node --ignore-daemonsets
23:55:00 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-node cordoned
23:55:00 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-q5x7v, kube-system/kube-proxy-9fr7k
23:55:00 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/calico-kube-controllers-688c5dc8c7-xzrds
23:55:00 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-6955765f44-fzxrs
23:55:00 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-6955765f44-qxk7g
23:55:03 [INFO] [ssh.go:50] [192.168.160.243:22] pod/calico-kube-controllers-688c5dc8c7-xzrds evicted
23:55:07 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-6955765f44-fzxrs evicted
23:55:07 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-6955765f44-qxk7g evicted
23:55:07 [ALRT] [upgrade.go:102] second to exec kubeadm upgrade node on dev-k8s-node
23:55:07 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] kubeadm upgrade node --certificate-renewal=false
23:55:08 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade] Reading configuration from the cluster...
23:55:08 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade] Skipping phase. Not a control plane node.
23:55:08 [INFO] [ssh.go:50] [192.168.160.244:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
23:55:08 [ALRT] [upgrade.go:116] third to restart kubelet on dev-k8s-node
23:55:08 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] systemctl daemon-reload && systemctl restart kubelet
23:55:14 [ALRT] [upgrade.go:127] fourth to uncordon node, 10 seconds to wait for dev-k8s-node ready
23:55:24 [ALRT] [upgrade.go:132] fifth to judge dev-k8s-node nodes is ready
[root@dev-k8s-master ~]# ls
1                calico.yaml       go1.15.2.linux-amd64.tar.gz     join.1.18.0.log        kubeadm-config.yaml  nfs                   speedtest.py
1.16.10.new.log  CHANGELOG.md      harbor.yaml                     kube                   kube-prometheus      nginx-1.18.0          temp
1.19.1.log       clean.log         hello-contour.yaml              kube1.16.10.tar.gz     kuboard.tar          oneMasterOneNode.log  Templates
1.19.1.new.log   config            helloworld.yaml                 kube1.17.12.tar.gz     kuboard.yaml         on.log                test
1.19.2.new.log   Desktop           httpbin.yaml                    kube1.18.0.tar.gz      LICENSE              Pictures              testsealos.sh
a.log            Documents         ingress                         kube1.18.3.tar.gz      LICENSE.md           Public                upgrade.11610-11712.log
anaconda-ks.cfg  doublemaster.log  install.log                     kube1.19.1.tar.gz      linux-amd64          README.md             upgrade.11712-1183.log
as.log           Downloads         istio-1.6.8                     kube1.19.1.tar.gz.bak  manifests            sealos                upgrade.11712-1192.log
a.txt            etcd-config.yaml  istio-1.6.8-linux-amd64.tar.gz  kube1.19.2.tar.gz      Music                sealos.bak            upgrade.1180-1183.log
azk8s.sh         go                istio.yaml                      kubeadm                new.yaml             sealos.latest         Videos
[root@dev-k8s-master ~]# kubectl get pods
No resources found in default namespace.
[root@dev-k8s-master ~]# kubectl get nodes
NAME             STATUS   ROLES    AGE     VERSION
dev-k8s-master   Ready    master   3h49m   v1.18.3
dev-k8s-node     Ready    <none>   3h48m   v1.18.3

test case 8

1主1从,目前版本是v1.18.3 ,需要升级至 v1.19.2. sealos 可以升级

upgrade logs Output

$  kubectl get nodes
NAME             STATUS   ROLES    AGE     VERSION
dev-k8s-master   Ready    master   3h49m   v1.18.3
dev-k8s-node     Ready    <none>   3h48m   v1.18.3
$ sealos upgrade --version v1.19.2 --pkg-url /root/kube1.19.2.tar.gz -f | tee -a upgrade.1183-1192.log 
09:45:06 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] hostname
09:45:17 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: dev-k8s-master

09:45:17 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] hostname
09:45:18 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: dev-k8s-node

09:45:48 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] mkdir -p /root || true
09:45:48 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] mkdir -p /root || true
09:45:48 [DEBG] [download.go:29] [192.168.160.244:22]please wait for mkDstDir
09:45:48 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] ls -l /root/kube1.19.2.tar.gz 2>/dev/null |wc -l
09:45:48 [DEBG] [download.go:29] [192.168.160.243:22]please wait for mkDstDir
09:45:48 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] ls -l /root/kube1.19.2.tar.gz 2>/dev/null |wc -l
09:45:49 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: 1

09:45:49 [WARN] [download.go:35] [192.168.160.244:22]SendPackage: file is exist
09:45:49 [DEBG] [download.go:44] [192.168.160.244:22]please wait for after hook
09:45:49 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] cd /root && rm -rf kube && tar zxvf kube1.19.2.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
09:45:49 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: 1

09:45:49 [WARN] [download.go:35] [192.168.160.243:22]SendPackage: file is exist
09:45:49 [DEBG] [download.go:44] [192.168.160.243:22]please wait for after hook
09:45:49 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] cd /root && rm -rf kube && tar zxvf kube1.19.2.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
09:45:49 [INFO] [ssh.go:50] [192.168.160.244:22] kube/
09:45:50 [INFO] [ssh.go:50] [192.168.160.243:22] kube/
09:45:50 [INFO] [ssh.go:50] [192.168.160.243:22] kube/shell/master.sh
09:45:50 [INFO] [ssh.go:50] [192.168.160.243:22] kube/shell/docker.sh
09:46:03 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubectl
09:46:08 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/crictl
09:46:12 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/conntrack
09:46:12 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubeadm
09:46:14 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubelet-pre-start.sh
09:46:14 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/kubeadm.yaml
09:46:14 [INFO] [ssh.go:50] [192.168.160.243:22] kube/docker/docker.tgz
09:46:18 [INFO] [ssh.go:50] [192.168.160.243:22] kube/docker/README.md
09:46:34 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubectl
09:46:35 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/crictl
09:46:40 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/conntrack
09:46:40 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubeadm
09:46:58 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubelet-pre-start.sh
09:46:58 [INFO] [ssh.go:50] [192.168.160.244:22] kube/conf/kubeadm.yaml
09:47:28 [INFO] [ssh.go:50] [192.168.160.244:22] kube/docker/README.md
09:48:19 [INFO] [ssh.go:50] [192.168.160.243:22] kube/images/README.md
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: fanux/lvscare:latest
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/node:v3.8.2
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/cni:v3.8.2
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/kube-controllers:v3.8.2
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-proxy:v1.19.2
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.19.2
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-scheduler:v1.19.2
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-controller-manager:v1.19.2
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/etcd:3.4.13-0
09:49:05 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/coredns:1.7.0
09:50:08 [INFO] [ssh.go:50] [192.168.160.244:22] kube/images/README.md
09:50:53 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: fanux/lvscare:latest
09:50:53 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/pause:3.2
09:50:53 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/node:v3.8.2
09:50:53 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/cni:v3.8.2
09:50:53 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/kube-controllers:v3.8.2
70dc90064d8e: Loading layer  38.81MB/38.81MB
Loaded image: k8s.gcr.io/kube-proxy:v1.19.24:22] Loading layer  393.2kB/38.81MB
79d541cda6cb: Loading layer  3.041MB/3.041MB
e9933a1f21f5: Loading layer  1.734MB/1.734MB
77f46c47e69e: Loading layer  115.2MB/115.2MB
Loaded image: k8s.gcr.io/kube-apiserver:v1.19.2] 
ba332c8caa08: Loading layer  42.13MB/42.13MB
Loaded image: k8s.gcr.io/kube-scheduler:v1.19.2] 
09:51:29 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
4d66a4f52b24: Loading layer  107.2MB/107.2MB
Loaded image: k8s.gcr.io/kube-controller-manager:v1.19.2
d72a74c56330: Loading layer  3.031MB/3.031MB
d61c79b29299: Loading layer   2.13MB/2.13MB
1a4e46412eb0: Loading layer  225.3MB/225.3MB
bfa5849f3d09: Loading layer   2.19MB/2.19MB
bb63b9467928: Loading layer  21.98MB/21.98MB
Loaded image: k8s.gcr.io/etcd:3.4.13-060.244:22] 
96d17b0b58a7: Loading layer  45.02MB/45.02MB
Loaded image: k8s.gcr.io/coredns:1.7.060.244:22] 
09:51:35 [ALRT] [upgrade.go:67] UpgradeMaster0
09:51:35 [ALRT] [upgrade.go:94] fist to drain node dev-k8s-master
09:51:35 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-master --ignore-daemonsets
09:51:38 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-master cordoned
09:51:38 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-7vsvh, kube-system/kube-proxy-f5vcc
09:51:38 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-66bff467f8-rfx86
09:52:08 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-66bff467f8-z2zpq evicted
09:52:08 [ALRT] [upgrade.go:102] second to exec kubeadm upgrade node on dev-k8s-master
09:52:08 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade apply --certificate-renewal=false  --yes v1.19.2
09:52:09 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/config] Making sure the configuration is correct:
09:52:11 [INFO] [ssh.go:50] [192.168.160.243:22] W0924 09:52:11.037253  129003 kubelet.go:205] detected "systemd" as the Docker cgroup driver, the provided value "cgroupfs" in "KubeletConfiguration" will be overrided
09:52:11 [INFO] [ssh.go:50] [192.168.160.243:22] [preflight] Running pre-flight checks.
09:52:11 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Running cluster health checks
09:52:16 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/version] You have chosen to change the cluster version to "v1.19.2"
09:52:16 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/versions] Cluster version: v1.18.3
09:52:16 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Pulling images required for setting up a Kubernetes cluster
09:52:16 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/apply] Upgrading your Static Pod-hosted control plane to version "v1.19.2"...
09:52:16 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 24a39fba2c7e2f71b2a1a965e28e43f7
09:52:16 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: a275fe1cd259aa3018f3f1d7c0e7a636
09:52:16 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 695b0d5342155481b9239a61ff533e4d
09:52:16 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Upgrading to TLS for etcd
09:52:26 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: etcd-dev-k8s-master hash: d4798542254a842faf3d6a0fb87d0ed6
09:52:26 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "etcd" upgrade
09:52:26 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/etcd.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-09-24-09-52-16/etcd.yaml"
09:52:55 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: etcd-dev-k8s-master hash: d4798542254a842faf3d6a0fb87d0ed6
09:54:32 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: etcd-dev-k8s-master hash: 4c3c12c30b28ef42f86f638eb399f6cd
09:54:32 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=etcd
09:54:38 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "etcd" upgraded successfully!
09:54:38 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Waiting for etcd to become available
09:54:38 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Writing new Static Pod manifests to "/etc/kubernetes/tmp/kubeadm-upgraded-manifests524365294"
09:54:38 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
09:54:38 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 24a39fba2c7e2f71b2a1a965e28e43f7
09:54:45 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 24a39fba2c7e2f71b2a1a965e28e43f7
09:54:45 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 24a39fba2c7e2f71b2a1a965e28e43f7
09:54:45 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 82a2f948bad5b581cc911fa3bf28510e
09:54:45 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-apiserver
09:54:48 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-apiserver" upgraded successfully!
09:54:48 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: a275fe1cd259aa3018f3f1d7c0e7a636
09:54:49 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 8e40ab517d1fc1b502ea4dc16d578e58
09:54:51 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-controller-manager" upgraded successfully!
09:54:51 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 695b0d5342155481b9239a61ff533e4d
09:54:51 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 93ed9f6b7a13fc84a2d5afc20ac0dee9
09:54:51 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-scheduler
09:54:53 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-scheduler" upgraded successfully!
09:54:53 [INFO] [ssh.go:50] [192.168.160.243:22] [upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
09:54:54 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet] Creating a ConfigMap "kubelet-config-1.19" in namespace kube-system with the configuration for the kubelets in the cluster
09:54:54 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
09:54:54 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes
09:54:54 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
09:54:54 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
09:54:54 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
09:54:56 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: CoreDNS
09:54:57 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: kube-proxy
09:54:57 [ALRT] [upgrade.go:116] third to restart kubelet on dev-k8s-master
09:54:57 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] systemctl daemon-reload && systemctl restart kubelet
09:55:09 [ALRT] [upgrade.go:127] fourth to uncordon node, 10 seconds to wait for dev-k8s-master ready
09:55:19 [ALRT] [upgrade.go:132] fifth to judge dev-k8s-master nodes is ready
09:55:19 [ALRT] [upgrade.go:74] UpgradeNodes
09:55:19 [ALRT] [upgrade.go:94] fist to drain node dev-k8s-node
09:55:19 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-node --ignore-daemonsets
09:55:19 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-node cordoned
09:55:19 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-q5x7v, kube-system/kube-proxy-5m9d2
09:55:19 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/calico-kube-controllers-688c5dc8c7-xnr2h
09:55:19 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-66bff467f8-t5rl8
09:55:23 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-66bff467f8-hcsmp evicted
09:55:23 [ALRT] [upgrade.go:102] second to exec kubeadm upgrade node on dev-k8s-node
09:55:23 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] kubeadm upgrade node --certificate-renewal=false
09:55:26 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade] Reading configuration from the cluster...
09:55:29 [INFO] [ssh.go:50] [192.168.160.244:22] [preflight] Running pre-flight checks
09:55:29 [INFO] [ssh.go:50] [192.168.160.244:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
09:55:29 [ALRT] [upgrade.go:116] third to restart kubelet on dev-k8s-node
09:55:29 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] systemctl daemon-reload && systemctl restart kubelet
09:55:38 [ALRT] [upgrade.go:127] fourth to uncordon node, 10 seconds to wait for dev-k8s-node ready
09:55:48 [ALRT] [upgrade.go:132] fifth to judge dev-k8s-node nodes is ready

$ kubectl get nodes
NAME             STATUS   ROLES    AGE   VERSION
dev-k8s-master   Ready    master   13h   v1.19.2
dev-k8s-node     Ready    <none>   13h   v1.19.2
$ kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-688c5dc8c7-ds9jx   1/1     Running   0          2m51s
kube-system   calico-node-7vsvh                          1/1     Running   1          13h
kube-system   calico-node-q5x7v                          1/1     Running   0          13h
kube-system   coredns-f9fd979d6-9xpfx                    1/1     Running   0          2m51s
kube-system   coredns-f9fd979d6-bnk5c                    1/1     Running   0          2m51s
kube-system   etcd-dev-k8s-master                        1/1     Running   0          3m21s
kube-system   kube-apiserver-dev-k8s-master              1/1     Running   0          3m27s
kube-system   kube-controller-manager-dev-k8s-master     1/1     Running   0          3m27s
kube-system   kube-proxy-2js4v                           1/1     Running   0          2m32s
kube-system   kube-proxy-k4jj6                           1/1     Running   0          2m38s
kube-system   kube-scheduler-dev-k8s-master              1/1     Running   0          3m22s
kube-system   kube-sealyun-lvscare-dev-k8s-node          1/1     Running   0          3m3s

test case 9

1 master 2 worker . 目前版本是v1.16.10 ,需要升级至 v1.17.12. sealos 可以升级.

upgrade logs Output

安装

$ sealos init --master 192.168.160.243  --pkg-url /root/kube1.16.10.tar.gz --version v1.16.10  --passwd centos  --node 192.168.160.244 --node 192.168.160.245 | tee -a install.16.10.log
....wait for kubernetes install success...
$ kubectl get nodes  -owide 
NAME             STATUS   ROLES    AGE   VERSION    INTERNAL-IP       EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION                CONTAINER-RUNTIME
centos8-k8s      Ready    <none>   2m   v1.16.10   192.168.160.245   <none>        CentOS Linux 8 (Core)   4.18.0-147.el8.x86_64         docker://19.3.0
dev-k8s-master   Ready    master   3m   v1.16.10   192.168.160.243   <none>        CentOS Linux 7 (Core)   4.4.228-2.el7.elrepo.x86_64   docker://19.3.12
dev-k8s-node     Ready    <none>   2m   v1.16.10   192.168.160.244   <none>        CentOS Linux 7 (Core)   4.4.228-2.el7.elrepo.x86_64   docker://19.3.9

升级

 sealos upgrade --version v1.17.12 --pkg-url /root/kube1.17.12.tar.gz -f | tee -a upgrade.onemastertwonode.11610-11712.log 
11:35:12 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] hostname
11:35:12 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: dev-k8s-master

11:35:12 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] hostname
11:35:13 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: dev-k8s-node

11:35:13 [INFO] [ssh.go:12] [ssh][192.168.160.245:22] hostname
11:35:13 [DEBG] [ssh.go:24] [ssh][192.168.160.245:22]command result is: centos8-k8s
...
11:39:17 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
11:39:22 [ALRT] [upgrade.go:67] UpgradeMaster0
11:39:22 [ALRT] [upgrade.go:94] fist to drain node dev-k8s-master
11:39:22 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-master --ignore-daemonsets
11:39:24 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-master cordoned
11:39:24 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod "calico-kube-controllers-688c5dc8c7-zj6cp"
11:39:24 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod "coredns-5644d7b6d9-pxgjn"
11:39:34 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-5644d7b6d9-pxgjn evicted
11:39:34 [INFO] [ssh.go:50] [192.168.160.243:22] pod/calico-kube-controllers-688c5dc8c7-zj6cp evicted
11:39:34 [ALRT] [upgrade.go:102] second to exec kubeadm upgrade node on dev-k8s-master
11:39:34 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade apply --certificate-renewal=false  --yes v1.17.12
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/config] Making sure the configuration is correct:
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [preflight] Running pre-flight checks.
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Making sure the cluster is healthy:
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/version] You have chosen to change the cluster version to "v1.17.12"
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/versions] Cluster version: v1.16.10
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Will prepull images for components [kube-apiserver kube-controller-manager kube-scheduler etcd]
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulling image for component etcd.
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulling image for component kube-apiserver.
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulling image for component kube-controller-manager.
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-apiserver
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-controller-manager
11:39:35 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-kube-scheduler
11:39:36 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-etcd
11:39:39 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-scheduler.
11:39:39 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-apiserver.
11:39:39 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component etcd.
11:39:39 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-controller-manager.
11:39:40 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 34f32c80333b80e995c0070dfc16cf72
11:39:40 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 63c28a9fde96b2b251ca4690624529ae
11:39:40 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 3fc3850b80e1466c4cabdda8f12faa50
11:39:40 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Upgrading to TLS for etcd
11:39:40 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: etcd-dev-k8s-master hash: 77f5f12e81c13342e0e94eec9d973abe
11:39:40 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "etcd" upgrade
11:39:43 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: etcd-dev-k8s-master hash: 77f5f12e81c13342e0e94eec9d973abe
11:39:44 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: etcd-dev-k8s-master hash: 42bd8cc23ee76f01fe086af38efc9f69
11:39:44 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=etcd
11:39:44 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "etcd" upgraded successfully!
11:39:44 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Waiting for etcd to become available
11:39:44 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Writing new Static Pod manifests to "/etc/kubernetes/tmp/kubeadm-upgraded-manifests744837085"
11:39:44 [INFO] [ssh.go:50] [192.168.160.243:22] [controlplane] Adding extra host path mount "localtime" to "kube-apiserver"
11:39:44 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
11:39:44 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 34f32c80333b80e995c0070dfc16cf72
11:39:49 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: fcbbb5a07dda4ac18c1c409dd8c21c70
11:39:49 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-apiserver
11:39:49 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-apiserver" upgraded successfully!
11:39:49 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 63c28a9fde96b2b251ca4690624529ae
11:39:50 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 79561830e5eb0398f029dacf3fe02884
11:39:50 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-controller-manager
11:39:51 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-controller-manager" upgraded successfully!
11:39:51 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 3fc3850b80e1466c4cabdda8f12faa50
11:39:52 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 5a63e5b879c453505335c9d4920890cc
11:39:52 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector component=kube-scheduler
11:39:53 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-scheduler" upgraded successfully!
11:39:53 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet] Creating a ConfigMap "kubelet-config-1.17" in namespace kube-system with the configuration for the kubelets in the cluster
11:39:53 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.17" ConfigMap in the kube-system namespace
11:39:53 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
11:39:54 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
11:39:54 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
11:39:54 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
11:39:55 [INFO] [ssh.go:50] [192.168.160.243:22] [addons]: Migrating CoreDNS Corefile
11:39:55 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: CoreDNS
11:39:57 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: kube-proxy
11:39:57 [ALRT] [upgrade.go:116] third to restart kubelet on dev-k8s-master
11:39:57 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] systemctl daemon-reload && systemctl restart kubelet
11:40:04 [ALRT] [upgrade.go:127] fourth to uncordon node, 10 seconds to wait for dev-k8s-master ready
11:40:14 [ALRT] [upgrade.go:132] fifth to judge dev-k8s-master nodes is ready
11:40:14 [ALRT] [upgrade.go:74] UpgradeNodes
11:40:14 [ALRT] [upgrade.go:94] fist to drain node centos8-k8s
11:40:14 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain centos8-k8s --ignore-daemonsets
11:40:14 [ALRT] [upgrade.go:94] fist to drain node dev-k8s-node
11:40:14 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-node --ignore-daemonsets
11:40:15 [INFO] [ssh.go:50] [192.168.160.243:22] node/centos8-k8s cordoned
11:40:15 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-node cordoned
11:40:15 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod "calico-kube-controllers-688c5dc8c7-fhkls"
11:40:15 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod "coredns-5644d7b6d9-gsv6p"
11:40:26 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-5644d7b6d9-hhpl4 evicted
11:40:26 [INFO] [ssh.go:50] [192.168.160.243:22] pod/calico-kube-controllers-688c5dc8c7-fhkls evicted
11:40:26 [INFO] [ssh.go:50] [192.168.160.243:22] node/centos8-k8s evicted
11:40:26 [ALRT] [upgrade.go:102] second to exec kubeadm upgrade node on centos8-k8s
11:40:26 [INFO] [ssh.go:57] [ssh][192.168.160.245:22] kubeadm upgrade node --certificate-renewal=false
11:40:27 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-5644d7b6d9-gsv6p evicted
11:40:27 [ALRT] [upgrade.go:102] second to exec kubeadm upgrade node on dev-k8s-node
11:40:27 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] kubeadm upgrade node --certificate-renewal=false
11:40:27 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade] Reading configuration from the cluster...
11:40:27 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade] Skipping phase. Not a control plane node.
11:40:27 [INFO] [ssh.go:50] [192.168.160.245:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
11:40:27 [ALRT] [upgrade.go:116] third to restart kubelet on centos8-k8s
11:40:27 [INFO] [ssh.go:57] [ssh][192.168.160.245:22] systemctl daemon-reload && systemctl restart kubelet
11:40:31 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade] Reading configuration from the cluster...
11:40:31 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade] Skipping phase. Not a control plane node.
11:40:31 [INFO] [ssh.go:50] [192.168.160.244:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
11:40:31 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade] The configuration for this node was successfully updated!
11:40:31 [ALRT] [upgrade.go:116] third to restart kubelet on dev-k8s-node
11:40:31 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] systemctl daemon-reload && systemctl restart kubelet
11:40:36 [ALRT] [upgrade.go:127] fourth to uncordon node, 10 seconds to wait for centos8-k8s ready
11:40:37 [ALRT] [upgrade.go:127] fourth to uncordon node, 10 seconds to wait for dev-k8s-node ready
11:40:46 [ALRT] [upgrade.go:132] fifth to judge centos8-k8s nodes is ready
11:40:47 [ALRT] [upgrade.go:132] fifth to judge dev-k8s-node nodes is ready

验证

$ kubectl get nodes  -owide 
NAME             STATUS   ROLES    AGE   VERSION    INTERNAL-IP       EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION                CONTAINER-RUNTIME
centos8-k8s      Ready    <none>   13m   v1.17.12   192.168.160.245   <none>        CentOS Linux 8 (Core)   4.18.0-147.el8.x86_64         docker://19.3.0
dev-k8s-master   Ready    master   14m   v1.17.12   192.168.160.243   <none>        CentOS Linux 7 (Core)   4.4.228-2.el7.elrepo.x86_64   docker://19.3.12
dev-k8s-node     Ready    <none>   13m   v1.17.12   192.168.160.244   <none>        CentOS Linux 7 (Core)   4.4.228-2.el7.elrepo.x86_64   docker://19.3.9
$  kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-688c5dc8c7-lgw7c   1/1     Running   0          8m7s
kube-system   calico-node-4h49q                          1/1     Running   0          15m
kube-system   calico-node-ps45d                          1/1     Running   0          15m
kube-system   calico-node-s2ngj                          1/1     Running   0          16m
kube-system   coredns-6955765f44-cz4gq                   1/1     Running   0          8m7s
kube-system   coredns-6955765f44-jlkx4                   1/1     Running   0          8m7s
kube-system   etcd-dev-k8s-master                        1/1     Running   0          8m50s
kube-system   kube-apiserver-dev-k8s-master              1/1     Running   0          8m49s
kube-system   kube-controller-manager-dev-k8s-master     1/1     Running   0          8m44s
kube-system   kube-proxy-f7gc5                           1/1     Running   0          8m3s
kube-system   kube-proxy-gjstj                           1/1     Running   0          7m34s
kube-system   kube-proxy-lchg6                           1/1     Running   0          7m37s
kube-system   kube-scheduler-dev-k8s-master              1/1     Running   0          8m42s
kube-system   kube-sealyun-lvscare-centos8-k8s           1/1     Running   0          15m
kube-system   kube-sealyun-lvscare-dev-k8s-node          1/1     Running   0          15m

test case 10

3 master . 目前版本是v1.17.12 ,需要升级至 v1.18.3. sealos 可以升级.

upgrade logs Output

集群情况

$ kubectl get nodes
NAME             STATUS   ROLES    AGE    VERSION
centos8-k8s      Ready    master   52m    v1.17.12
dev-k8s-master   Ready    master   129m   v1.17.12
dev-k8s-node     Ready    master   52m    v1.17.12

升级

 sealos  upgrade --version v1.18.3 --pkg-url /root/kube1.18.3.tar.gz  -f | tee -a upgrade.threemaster.11712-1183.log
13:42:32 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] hostname
13:42:33 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: dev-k8s-master

13:42:33 [INFO] [ssh.go:12] [ssh][192.168.160.245:22] hostname
13:42:33 [DEBG] [ssh.go:24] [ssh][192.168.160.245:22]command result is: centos8-k8s

13:42:33 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] hostname
13:42:33 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: dev-k8s-node

13:42:52 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] mkdir -p /root || true
13:42:52 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] mkdir -p /root || true
13:42:52 [INFO] [ssh.go:57] [ssh][192.168.160.245:22] mkdir -p /root || true
13:42:52 [DEBG] [download.go:29] [192.168.160.244:22]please wait for mkDstDir
13:42:52 [INFO] [ssh.go:12] [ssh][192.168.160.244:22] ls -l /root/kube1.18.3.tar.gz 2>/dev/null |wc -l
13:42:53 [DEBG] [download.go:29] [192.168.160.245:22]please wait for mkDstDir
13:42:53 [INFO] [ssh.go:12] [ssh][192.168.160.245:22] ls -l /root/kube1.18.3.tar.gz 2>/dev/null |wc -l
13:42:53 [DEBG] [ssh.go:24] [ssh][192.168.160.245:22]command result is: 0

13:42:53 [DEBG] [scp.go:26] [ssh]source file md5 value is 48f377585faf683d8c2b970f0bf0d974
13:42:53 [DEBG] [ssh.go:24] [ssh][192.168.160.244:22]command result is: 1

13:42:53 [WARN] [download.go:35] [192.168.160.244:22]SendPackage: file is exist
13:42:53 [DEBG] [download.go:44] [192.168.160.244:22]please wait for after hook
13:42:53 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] cd /root && rm -rf kube && tar zxvf kube1.18.3.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
13:42:55 [INFO] [ssh.go:50] [192.168.160.244:22] kube/
13:43:00 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/sealos
13:43:07 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubectl
13:43:09 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/crictl
13:43:15 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/conntrack
13:43:20 [INFO] [ssh.go:50] [192.168.160.244:22] kube/bin/kubelet-pre-start.sh
13:43:30 [INFO] [ssh.go:50] [192.168.160.244:22] kube/docker/README.md
13:43:30 [DEBG] [download.go:29] [192.168.160.243:22]please wait for mkDstDir
13:43:30 [INFO] [ssh.go:12] [ssh][192.168.160.243:22] ls -l /root/kube1.18.3.tar.gz 2>/dev/null |wc -l
13:43:49 [DEBG] [ssh.go:24] [ssh][192.168.160.243:22]command result is: 1

13:43:49 [WARN] [download.go:35] [192.168.160.243:22]SendPackage: file is exist
13:43:49 [DEBG] [download.go:44] [192.168.160.243:22]please wait for after hook
13:43:49 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] cd /root && rm -rf kube && tar zxvf kube1.18.3.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
13:43:53 [INFO] [ssh.go:50] [192.168.160.243:22] kube/
13:44:03 [ALRT] [scp.go:100] [ssh][192.168.160.245:22]transfer total size is: 100.00MB ;speed is 100MB
13:44:03 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/sealos
13:44:04 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubectl
13:44:04 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/crictl
13:44:05 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/conntrack
13:44:11 [INFO] [ssh.go:50] [192.168.160.243:22] kube/bin/kubelet-pre-start.sh
13:44:11 [INFO] [ssh.go:50] [192.168.160.243:22] kube/conf/10-kubeadm.conf
13:44:17 [INFO] [ssh.go:50] [192.168.160.243:22] kube/docker/README.md
13:44:24 [ALRT] [scp.go:100] [ssh][192.168.160.245:22]transfer total size is: 200.00MB ;speed is 100MB
13:44:52 [ALRT] [scp.go:100] [ssh][192.168.160.245:22]transfer total size is: 300.00MB ;speed is 100MB
13:45:51 [ALRT] [scp.go:100] [ssh][192.168.160.245:22]transfer total size is: 400.00MB ;speed is 100MB
13:45:58 [INFO] [ssh.go:50] [192.168.160.244:22] kube/images/README.md
13:47:09 [ALRT] [scp.go:100] [ssh][192.168.160.245:22]transfer total size is: 500.00MB ;speed is 100MB
13:47:58 [INFO] [ssh.go:50] [192.168.160.243:22] kube/images/README.md
13:48:09 [ALRT] [scp.go:100] [ssh][192.168.160.245:22]transfer total size is: 600.00MB ;speed is 100MB
13:48:13 [ALRT] [scp.go:100] [ssh][192.168.160.245:22]transfer total size is: 609.98MB ;speed is 9MB
13:48:15 [INFO] [ssh.go:12] [ssh][192.168.160.245:22] md5sum /root/kube1.18.3.tar.gz | cut -d" " -f1
13:48:31 [DEBG] [ssh.go:24] [ssh][192.168.160.245:22]command result is: 48f377585faf683d8c2b970f0bf0d974

13:48:31 [DEBG] [scp.go:29] [ssh]host: 192.168.160.245:22 , remote md5: 48f377585faf683d8c2b970f0bf0d974
13:48:31 [INFO] [scp.go:33] [ssh]md5 validate true
13:48:31 [INFO] [download.go:38] [192.168.160.245:22]copy file md5 validate success
13:48:31 [DEBG] [download.go:44] [192.168.160.245:22]please wait for after hook
13:48:31 [INFO] [ssh.go:57] [ssh][192.168.160.245:22] cd /root && rm -rf kube && tar zxvf kube1.18.3.tar.gz  && cd /root/kube/shell && rm -f ../bin/sealos && (docker load -i ../images/images.tar || ture) && cp -f ../bin/* /usr/bin/ 
13:48:34 [INFO] [ssh.go:50] [192.168.160.245:22] kube/
13:48:35 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-controller-manager:v1.18.3
13:48:35 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.18.3
13:48:35 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/kube-scheduler:v1.18.3
13:48:35 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/pause:3.2
13:48:35 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: k8s.gcr.io/etcd:3.4.3-0
13:48:35 [INFO] [ssh.go:50] [192.168.160.244:22] Loaded image: calico/node:v3.8.2
13:48:46 [INFO] [ssh.go:50] [192.168.160.245:22] kube/bin/sealos
13:48:54 [INFO] [ssh.go:50] [192.168.160.245:22] kube/bin/kubectl
13:49:00 [INFO] [ssh.go:50] [192.168.160.245:22] kube/bin/crictl
13:49:02 [INFO] [ssh.go:50] [192.168.160.245:22] kube/bin/conntrack
13:49:04 [INFO] [ssh.go:50] [192.168.160.245:22] kube/bin/kubelet-pre-start.sh
13:49:14 [INFO] [ssh.go:50] [192.168.160.245:22] kube/docker/README.md
13:51:54 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-controller-manager:v1.18.3
13:51:54 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/coredns:1.6.7
13:51:54 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/cni:v3.8.2
13:51:54 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
13:51:54 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/kube-controllers:v3.8.2
13:51:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-proxy:v1.18.3
13:51:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-apiserver:v1.18.3
13:51:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/kube-scheduler:v1.18.3
13:51:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: fanux/lvscare:latest
13:51:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/pause:3.2
13:51:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: k8s.gcr.io/etcd:3.4.3-0
13:51:55 [INFO] [ssh.go:50] [192.168.160.243:22] Loaded image: calico/node:v3.8.2
13:52:24 [INFO] [ssh.go:50] [192.168.160.245:22] kube/images/README.md
472b50132667: Loading layer  110.1MB/110.1MB
Loaded image: k8s.gcr.io/kube-controller-manager:v1.18.3
13:53:45 [INFO] [ssh.go:50] [192.168.160.245:22] Loaded image: k8s.gcr.io/coredns:1.6.7
13:53:45 [INFO] [ssh.go:50] [192.168.160.245:22] Loaded image: calico/cni:v3.8.2
13:53:45 [INFO] [ssh.go:50] [192.168.160.245:22] Loaded image: calico/pod2daemon-flexvol:v3.8.2
13:53:45 [INFO] [ssh.go:50] [192.168.160.245:22] Loaded image: calico/kube-controllers:v3.8.2
0d542b1bbf55: Loading layer  38.38MB/38.38MB
Loaded image: k8s.gcr.io/kube-proxy:v1.18.35:22] 
d7637f39347d: Loading layer  120.7MB/120.7MB
Loaded image: k8s.gcr.io/kube-apiserver:v1.18.3] 
09bd2ef1cfd6: Loading layer  42.95MB/42.95MB
Loaded image: k8s.gcr.io/kube-scheduler:v1.18.3] 
13:53:54 [INFO] [ssh.go:50] [192.168.160.245:22] Loaded image: fanux/lvscare:latest
13:53:54 [INFO] [ssh.go:50] [192.168.160.245:22] Loaded image: k8s.gcr.io/pause:3.2
13:53:55 [INFO] [ssh.go:50] [192.168.160.245:22] Loaded image: k8s.gcr.io/etcd:3.4.3-0
13:53:55 [INFO] [ssh.go:50] [192.168.160.245:22] Loaded image: calico/node:v3.8.2
13:54:02 [ALRT] [upgrade.go:76] UpgradeMaster0
13:54:02 [ALRT] [upgrade.go:103] fist to drain node dev-k8s-master
13:54:02 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-master --ignore-daemonsets
13:54:03 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-master cordoned
13:54:04 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-s2ngj, kube-system/kube-proxy-lchg6
13:54:04 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/calico-kube-controllers-688c5dc8c7-lgw7c
13:54:04 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-6955765f44-jlkx4
13:54:14 [INFO] [ssh.go:50] [192.168.160.243:22] pod/calico-kube-controllers-688c5dc8c7-lgw7c evicted
13:54:21 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-6955765f44-jlkx4 evicted
13:54:21 [ALRT] [upgrade.go:111] second to exec kubeadm upgrade node on dev-k8s-master
13:54:21 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubeadm upgrade apply --certificate-renewal=false  --yes v1.18.3
13:54:26 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/config] Making sure the configuration is correct:
13:54:27 [INFO] [ssh.go:50] [192.168.160.243:22] [preflight] Running pre-flight checks.
13:54:27 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade] Running cluster health checks
13:54:42 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/version] You have chosen to change the cluster version to "v1.18.3"
13:54:42 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/versions] Cluster version: v1.17.12
13:54:42 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Will prepull images for components [kube-apiserver kube-controller-manager kube-scheduler etcd]
13:54:42 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulling image for component etcd.
13:54:42 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-kube-scheduler
13:54:43 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 3 Pods for label selector k8s-app=upgrade-prepull-kube-apiserver
13:54:43 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 0 Pods for label selector k8s-app=upgrade-prepull-etcd
13:54:43 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 3 Pods for label selector k8s-app=upgrade-prepull-kube-controller-manager
13:54:44 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 3 Pods for label selector k8s-app=upgrade-prepull-kube-scheduler
13:54:44 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 1 Pods for label selector k8s-app=upgrade-prepull-etcd
13:54:45 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 3 Pods for label selector k8s-app=upgrade-prepull-etcd
13:55:10 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-controller-manager.
13:55:10 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component etcd.
13:55:11 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-scheduler.
13:55:11 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/prepull] Prepulled image for component kube-apiserver.
13:55:11 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: fcbbb5a07dda4ac18c1c409dd8c21c70
13:55:11 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 79561830e5eb0398f029dacf3fe02884
13:55:11 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 5a63e5b879c453505335c9d4920890cc
13:55:12 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Upgrading to TLS for etcd
13:55:14 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/etcd] Non fatal issue encountered during upgrade: the desired etcd version for this Kubernetes version "v1.18.3" is "3.4.3-0", but the current etcd version is "3.4.3". Won't downgrade etcd, instead just continue
13:55:14 [INFO] [ssh.go:50] [192.168.160.243:22] W0924 13:55:14.130233   59434 manifests.go:225] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
13:55:14 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
13:55:14 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: fcbbb5a07dda4ac18c1c409dd8c21c70
13:55:28 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: fcbbb5a07dda4ac18c1c409dd8c21c70
13:55:28 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: fcbbb5a07dda4ac18c1c409dd8c21c70
13:55:28 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-apiserver-dev-k8s-master hash: 3ffb1b5cd637de6412fa95b11cae4700
13:55:28 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 3 Pods for label selector component=kube-apiserver
13:55:31 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-apiserver" upgraded successfully!
13:55:31 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-controller-manager.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-09-24-13-55-11/kube-controller-manager.yaml"
13:55:31 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 79561830e5eb0398f029dacf3fe02884
13:55:31 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-controller-manager-dev-k8s-master hash: 5774a402312acd98241d318951797558
13:55:31 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 3 Pods for label selector component=kube-controller-manager
13:55:33 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-controller-manager" upgraded successfully!
13:55:33 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-scheduler.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-09-24-13-55-11/kube-scheduler.yaml"
13:55:33 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 5a63e5b879c453505335c9d4920890cc
13:55:33 [INFO] [ssh.go:50] [192.168.160.243:22] Static pod: kube-scheduler-dev-k8s-master hash: 738192d31444bd5d1118c309bca86763
13:55:33 [INFO] [ssh.go:50] [192.168.160.243:22] [apiclient] Found 3 Pods for label selector component=kube-scheduler
13:55:35 [INFO] [ssh.go:50] [192.168.160.243:22] [upgrade/staticpods] Component "kube-scheduler" upgraded successfully!
13:55:35 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet] Creating a ConfigMap "kubelet-config-1.18" in namespace kube-system with the configuration for the kubelets in the cluster
13:55:35 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.18" ConfigMap in the kube-system namespace
13:55:35 [INFO] [ssh.go:50] [192.168.160.243:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
13:55:35 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to get nodes
13:55:35 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow Node Bootstrap tokens to post CSRs in order for nodes to get long term certificate credentials
13:55:35 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow the csrapprover controller automatically approve CSRs from a Node Bootstrap Token
13:55:36 [INFO] [ssh.go:50] [192.168.160.243:22] [bootstrap-token] configured RBAC rules to allow certificate rotation for all node client certificates in the cluster
13:55:37 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: CoreDNS
13:55:39 [INFO] [ssh.go:50] [192.168.160.243:22] [addons] Applied essential addon: kube-proxy
13:55:39 [ALRT] [upgrade.go:125] third to restart kubelet on dev-k8s-master
13:55:39 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] systemctl daemon-reload && systemctl restart kubelet
13:55:47 [ALRT] [upgrade.go:136] fourth to uncordon node, 10 seconds to wait for dev-k8s-master ready
13:55:58 [ALRT] [upgrade.go:141] fifth to judge dev-k8s-master nodes is ready
13:55:58 [ALRT] [upgrade.go:90] UpgradeOtherMasters
13:55:58 [ALRT] [upgrade.go:103] fist to drain node dev-k8s-node
13:55:58 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain dev-k8s-node --ignore-daemonsets
13:55:58 [ALRT] [upgrade.go:103] fist to drain node centos8-k8s
13:55:58 [INFO] [ssh.go:57] [ssh][192.168.160.243:22] kubectl drain centos8-k8s --ignore-daemonsets
13:55:59 [INFO] [ssh.go:50] [192.168.160.243:22] node/centos8-k8s cordoned
13:55:59 [INFO] [ssh.go:50] [192.168.160.243:22] node/dev-k8s-node cordoned
13:55:59 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-56p7s, kube-system/kube-proxy-jpk84, kube-system/upgrade-prepull-etcd-nsf2g, kube-system/upgrade-prepull-kube-apiserver-m2tcp, kube-system/upgrade-prepull-kube-controller-manager-rhp85, kube-system/upgrade-prepull-kube-scheduler-zgcvj
13:55:59 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/calico-kube-controllers-688c5dc8c7-xz9ks
13:55:59 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-6955765f44-r5mdn
13:55:59 [INFO] [ssh.go:50] [192.168.160.243:22] WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-d2qz9, kube-system/kube-proxy-7bxq6, kube-system/upgrade-prepull-etcd-b49ft, kube-system/upgrade-prepull-kube-apiserver-d76tv, kube-system/upgrade-prepull-kube-controller-manager-cbg86, kube-system/upgrade-prepull-kube-scheduler-cv6jg
13:55:59 [INFO] [ssh.go:50] [192.168.160.243:22] evicting pod kube-system/coredns-6955765f44-hw8mp
13:56:02 [INFO] [ssh.go:50] [192.168.160.243:22] pod/calico-kube-controllers-688c5dc8c7-xz9ks evicted
13:56:06 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-6955765f44-hw8mp evicted
13:56:06 [ALRT] [upgrade.go:111] second to exec kubeadm upgrade node on dev-k8s-node
13:56:06 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] kubeadm upgrade node --certificate-renewal=false
13:56:08 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade] Reading configuration from the cluster...
13:56:08 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade] Upgrading your Static Pod-hosted control plane instance to version "v1.18.3"...
13:56:08 [INFO] [ssh.go:50] [192.168.160.244:22] Static pod: kube-apiserver-dev-k8s-node hash: db0cc0774c4b89e5ea5f738009ad410c
13:56:08 [INFO] [ssh.go:50] [192.168.160.244:22] Static pod: kube-controller-manager-dev-k8s-node hash: 79561830e5eb0398f029dacf3fe02884
13:56:08 [INFO] [ssh.go:50] [192.168.160.244:22] Static pod: kube-scheduler-dev-k8s-node hash: 5a63e5b879c453505335c9d4920890cc
13:56:09 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade/etcd] Upgrading to TLS for etcd
13:56:09 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade/etcd] Non fatal issue encountered during upgrade: the desired etcd version for this Kubernetes version "v1.18.3" is "3.4.3-0", but the current etcd version is "3.4.3". Won't downgrade etcd, instead just continue
13:56:09 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
13:56:09 [INFO] [ssh.go:50] [192.168.160.244:22] Static pod: kube-apiserver-dev-k8s-node hash: db0cc0774c4b89e5ea5f738009ad410c
13:56:14 [INFO] [ssh.go:50] [192.168.160.244:22] Static pod: kube-apiserver-dev-k8s-node hash: db0cc0774c4b89e5ea5f738009ad410c
13:56:14 [INFO] [ssh.go:50] [192.168.160.244:22] Static pod: kube-apiserver-dev-k8s-node hash: 328f0738eb4e2d4c76194db664467652
13:56:14 [INFO] [ssh.go:50] [192.168.160.244:22] [apiclient] Found 3 Pods for label selector component=kube-apiserver
13:56:17 [INFO] [ssh.go:50] [192.168.160.243:22] pod/coredns-6955765f44-r5mdn evicted
13:56:17 [ALRT] [upgrade.go:111] second to exec kubeadm upgrade node on centos8-k8s
13:56:17 [INFO] [ssh.go:57] [ssh][192.168.160.245:22] kubeadm upgrade node --certificate-renewal=false
13:56:17 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade/staticpods] Component "kube-apiserver" upgraded successfully!
13:56:17 [INFO] [ssh.go:50] [192.168.160.244:22] Static pod: kube-controller-manager-dev-k8s-node hash: 79561830e5eb0398f029dacf3fe02884
13:56:18 [INFO] [ssh.go:50] [192.168.160.244:22] Static pod: kube-controller-manager-dev-k8s-node hash: 5774a402312acd98241d318951797558
13:56:18 [INFO] [ssh.go:50] [192.168.160.244:22] [apiclient] Found 3 Pods for label selector component=kube-controller-manager
13:56:21 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade] Reading configuration from the cluster...
13:56:21 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade/staticpods] Component "kube-controller-manager" upgraded successfully!
13:56:21 [INFO] [ssh.go:50] [192.168.160.244:22] Static pod: kube-scheduler-dev-k8s-node hash: 5a63e5b879c453505335c9d4920890cc
13:56:21 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade] Upgrading your Static Pod-hosted control plane instance to version "v1.18.3"...
13:56:21 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0
13:56:21 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-controller-manager-centos8-k8s hash: 79561830e5eb0398f029dacf3fe02884
13:56:21 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-scheduler-centos8-k8s hash: 5a63e5b879c453505335c9d4920890cc
13:56:21 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade/etcd] Upgrading to TLS for etcd
13:56:21 [INFO] [ssh.go:50] [192.168.160.244:22] Static pod: kube-scheduler-dev-k8s-node hash: 738192d31444bd5d1118c309bca86763
13:56:22 [INFO] [ssh.go:50] [192.168.160.244:22] [apiclient] Found 3 Pods for label selector component=kube-scheduler
13:56:24 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade/staticpods] Component "kube-scheduler" upgraded successfully!
13:56:24 [INFO] [ssh.go:50] [192.168.160.244:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
13:56:24 [INFO] [ssh.go:50] [192.168.160.244:22] [upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.
13:56:24 [ALRT] [upgrade.go:125] third to restart kubelet on dev-k8s-node
13:56:24 [INFO] [ssh.go:57] [ssh][192.168.160.244:22] systemctl daemon-reload && systemctl restart kubelet
13:56:26 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade/etcd] Non fatal issue encountered during upgrade: the desired etcd version for this Kubernetes version "v1.18.3" is "3.4.3-0", but the current etcd version is "3.4.3". Won't downgrade etcd, instead just continue
13:56:26 [INFO] [ssh.go:50] [192.168.160.245:22] W0924 01:56:26.134571   21760 manifests.go:225] the default kube-apiserver authorization-mode is "Node,RBAC"; using "Node,RBAC"
13:56:26 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade/staticpods] Preparing for "kube-apiserver" upgrade
13:56:26 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0
13:56:41 [ALRT] [upgrade.go:136] fourth to uncordon node, 10 seconds to wait for dev-k8s-node ready
13:56:47 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0

13:58:03 [INFO] [ssh.go:50] [192.168.160.245:22] [apiclient] Found 2 Pods for label selector component=kube-apiserver
13:58:07 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade/staticpods] Component "kube-apiserver" upgraded successfully!
13:58:07 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-controller-manager.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests-2020-09-24-01-56-21/kube-controller-manager.yaml"
13:58:07 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-controller-manager-centos8-k8s hash: 79561830e5eb0398f029dacf3fe02884
13:58:07 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-controller-manager-centos8-k8s hash: 5774a402312acd98241d318951797558
13:58:07 [INFO] [ssh.go:50] [192.168.160.245:22] [apiclient] Found 2 Pods for label selector component=kube-controller-manager
13:58:08 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade/staticpods] Component "kube-controller-manager" upgraded successfully!
13:58:08 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-scheduler-centos8-k8s hash: 5a63e5b879c453505335c9d4920890cc
13:58:09 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-scheduler-centos8-k8s hash: 738192d31444bd5d1118c309bca86763
13:58:09 [INFO] [ssh.go:50] [192.168.160.245:22] [apiclient] Found 2 Pods for label selector component=kube-scheduler
13:58:11 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade/staticpods] Component "kube-scheduler" upgraded successfully!
13:58:11 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade] The control plane instance for this node was successfully updated!
13:58:11 [INFO] [ssh.go:50] [192.168.160.245:22] [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
13:58:11 [INFO] [ssh.go:50] [192.168.160.245:22] [upgrade] The configuration for this node was successfully updated!
13:58:11 [ALRT] [upgrade.go:125] third to restart kubelet on centos8-k8s
13:58:11 [INFO] [ssh.go:57] [ssh][192.168.160.245:22] systemctl daemon-reload && systemctl restart kubelet
13:58:20 [ALRT] [upgrade.go:136] fourth to uncordon node, 10 seconds to wait for centos8-k8s ready
13:58:30 [ALRT] [upgrade.go:141] fifth to judge centos8-k8s nodes is ready

验证

$ kubectl get nodes -o wide
NAME             STATUS   ROLES    AGE    VERSION   INTERNAL-IP       EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION                CONTAINER-RUNTIME
centos8-k8s      Ready    master   69m    v1.18.3   192.168.160.245   <none>        CentOS Linux 8 (Core)   4.18.0-147.el8.x86_64         docker://19.3.0
dev-k8s-master   Ready    master   146m   v1.18.3   192.168.160.243   <none>        CentOS Linux 7 (Core)   4.4.228-2.el7.elrepo.x86_64   docker://19.3.12
dev-k8s-node     Ready    master   69m    v1.18.3   192.168.160.244   <none>        CentOS Linux 7 (Core)   4.4.228-2.el7.elrepo.x86_64   docker://19.3.9
$ kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-688c5dc8c7-djwrj   1/1     Running   0          2m11s
kube-system   calico-node-56p7s                          1/1     Running   0          69m
kube-system   calico-node-d2qz9                          1/1     Running   0          68m
kube-system   calico-node-s2ngj                          1/1     Running   0          146m
kube-system   coredns-66bff467f8-jv56p                   1/1     Running   0          2m11s
kube-system   coredns-66bff467f8-nx2bv                   1/1     Running   0          2m11s
kube-system   etcd-centos8-k8s                           1/1     Running   0          16s
kube-system   etcd-dev-k8s-master                        1/1     Running   0          2m47s
kube-system   etcd-dev-k8s-node                          1/1     Running   0          35s
kube-system   kube-apiserver-centos8-k8s                 1/1     Running   0          16s
kube-system   kube-apiserver-dev-k8s-master              1/1     Running   1          2m47s
kube-system   kube-apiserver-dev-k8s-node                1/1     Running   0          12s
kube-system   kube-controller-manager-centos8-k8s        1/1     Running   0          21s
kube-system   kube-controller-manager-dev-k8s-master     1/1     Running   0          2m47s
kube-system   kube-controller-manager-dev-k8s-node       1/1     Running   0          15s
kube-system   kube-proxy-5xvwk                           1/1     Running   0          94s
kube-system   kube-proxy-pk7fb                           1/1     Running   0          110s
kube-system   kube-proxy-t756k                           1/1     Running   0          90s
kube-system   kube-scheduler-centos8-k8s                 1/1     Running   0          21s
kube-system   kube-scheduler-dev-k8s-master              1/1     Running   0          86s
kube-system   kube-scheduler-dev-k8s-node                1/1     Running   0          11s

问题日志: 升级过程发现大量打印这个 Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0日志. 最终是升级成功了. 这个是 kubeadm 升级过程打印的.

...
13:57:59 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0
13:57:59 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0
13:58:00 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0
13:58:00 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0
13:58:01 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0
13:58:01 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0
13:58:02 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0
13:58:02 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: d538891b2e8afcdbbab5a8f4ec8dc0d0
13:58:03 [INFO] [ssh.go:50] [192.168.160.245:22] Static pod: kube-apiserver-centos8-k8s hash: f7a9d7abe2eb7bbfd96771bfca89e17f
....