L’étape suivante consiste à préparer les serveurs pour l’installation de Kubernetes.
Je ne vais pas détailler la mise en oeuvre d’une VM sous vSphere, mais uniquement m’attacher à préciser quelques points et éléments de configuration nécessaire au bon fonctionnement de Kubernetes sur une plateforme vmware.
Je précise que je me suis basé sur le tutoriel suivant.
Je ne vais pas le suivre à la lettre et m’en détacher par la suite surtout au niveau de l’étape suivante qui consistera à l’installation de Kubernetes. Mais dans un premier temps, les prérequis proposés sont à mettre en oeuvre.
Il est de bon ton dans l’IT actuelle de ne plus prêter attention à la nomenclature de ses serveurs. À l’heure des microservices ou les ressources sont éphémères et en changement permanent, il n’est plus nécessaire de faire un brainstorming pour choisir le petit nom de ses machines (on passe du temps sur les tags maintenant 😊). Néanmoins s’accorder sur une nomenclature pour ses noeuds Kubernetes reste une bonne idée.
Voici les VMs que j’ai déployées
VMs |
Size |
Role |
IP |
NLBLAN001 |
1vCPU, 2GB Ram, 30 GB Disque |
LoadBalancer HA Proxy |
192.168.10.45 |
k8smst001 |
2vCPU, 2GB Ram, 32 GB Disque |
Master Kubernetes 01 |
192.168.10.70 |
k8smst002 |
2vCPU, 2GB Ram, 32 GB Disque |
Master Kubernetes 02 |
192.168.10.71 |
k8smst003 |
2vCPU, 2GB Ram, 32 GB Disque |
Master Kubernetes 03 |
192.168.10.72 |
k8swok001 |
2vCPU, 2GB Ram, 32 GB Disque |
Worker Kubernetes 01 |
192.168.10.72 |
k8swok002 |
2vCPU, 2GB Ram, 32 GB Disque |
Worker Kubernetes 02 |
192.168.10.73 |
Un premier point très important : j'ai utilisé des noms de VMs en minuscule pour les serveur K8S. Qu'il s'agisse des noms dans l'inventaire vCenter ou des hostnames au niveau OS, il est primordial d'avoir une cohérence dans les noms pour les échanges Kubernetes/vSphere. Il faut avoir une correspondance entre le nom dans le vCenter, le hostname et le nom du node dans Kubernetes. Le plus simple est de tous mettre en minuscule.
Pour cette VM par d’instruction particulière, un déploiement avec les options de bases suffiront.
Les VMs qui vont servir aux noeuds Kubernetes, master comme worker doivent avoir une configuration spécifique pour la partie disque. En effet, il est nécessaire d’activer l’option "disk.EnableUUID" à True.
L’UUID pour « Universal Unique Identifier » est une suite de caractères alphanumériques qui permet d’identifier de façon certaine chaque périphérique de stockage et de partition. Il est calculé automatiquement fonction de la configuration du serveur hôte au moment de la création ou du formatage de la partition. Dans le cas de VMWARE, cette option permet de présenter un UUID cohérent pour éviter tout problème de montage des volumes.
Il faut donc procéder aux opérations suivantes
Certains prérequis complémentaires sont nécessaires pour faire fonctionner Kubernetes
Kubernetes ne supporte pas pour le moment l’usage de la swap. Si vous souhaitez savoir pourquoi n’hésiter pas à lire le topic suivant mais en gros, dans le fonctionnement de Kubernetes les pods ne devraient jamais avoir à utiliser la swap et intégrer son support est compliqué.
La commande suivante est à passer sur chaque serveur K8S
sudo swapoff -v /swapfile
Il faut également commenter la référence à la swap dans le fichier fstab
Il est conseillé d’installer dès à present les packets suivants
net-tools
python3-pip
De même il peut être utile de déployer le package python suivant
docker-py
Il est nécessaire d’autoriser iptable à traiter les paquets traversant un pont réseau. Cela passe par l’ajout de ces deux lignes dans le fichier /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
N’oubliez pas de recharger les règles systcl via la commande sysctl -system
Pour ceux qui seront intéressés, j’ai utilisé Ansible pour automatiser le déploiement de ces prérequis. Les playbooks sont récupérables ici. Ils traitent également de l’installation de Kubernetes que l’on verra dans l’étape suivante. Attention, si vous souhaitez les utiliser, il sera nécessaire de les adapter à votre configuration et à votre inventaire.
Cette étape se termine ici par un ensemble de check à réaliser pour s’assurer d’avoir une bonne base pour la suite
- Configuration du temps : s’assurer que les serveurs sont tous à l’heure et synchronisés entre eux sur la même référence de temps. NTP est à conseiller sur ce point.
- Résolution DNS : s’assurer que chaque serveur dispose de son enregistrement DNS et que chaque serveur résolve correctement le nom de ses petits camarades
- Serveur à jour et open-vm-tools installé (si plateforme vmware comme ici)