
Kubeadm est l'outil officiel d'installation et de maintenance d'un cluster basé sur la distribution Kubernetes par défaut . Les clusters créés ne se mettent pas automatiquement à niveau et la désactivation des mises à jour de packages pour les composants Kubernetes fait partie du processus de configuration. Cela signifie que vous devez migrer manuellement votre cluster lorsqu'une nouvelle version de Kubernetes arrive.
Dans cet article, vous apprendrez les étapes d'une mise à niveau de Kubernetes en parcourant une transition de la v1.24 à la v1.25 sur Ubuntu 22.04. Le processus est généralement similaire pour toute version mineure de Kubernetes, mais vous devez toujours vous référer à la documentation officielle avant de commencer, au cas où une nouvelle version comporte des exigences spécialisées.
Identifier la version précise à installer
La première étape consiste à déterminer la version vers laquelle vous allez effectuer la mise à niveau. Vous ne pouvez pas ignorer les versions mineures – passer directement de la v1.23 à la v1.25 n'est pas pris en charge, par exemple – vous devez donc choisir la version de correctif la plus récente pour la version mineure qui suit la version actuelle de votre cluster.
Vous pouvez découvrir la dernière version de correctif avec la commande suivante :
$ apt- politique de cache kubeadm | grep 1.25 1.25.1-00 500 1.25.0-00 500
Cela montre que 1.25.1-00 est la dernière version de Kubernetes v1.25. Remplacez 1.25 dans la commande par la version mineure vers laquelle vous allez migrer.
Mise à niveau du plan de contrôle
Complétez cette section sur la machine qui exécute votre plan de contrôle. Ne touchez pas encore les noeuds worker – ils peuvent continuer à utiliser leur version actuelle de Kubernetes pendant la mise à jour du plan de contrôle. Si vous avez plusieurs nœuds de plan de contrôle, exécutez cette séquence sur le premier et suivez la procédure de nœud de travail dans la section suivante sur les autres.
Mettre à jour Kubeadm
< p>Libérez d'abord la suspension du package Kubeadm et installez la nouvelle version. Spécifiez la version exacte identifiée précédemment afin qu'Apt ne récupère pas automatiquement la dernière version, ce qui pourrait être une version mineure non prise en charge.
$ sudo apt update $ sudo apt-mark unhold kubeadm $ sudo apt install -y kubeadm=1.25.1-00
Maintenant, réappliquez la mise en attente afin qu'apt upgrade ne livre pas de versions indésirables à l'avenir :
$ sudo apt-mark hold kubeadm kubeadm set on hold
Vérifiez que Kubeadm est maintenant la version attendue :
$ kubeadm version –short kubeadm version : &version.Info{Major :”1″, Minor :”25″, GitVersion :”v1.25.1″…
Créer le plan de mise à niveau
Kubeadm automatise le processus de mise à niveau du plan de contrôle. Utilisez d'abord la commande de plan de mise à niveau pour déterminer les versions vers lesquelles vous pouvez migrer. Cela vérifie votre cluster pour s'assurer qu'il peut accepter la nouvelle version.
$ sudo kubeadm upgrade plan
La sortie est assez longue mais cela vaut la peine d'inspecter de près. La première section doit indiquer que tous les composants Kubernetes seront mis à niveau vers le numéro de version que vous avez sélectionné précédemment. De nouvelles versions peuvent également être affichées pour CoreDNS et etcd.
COMPOSANT CIBLE ACTUELLE v1.24.5 v1.25.1 CoreDNS v1.8.6 v1.9.3 etcd 3.5.3-0 3.5.4-0
La fin de la sortie comprend un tableau qui présente toutes les modifications de configuration requises. Il se peut que vous deviez parfois prendre des mesures manuelles pour ajuster ces fichiers de configuration et les fournir au cluster. Reportez-vous à la documentation de votre version si vous obtenez un "oui" dans le “Mise à jour manuelle requise” colonne.
GROUPE D'API VERSION ACTUELLE VERSION PRÉFÉRÉE MISE À NIVEAU MANUEL REQUISE kubeproxy.config.k8s.io v1alpha1 v1alpha1 non kubelet.config.k8s.io v1beta1 v1beta1 non
Ce cluster est maintenant prêt à être mis à niveau. Le plan a confirmé que Kubernetes v1.25.1 est disponible et qu'aucune action manuelle n'est requise. Vérifiez que vous avez installé la bonne version de Kubeadm si aucun plan n'est produit ou si des erreurs apparaissent. Vous essayez peut-être de passer d'une version mineure à une autre.
Appliquer le plan de mise à niveau
Vous pouvez maintenant demander à Kubeadm de continuer avec appliquer le plan de mise à niveau en exécutant upgrade apply avec le numéro de version correct :
$ sudo kubeadm upgrade apply v1.25.1
Une invite de confirmation apparaîtra :
[upgrade/version] Vous avez choisi de changer la version du cluster en “v1.25.1” [upgrade/versions] Version du cluster : v1.24.5 [upgrade/versions] version de kubeadm : v1.25.1 [upgrade] Êtes-vous sûr de vouloir procéder? [y/N] :
Appuyez sur y pour continuer la mise à niveau. Le processus peut prendre plusieurs minutes pendant qu'il extrait les images des nouveaux composants et redémarre votre plan de contrôle. Vous ne pourrez pas interagir de manière fiable avec l'API de votre cluster pendant cette période, mais tous les pods en cours d'exécution devraient rester opérationnels sur vos nœuds.
Vous devriez éventuellement voir un message de réussite :
[upgrade/successful] SUCCÈS ! Votre cluster a été mis à niveau vers “v1.25.1”. Profitez !]
Le plan de contrôle a maintenant été mis à niveau.
Mise à niveau des nœuds de travail
Vous pouvez maintenant mettre à niveau vos nœuds de travail. Ces étapes doivent également être effectuées sur vos nœuds de plan de contrôle. Mettez à niveau chaque nœud dans l'ordre pour minimiser les effets de la capacité supprimée de votre cluster. Les pods seront reprogrammés vers d'autres nœuds pendant que chacun sera mis à niveau.
Commencez par vider le nœud de ses pods existants et placez un cordon autour de celui-ci. Remplacez le nom du nœud au lieu de nœud-1 dans les commandes suivantes.
$ kubectl cordon node-1 $ kubectl drain node-1
Cela expulse les pods du nœud et empêche tout nouveau d'être programmé. Le nœud est maintenant inactif dans votre cluster.
Libérez ensuite le gestionnaire de packages sur les packages kubeadm, kubectl et kubelet. Installez la nouvelle version de chacun. Les versions des trois packages doivent correspondre exactement. N'oubliez pas de définir à nouveau le statut de suspension après avoir reçu les nouvelles versions.
$ sudo apt update $ sudo apt-mark unhold kubeadm kubectl kubelet $ sudo apt install -y kubeadm=1.25.1-00 kubectl=1.25.1-00 kubelet=1.25.1-00 $ sudo apt-mark hold kubeadm kubectl kubelet < p>Utilisez ensuite la commande de nœud de mise à niveau de Kubeadm pour appliquer la mise à niveau et mettre à jour la configuration de votre nœud :
$ sudo kubeadm upgrade node
Enfin, redémarrez le service Kubelet et déconnectez le nœud. Il devrait rejoindre le cluster et commencer à accepter de nouveaux pods.
$ sudo systemctl daemon-reload $ sudo systemctl restart kubelet $ kubectl uncordon node-1
Vérification de votre cluster
Une fois que vous avez terminé votre mise à niveau, exécutez version de kubectl pour vérifier que la version active correspond à vos attentes :
$ version de kubectl –short Version client : v1.25.1 … Version serveur : v1.25.1
Vérifiez ensuite que tous vos nœuds signalent leur nouvelle version et sont entrés dans l'état Prêt :
$ kubectl get nodes -o wide NOM STATUT RÔLES ÂGE VERSION ubuntu22 Ready control-plane 70m v1.25.1
La mise à niveau est maintenant terminée.
Récupération d'un échec de mise à niveau
Parfois, une mise à niveau peut échouer même si Kubeadm planifie avec succès une voie et vérifie la santé de votre cluster. Des problèmes peuvent survenir si la mise à niveau est interrompue ou si un composant Kubernetes cesse de répondre. Kubeadm devrait automatiquement revenir à la version précédente si cela se produit.
La commande upgrade apply peut être répétée en toute sécurité pour réessayer une mise à niveau ayant échoué. Il détectera les différences entre votre cluster et la version attendue, ce qui lui permettra de tenter une récupération des échecs totaux et des mises à niveau partielles.
Lorsque la répétition de la commande ne fonctionne pas, vous pouvez essayer forcer la mise à niveau en ajoutant l'indicateur –force à la commande :
$ kubeadm upgrade apply –force
Cela permettra à la mise à niveau de se poursuivre dans les situations où les exigences manquent ou ne peuvent plus être remplies.
Lorsqu'un sinistre survient et que votre cluster semble totalement endommagé, vous devriez pouvoir le restaurer à l'aide des fichiers de sauvegarde que Kubeadm écrit automatiquement :
- Copiez le contenu de /etc/kubernetes/tmp/kubeadm -backup-etcd-<date>-<heure> dans votre répertoire /var/lib/etcd.
- Copiez le contenu de /etc/kubernetes/tmp/kubeadm-backup-manifests-<date>-<time> dans votre répertoire /etc/kubernetes/manifests.
Ces sauvegardes peuvent être utilisées pour restaurer manuellement la version précédente de Kubernetes à un état de fonctionnement.
Résumé
La mise à niveau de Kubernetes avec Kubeadm ne devrait pas être trop stressante. La majeure partie du processus est automatisée et votre implication se limite à l'installation des nouveaux packages et à la vérification du plan de mise à niveau.
Avant la mise à niveau, vous devez toujours consulter le journal des modifications de Kubernetes et toute documentation publiée par les composants que vous utilisez dans votre cluster. Les interfaces réseau des pods, les contrôleurs Ingress, les fournisseurs de stockage et d'autres modules complémentaires peuvent tous présenter des incompatibilités avec une nouvelle version de Kubernetes ou nécessiter leurs propres routines de mise à niveau.
LIRE LA SUITE
- &rsaquo ; Quel est le service de musique en streaming le moins cher ?
- › Devriez-vous acheter un Meta Quest Pro ?
- › Test de l'Apple Watch Series 8 : une expérience portable sans compromis
- › Les meilleurs routeurs maillés de 2022
- &rsaquo ; Question expliquée : contrôleurs, ponts, routeurs frontaliers, etc.
- &rsaquo ; Ces réveils sont si intelligents que vous vous sentirez mal de les avoir frappés