Dernière étape de la préparation de votre home lab. Après avoir préparé l’environnement avec nos machines virtuelles, nous allons désormais procéder à l’installation et à la configuration de Kubernetes.
Création de la node master du cluster
Le master node du cluster Kubernetes est le point central de contrôle qui gère l’état global du cluster. Il prend des décisions sur le fonctionnement du cluster tel que la planification des pods, réponse aux défaillances, mise à l’échelle des déploiements, mises à jour progressives, gestion des secrets et des tokens d’application, application des politiques de réseau…
Le master node est le premier élément à créer pour définitle cluster Kubernetes. Pour commencer, connectez-vous à kubmaster à partir de homelabsrv :
cd kub
vagrant ssh kubmaster
Initialisation du Master K8
Lancez la commande suivante pour initialiser le master :
sudo kubeadm init --apiserver-advertise-address=192.168.56.101 --pod-network-cidr=10.10.0.0/16
Cette commande est utilisée pour initialiser le master node du cluster Kubernetes. Voici quelques détails :
--apiserver-advertise-address=192.168.56.101
: Par défaut, Kubernetes se configure en utilisant la première interface réseau disponible. Or, selon notre configuration définie par le Vagrantfile, les machines virtuelles sont reliées au réseau physique par un bridge et communiquent entre elles par le réseau virtuel 192.168.56.0/24. Cette option force donc Kubernetes à se configurer pour que les nodes communiquent via le réseau virtuel.
--pod-network-cidr=10.10.0.0/16
: Cette option détermine la plage d’adresses IP qui sera utilisée pour la communication entre les pods dans le cluster.
Nous verrons plus en détail les notions de réseau spécifiques à Kubernetes, mais pour le moment, retenez que les nœuds et les pods communiquent sur des plages de réseaux différentes.
Après avoir exécuté la commande, plusieurs informations seront affichées, et une commande commençant par kubeadm join
y sera affichée. Cette commande contient un token et servira à ajouter des nœuds ultérieurement. Conservez-la précieusement.
Configuration de kubectl
Exécutez les commandes suivantes pour configurer kubectl et vous permettre de controler le cluster depuis la ligne de commande :
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Installation du plugin réseau
Le plugin réseau de Kubernetes est un composant essentiel qui assure la communication entre les pods au sein du cluster. Il gère le routage du trafic entre les conteneurs à l’intérieur des pods, leur permettant de communiquer, quel que soit le nœud sur lequel ils sont hébergés. Le plugin réseau permet également l’isolation des réseaux, la mise en œuvre de politiques de réseau et l’intégration avec des infrastructures réseau sous-jacentes.
Appliquez le plugin réseau avec la commande suivante :
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
Vérification des pods
À ce stade, Kubernetes est en train de monter tous les pods nécessaire à la bonne gestion du cluster. Cela prend quelques instants, et vous pouvez en surveiller la progression avec la commande suivante :
watch -n 1 kubectl get pods --all-namespaces
Vous devriez voir tous les pods qui passent progressivement au status Running
. Si ce n’est pas le cas, alors vous avez un problème de configuration qu’il faut régler immédiatement avant de continuer les manipulations présentées dans cette page.
Création du premier worker node du cluster Kubernetes
Un worker node dans Kubernetes est l’endroit où les pods sont déployés et exécutés. Le master node gère et orchestre l’ensemble du cluster, en contrôlant les worker nodes qui le composent. Chaque worker node contient les outils nécessaires, tels que kubelet et containerd, pour gérer les conteneurs à l’intérieur des pods.
Connectez-vous maintenant à kubnode1 à partir de homelabsrv :
cd kub
vagrant ssh kubnode1
Initialisation du node K8
Utilisez la commande join
que vous avez notée précédemment pour ajouter ce nœud au cluster. la commande ressemble à ceci : sudo kubeadm join 192.168.56.101:6443 --token ... --discovery-token-ca-cert-hash ...
et sa syntaxe exact a été générée lors de la configuration de la master node.
Si jamais vous avez perdu la commande join
, exécutez ceci sur kubmaster pour générer un nouveau token :
kubeadm token create --print-join-command
Vérification du cluster
Vérifions d’abord que le cluster reconnaît bien les 2 nodes que l’on vient de configurer. Pour ce faire, rendez-vous sur kubmaster et exécutez la commande suivante :
kubectl get nodes
La commande doit afficher la présence des 2 nodes : kubmaster et kubnode1. Si kubnode1 est encore en cours d’initialisation, il est possible que son statut ne soit pas encore Ready
, mais en fonctionnement normal, toutes les notes doivent afficher le statut Ready
.
Vérifions à nouveau les pods avec la commande suivante :
kubectl get pods --all-namespaces
2 nouveaux pods ont été créés lors de l’ajout de la node kubnode1. Par défaut, kubectl get pods
liste les pods présents dans l’ensemble du cluster, sans indiquer sur quels nœuds ils s’exécutent. Il est possible d’afficher la liste des pods qui sont en exécution sur le nœud kubnode1 avec la commande suivante :
kubectl get pods --all-namespaces --field-selector spec.nodeName=kubnode1
Là aussi, tous les pods doivent passer progressivement au statut Running
, et la commande kubectl get nodes
doit indiquer que tous les nœuds sont Ready
. Si ce n’est pas le cas, il faut analyser et corriger le problème.
Une alternative intéressante existe avec la commande suivante, dont je vous laisse analyser le résultat par vous-même :
kubectl get pods -n kube-system -o wide
Comme vous le constatez, les 2 nodes qui ont été créées automatiquement sur kubnode1 concernent le réseau, et sont là pour gérer tout ce qui concerne la communication.
Le cluster est maintenant installé !
Félicitations pour avoir réussi l’installation de Kubernetes ! Vous avez posé les fondations solides nécessaire pour la suite de l’apprentissage. Il est maintenant temps de plonger au cœur de l’orchestration des conteneurs et de déployer vos premières applications.
Navigation
Sommaire du dossier : Apprendre et expérimenter Kubernetes à l’aide de son Home Lab
Chapitres:
- Pourquoi un home lab facilite-t-il l’apprentissage et l’utilisation de Kubernetes ?
- Choisir un mini-pc pour héberger le cluster Kubernetes de son home lab
- Comprendre Kubernetes : Glossaire des termes fondamentaux
- Configuration d’un Mini-PC pour accueillir Kubernetes : Installation d’Ubuntu Server 22.04 LTS
- Construire votre Home Lab : la création de machines virtuelles pour Kubernetes
- Précédent : Configuration votre home lab: Préparation des VMs pour le Cluster Kubernetes
- Installation des services Kubernetes sur les Machines Virtuelles