Upgrading Docker
Upgrade Docker from version 18.06.2 to version 19.03.11 in your IBM® Cloud Private cluster that was installed by using the 3.2.0.2003 fix pack.
First, upgrade Docker from version 18.06.2 to 18.09.7. Then, upgrade Docker to version 19.03.11.
Upgrading Docker when the boot node is not a master node
If your boot node is not a master node, complete these steps to upgrade Docker:
Upgrade Docker to version 18.09.7
Complete these steps to upgrade Docker to version 18.09.7:
-
Log in to your boot node as a cluster administrator.
-
Create a
k8s.yamlfile in the<installation_directory>/cluster/directory. The file must have the following content:# Licensed Materials - Property of IBM # 5737-E67 # @ Copyright IBM Corporation 2016, 2018 All Rights Reserved # US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. --- - name: Waiting for Kubernetes to start shell: | status=$(kubectl version &>/dev/null && echo yes || echo no) if [[ "$status" == "no" ]]; then echo "Kubernetes is not ready, check the following logs" echo "---------------------- Kubernetes apiserver logs ----------------------" for id in $(docker ps -aq --filter name=k8s_apiserver) do docker logs $id --tail=30 done echo echo "---------------------- kubelet logs ----------------------" journalctl -u kubelet.service --no-pager --lines=30 else echo $status fi args: executable: /bin/bash delegate_to: "{{ master_nodes[0] }}" register: result until: result.stdout == "yes" retries: 10 delay: 60 -
Edit the
<installation_directory>/cluster/config.yamlfile and change thedocker_version.## Install/upgrade docker version docker_version: 18.09.7 -
Download the Docker binary file from the IBM Passport Advantage®
website.
- For Linux® x86_64, download
icp-docker-18.09.7_x86_64.bin. - For Linux® on Power® (ppc64le), download
icp-docker-18.09.7_ppc64le.bin. - For Linux® on IBM® Z and LinuxONE, download
icp-docker-18.09.7_s390x.bin.
- For Linux® x86_64, download
-
Create the
runtime-enginedirectory under theclusterdirectory.mkdir <installation_directory>/cluster/runtime-engine/ -
Copy the Docker binary file to the
runtime-enginedirectory.cp <Docker-binary-file-path>/<Docker-binary-file-name> <installation_directory>/cluster/runtime-engine/ -
Change to the
clusterdirectory.cd <installation_directory>/cluster/ -
Upgrade Docker by running the following command:
sudo docker run --net=host -t -e LICENSE=accept -v "$(pwd)":/installer/cluster -v "$(pwd)/k8s.yaml":/installer/playbook/roles/waitfor/tasks/k8s.yaml ibmcom/icp-inception-amd64:3.2.0-ee upgrade-docker
Upgrade Docker to version 19.03.11
Complete these steps to upgrade Docker to version 19.03.11:
-
Log in to your boot node as a cluster administrator.
-
Edit the
<installation_directory>/cluster/config.yamlfile and change thedocker_version.## Install/upgrade docker version docker_version: 19.03.11 -
Download the Docker binary file from the IBM Passport Advantage®
website.
- For Linux® x86_64, download
icp-docker-19.03.11_x86_64.bin. - For Linux® on Power® (ppc64le), download
icp-docker-19.03.11_ppc64le.bin. - For Linux® on IBM® Z and LinuxONE, download
icp-docker-19.03.11_s390x.bin.
- For Linux® x86_64, download
-
Copy the Docker binary file to the
runtime-enginedirectory.cp <Docker-binary-file-path>/<Docker-binary-file-name> <installation_directory>/cluster/runtime-engine/ -
Upgrade Docker by running the following command:
sudo docker run --net=host -t -e LICENSE=accept -v "$(pwd)":/installer/cluster ibmcom/icp-inception-amd64:3.2.0-ee upgrade-docker
Upgrading Docker when the boot node is a master node
If your boot node is also one of the master nodes, complete these steps to upgrade the Docker version:
Upgrade Docker to version 18.09.7
Complete these steps to upgrade Docker to version 18.09.7:
-
Cordon the master node.
kubectl cordon <master-node-IP-address> -
Drain the node.
kubectl drain <master-node-IP-address> --ignore-daemonsets --delete-local-data --force --timeout=600s -
Upgrade Docker on the master node. Use the Docker version 18.09.7 binary file. For example,
icp-docker-18.09.7_x86_64.bin../<installation_directory>/cluster/runtime-engine/<Docker-binary-file-name> --upgradeFollowing is a sample output:
[20-08-13 19:23:38] ACTION: upgrade [20-08-13 19:23:38] DOCKER_ENV: [20-08-13 19:23:38] DOCKER_CONFIG: [20-08-13 19:23:38] Upgrading docker [20-08-13 19:23:39] Extracting docker.tar.gz [20-08-13 19:23:45] Upgrading docker package on Ubuntu 18.04 ./runtime-engine/icp-docker-18.09.7_x86_64.bin: line 271: rpm: command not found [20-08-13 19:25:07] Restarting docker service [20-08-13 19:25:10] Upgrade docker successfully. -
Uncordon the master node.
kubectl uncordon <master-node-IP-address>Following is a sample output:
node/10.11.18.99 uncordoned
After you upgrade, verify the Docker version on the nodes. If some pods are not successfully created, you must manually delete these pods to re-create them.
kubectl get nodes -o wide
Following is a sample output:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
10.11.18.100 Ready worker 16h v1.13.12+icp-ee2003 10.11.18.100 <none> Ubuntu 18.04.5 LTS 4.15.0-112-generic docker://18.9.7
10.11.18.103 Ready worker 16h v1.13.12+icp-ee2003 10.11.18.103 <none> Ubuntu 18.04.5 LTS 4.15.0-112-generic docker://18.9.7
10.11.18.99 Ready etcd,management,master,proxy 17h v1.13.12+icp-ee2003 9.30.183.77 <none> Ubuntu 18.04.5 LTS 4.15.0-112-generic docker://18.9.7
Upgrade Docker to version 19.03.11
Complete these steps to upgrade Docker to version 19.03.11:
-
Cordon the master node.
kubectl cordon <master-node-IP-address> -
Drain the node.
kubectl drain <master-node-IP-address> --ignore-daemonsets --delete-local-data --force --timeout=600s -
Upgrade Docker on the master node. Use the Docker version 19.03.11 binary file. For example,
icp-docker-19.03.11_x86_64.bin../<installation_directory>/cluster/runtime-engine/<Docker-binary-file-name> --upgradeFollowing is a sample output:
[20-08-13 19:23:38] ACTION: upgrade [20-08-13 19:23:38] DOCKER_ENV: [20-08-13 19:23:38] DOCKER_CONFIG: [20-08-13 19:23:38] Upgrading docker [20-08-13 19:23:39] Extracting docker.tar.gz [20-08-13 19:23:45] Upgrading docker package on Ubuntu 18.04 ./runtime-engine/icp-docker-19.03.11_x86_64.bin: line 271: rpm: command not found [20-08-13 19:25:07] Restarting docker service [20-08-13 19:25:10] Upgrade docker successfully. -
Uncordon the master node.
kubectl uncordon <master-node-IP-address>Following is a sample output:
node/10.11.18.99 uncordoned
After you upgrade, verify the Docker version on the nodes. If some pods are not successfully created, you must manually delete these pods to re-create them.
kubectl get nodes -o wide
Following is a sample output:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
10.11.18.100 Ready worker 16h v1.13.12+icp-ee2003 10.11.18.100 <none> Ubuntu 18.04.5 LTS 4.15.0-112-generic docker://19.3.11
10.11.18.103 Ready worker 16h v1.13.12+icp-ee2003 10.11.18.103 <none> Ubuntu 18.04.5 LTS 4.15.0-112-generic docker://19.3.11
10.11.18.99 Ready etcd,management,master,proxy 17h v1.13.12+icp-ee2003 9.30.183.77 <none> Ubuntu 18.04.5 LTS 4.15.0-112-generic docker://19.3.11