Tutoriels

Cette section de la documentation de Kubernetes contient des tutoriels.

Un tutoriel montre comment atteindre un objectif qui est plus grand qu'une simple tâche. Il contient différentes sections, et une section contient différentes étapes.

Avant d'explorer chacun des tutoriels, il peut-être utile de garder un signet pour le Glossaire standardisé pour pouvoir le consulter plus facilement par la suite.

Elémentaires

Configuration

Applications Sans États (stateless applications)

Applications Avec États (stateful applications)

Clusters

Services

A suivre

Si vous voulez écrire un tutoriel, regardez la section des modèles de page de tutoriel dans l'Utilisation des modèles de pages .

1 - Bienvenue sur Minikube

Ce tutoriel vous montre comment exécuter une application exemple sur Kubernetes en utilisant minikube. Le tutoriel fournit une image de conteneur qui utilise NGINX pour renvoyer toutes les requêtes.

  • Déployer une application exemple sur minikube.
  • Exécuter l'application.
  • Afficher les journaux de l'application.

Ce tutoriel suppose que vous avez déjà configuré minikube. Voir Étape 1 dans [minikube start](https://minikube.pour les instructions d'installation installation instructions.

Vous devez également installer kubectl. Voir Installer les outils pour les instructions d'installation.

Créer un cluster minikube

minikube start

Ouvrir le Tableau de bord

Ouvrez le tableau de bord Kubernetes. Vous pouvez le faire de deux façons différentes :

Ouvrez un nouveau terminal, et exécutez:

# Démarrez un nouveau terminal et laissez-le en cours d'exécution..
minikube dashboard

Maintenant, revenez au terminal où vous avez exécuté minikube start.

Si vous ne souhaitez pas que minikube ouvre un navigateur pour vous, exécutez la sous-commande dashboard avec le drapeau --url. minikube affiche une URL que vous pouvez ouvrir dans le navigateur de votre choix.

Ouvrez un nouveau terminal et exécutez:

# Démarrez un nouveau terminal et laissez-le en cours d'exécution.
minikube dashboard --url

Maintenant, vous pouvez utiliser cette URL et revenir au terminal où vous avez exécuté minikube start.

Créer un Deployment

Un Pod Kubernetes est un groupe de un ou plusieurs conteneurs, liés ensemble pour les besoins de l'administration et du réseau. Le Pod de ce tutoriel n'a qu'un seul conteneur. Un Deployment Kubernetes vérifie l'état de santé de votre Pod et redémarre le conteneur du Pod s'il se termine. Les Deployments sont la méthode recommandée pour gérer la création et la mise à l'échelle des Pods.

  1. Utilisez la commande kubectl create pour créer un Deployment qui gère un Pod. Le Pod exécute un conteneur basé sur l'image Docker fournie.

    # Exécutez une image de conteneur de test qui inclut un serveur web
    kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
    
  2. Afficher le Deployment:

    kubectl get deployments
    

    La sortie ressemble à:

    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1/1     1            1           1m
    

    (Il peut s'écouler un certain temps avant que le pod ne soit disponible. Si vous voyez "0/1", réessayez dans quelques secondes.)

  3. Afficher le Pod:

    kubectl get pods
    

    La sortie ressemble à:

    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
    
  4. Afficher les événements du cluster:

    kubectl get events
    
  5. Afficher la configuration kubectl:

    kubectl config view
    
  6. Afficher les journaux de l'application pour un conteneur dans un pod (remplacez le nom du pod par celui que vous avez obtenu avec la commande kubectl get pods).

    kubectl logs hello-node-5f76cf6ccf-br9b5
    

    La sortie ressemble à:

    I0911 09:19:26.677397       1 log.go:195] Started HTTP server on port 8080
    I0911 09:19:26.677586       1 log.go:195] Started UDP server on port  8081
    

Créer un Service

Par défaut, le Pod est accessible uniquement par son adresse IP interne au sein du réseau Kubernetes. Pour rendre le conteneur hello-node accessible depuis l'extérieur du réseau virtuel Kubernetes, vous devez exposer le Pod en tant que Kubernetes Service.

  1. Exposez le Pod au réseau public en utilisant la commande kubectl expose:

    kubectl expose deployment hello-node --type=LoadBalancer --port=8080
    

    Le drapeau --type=LoadBalancer indique que vous souhaitez exposer votre Service en dehors du cluster.

    Le code de l'application à l'intérieur de l'image de test ne répond qu'aux requêtes sur le port TCP 8080. Si vous avez utilisé kubectl expose pour exposer un port différent, les clients ne pourront pas se connecter à ce port.

  2. Afficher le Service que vous avez créé:

    kubectl get services
    

    La sortie ressemble à:

    NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    hello-node   LoadBalancer   10.108.144.78   <pending>     8080:30369/TCP   21s
    kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          23m
    

    Sur les fournisseurs de cloud qui prennent en charge les équilibreurs de charge, Une adresse IP externe sera provisionnée pour accéder au Service. Sur minikube, le type LoadBalancer rend le Service accessible via la commande minikube service.

  3. Exécutez la commande suivante:

    minikube service hello-node
    

    Cette commande ouvre une fenêtre de navigateur qui sert votre application et affiche la réponse de l'application.

Activer les extensions

La commande minikube inclut un ensemble intégré d'addons qui peuvent être activés, désactivés et ouverts dans l'environnement local Kubernetes.

  1. Liste des extensions pris en charge actuellement:

    minikube addons list
    

    La sortie ressemble à:

    addon-manager: enabled
    dashboard: enabled
    default-storageclass: enabled
    efk: disabled
    freshpod: disabled
    gvisor: disabled
    helm-tiller: disabled
    ingress: disabled
    ingress-dns: disabled
    logviewer: disabled
    metrics-server: disabled
    nvidia-driver-installer: disabled
    nvidia-gpu-device-plugin: disabled
    registry: disabled
    registry-creds: disabled
    storage-provisioner: enabled
    storage-provisioner-gluster: disabled
    
  2. Activer une extension, par exemple, metrics-server:

    minikube addons enable metrics-server
    

    La sortie ressemble à:

    The 'metrics-server' addon is enabled
    
  3. Afficher le Pod et le Service que vous avez créés en installant cette extension:

    kubectl get pod,svc -n kube-system
    

    La sortie devrait être simulaire à :

    NAME                                        READY     STATUS    RESTARTS   AGE
    pod/coredns-5644d7b6d9-mh9ll                1/1       Running   0          34m
    pod/coredns-5644d7b6d9-pqd2t                1/1       Running   0          34m
    pod/metrics-server-67fb648c5                1/1       Running   0          26s
    pod/etcd-minikube                           1/1       Running   0          34m
    pod/influxdb-grafana-b29w8                  2/2       Running   0          26s
    pod/kube-addon-manager-minikube             1/1       Running   0          34m
    pod/kube-apiserver-minikube                 1/1       Running   0          34m
    pod/kube-controller-manager-minikube        1/1       Running   0          34m
    pod/kube-proxy-rnlps                        1/1       Running   0          34m
    pod/kube-scheduler-minikube                 1/1       Running   0          34m
    pod/storage-provisioner                     1/1       Running   0          34m
    
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/metrics-server         ClusterIP   10.96.241.45    <none>        80/TCP              26s
    service/kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP       34m
    service/monitoring-grafana     NodePort    10.99.24.54     <none>        80:30002/TCP        26s
    service/monitoring-influxdb    ClusterIP   10.111.169.94   <none>        8083/TCP,8086/TCP   26s
    
  4. Vérifier la sortie de metrics-server:

    kubectl top pods
    

    La sortie ressemble à:

    NAME                         CPU(cores)   MEMORY(bytes)   
    hello-node-ccf4b9788-4jn97   1m           6Mi             
    

    Si vous voyez le message suivant, attendez un peu et réessayez:

    error: Metrics API not available
    
  5. Désactiver metrics-server:

    minikube addons disable metrics-server
    

    La sortie ressemble à:

    metrics-server was successfully disabled
    

Nettoyage

Vous pouvez maintenant nettoyer les ressources que vous avez créées dans votre cluster:

kubectl delete service hello-node
kubectl delete deployment hello-node

Si nécessaire, arrêtez la machine virtuelle Minikube (VM)

minikube stop

Si nécessaire, effacez la VM Minikube:

# Facultatif
minikube delete

Si vous souhaitez à nouveau utiliser minikube pour en apprendre davantage sur Kubernetes, vous n'avez pas besoin de le supprimer.

Conclusion

Cette page a couvert les aspects de base pour mettre en route un cluster minikube. Vous êtes maintenant prêt à déployer des applications.

A suivre

2 - Apprendre les bases de Kubernetes

Les bases de Kubernetes

Ce tutoriel offre une présentation des bases du système d’orchestration de cluster Kubernetes. Chaque module contient des informations de base sur les principales caractéristiques et concepts de Kubernetes, ainsi qu'un didacticiel en ligne interactif. Ces tutoriels interactifs vous permettent de gérer vous-même un cluster simple et ses applications conteneurisées.

À l'aide des didacticiels interactifs, vous pouvez apprendre à:

  • Déployer une application conteneurisée sur un cluster
  • Passage à l'échelle du déploiement
  • Mettre à jour l'application conteneurisée avec une nouvelle version du logiciel
  • Déboguer l'application conteneurisée

Les didacticiels utilisent Katacoda pour exécuter un navigateur virtuel dans votre navigateur Web, qui exécute Minikube, un déploiement local à petite échelle de Kubernetes pouvant être exécuté n’importe où. Il n'est pas nécessaire d'installer un logiciel ou de configurer quoi que ce soit; chaque didacticiel interactif s’exécute directement à partir de votre navigateur Web.


Qu'est-ce que Kubernetes peut faire pour vous?

Avec les services Web modernes, les utilisateurs s'attendent à ce que les applications soient disponibles 24 heures sur 24, 7 jours sur 7 et les développeurs prévoient de déployer de nouvelles versions de ces applications plusieurs fois par jour. La conteneurisation aide les progiciels à atteindre ces objectifs, en permettant aux applications d'être publiées et mises à jour de manière simple et rapide sans temps d'arrêt. Kubernetes vous aide à vous assurer que ces applications conteneurisées s'exécutent où et quand vous le souhaitez, et les aide à trouver les ressources et les outils dont elles ont besoin pour travailler. Kubernetes est une plate-forme open source prête pour la production, conçue avec l'expérience accumulée de Google dans l'orchestration de conteneurs, associée aux meilleures idées de la communauté.

2.1 - Créer un cluster

2.1.1 - Utiliser Minikube pour créer un cluster

Objectifs

  • Découvrez ce qu'est un cluster Kubernetes.
  • Apprenez ce qu'est Minikube.
  • Démarrez un cluster Kubernetes à l'aide d'un terminal en ligne.

Kubernetes Clusters

Kubernetes coordonne un groupe d'ordinateurs hautement disponibles qui sont connectés pour fonctionner comme une seule et même unité. Les abstractions de Kubernetes vous permettent de déployer des applications conteneurisées dans un cluster sans les lier spécifiquement à des ordinateurs individuels. Pour utiliser ce nouveau modèle de déploiement, les applications doivent être empaquetées de manière à les dissocier des hôtes individuels: elles doivent être conteneurisées. Les applications conteneurisées sont plus flexibles et disponibles que dans les modèles de déploiement précédents, dans lesquels les applications étaient installées directement sur des machines spécifiques sous la forme de packages profondément intégrés à l'hôte. Kubernetes automatise plus efficacement la distribution et la planification des conteneurs d'applications dans un cluster. Kubernetes est une plate-forme open source prête pour la production.

Un cluster Kubernetes est constitué de deux types de ressources:

  • Le maître coordonne le cluster.
  • Les nœuds sont les serveurs qui exécutent des applications.

Sommaire:

  • Kubernetes cluster
  • Minikube

Kubernetes est une plate-forme open source pour la production qui orchestre le placement (planification) et l'exécution de conteneurs d'applications à l'intérieur et à travers des clusters d'ordinateur.


Schéma du Cluster


Le maître est responsable de la gestion du cluster. Le maître coordonne toutes les activités de votre cluster, telles que la planification des applications, la gestion de l'état souhaité des applications, la mise à l'échelle des applications et le déploiement de nouvelles mises à jour.

Un nœud est une machine virtuelle ou un ordinateur physique servant d’ordinateur de travail dans un cluster Kubernetes. Chaque nœud est doté d’un Kubelet, qui est un agent permettant de gérer le nœud et de communiquer avec le maître Kubernetes. Le nœud doit également disposer d'outils permettant de gérer les opérations de conteneur, telles que Docker ou rkt. Un cluster Kubernetes qui gère le trafic de production doit comporter au moins trois nœuds.

Les maîtres gèrent le cluster et les nœuds sont utilisés pour héberger les applications en cours d'exécution.

Lorsque vous déployez des applications sur Kubernetes, vous indiquez au maître de démarrer les conteneurs d'applications. Le maître planifie l'exécution des conteneurs sur les nœuds du cluster. Les nœuds communiquent avec le maître à l'aide de l'API Kubernetes , que le maître expose. Les utilisateurs finaux peuvent également utiliser l'API Kubernetes directement pour interagir avec le cluster.

Un cluster Kubernetes peut être déployé sur des machines physiques ou virtuelles. Pour démarrer avec le développement de Kubernetes, vous pouvez utiliser Minikube. Minikube est une implémentation Kubernetes légère qui crée une machine virtuelle sur votre machine locale et déploie un cluster simple contenant un seul nœud. Minikube est disponible pour les systèmes Linux, macOS et Windows. La CLI Minikube fournit des opérations d’amorçage de base permettant d’utiliser votre cluster, notamment les fonctions de démarrage, d’arrêt, de statut et de suppression. Pour ce tutoriel, toutefois, vous utiliserez un terminal en ligne fourni avec Minikube pré-installé.

Maintenant que vous savez ce qu'est Kubernetes, allons au didacticiel en ligne et commençons notre premier cluster!


2.1.2 - Didacticiel interactif - Création d'un cluster

Pour interagir avec le terminal, veuillez utiliser la version bureau / tablette.

2.2 - Déployer une application

2.2.1 - Utiliser kubectl pour créer un déploiement

Objectifs

  • En savoir plus sur les déploiements d'applications.
  • Déployez votre première application sur Kubernetes avec kubectl.

Déploiements Kubernetes

Une fois que vous avez un cluster Kubernetes en cours d'exécution, vous pouvez déployer vos applications conteneurisées par dessus. Pour ce faire, vous créez une configuration de Déploiement (Deployments) Kubernetes. Le déploiement instruit Kubernetes de comment créer et mettre à jour des instances de votre application. Une fois que vous avez créé un déploiement, le plannificateur de Kubernetes (kube-scheduler) planifient les instanciations d'application sur des nœuds du cluster.

Une fois les instances d’application créées, un contrôleur de déploiement Kubernetes surveille en permanence ces instances. Si le nœud hébergeant une instance tombe en panne ou est supprimé, le contrôleur de déploiement remplace l'instance par une instance située sur un autre nœud du cluster. Ceci fournit un mécanisme d'auto-réparation pour faire face aux pannes ou à la maintenance de la machine.

Dans le monde de pré-orchestration, les scripts d'installation étaient souvent utilisés pour démarrer des applications, mais ils ne permettaient pas une récupération après une panne d'ordinateur. En créant et en maintenant vos instances d’application sur plusieurs nœuds, les Déploiements Kubernetes offre une approche fondamentalement différente de la gestion des applications.

Sommaire:

  • Déploiements
  • Kubectl

Un déploiement est responsable de la création et de la mise à jour des instances de votre application.


Déploiement de votre première application sur Kubernetes


Vous pouvez créer et gérer un déploiement à l'aide de l'interface de ligne de commande, Kubectl.

Kubectl utilise l'API Kubernetes pour interagir avec le cluster. Dans ce module, vous apprendrez les commandes Kubectl les plus courantes nécessaires à la création de déploiements exécutant vos applications sur un cluster Kubernetes.

Lorsque vous créez un déploiement, vous devez spécifier l'image de conteneur de votre application et le nombre de réplicas que vous souhaitez exécuter. Vous pouvez modifier ces informations ultérieurement en mettant à jour votre déploiement.; Modules 5 et 6 du bootcamp, expliquez comment vous pouvez faire évoluer et mettre à jour vos déploiements.

Les applications doivent être regroupées dans l’un des formats de conteneur pris en charge pour pouvoir être déployées sur Kubernetes.

Pour notre premier déploiement, nous utiliserons une application Node.js intégrée dans un conteneur Docker. Pour créer l'application Node.js et déployer le conteneur Docker, suivez les instructions du Tutoriel Hello Minikube.

Maintenant que vous savez ce que sont les déploiements, allons au didacticiel en ligne et déployons notre première application!


2.2.2 - Tutoriel interactif - Déploiement d'une application


Pour interagir avec le terminal, veuillez utiliser la version bureau / tablette.

2.3 - Explorez vos applications

2.3.1 - Affichage des pods et des nœuds

Objectifs

  • En savoir plus sur les pods Kubernetes.
  • En savoir plus sur les nœuds Kubernetes.
  • Dépannez les applications déployées.

Pods de Kubernetes

Lorsque vous avez créé un déploiement dans le Module 2, Kubernetes a créé un Pod pour héberger votre instance d'application. Un pod est une abstraction Kubernetes qui représente un groupe d'un ou plusieurs conteneurs d'application (tels que Docker), et certaines ressources partagées pour ces conteneurs. Ces ressources comprennent:

  • Stockage partagé, en tant que Volumes
  • Mise en réseau, en tant qu'adresse IP d'un unique cluster
  • Informations sur l'exécution de chaque conteneur, telles que la version de l'image du conteneur ou les ports spécifiques à utiliser

Un pod modélise un "hôte logique" spécifique à l'application et peut contenir différents conteneurs d'applications qui sont relativement étroitement couplés. Par exemple, un pod peut inclure à la fois le conteneur avec votre application Node.js ainsi qu'un conteneur différent qui alimente les données à être publiées par le serveur Web Node.js. Les conteneurs d'un pod partagent une adresse IP et un espace de port, sont toujours co-localisés et co-planifiés, et exécutés dans un contexte partagé sur le même nœud.

Les pods sont l'unité atomique de la plate-forme Kubernetes. Lorsque nous créons un déploiement sur Kubernetes, ce déploiement crée des pods avec des conteneurs à l'intérieur (par opposition à la création directe de conteneurs). Chaque pod est lié au nœud où il est planifié et y reste jusqu'à la résiliation (selon la politique de redémarrage) ou la suppression. En cas de défaillance d'un nœud, des pods identiques sont programmés sur d'autres nœuds disponibles dans le cluster.

Sommaire:

  • Pods
  • Nœuds
  • Commandes principales de Kubectl

Un pod est un groupe d'un ou plusieurs conteneurs applicatifs (tels que Docker) et comprend un stockage partagé (volumes), une adresse IP et des informations sur la façon de les exécuter.


Aperçu des Pods


Nœuds

Un Pod s'exécute toujours sur un Nœud. Un nœud est une machine de travail dans Kubernetes et peut être une machine virtuelle ou physique, selon le cluster. Chaque nœud est géré par le planificateur. Un nœud peut avoir plusieurs pods, et le planificateur Kubernetes gère automatiquement la planification des pods sur les nœuds du cluster. La planification automatique du planificateur tient compte des ressources disponibles sur chaque nœud.

Chaque nœud Kubernetes exécute au moins:

  • Kubelet, un processus responsable de la communication entre le planificateur Kubernetes et le nœud ; il gère les Pods et les conteneurs s'exécutant sur une machine.
  • Un environnement d'exécution de conteneur (comme Docker) chargé d'extraire l'image du conteneur d'un registre, de décompresser le conteneur et d'exécuter l'application.

Les conteneurs ne doivent être planifiés ensemble dans un seul pod que s'ils sont étroitement couplés et doivent partager des ressources telles que le disque.


Aperçu des Nœuds


Dépannage avec kubectl

Dans le module 2, vous avez utilisé l'interface de ligne de commande Kubectl. Vous continuerez à l'utiliser dans le module 3 pour obtenir des informations sur les applications déployées et leurs environnements. Les opérations les plus courantes peuvent être effectuées avec les commandes kubectl suivantes:

  • kubectl get - liste les ressources
  • kubectl describe - affiche des informations détaillées sur une ressource
  • kubectl logs - imprime les journaux d'un conteneur dans un pod
  • kubectl exec - exécute une commande sur un conteneur dans un pod

Vous pouvez utiliser ces commandes pour voir quand les applications ont été déployées, quels sont leurs statuts actuels, où elles s'exécutent et quelles sont leurs configurations.

Maintenant que nous en savons plus sur nos composants de cluster et la ligne de commande, explorons notre application.

Un nœud est une machine de travail dans Kubernetes et peut être une machine virtuelle ou une machine physique, selon le cluster. Plusieurs pods peuvent s'exécuter sur un nœud.


2.4 - Rendre publique votre application

2.5 - Mise à l'échelle des applications

2.6 - Mise à jour des applications

3 - Formations en ligne

4 - Configuration

5 - Applications sans états

6 - Applications avec états

7 - Clusters

8 - Services