Maintenir vos clusters Kubernetes à jour est crucial pour la sécurité et l'accès aux nouvelles fonctionnalités. Avec kubeadm et Ansible, vous pouvez automatiser le processus de montée de version de vos maîtres et nœuds de travail, réduisant les temps d'arrêt.
Prérequis
- Cluster Kubernetes déployé avec kubeadm (v1.24+).
- Un control-plane et au moins un worker.
- Ansible installé sur la machine de contrôle.
1. Préparer les playbooks Ansible
Créez upgrade-master.yml
:
- hosts: masters
become: true
tasks:
- name: Drain master node
command: kubectl drain {{ inventory_hostname }} --ignore-daemonsets --delete-local-data
- name: Upgrade kubeadm
apt:
name: kubeadm=1.25.0-00
state: present
- name: Plan upgrade
command: kubeadm upgrade plan
- name: Apply upgrade
command: kubeadm upgrade apply v1.25.0 -y
- name: Uncordon master
command: kubectl uncordon {{ inventory_hostname }}
Créez upgrade-workers.yml
:
- hosts: workers
become: true
tasks:
- name: Drain worker node
command: kubectl drain {{ inventory_hostname }} --ignore-daemonsets --delete-local-data
- name: Upgrade kubelet and kubectl
apt:
name:
- kubelet=1.25.0-00
- kubectl=1.25.0-00
state: present
- name: Restart kubelet
service:
name: kubelet
state: restarted
- name: Uncordon worker
command: kubectl uncordon {{ inventory_hostname }}
2. Exécuter les playbooks
ansible-playbook -i inventory upgrade-master.yml
ansible-playbook -i inventory upgrade-workers.yml
3. Vérification
kubectl get nodes
Assurez-vous que tous les nœuds sont à la nouvelle version et en Ready
.
4. Personnalisation et best practices
- Gérez les versions dans des variables Ansible.
- Sauvegardez l’état du cluster avant l’upgrade.
- Testez d’abord sur un environnement staging.
Conclusion
En combinant kubeadm et Ansible, vous obtenez une solution fiable pour des montées de version Kubernetes sans interruption, essentielle pour toute production.