Série de webinaires: Premiers pas avec Kubernetes

introduction

Dans le previous précédent de cette série, nous avons expliqué comment gérer des applications à conteneurs multiples avec Docker Compose. Alors que l’interface de ligne de commande Docker et Docker Compose peuvent déployer et mettre à l’échelle des conteneurs s’exécutant sur un seul ordinateur, Kubernetes est conçu pour gérer les applications à conteneurs multiples déployées sur plusieurs ordinateurs ou hôtes.

Kubernetes est un outil d’orchestration de conteneur open-source permettant de gérer des applications conteneurisées. Un Kubernetes cluster a deux composants clés: Master Nodes et Worker Nodes. Un ensemble de nœuds principaux agit en tant que plan de contrôle qui gère les nœuds de travail et les applications déployées. Les nœuds de travail sont les chevaux de travail d’un cluster Kubernetes chargés de l’exécution des applications conteneurisées.

Les nœuds principaux exposent une API via laquelle les outils de ligne de commande et les clients enrichis soumettent un job, qui contient la définition d’une application. Chaque application comprend un ou plusieurs conteneurs, les définitions de stockage et les ports internes et externes par lesquels ils sont exposés. Le plan de contrôle s’exécutant sur des nœuds principaux planifie les conteneurs dans l’un des nœuds de travail. Lorsqu’une application est mise à l’échelle, le plan de contrôle lance des conteneurs supplémentaires sur l’un des nœuds de travail disponibles.

Pour une introduction détaillée à Kubernetes, reportez-vous au tutoriel An Introduction à Kubernetes.

https://stackpoint.io [StackPointCloud] déploie un cluster Kubernetes en trois étapes à l’aide d’une interface Web. Il masque la complexité d’installation et de configuration de Kubernetes grâce à une expérience utilisateur simplifiée. DigitalOcean est l’une des plateformes cloud prises en charge par StackPoint. Les développeurs qui ne sont pas familiarisés avec l’administration et la configuration des systèmes peuvent utiliser StackPoint pour installer rapidement Kubernetes sur DigitalOcean. Pour plus de détails sur les fonctionnalités prises en charge et les tarifs, consultez leur site.

Dans ce didacticiel, vous allez configurer et configurer Kubernetes sur DigitalOcean via StackPoint et déployer une application conteneurisée sur votre cluster.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de

  • Une machine locale avec la commande + curl + installée, que vous utiliserez pour télécharger un outil de ligne de commande pour gérer votre cluster Kubernetes. La commande + curl + est déjà installée sur macOS et Ubuntu 16.04.

  • Un compte DigitalOcean. Dans ce didacticiel, vous utiliserez StackPoint pour vous connecter à votre compte DigitalOcean et approvisionner trois Droplets de 1 Go.

Étape 1 - Installation de Kubernetes

Pour démarrer l’installation de Kubernetes sur DigitalOcean, rendez-vous à l’adresse Stackpoint.io et cliquez sur le bouton de connexion.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/0ZKPzXu.png [La page Web StackPoint]

Cela vous mène à une page où vous pouvez choisir un fournisseur d’identité et vous connecter avec les informations d’identification existantes. Choisissez DigitalOcean dans la liste et connectez-vous avec votre nom d’utilisateur et votre mot de passe DigitalOcean.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/vGNs8Fb.png [Choix d’un fournisseur]

Sur la page suivante, choisissez DigitalOcean dans la liste des plates-formes cloud disponibles.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/PLSX1LC.png [Sélectionnez le fournisseur DigitalOcean]

Vous pouvez maintenant configurer le cluster. Cliquez sur le bouton EDITER pour modifier les paramètres du fournisseur DigitalOcean:

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/KwGSvAH.png [Présentation du fournisseur DigitalOcean]

Cela vous amène à l’écran Configurer le fournisseur.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/1UL1uRg.png [Page de configuration du fournisseur DigitalOcean]

Choisissez une région de votre choix dans la liste déroulante * Région *. Vous pouvez laisser les autres paramètres à leurs valeurs par défaut. Cliquez sur * Soumettre * lorsque vous avez terminé.

Sur l’écran suivant, entrez un nom de cluster de votre choix et cliquez sur * Soumettre *.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/tjZ7EM4.png [Entrez le nom du cluster]

L’installation du cluster va maintenant commencer et vous serez dirigé vers une page sur laquelle vous pourrez suivre la progression du cluster. L’installation prendra environ 15 minutes.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/LlfpVjS.png [Le statut de votre cluster]

Une fois le cluster configuré, nous pouvons configurer un outil de ligne de commande pour le gérer.

Étape 2 - Configuration de la CLI de Kubernetes

Pour parler au cluster Kubernetes exécuté dans DigitalOcean, nous avons besoin d’un outil de ligne de commande dans notre machine de développement. Nous allons utiliser + kubectl +, le CLI pour Kubernetes.

Exécutez les commandes suivantes pour installer + kubectl + à partir des serveurs de Google:

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/darwin/amd64/kubectl

Vous verrez cette sortie:

Output % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed

100 63.7M  100 63.7M    0     0  5441k      0  0:00:12  0:00:12 --:--:-- 4644k

Le binaire + kubectl + a été téléchargé dans votre répertoire actuel. Modifions les autorisations du binaire téléchargé et déplacez-le dans le répertoire + / usr / local / bin + afin que nous puissions l’exécuter n’importe où:

chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

Nous allons maintenant pointer l’application + kubectl + sur notre cluster Kubernetes. Pour cela, nous devons télécharger un fichier de configuration à partir de Stackpoint. Retournez à la page d’état du cluster dans votre navigateur. Après avoir vérifié que le cluster est prêt et stable, cliquez sur le nom du cluster, comme indiqué dans la figure suivante:

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/h84fVAg.png [Le nom du cluster]

Cliquez sur le lien * kubeconfig * dans le menu de gauche pour télécharger le fichier de configuration sur votre ordinateur local:

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/xwSsvWo.png [img]

De retour dans votre terminal, définissez la variable d’environnement + KUBECONFIG + sur le chemin du fichier téléchargé. En supposant que votre fichier soit téléchargé dans le dossier + Téléchargements + de votre répertoire personnel, vous utiliserez cette commande:

export KUBECONFIG=

Avec + kubectl configure, assurons-nous que nous pouvons communiquer avec notre cluster.

Étape 3 - Vérification de l’installation de Kubernetes

Maintenant que nous avons le cluster entièrement configuré avec le client, exécutons quelques commandes pour vérifier l’environnement.

Exécutez la commande suivante pour obtenir des informations sur le cluster.

kubectl cluster-info

Vous verrez cette sortie:

OutputKubernetes master is running at https://139.59.17.180:6443

Heapster is running at https://139.59.17.180:6443/api/v1/namespaces/kube-system/services/heapster/proxy

KubeDNS is running at https://139.59.17.180:6443/api/v1/namespaces/kube-system/services/kube-dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

La sortie confirme que le cluster fonctionne et que les nœuds principaux Kubernetes sont opérationnels.

Ensuite, vérifions la santé de tous les composants exécutés dans les nœuds principaux. Si le cluster est juste configuré, cela peut prendre un certain temps avant que tous les composants affichent un état sain. Ces composants font partie des nœuds principaux Kubernetes qui agissent en tant que plan de contrôle.

Exécutez cette commande:

kubectl get cs

Vous verrez cette sortie:

OutputNAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health": "true"}

Enfin, listons tous les nœuds du cluster Kubernetes en cours d’exécution.

kubectl get nodes

Vous verrez la sortie comme ceci:

OutputNAME                  STATUS    ROLES     AGE       VERSION
spc52y2mk3-master-1   Ready     master    29m       v1.8.5
spc52y2mk3-worker-1   Ready     <none>    22m       v1.8.5
spc52y2mk3-worker-2   Ready     <none>    22m       v1.8.5

Cela confirme que le cluster avec un nœud principal et deux nœuds de travail est prêt pour le déploiement d’applications. Nous allons donc déployer une application sur le cluster.

Étape 4 - Déploiement et accès à une application

Lançons un simple serveur Web Nginx et accédons à sa page Web par défaut à partir de notre ordinateur local. Exécutez cette commande pour extraire l’image Nginx à partir de Docker Hub et créez un déploiement appelé + myweb +:

kubectl run --image=nginx:latest myweb

Cette commande est similaire à la commande + docker run +, sauf qu’elle empaquete et déploie le conteneur dans un artefact spécifique à Kubernetes appelé Pod. Vous en apprendrez plus sur les pods dans la suite de cette série.

Lorsque vous exécutez la commande, vous verrez cette sortie:

Outputdeployment "myweb" created

Maintenant, vérifiez que le pod est créé avec le conteneur + nginx +:

kubectl get pods

Vous verrez cette sortie:

OutputNAME                     READY     STATUS    RESTARTS   AGE
myweb-59d7488cb9-jvnwn   1/1       Running   0          3m

Pour accéder au serveur Web fonctionnant à l’intérieur du pod, nous devons l’exposer à l’Internet public. Nous y parvenons avec la commande suivante:

kubectl expose pod myweb-59d7488cb9-jvnwn --port=80 --target-port=80 --type=NodePort
Outputservice "myweb-59d7488cb9-jvnwn" exposed

Le pod est maintenant exposé sur chaque nœud du cluster sur un port arbitraire. Les commutateurs + - port + et + - target-port + indiquent les ports par lesquels le serveur Web devient disponible. Le commutateur + - NodePort + garantit que nous pouvons utiliser n’importe quel nœud du cluster pour accéder à l’application.

Pour obtenir le NodePort du déploiement + myweb +, exécutez la commande suivante.

kubectl get svc myweb-59d7488cb9-jvnwn
OutputNAME                     TYPE       CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
myweb-59d7488cb9-jvnwn   NodePort   10.3.0.119   <none>        80:/TCP   6m

Dans ce cas, NodePort est le port + 31930 +. Chaque nœud de travail utilise ce port pour répondre aux requêtes HTTP. Laissez-le tester.

Utilisez la console DigitalOcean pour obtenir l’adresse IP de l’un des nœuds de travail.

image: https: //assets.digitalocean.com/articles/webinar_3_kubernetes_stackpoint/w9acP7y.png [Droplets]

Utilisez la commande + curl + pour envoyer une requête HTTP à l’un des noeuds du port + 31930 +.

curl http://:31930/

La réponse contenant la page d’accueil par défaut de Nginx s’affiche:

Output<!DOCTYPE html>
<html>
 <head>
   <title>Welcome to nginx!</title>
...
    Commercial support is available at
    <a href="http://nginx.com/">nginx.com</a>.</p>
   <p><em>Thank you for using nginx.</em></p>
 </body>
</html>

Vous avez déployé avec succès une application conteneurisée sur votre cluster Kubernetes.

Conclusion

Kubernetes est une plate-forme populaire de gestion de conteneurs. StackPoint facilite l’installation de Kubernetes sur DigitalOcean.

Dans la prochaine partie de cette série, nous explorerons plus en détail les éléments constitutifs de Kubernetes.