Comment configurer des déploiements multi-nœuds avec Rancher 2.1, Kubernetes et Docker Machine sur Ubuntu 18.04

L’auteur a sélectionné Code Org pour recevoir un don dans le cadre du programme Write for DOnations .

introduction

Rancher est une plate-forme populaire de gestion de conteneurs open source. Publié au début de 2018, Rancher 2.X fonctionne sur Kubernetes et a intégré de nouveaux outils tels que la gestion multi-grappes et les pipelines CI intégrés. Outre la sécurité améliorée, l’évolutivité et les outils de déploiement simples déjà disponibles dans Kubernetes, Rancher propose une interface utilisateur graphique facilitant la gestion des conteneurs. Grâce à l’interface graphique de Rancher, les utilisateurs peuvent gérer les secrets, gérer de manière sécurisée les rôles et les autorisations, redimensionner les noeuds et les pods et configurer des équilibreurs de charge et des volumes sans recourir à un outil de ligne de commande ou à des fichiers YAML complexes.

Dans ce didacticiel, vous allez déployer un serveur multi-nœuds Rancher 2.1 à l’aide de Docker Machine sur Ubuntu 18.04. À la fin, vous serez en mesure de provisionner de nouvelles gouttelettes DigitalOcean et des conteneurs via l’interface utilisateur Rancher afin d’augmenter ou de réduire rapidement votre environnement d’hébergement.

Conditions préalables

Avant de commencer ce didacticiel, vous aurez besoin d’un compte DigitalOcean, en plus des éléments suivants:

Étape 1 - Création d’un droplet avec Docker installé

Pour démarrer et configurer Rancher, vous devez créer un nouveau Droplet avec Docker installé. Pour ce faire, vous pouvez utiliser l’image de DigitalOcean Docker.

Commencez par vous connecter à votre compte DigitalOcean et choisissez * Créer une droplet *. Ensuite, sous la section * Choisir une image *, sélectionnez l’onglet * Marketplace *. Sélectionnez * Docker 18.06.1 ~ ce ~ 3 le 18.04 *.

image: https: //assets.digitalocean.com/articles/multirancher_1804/step1a.png [Choisissez l’image Docker 18.06 dans le menu Applications en un clic]

Ensuite, sélectionnez une Droplet d’au moins * 2 Go * et choisissez une région de centre de données pour votre Droplet.

Enfin, ajoutez vos clés SSH, indiquez un nom d’hôte pour votre Droplet et appuyez sur le bouton * Créer *.

Le serveur prendra quelques minutes à approvisionner et Docker à télécharger. Une fois que Droplet est déployé avec succès, vous êtes prêt à démarrer Rancher dans un nouveau conteneur Docker.

Étape 2 - Démarrer et configurer un éleveur

La gouttelette créée à l’étape 1 exécutera Rancher dans un conteneur Docker. Dans cette étape, vous allez démarrer le conteneur Rancher et vous assurer qu’il dispose d’un certificat SSL Let’s Encrypt afin de pouvoir accéder en toute sécurité au panneau d’administration de Rancher. Let’s Encrypt est une autorité de certification automatisée à code source ouvert qui permet aux développeurs de fournir gratuitement des certificats SSL de 90 jours.

Connectez-vous à votre nouveau Droplet:

ssh root@

Pour vous assurer que Docker est en cours d’exécution, entrez:

docker -v

Vérifiez que la version de Docker indiquée correspond à vos attentes. Vous pouvez démarrer Rancher avec un Let’s Encrypt certificate déjà installé en lançant la commande suivante:

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /host/rancher:/var/lib/rancher rancher/rancher --acme-domain

L’option + - acme-domain + installe un certificat SSL de Let’s Encrypt pour s’assurer que votre administrateur Rancher est servi via HTTPS. Ce script indique également à Droplet d’extraire l’image https://hub.docker.com/r/rancher/rancher/ [+ rancher / rancher + image Docker] et de démarrer une instance de Rancher dans un conteneur qui redémarrera automatiquement tombe accidentellement. Pour faciliter la récupération en cas de perte de données, le script monte un volume sur la machine hôte (à + / host / rancher +) contenant les données Rancher.

Pour voir tous les conteneurs en cours d’exécution, entrez:

docker ps

Vous verrez une sortie semblable à celle-ci (avec un identifiant de conteneur et un nom uniques):

OutputCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                      NAMES
       rancher/rancher     "entrypoint.sh"     12 seconds ago      Up 11 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp

Si le conteneur n’est pas en cours d’exécution, vous pouvez exécuter la commande + docker run + à nouveau.

Avant de pouvoir accéder au panneau d’administration de Rancher, vous devez définir votre mot de passe administrateur et l’URL du serveur Rancher. L’interface d’administration de Rancher vous donne accès à tous vos nœuds, pods et secrets en cours d’exécution. Il est donc important que vous utilisiez un mot de passe sécurisé.

Accédez au nom de domaine qui pointe vers votre nouveau Droplet dans votre navigateur Web. La première fois que vous visiterez cette adresse, Rancher vous permettra de définir un mot de passe:

image: https: //assets.digitalocean.com/articles/multirancher_1804/step3a.png [Définissez votre mot de passe Rancher à l’aide de l’invite]

Lorsque vous êtes invité à indiquer votre * URL de serveur Rancher *, utilisez le nom de domaine pointé sur votre Droplet.

Vous avez maintenant terminé la configuration de votre serveur Rancher et vous verrez l’écran d’accueil de Rancher admin:

image: https: //assets.digitalocean.com/articles/multirancher_1804/step3b.png [Écran d’accueil de l’administrateur de l’éleveur]

Vous êtes prêt à passer à la configuration du cluster Rancher.

Étape 3 - Configuration d’un cluster avec un seul nœud

Pour utiliser Rancher, vous devez créer un cluster avec au moins un noeud. Un cluster est un groupe d’un ou plusieurs nœuds. Ce guide vous donnera plus d’informations sur l’architecture Kubernetes. Dans ce didacticiel, les nœuds correspondent aux gouttelettes que Rancher va gérer. Pods représente un groupe de conteneurs Docker en cours d’exécution dans le droplet. Chaque nœud peut exécuter plusieurs pods. À l’aide de l’interface utilisateur Rancher, vous pouvez configurer des clusters et des noeuds dans un environnement Kubernetes sous-jacent.

À la fin de cette étape, vous aurez configuré un cluster avec un seul nœud prêt à exécuter votre premier module.

Dans Rancher, cliquez sur * Ajouter un cluster *, puis sélectionnez * DigitalOcean * en tant que * fournisseur d’infrastructure *.

image: https: //assets.digitalocean.com/articles/multirancher_1804/step4a.png [Sélectionnez DigitalOcean parmi les fournisseurs d’infrastructure répertoriés]

Entrez un * Nom du cluster * et faites défiler jusqu’à la section * Groupes de nœuds *. Entrez un * préfixe de nom *, laissez le * compte * à * 1 * pour l’instant et vérifiez * etcd *, * plan de contrôle * et * travailleur *.

  • * https: //kubernetes.io/docs/concepts/overview/components/#etcd [etcd] * est le système de stockage des valeurs de clé de Kubernetes permettant de conserver l’état de votre environnement. Afin de maintenir la haute disponibilité, vous devez exécuter trois ou cinq nœuds etcd afin que votre environnement soit toujours gérable.

  • * https: //kubernetes.io/docs/concepts/#kubernetes-control-plane [Plan de contrôle] * vérifie tous les objets Kubernetes - tels que les pods - de votre environnement et les met à jour avec la configuration que vous fournissez. dans l’interface d’administration Rancher.

  • * https: //kubernetes.io/docs/concepts/architecture/nodes/ [Workers] * exécutez les charges de travail réelles et les agents de surveillance garantissant que vos conteneurs restent actifs et en réseau. Les nœuds de travail sont l’endroit où vos modules exécuteront le logiciel que vous déployez.

image: https: //assets.digitalocean.com/articles/multirancher_1804/step4b.png [Créer un pool de nœuds avec un seul nœud]

Avant de créer le cluster, cliquez sur * Ajouter un modèle de nœud * pour configurer les options spécifiques à votre nouveau nœud.

Entrez votre jeton d’accès personnel DigitalOcean dans la zone de saisie * Jeton d’accès *, puis cliquez sur * Suivant: Configurer le droplet *.

Ensuite, sélectionnez les mêmes * Région * et * Taille des gouttelettes * que l’étape 1. Pour * Image *, assurez-vous de sélectionner * Ubuntu 16.04.5 x64 *, car il existe actuellement un problème de compatibilité avec a Rancher et Ubuntu 18.04. Appuyez sur * Créer * pour enregistrer le modèle.

Enfin, cliquez sur * Créer * sur la page * Ajouter un cluster * pour lancer le processus de provisioning. Il faudra quelques minutes à Rancher pour terminer cette étape, mais vous verrez un nouveau Droplet dans votre tableau de bord DigitalOcean Droplets.

Au cours de cette étape, vous avez créé un nouveau cluster et un nouveau noeud sur lesquels vous allez déployer une charge de travail dans la section suivante.

Étape 4 - Déploiement d’un workload d’application Web

Une fois que le nouveau cluster et le nouveau nœud sont prêts, vous pouvez déployer votre premier pod dans une charge de travail. Un Kubernetes Pod est la plus petite unité de travail disponible pour Kubernetes et, par extension, Rancher. Les charges de travail décrivent un seul groupe de modules que vous déployez ensemble. Par exemple, vous pouvez exécuter plusieurs pods de votre serveur Web dans un seul workload pour vous assurer que si un pod ralentit avec une requête particulière, les autres instances peuvent gérer les requêtes entrantes. Dans cette section, vous allez déployer une image Nginx Hello World sur un seul module.

Survolez * Global * dans l’en-tête et sélectionnez * Par défaut *. Cela vous amènera au tableau de bord du projet * Par défaut *. Vous allez vous concentrer sur le déploiement d’un seul projet dans ce didacticiel, mais à partir de ce tableau de bord, vous pouvez également créer plusieurs projets pour créer des environnements d’hébergement en conteneur isolés.

Pour commencer à configurer votre premier pod, cliquez sur * Deploy *.

Entrez un * Nom * et mettez + nginxdemos / hello + dans le champ * Image de Docker *. Ensuite, mappez le port * 80 * du conteneur sur le port * 30000 * des nœuds hôtes. Cela garantira que les pods que vous déployez sont disponibles sur chaque nœud sur le port 30000. Vous pouvez laisser * Protocol * défini sur * TCP * et la liste déroulante suivante sous le nom * NodePort *.

image: https: //assets.digitalocean.com/articles/multirancher_1804/step5b.png [Le formulaire de saisie pour le déploiement d’un workload]

Pour lancer le module, faites défiler vers le bas et cliquez sur * Lancer *.

Rancher vous ramènera à la page d’accueil du projet par défaut et votre pod sera prêt en quelques secondes. Cliquez sur le lien * 30000 / tcp * situé juste en dessous du nom du workload. Rancher ouvrira un nouvel onglet contenant des informations sur l’environnement du conteneur en cours d’exécution.

image: https: //assets.digitalocean.com/articles/multirancher_1804/step5c.png [Adresse du serveur, nom du serveur et autre sortie du conteneur NGINX en cours d’exécution]

L’adresse * du serveur * et le port que vous voyez sur cette page sont ceux du réseau Docker interne et non l’adresse IP publique que vous voyez dans votre navigateur. Cela signifie que Rancher fonctionne et achemine le trafic de + http: //: 30000 / + vers la charge de travail comme prévu.

À ce stade, vous avez déployé avec succès votre premier workload d’un pod sur un seul nœud Rancher. Ensuite, vous verrez comment adapter votre environnement Rancher.

Étape 5 - Mise à l’échelle des nœuds et des pods

Rancher vous propose deux méthodes pour faire évoluer vos ressources d’hébergement: augmenter le nombre de pods dans votre charge de travail ou augmenter le nombre de nœuds dans votre cluster.

L’ajout de pods à votre charge de travail donnera à votre application davantage de processus en cours d’exécution. Cela lui permettra de gérer davantage de trafic et de déployer des déploiements sans interruption de service, mais chaque nœud ne peut gérer qu’un nombre fini de modules. Une fois que tous vos noeuds ont atteint leur limite de pod, vous devrez augmenter le nombre de noeuds si vous souhaitez continuer à passer à l’échelle.

Une autre considération est que bien que l’augmentation des pods soit généralement gratuite, vous devrez payer pour chaque nœud que vous ajoutez à votre environnement. Dans cette étape, vous allez mettre à l’échelle les nœuds et les pods, puis ajouter un autre nœud à votre cluster Rancher.

Accédez à la page d’accueil du cluster de votre installation Rancher en sélectionnant * Cluster: * dans la barre de navigation supérieure. Cliquez ensuite sur * Nœuds * dans la barre de navigation supérieure.

image: https: //assets.digitalocean.com/articles/multirancher_1804/step6a.png [Utilisez la liste déroulante de la barre de navigation supérieure pour sélectionner votre cluster]

Cette page indique que vous avez actuellement un nœud en cours d’exécution dans le cluster. Pour ajouter plus de nœuds, cliquez sur * Editer le cluster *, puis faites défiler jusqu’à la section * Pools de nœuds * en bas de la page. Cliquez sur * Ajouter un groupe de noeuds *, entrez un préfixe et cochez la case * Travailleur *. Cliquez sur * Enregistrer * pour mettre à jour le cluster.

image: https: //assets.digitalocean.com/articles/multirancher_1804/step6b.png [Ajouter un pool de noeuds en tant que travailleur uniquement]

En 2 à 5 minutes, Rancher fournira un deuxième droplet et indiquera le nœud comme étant * Actif * dans le tableau de bord du cluster. Ce deuxième nœud est uniquement un opérateur, ce qui signifie qu’il n’exécutera pas les conteneurs Rancher, etc ou Control Plane. Cela donne au travailleur plus de capacité pour exécuter des charges de travail.

Lorsque le deuxième nœud est prêt, vous pourrez voir la charge de travail que vous avez déployée à l’étape précédente sur ce nœud en naviguant jusqu’à «+ http: //: 30000 / +» dans votre navigateur.

La mise à l’échelle des nœuds vous donne plus de Droplets sur lesquels distribuer vos charges de travail, mais vous pouvez également exécuter un plus grand nombre d’instances de chaque pod dans une charge de travail. Pour ajouter plus de pods, retournez à la page de projet * Default *, appuyez sur la flèche située à gauche de votre charge de travail ++, puis cliquez deux fois sur * + * pour ajouter deux pods supplémentaires.

image: https: //assets.digitalocean.com/articles/multirancher_1804/step6c.png [Exécution de trois pods Hello World dans un workload]

Rancher déploiera automatiquement plus de pods et distribuera les conteneurs en cours d’exécution sur chaque nœud en fonction de la disponibilité.

Vous pouvez maintenant redimensionner vos nœuds et vos pods pour répondre aux besoins de votre application.

Conclusion

Vous avez maintenant configuré des déploiements multi-nœuds à l’aide de Rancher 2.1 sur Ubuntu 18.04, et avez mis à niveau deux nœuds en cours d’exécution et plusieurs pods au sein d’un workload. Vous pouvez utiliser cette stratégie pour héberger et mettre à l’échelle tout type de conteneur Docker que vous devez exécuter dans votre application et utiliser le tableau de bord et les alertes de Rancher pour vous aider à optimiser les performances de vos charges de travail et de vos nœuds au sein de chaque cluster.