Retour au blog

Comment installer et utiliser Kubernetes sur Ubuntu 20.04

Comment installer et utiliser Kubernetes sur Ubuntu 20.04

Introduction

Kubernetes est un outil open-source qui est crucial pour l'orchestration de conteneurs. Kubernetes fonctionne en orchestrant et en gérant des clusters à grande échelle dans divers environnements cloud ou même sur des serveurs sur site. Un cluster est un ensemble d'hôtes destinés à exécuter des applications et des services conteneurisés. Un cluster a besoin d'un minimum de deux nœuds pour fonctionner – un maître nœud et un worker nœud. En gardant la scalabilité à l'esprit, vous avez la possibilité d'étendre le cluster avec autant de nœuds workers que nécessaire.

Un nœud dans Kubernetes fait référence à un serveur. Un nœud maître est un serveur qui gère l'état du cluster. Les nœuds workers sont des serveurs qui exécutent les charges de travail – ce sont généralement des applications et services conteneurisés.

Ce guide vous guidera à travers les étapes d'installation et de déploiement d'un cluster Kubernetes composé de deux nœuds sur Ubuntu 20.04. Comme mentionné, avoir deux nœuds est la configuration la plus basique lorsque vous travaillez avec Kubernetes. Vous avez également la possibilité d'ajouter d'autres nœuds workers une fois que vous aurez compris les bases. Nous vous montrerons ensuite comment lier les deux serveurs pour permettre au nœud maître de contrôler le nœud worker.

Pour tester notre configuration, nous allons déployer un Docker conteneur exécutant le serveur web Nginx sur le cluster. Il s'agit d'une application réelle typique de Kubernetes. Vous en apprendrez plus sur certains composants clés de Kubernetes tels que kubectl et kubeadm au fur et à mesure. Il est également conseillé de vous familiariser d'abord avec notre tutoriel sur la découverte des bases de la boîte à outils Kubernetes pour vous familiariser avec les bases de la plateforme Kubernetes.

Maintenant, commençons !

Prérequis

Vous devrez provisionner deux serveurs, fonctionnant sous Ubuntu 20.04. Pour de meilleures performances, la configuration système minimale requise pour Kubernetes est de 2 Go de RAM et 2 processeurs. Vous pouvez suivre les étapes 1 à 4 de ce tutoriel étape par étape pour vous aider à configurer votre serveur Ubuntu sur CloudSigma. Un serveur sera le nœud maître, l'autre sera le nœud worker. Nous avons judicieusement nommé nos deux serveurs kubernetes-master et kubernetes-worker. Cela facilite le suivi du tutoriel. Cependant, vous êtes libre de choisir les noms d'hôte que vous préférez.

  • Assurez-vous d'ajouter un utilisateur avec des privilèges sudo sur les deux nœuds, que nous utiliserons pour exécuter les commandes comme indiqué dans le tutoriel ci-dessus. Suivez ce tutoriel sur la configuration du fichier sudoers Linux pour obtenir des instructions.

  • Connectivité réseau – les serveurs du cluster doivent pouvoir communiquer. Lorsque vous déployez vos machines virtuelles depuis CloudSigma, elles seront connectées à Internet avec une IP publique par défaut. Si vous travaillez depuis un réseau local, vous devrez peut-être modifier votre fichier /etc/hosts dans chaque serveur et les lier de manière appropriée.

  • Vous devrez installer et activer Docker sur chacun des nœuds. Kubernetes s'appuie sur un runtime de conteneur pour exécuter des conteneurs dans des pods. Bien qu'il existe d'autres plateformes de conteneurs au choix, nous utiliserons Docker dans ce tutoriel. Docker fournira l'environnement d'exécution requis par Ubuntu. Vous pouvez suivre les étapes 1, 2 et 3 de notre tutoriel sur l'installation et l'utilisation de Docker.

Étape 1 : Installer Kubernetes

Dans cette étape, nous allons installer Kubernetes. Tout comme vous l'avez fait avec Docker dans les prérequis, vous devez exécuter les commandes sur les deux nœuds pour installer Kubernetes. Utilisez ssh pour vous connecter aux deux nœuds et continuer. Vous commencerez par installer le paquet apt-transport-https qui permet de travailler avec http et https dans les dépôts d'Ubuntu. Installez également curl car il sera nécessaire pour les étapes suivantes. Exécutez la commande suivante :

Ensuite, ajoutez la clé de signature Kubernetes aux deux nœuds en exécutant la commande :

Ensuite, nous ajoutons le dépôt Kubernetes comme source de paquets sur les deux nœuds à l'aide de la commande suivante :

Après cela, mettez à jour les nœuds :

  • Installer les outils Kubernetes

Une fois la mise à jour terminée, nous installerons Kubernetes. Cela implique d'installer les différents outils qui composent Kubernetes : kubeadm, kubelet, kubectl, et kubernetes-cni. Ces outils sont installés sur les deux nœuds. Nous définissons chaque outil ci-dessous :

  • kubelet – un agent qui s'exécute sur chaque nœud et gère la communication avec le nœud maître pour lancer les charges de travail dans le runtime de conteneur. Saisissez la commande suivante pour installer kubelet :

  • kubeadm – fait partie du projet Kubernetes et aide à initialiser un cluster Kubernetes. Saisissez la commande suivante pour installer kubeadm :

  • kubectl – l'outil en ligne de commande Kubernetes qui vous permet d'exécuter des commandes au sein des clusters Kubernetes. Exécutez la commande suivante pour installer kubectl :

  • kubernetes-cni – permet la mise en réseau au sein des conteneurs, garantissant que les conteneurs peuvent communiquer et échanger des données. Exécutez la commande suivante pour l'installer :

Optionnellement, vous pouvez installer les quatre en une seule commande :

Étape 2 : Désactivation de la mémoire Swap

Kubernetes ne peut pas fonctionner sur un système qui utilise de la mémoire swap memory. Par conséquent, elle doit être désactivée sur le nœud maître et tous les nœuds de travail. Exécutez la commande suivante pour désactiver la mémoire swap :

Cette commande désactive la mémoire swap jusqu'au redémarrage du système. Nous devons nous assurer qu'elle reste désactivée même après les redémarrages. Cela doit être fait sur le maître et tous les nœuds de travail. Nous pouvons le faire en modifiant le fichier fstab file et en commentant la ligne /swapfile avec un #. Ouvrez le fichier avec l'éditeur de texte nano en saisissant la commande suivante :

Dans le fichier, commentez la ligne swapfile comme indiqué dans la capture d'écran ci-dessous :

install Kubernetes fstab swap disable

Si vous ne voyez pas la ligne swapfile, ignorez-la simplement. Enregistrez et fermez le fichier lorsque vous avez terminé les modifications. Suivez le même processus pour les deux nœuds. Désormais, les paramètres de la mémoire swap resteront désactivés, même après le redémarrage de votre serveur.

Étape 3 : Définition de noms d'hôte uniques

Vos nœuds doivent avoir des noms d'hôte uniques pour une identification plus facile. Si vous déployez un cluster avec de nombreux nœuds, vous pouvez le configurer pour identifier des noms pour vos nœuds de travail tels que node-1, node-2, etc. Comme nous l'avons mentionné précédemment, nous avons nommé nos nœuds kubernetes-master et kubernetes-worker. Nous les avons définis lors de la création du serveur. Cependant, vous pouvez ajuster ou définir les vôtres si vous ne l'avez pas déjà fait depuis la ligne de commande. Pour ajuster le nom d'hôte sur le nœud maître, exécutez la commande suivante :

Sur le nœud de travail, exécutez la commande suivante :

Vous pouvez fermer la session de terminal actuelle et vous reconnecter en ssh au serveur pour voir les modifications.

Étape 4 : Permettre à Iptables de voir le trafic ponté

Pour que les nœuds maître et de travail voient correctement le trafic ponté, vous devez vous assurer que net.bridge.bridge-nf-call-iptables est défini sur 1 dans votre configuration. Tout d'abord, assurez-vous que le module br_netfilter est chargé. Vous pouvez le confirmer en lançant la commande :

Optionnellement, vous pouvez le charger explicitement avec la commande :

Maintenant, vous pouvez exécuter cette commande pour définir la valeur sur 1 :

Étape 5 : Modification du pilote de cgroup Docker

Par défaut, Docker s'installe avec cgroupfs comme pilote de cgroup. Kubernetes recommande que Docker devrait s'exécuter avec systemd comme pilote. Si vous ignorez cette étape et essayez d'initialiser kubeadm à l'étape suivante, vous obtiendrez l'avertissement suivant dans votre terminal :

Sur les nœuds master et worker, mettez à jour le cgroupdriver avec les commandes suivantes :

Ensuite, exécutez les commandes suivantes pour redémarrer et activer Docker au démarrage du système :

Une fois cela configuré, nous pouvons passer aux choses sérieuses, le déploiement du cluster Kubernetes !

Étape 6 : Initialisation du nœud maître (Master) Kubernetes

La première étape du déploiement d'un cluster Kubernetes consiste à démarrer le nœud master. Depuis le terminal de votre nœud master, exécutez la commande suivante pour initialiser le kubernetes-master:

Si vous exécutez la commande ci-dessus et que votre système ne répond pas aux exigences attendues, telles que la RAM ou le processeur minimum comme expliqué dans la section Prérequis, vous obtiendrez un avertissement et le cluster ne démarrera pas :

install Kubernetes InitError

Note : Si vous construisez pour la production, il est conseillé de toujours respecter la configuration minimale requise pour que Kubernetes fonctionne correctement. Cependant, si vous suivez ce tutoriel à des fins d'apprentissage, vous pouvez ajouter l'option suivante à la commande kubeadm init pour ignorer les avertissements d'erreur :
sudo kubeadm init --ignore-preflight-errors=NumCPU,Mem --pod-network-cidr=10.244.0.0/16

La capture d'écran ci-dessous montre que l'initialisation a réussi. Nous avons également ajouté une option pour spécifier le réseau de pods avec l'adresse IP 10.244.0.0. C'est l'adresse IP par défaut que kube-flannel utilise. Nous détaillerons davantage le réseau de pods à l'étape suivante.

install Kubernetes Kubeadm Init

Dans la sortie, vous pouvez voir la commande kubeadm join (nous avons masqué notre adresse IP) et un jeton unique que vous exécuterez sur le nœud worker et tous les autres nœuds workers que vous souhaitez joindre à ce cluster. Ensuite, copiez-collez cette commande car vous l'utiliserez plus tard sur le nœud worker.

Dans la sortie, Kubernetes affiche également des commandes supplémentaires que vous devez exécuter en tant qu'utilisateur standard sur le nœud master avant de commencer à utiliser le cluster. Exécutons ces commandes :

Nous avons maintenant initialisé le nœud master. Cependant, nous devons également configurer le réseau de pods sur le nœud master avant de joindre les nœuds workers.

Étape 7 : Déploiement d'un réseau de pods

Un réseau de pods facilite la communication entre les serveurs et est nécessaire au bon fonctionnement du cluster Kubernetes. Vous pouvez en savoir plus sur le Réseau de cluster Kubernetes dans la documentation officielle. Nous utiliserons le réseau de pods Flannel pour ce tutoriel. Flannel est un réseau superposé simple qui répond aux exigences de Kubernetes.

Avant de déployer le réseau de pods, nous devons vérifier l'état du pare-feu. Si vous avez activé le pare-feu après avoir suivi l'étape 5 du tutoriel sur la configuration de votre serveur Ubuntu, vous devez d'abord ajouter une règle de pare-feu pour créer des exceptions pour le port 6443 (le port par défaut pour Kubernetes). Exécutez les commandes ufw suivantes sur les nœuds master et worker :

Après cela, vous pouvez exécuter les deux commandes suivantes pour déployer le réseau de pods sur le nœud master :

Cela peut prendre de quelques secondes à une minute selon votre environnement pour charger le réseau flannel. Exécutez la commande suivante pour confirmer que tout est démarré :

La sortie de la commande devrait afficher l'état de tous les services comme étant en cours d'exécution si tout a réussi :

install Kubernetes Pod Status

Vous pouvez également afficher l' état de santé des composants à l'aide de la commande get component status :

install Kubernetes Component Status

Cette commande a une forme abrégée cs :

Component Status Short

Si vous voyez l'état « unhealthy » (non sain), modifiez les fichiers suivants et supprimez la ligne sous (spec->containers->command) contenant cette phrase - --port=0 :

Faites de même pour ce fichier :

Enfin, redémarrez le service Kubernetes :

Étape 8 : Joindre les nœuds workers au cluster Kubernetes

Avec le nœud maître Kubernetes- actif et le réseau de pods prêt, nous pouvons joindre nos nœuds workers au cluster. Dans ce tutoriel, nous n'avons qu'un seul nœud worker, nous allons donc travailler avec celui-ci. Si vous avez d'autres nœuds workers, vous pouvez toujours suivre les mêmes étapes que celles expliquées ci-dessous pour rejoindre le cluster.

Tout d'abord, connectez-vous à votre nœud worker dans une session de terminal distincte. Vous utiliserez votre commande kubeadm join qui s'est affichée dans votre terminal lorsque nous avons initialisé le nœud maître à l' Étape 6. Exécutez la commande :

Vous devriez voir une sortie similaire à la capture d'écran ci-dessous lorsqu'il aura fini de rejoindre le cluster :

Worker Join

Une fois le processus de jonction terminé, basculez vers le terminal du nœud maître et exécutez la commande suivante pour confirmer que votre nœud worker a rejoint le cluster :

Dans la capture d'écran de la sortie de la commande ci-dessus, nous pouvons voir que le nœud worker a rejoint le cluster :

install Kubernetes K8S Node Status

Étape 9 : Déploiement d'une application sur le cluster Kubernetes

À ce stade, vous avez configuré avec succès un cluster Kubernetes. Rendons le cluster utilisable en y déployant un service. Nginx is a popular web server boasting incredible speeds even with thousands of connections. Nous allons déployer le serveur web Nginx sur le cluster pour prouver que vous pouvez utiliser cette configuration dans une application réelle.

Exécutez la commande suivante sur le nœud maître pour créer un déploiement Kubernetes pour Nginx :

Vous pouvez afficher le déploiement créé en utilisant la commande describe deployment :

Nginx Deployment

Pour rendre le nginx service accessible via Internet, exécutez la commande suivante :

NodePort Svc Create

La commande ci-dessus créera un service public pour le déploiement Nginx. S'agissant d'un nodeport déploiement, Kubernetes attribue au service un port dans la plage de 32000+.

Vous pouvez obtenir les services actuels en exécutant la commande :

NodePort Svc Status

Vous pouvez voir que notre port attribué est 32264. Prenez note du port affiché dans votre terminal pour l'utiliser à l'étape suivante.

Pour vérifier que le déploiement du service Nginx est réussi, effectuez un appel curl au nœud worker depuis le master. Remplacez l'adresse IP de votre nœud worker et le port que vous avez obtenu de la commande ci-dessus :

Vous devriez voir la sortie du fichier par défaut d'Nginx index.html:

Curl Nginx Svc

Optionnellement, vous pouvez visiter la combinaison de l'adresse IP et du port du nœud worker dans votre navigateur et afficher la page d'index par défaut d'Nginx :

install Kubernetes Nginx Webpage

Vous pouvez delete un déploiement en spécifiant le nom du déploiement. Par exemple, cette commande supprimera notre déploiement :

Nous avons maintenant testé notre cluster avec succès !

Conclusion

Dans ce tutoriel, vous avez appris à installer un cluster Kubernetes sur Ubuntu 20.04. Vous avez configuré un cluster composé d'un nœud master et d'un nœud worker. Vous avez pu installer l'ensemble d'outils Kubernetes, créer un réseau de pods et joindre le nœud worker au nœud master. Nous avons également testé notre concept en effectuant un déploiement de base d'un serveur web Nginx sur le cluster. Cela devrait servir de base pour travailler avec des clusters Kubernetes sur Ubuntu.

Bien que nous n'ayons utilisé qu'un seul nœud worker, vous pouvez étendre votre cluster avec autant de nœuds que vous le souhaitez. Si vous souhaitez approfondir le DevOps avec des outils d'automatisation comme Ansible, nous avons un tutoriel qui se penche sur le provisionnement de déploiements de clusters Kubernetes avec Ansible et Kubeadm, n'hésitez pas à le consulter. Si vous voulez apprendre comment déployer une application PHP sur un cluster Kubernetes, consultez ce tutoriel.

Bonne continuation !

author

Pranay Kapgate

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.