L'orchestration d'applications conteneurisées est devenue une pierre angulaire de la livraison logicielle moderne. Si Docker simplifie l'emballage des applications, Kubernetes (souvent abrégé K8s) fournit l'infrastructure robuste nécessaire pour gérer, mettre à l'échelle et orchestrer ces conteneurs au sein d'un cluster de machines. Pour les administrateurs système et les développeurs qui privilégient un environnement stable basé sur Debian, Ubuntu reste le choix privilégié pour héberger des clusters Kubernetes. Ce guide détaille le processus technique de déploiement d'un plan de contrôle haute disponibilité et de nœuds de travail sur Ubuntu 20.04 LTS ou 22.04 LTS.
Prérequis et préparation du système
Avant de procéder à l'installation, assurez-vous de disposer d'au moins deux serveurs Ubuntu (un nœud maître/plan de contrôle et un ou plusieurs nœuds de travail) avec un accès SSH. Il est fortement recommandé de désactiver les outils de pare-feu pour éviter les interférences pendant la configuration, ou de configurer des ports spécifiques pour le trafic Kubernetes. Les étapes suivantes doivent être effectuées sur tous les nœuds de votre cluster.
D'abord, désactivez l'espace d'échange (Swap), car Kubernetes nécessite une allocation mémoire contiguë et ne peut pas fonctionner avec le swap activé :
sudo swapoff -a
# Pour rendre cela permanent, commentez la ligne de swap dans /etc/fstab
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
Ensuite, chargez les modules noyau nécessaires. Kubernetes repose sur overlay pour le stockage et br_netfilter pour le réseau.
cat <
Pour garantir un bon fonctionnement du réseau, définissez les paramètres sysctl afin que les ponts (bridges) voient le trafic et que le transfert IP soit activé :
cat <
Installation du runtime conteneur et de Kubelet
Kubernetes ne gère pas lui-même le runtime conteneur, mais s'appuie sur des runtimes externes tels que containerd, CRI-O ou Docker. Nous utiliserons containerd car il s'agit de la norme actuelle recommandée par l'équipe SIG-Node de Kubernetes.
Commencez par installer les dépendances et ajouter le dépôt APT Kubernetes. Cela garantit que vous téléchargez les packages directement depuis le canal officiel K8s plutôt que depuis les dépôts Ubuntu par défaut, qui peuvent héberger des versions plus anciennes.
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
# Ajouter la clé GPG Kubernetes
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# Ajouter le dépôt
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
# Installer les packages
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Initialisation du cluster
Maintenant que tous les composants sont installés, connectez-vous à votre nœud maître principal. Utilisez kubeadm init pour amorcer le cluster. Si votre cluster se trouve derrière un proxy ou utilise un CIDR de pod spécifique, vous devrez peut-être ajuster les arguments.
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Une fois l'initialisation terminée avec succès, vous verrez un message contenant une commande kubeadm join. Copiez ce jeton ; vous en aurez besoin pour ajouter les nœuds de travail au cluster. Pour commencer à utiliser le cluster en tant qu'utilisateur standard, exécutez les commandes suivantes :
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Déploiement d'un réseau de pods
Kubernetes nécessite un plugin d'interface réseau de conteneur (CNI) pour permettre aux pods de communiquer entre eux à travers les nœuds. Nous déploierons Flannel, un réseau overlay simple et populaire.
kubectl apply -f https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml
Vérifiez que tous les nœuds sont dans l'état Ready (Prêt) à l'aide de :
kubectl get nodes
Conclusion
Le déploiement de Kubernetes sur Ubuntu est un processus simple lorsqu'on suit les directives officielles et qu'on adopte une approche systématique de la configuration du système. En désactivant le swap, en chargeant les modules noyau appropriés et en utilisant le dépôt APT officiel de Kubernetes, vous établissez une base solide pour des charges de travail de niveau production. N'oubliez pas de sécuriser votre cluster en gérant les jetons, en configurant RBAC et en mettant régulièrement à jour les logiciels de vos nœuds. Votre cluster étant opérationnel, vous êtes maintenant prêt à déployer votre première architecture de microservices.