Aller au contenu

Mise à jour de Kubernetes

Ce document explique brièvement les étapes pour mettre à jour un cluster Kubernetes.

Mettre à jour le dépôt de paquets Kubernetes

Cette étape est nécessaire pour les changements de versions mineures (1.30.x à 1.31.x)

Bash
# Adjust the versions below
sudo sed -i 's/v1.30/v1.31/' /etc/apt/sources.list.d/kubernetes.list

Plan de contrôle

Les commandes ci-dessous sont à exécutées sur les noeuds du plan de contrôle. Elles ne doivent être exécutées que sur un noeud à la fois.

Mise à jour de kubeadm

Exécuter les commandes suivantes pour le premier noeud du plan de contrôle

Bash
# Replace with the desired version
export K8S_VERSION="1.31.0"

# Upgrade kubeadm
sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm="$K8S_VERSION-*" && \
sudo apt-mark hold kubeadm

# Verify that the cluster is upgradeable
sudo kubeadm upgrade plan

Commencer la montée en niveau avec la commande apply

Bash
# Upgrade the first control plane node
sudo kubeadm upgrade apply "v$K8S_VERSION"

Les autres noeuds du plan de contrôle utilisent les mêmes commandes mais il en remplaçant upgrade apply par upgrade node

Bash
# Upgrade the other control plane nodes
sudo kubeadm upgrade node

Mise à jour du kubelet et kubectl

Les commandes ci-dessous doivent s'exécuter directement depuis le noeud correspondant.

Bash
# Drain the node. You may need to replace $HOSTNAME with the correct node name.
kubectl drain $HOSTNAME --ignore-daemonsets

# Upgrade the kubelet and kubectl
sudo apt-mark unhold kubelet kubectl && \
sudo apt-get update && \
sudo apt-get install -y kubelet="$K8S_VERSION-*" kubectl="$K8S_VERSION-*" && \
sudo apt-mark hold kubelet kubectl

# Restart the kubelet
sudo systemctl daemon-reload
sudo systemctl restart kubelet

# Uncordon the node
kubectl uncordon $HOSTNAME

Workers

Les sous-sections suivantes doivent être toutes exécutées à la suite avant de passer au noeud suivant.

Mise à jour de kubeadm

Bash
# Replace with the desired version
export K8S_VERSION="1.31.0"

# Upgrade kubeadm
sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm="$K8S_VERSION-*" && \
sudo apt-mark hold kubeadm

# Upgrade the local kubelet configuration
sudo kubeadm upgrade node

Drainer le noeud

Depuis un noeud du plan de contrôle

Bash
1
2
3
4
5
# Replace <node-to-drain> with the name of your node you are draining
kubectl drain <node-to-drain> --ignore-daemonsets

# You may need to add --delete-emptydir-data in order to drain the node
kubectl drain <node-to-drain> --ignore-daemonsets --delete-emptydir-data

Mise à jour du kubelet et kubectl

Bash
1
2
3
4
5
6
7
8
9
# Upgrade the kubelet and kubectl
sudo apt-mark unhold kubelet kubectl && \
sudo apt-get update && \
sudo apt-get install -y kubelet="$K8S_VERSION-*" kubectl="$K8S_VERSION-*" && \
sudo apt-mark hold kubelet kubectl

# Restart the kubelet
sudo systemctl daemon-reload
sudo systemctl restart kubelet

Rétablir le noeud

Depuis un noeud du plan de contrôle

Bash
# Replace <node-to-uncordon> with the name of your node
kubectl uncordon <node-to-uncordon>

Vérification

Vérifier la version et le status des noeuds du cluster en exécutant la commande suivante depuis un noeud du plan de contrôle.

Bash
kubectl get node

Ressources

Documentation officielle :