Actualice los motores de Docker que se instalaron utilizando el paquete de Docker de IBM Cloud Private.
Nota: Al actualizar Docker se ven afectados los componentes siguientes:
/lib/systemd/system/docker.service. Para resolver este problema, vuelva a configurar Docker después de la actualización. Para obtener más información, consulte Resolución de problemas.Antes de actualizar, asegúrese de que el clúster cumple los requisitos siguientes:
/tmp en todos los nodos debe tener al menos 2 GB de espacio y tener otorgado permiso de ejecutable.apt.yum.Actualice un nodo de arranque que se ha instalado utilizando el paquete de Docker de IBM Cloud Private.
Actualice Docker en su nodo de arranque.
Para Linux, ejecute este mandato:
chmod +x icp-docker-18.09.7_x86_64.bin
sudo ./icp-docker-18.09.7_x86_64.bin --upgrade
Para Linux on Power (ppc64le), ejecute este mandato:
chmod +x icp-docker-18.09.7_ppc64le.bin
sudo ./icp-docker-18.09.7_ppc64le.bin --upgrade
Para Linux® on IBM® Z and LinuxONE, ejecute este mandato:
chmod +x icp-docker-18.09.7_s390x.bin
sudo ./icp-docker-18.09.7_s390x.bin --upgrade
Asegúrese de que el motor de Docker se haya iniciado. Ejecute el siguiente mandato:
sudo systemctl start docker
Actualice los nodos de clúster que se han instalado mediante el paquete de Docker de IBM Cloud Private.
Vaya al directorio /<installation_directory>/cluster/.
cd /<installation_directory>/cluster/
Edite el archivo config.yaml para establecer el valor de Docker_version en 18.09.7:
docker_version: 18.09.7
Realice una copia de seguridad y elimine el recurso PodDisruptionBudget.
PodDisruptionBudget está disponible en el clúster:kubectl get PodDisruptionBudget --all-namespaces
PodDisruptionBudget está disponible en el clúster, realice una copia de seguridad y elimine PodDisruptionBudget antes de actualizar Docker.kubectl get PodDisruptionBudget --all-namespaces -oyaml > PodDisruptionBudget.yaml
kubectl delete -f PodDisruptionBudget.yaml
Actualice Docker.
sudo docker run --net=host -t -e LICENSE=accept -v "$(pwd)":/installer/cluster ibmcom/icp-inception-$(uname -m | sed 's/x86_64/amd64/g'):3.2.1-ee upgrade-docker
También puede utilizar la opción -l para actualizar nodos de clúster específicos.
sudo docker run --net=host -t -e LICENSE=accept -v "$(pwd)":/installer/cluster ibmcom/icp-inception-$(uname -m | sed 's/x86_64/amd64/g'):3.2.1-ee upgrade-docker -l <node_IP_address>
-l worker.En entornos de alta disponibilidad, utilice -l <host_ip> para actualizar los nodos maestros y proxy uno a uno.
Si el nodo de arranque es uno de los nodos de clúster, actualice manualmente Docker en el nodo de arranque.
kubectl cordon <IP_nodo_arranque>
kubectl drain <IP_nodo_arranque> --ignore-daemonsets --delete-local-data --force --timeout=600s
./icp-docker-18.09.7_x86_64.bin --upgrade
kubectl uncordon <IP_nodo_arranque>
Nota: Para entornos que no son de alta disponibilidad, si no se desbloquea el nodo después de actualizar Docker, tendrá que configurar kubectl para resolver el problema. Para obtener más información, consulte Resolución de problemas.
Vuelva a añadir PodDisruptionBudget al clúster.
PodDisruptionBudget.yaml para eliminar la sección status siguiente:status:
currentHealthy: 1
desiredHealthy: 2
disruptedPods: null
disruptionsAllowed: 0
expectedPods: 1
observedGeneration: 1
PodDisruptionBudget.kubectl apply -f PodDisruptionBudget.yaml
En todos los nodos, asegúrese de que se inicia el motor de Docker ejecutando el mandato siguiente:
sudo systemctl start docker
Compruebe la versión de Docker ejecutando el mandato siguiente:
kubectl get nodes -oyaml | grep containerRuntimeVersion
La versión de Docker debe ser 18.09.7.
containerRuntimeVersion: docker://18.09.7
También puede comprobar la versión de Docker ejecutando los mandatos siguientes en los nodos de clúster:
docker version
docker info
Compruebe el estado del pod. Todos los pods deben estar en ejecución después de actualizar Docker.
kubectl get pods --all-namespaces
El estado del pod debe mostrar que está en ejecución.
Si encuentra algún problema durante la actualización, revise los problemas siguientes y los errores comunes que se pueden producir para la actualización de Docker.