@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

Inicio - Kubernetes - Kubernetes: Upgrade cluster Debian
kubernetes-update-cluster-debian-1

Kubernetes: Upgrade cluster Debian

Kubernetes: Upgrade cluster Debian

Hoy voy a enseñaros un procedimiento bastante laborioso.

La idea es hacer un upgrade de un cluster Debian con Kubernetes. En el ejemplo que os voy a mostrar, existen 3 nodos:

  • KBMASTER: Master
  • KUBERNETES01: Worker
  • KUBERNETES02: Worker

Todos en la versión 1.7.4 y vamos a pasar a la versión 1.8.2. Veréis que voy alternando entre usuario root y mi usuario de gestión del cluster. Así que vamos a ponernos manos a la obra:

Kubernetes: Upgrade Master

Nos conectamos al nodo Master y logueamos como root, para cancelar la retención de kubeadm que nos permitirá hacer un update:

raulunzue@KBMASTER:~$ sudo su -
root@KBMASTER:~# apt-mark unhold kubeadm
Se ha cancelado la retención de kubeadm.

Lanzamos un escaneo:

root@KBMASTER:~# apt-get update
Des:1 http://security.debian.org/debian-security buster/updates InRelease [65,4 kB] Obj:2 http://deb.debian.org/debian buster InRelease
Des:3 http://deb.debian.org/debian buster-updates InRelease [49,3 kB] Des:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease [8.993 B] Des:5 http://security.debian.org/debian-security buster/updates/main Sources [116 kB] Des:6 http://security.debian.org/debian-security buster/updates/main amd64 Packages [194 kB] Des:7 http://security.debian.org/debian-security buster/updates/main Translation-en [104 kB] Des:8 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 Packages [35,3 kB] Descargados 573 kB en 2s (247 kB/s)
Leyendo lista de paquetes... Hecho

Podemos probar a ver qué versión está disponible:

root@KBMASTER:~# apt-get changelog kubeadm
E: Fallo al obtener changelog:/kubeadm.changelog  No está disponible el informe de cambios para kubeadm=1.18.2-00

Y forzamos el upgrade:

root@KBMASTER:~# apt-get update && apt-get install -y kubeadm=1.18.2-00 && apt-mark hold kubeadm
Obj:1 http://security.debian.org/debian-security buster/updates InRelease
Obj:2 http://deb.debian.org/debian buster InRelease 

Obj:3 http://deb.debian.org/debian buster-updates InRelease 
Obj:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
Leyendo lista de paquetes... Hecho
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se actualizarán los siguientes paquetes:
kubeadm
1 actualizados, 0 nuevos se instalarán, 0 para eliminar y 24 no actualizados.
Se necesita descargar 8.162 kB de archivos.
Se utilizarán 467 kB de espacio de disco adicional después de esta operación.
Des:1 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubeadm amd64 1.18.2-00 [8.162 kB] Descargados 8.162 kB en 1s (5.832 kB/s)
apt-listchanges: Leyendo lista de cambios...
(Leyendo la base de datos ... 135789 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../kubeadm_1.18.2-00_amd64.deb ...
Desempaquetando kubeadm (1.18.2-00) sobre (1.17.4-00) ...
Configurando kubeadm (1.18.2-00) ...
Scanning processes...      

Scanning linux images... 

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.
kubeadm fijado como retenido.

Proseguimos con el proceso con estos comandos:

root@KBMASTER:~# apt-mark unhold kubelet && apt-get update && apt-get install -y kubelet=1.18.2-00 && apt-mark hold kubelet
kubelet ya no estaba retenido.
Obj:1 http://security.debian.org/debian-security buster/updates InRelease
Obj:2 http://deb.debian.org/debian buster InRelease

Obj:3 http://deb.debian.org/debian buster-updates InRelease
Obj:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
Leyendo lista de paquetes... Hecho
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se actualizarán los siguientes paquetes:
kubelet
1 actualizados, 0 nuevos se instalarán, 0 para eliminar y 23 no actualizados.
Se necesita descargar 19,5 MB de archivos.
Se utilizarán 1.646 kB de espacio de disco adicional después de esta operación.
Des:1 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubelet amd64 1.18.2-00 [19,5 MB] Descargados 19,5 MB en 2s (12,0 MB/s)
apt-listchanges: Leyendo lista de cambios...
(Leyendo la base de datos ... 135789 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../kubelet_1.18.2-00_amd64.deb ...
Desempaquetando kubelet (1.18.2-00) sobre (1.17.4-00) ...
Configurando kubelet (1.18.2-00) ...
Scanning processes...

Scanning linux images...

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.
kubelet fijado como retenido.

Reiniciamos el servicio:

root@KBMASTER:~# systemctl restart kubelet

Kubernetes: Upgrade el resto de nodos Master

Si tenéis más nodos master podéis usar estos comandos:

$ ssh raulunzue@kbmaster02
$ kubeadm upgrade node experimental-control-plane
$ ssh raulunzue@kbmaster03
$ kubeadm upgrade node experimental-control-plane

Kubernetes: Upgrade Workers

Ya hemos actualizado el master, ahora nos conectamos a un nodo Worker. Os dejo el procedimiento:

raulunzue@KUBERNETES01:~$ sudo su -
[sudo] password for raulunzue:
root@KUBERNETES01:~# apt-mark unhold kubeadm
kubeadm ya no estaba retenido.
root@KUBERNETES01:~# apt-get update
Obj:1 http://security.debian.org/debian-security buster/updates InRelease
Obj:3 http://deb.debian.org/debian buster InRelease 

Obj:4 http://deb.debian.org/debian buster-updates InRelease
Obj:2 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
Leyendo lista de paquetes... Hecho
root@KUBERNETES01:~# apt-get install -y kubeadm=1.18.2-00 && apt-mark hold kubeadm
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se actualizarán los siguientes paquetes:
kubeadm
1 actualizados, 0 nuevos se instalarán, 0 para eliminar y 24 no actualizados.
Se necesita descargar 8.162 kB de archivos.
Se utilizarán 467 kB de espacio de disco adicional después de esta operación.
Des:1 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubeadm amd64 1.18.2-00 [8.162 kB] Descargados 8.162 kB en 1s (6.110 kB/s)
apt-listchanges: Leyendo lista de cambios...
(Leyendo la base de datos ... 135633 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../kubeadm_1.18.2-00_amd64.deb ...
Desempaquetando kubeadm (1.18.2-00) sobre (1.17.4-00) ...
Configurando kubeadm (1.18.2-00) ...
Scanning processes...

Scanning linux images... 

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.
kubeadm fijado como retenido.

raulunzue@KBMASTER:~$ kubectl drain kubernetes01 --ignore-daemonsets
node/kubernetes01 cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-amd64-mwtn4, kube-system/kube-proxy-w48xm
node/kubernetes01 drained

root@KUBERNETES01:~# kubeadm upgrade node
[upgrade] Reading configuration from the cluster...
[upgrade] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[upgrade] Skipping phase. Not a control plane node.
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.17" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[upgrade] The configuration for this node was successfully updated!
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.

root@KUBERNETES01:~# apt-mark unhold kubelet
kubelet ya no estaba retenido.
root@KUBERNETES01:~# apt-get update
Obj:1 http://security.debian.org/debian-security buster/updates InRelease
Obj:2 http://deb.debian.org/debian buster InRelease

Obj:3 http://deb.debian.org/debian buster-updates InRelease
Obj:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
Leyendo lista de paquetes... Hecho
root@KUBERNETES01:~# apt-get install -y kubelet=1.18.2-00 && apt-mark hold kubelet
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se actualizarán los siguientes paquetes:
kubelet
1 actualizados, 0 nuevos se instalarán, 0 para eliminar y 23 no actualizados.
Se necesita descargar 19,5 MB de archivos.
Se utilizarán 1.646 kB de espacio de disco adicional después de esta operación.
Des:1 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubelet amd64 1.18.2-00 [19,5 MB] Descargados 19,5 MB en 2s (12,6 MB/s)
apt-listchanges: Leyendo lista de cambios...
(Leyendo la base de datos ... 135633 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../kubelet_1.18.2-00_amd64.deb ...
Desempaquetando kubelet (1.18.2-00) sobre (1.17.4-00) ...
Configurando kubelet (1.18.2-00) ...
Scanning processes...

Scanning linux images...

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.
kubelet fijado como retenido.

raulunzue@KBMASTER:~$ kubectl uncordon kubernetes01
node/kubernetes01 uncordoned
raulunzue@KBMASTER:~$ kubectl get nodes
NAME           STATUS   ROLES    AGE    VERSION
kbmaster       Ready    master   119d   v1.18.2
kubernetes01   Ready      46d    v1.18.2
kubernetes02   Ready      119d   v1.17.4

Kubernetes: Actualización segundo Nodo(Worker)

Ya tenemos un nodo y el master, ahora vamos a por el segundo nodo:

raulunzue@KBMASTER:~$ ssh kubernetes02
raulunzue@kubernetes02's password:
Linux KUBERNETES02 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue May  5 23:47:37 2020 from 192.168.2.193
raulunzue@KUBERNETES02:~$ apt-mark unhold kubeadm
kubeadm ya no estaba retenido.
raulunzue@KUBERNETES02:~$ sudo su -
[sudo] password for raulunzue:
root@KUBERNETES02:~# apt-mark unhold kubeadm
kubeadm ya no estaba retenido.
root@KUBERNETES02:~# apt-get update
Des:1 http://security.debian.org/debian-security buster/updates InRelease [65,4 kB] Obj:2 http://deb.debian.org/debian buster InRelease
Des:3 http://deb.debian.org/debian buster-updates InRelease [49,3 kB] Des:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease [8.993 B] Des:5 http://security.debian.org/debian-security buster/updates/main Sources [116 kB] Des:6 http://security.debian.org/debian-security buster/updates/main amd64 Packages [194 kB] Des:7 http://security.debian.org/debian-security buster/updates/main Translation-en [104 kB] Des:8 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 Packages [35,3 kB] Descargados 573 kB en 2s (252 kB/s)
Leyendo lista de paquetes... Hecho
root@KUBERNETES02:~# apt-get install -y kubeadm=1.18.2-00 && apt-mark hold kubeadm
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se actualizarán los siguientes paquetes:
kubeadm
1 actualizados, 0 nuevos se instalarán, 0 para eliminar y 24 no actualizados.
Se necesita descargar 8.162 kB de archivos.
Se utilizarán 467 kB de espacio de disco adicional después de esta operación.
Des:1 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubeadm amd64 1.18.2-00 [8.162 kB] Descargados 8.162 kB en 3s (2.446 kB/s)
apt-listchanges: Leyendo lista de cambios...
(Leyendo la base de datos ... 135633 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../kubeadm_1.18.2-00_amd64.deb ...
Desempaquetando kubeadm (1.18.2-00) sobre (1.17.4-00) ...
Configurando kubeadm (1.18.2-00) ...
Scanning processes...

Scanning linux images... 

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.
kubeadm fijado como retenido.

root@KUBERNETES02:~# exit
cerrar sesión
raulunzue@KUBERNETES02:~$ exit
cerrar sesión
Connection to kubernetes02 closed.
raulunzue@KBMASTER:~$ kubectl drain kubernetes02 --ignore-daemonsets
node/kubernetes02 cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/kube-flannel-ds-amd64-xcppv, kube-system/kube-proxy-r6nv9
evicting pod haproxy-controller/haproxy-ingress-596fb4b4f4-kn8qh
evicting pod haproxy-controller/ingress-default-backend-558fbc9b46-j5wfp
evicting pod kube-system/coredns-6955765f44-gwgk5
pod/haproxy-ingress-596fb4b4f4-kn8qh evicted
pod/coredns-6955765f44-gwgk5 evicted
pod/ingress-default-backend-558fbc9b46-j5wfp evicted
node/kubernetes02 evicted

raulunzue@KBMASTER:~$ ssh kubernetes02
raulunzue@kubernetes02's password:
Linux KUBERNETES02 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed May  6 00:11:02 2020 from 192.168.2.193
raulunzue@KUBERNETES02:~$ sudo su -
[sudo] password for raulunzue:
root@KUBERNETES02:~# kubeadm upgrade node
[upgrade] Reading configuration from the cluster...
[upgrade] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[upgrade] Skipping phase. Not a control plane node.
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.17" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[upgrade] The configuration for this node was successfully updated!
[upgrade] Now you should go ahead and upgrade the kubelet package using your package manager.
root@KUBERNETES02:~# apt-mark unhold kubelet
kubelet ya no estaba retenido.
root@KUBERNETES02:~# apt-get update
Obj:1 http://security.debian.org/debian-security buster/updates InRelease
Obj:2 http://deb.debian.org/debian buster InRelease 

Obj:3 http://deb.debian.org/debian buster-updates InRelease
Obj:4 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
Leyendo lista de paquetes... Hecho
root@KUBERNETES02:~# apt-get install -y kubelet=1.18.2-00 && apt-mark hold kubelet
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se actualizarán los siguientes paquetes:
kubelet
1 actualizados, 0 nuevos se instalarán, 0 para eliminar y 23 no actualizados.
Se necesita descargar 19,5 MB de archivos.
Se utilizarán 1.646 kB de espacio de disco adicional después de esta operación.
Des:1 https://packages.cloud.google.com/apt kubernetes-xenial/main amd64 kubelet amd64 1.18.2-00 [19,5 MB] Descargados 19,5 MB en 2s (12,3 MB/s)
apt-listchanges: Leyendo lista de cambios...
(Leyendo la base de datos ... 135633 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../kubelet_1.18.2-00_amd64.deb ...
Desempaquetando kubelet (1.18.2-00) sobre (1.17.4-00) ...
Configurando kubelet (1.18.2-00) ...
Scanning processes...

Scanning linux images... 

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.
kubelet fijado como retenido.

root@KUBERNETES02:~# systemctl restart kubelet
root@KUBERNETES02:~# exit
cerrar sesión
raulunzue@KUBERNETES02:~$ exit
cerrar sesión
Connection to kubernetes02 closed.
raulunzue@KBMASTER:~$ kubectl uncordon kubernetes02
node/kubernetes02 uncordoned
raulunzue@KBMASTER:~$ kubectl get nodes
NAME           STATUS   ROLES    AGE    VERSION
kbmaster       Ready    master   119d   v1.18.2
kubernetes01   Ready              46d   v1.18.2
kubernetes02   Ready             119d   v1.18.2

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

Acerca de Raul Unzue Pulido

Administrador de sistemas virtuales e infraestructuras IT, linuxero y entusiasta de la tecnología.

Compruebe también

hardening-kubernetes-gestion-de-recursos-y-limites-1

Hardening Kubernetes: Gestión de recursos y límites

Hardening Kubernetes: Gestión de recursos y límites Cuando creas contenedor en una infraestructura Kubernetes, sobre …

Un comentario

  1. Buen artículo sobre Upgrade cluster Debian, no sabia como actualizarlo y ahora gracias a tus conocimientos he podido hacerlo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

3 × dos =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu