Découverte de Kubernetes

Explication des concepts de base de Kubernetes

Objectives

After completing this lesson, you will be able to:
  • Définir Kubernetes
  • Décrire les défis que Kubernetes relève et résout
  • Liste des six principales caractéristiques de Kubernetes

Scénario d'utilisation : concepts de base de Kubernetes

Une entreprise exploite une variété d'applications sur ses propres systèmes auto-gérés. Le problème, c'est qu'ils exécutent une énorme charge de travail d'applications sans utiliser efficacement leurs ressources. Ils recherchent une solution pour gérer leurs applications et leurs ressources plus efficacement sur une plateforme évolutive et fiable.

L'entreprise considère Kubernetes géré par SAP qui propose SAP BTP, exécution Kyma comme solution à son problème. Ils peuvent suivre ce Learning Journey pour en savoir plus sur la solution et ses fonctionnalités. Si l'équipe choisit d'adopter Kyma, elle peut également la recommander pour l'intégration de nouveaux développeurs qui rejoignent leurs équipes.

Qu’est-ce que Kubernetes ?

Avant d'explorer Kyma, voyons Kubernetes, la technologie sous-jacente sur laquelle Kyma est basée. Essentiellement, Kyma est une collection d'extensions pour Kubernetes.

"Kubernetes, également connu sous le nom de K8s, est un système open source permettant d'automatiser le déploiement, la mise à l'échelle et la gestion des applications conteneurisées" (Kubernetes.io). Kubernetes est hautement portable et peut fonctionner presque n'importe où, que ce soit dans un cloud public, privé ou sur site. Tous les principaux fournisseurs Cloud proposent Kubernetes en tant que service géré (Kubernetes as a Service, ou KaaS). SAP BTP, exécution Kyma est l'un de ces services Kubernetes gérés.

Kubernetes a été initialement développé par Google en 2014 pour gérer leur charge de travail massive d'exécution de conteneurs en production et s'appuie sur de nombreuses années d'expérience dans l'exécution de charges de travail de production en interne. Deux ans plus tard, il a été donné à la Cloud Native Computing Foundation (CNCF). La Cloud Native Computing Foundation est une organisation neutre fondée en 2015 pour faire progresser le développement des technologies natives du cloud. Ce consortium et ses membres (par exemple, SAP, Google, IBM, Red Hat, Docker, Microsoft, etc.) travaillent tous ensemble pour définir l'avenir des technologies natives du cloud telles que Kubernetes.

Les défis auxquels Kubernetes fait face

L'un des défis critiques que Kubernetes doit relever est la gestion efficace des charges de travail des applications.

De nombreuses organisations disposent généralement d'un large éventail d'applications exécutées sur leurs serveurs de production, qu'il s'agisse de machines métalliques nues ou virtuelles. Ces applications sont souvent étroitement couplées à l'infrastructure sous-jacente et ne sont pas portables dans différents environnements (par exemple, une installation logicielle sur un serveur Linux spécifiquement configuré). Cela rend difficile le déplacement d'applications d'un environnement à un autre, par exemple d'un environnement de test vers un environnement de production ou d'un serveur défaillant vers un environnement sain.

En utilisant des conteneurs pour expédier et utiliser des applications, vous pouvez gérer les applications de manière plus portable et plus efficace. Les conteneurs regroupent les applications avec toutes leurs dépendances en tant qu'unité portable et exécutable (image du conteneur). L'application peut être livrée et exécutée sur presque n'importe quel environnement avec une durée d'exécution ou un moteur de conteneur installé.

Aussi, d'un point de vue économique, la plupart des serveurs sont souvent sur-provisionnés. Par conséquent, les entreprises paient un prix fixe pour les capacités affectées de façon permanente (par exemple, la puissance de calcul, la capacité de stockage), qui ne sont pas entièrement utilisées. Cela est également communément appelé coûts d'inactivité ou coûts de capacité inutilisés et est particulièrement vrai pour les serveurs exploitant des charges de travail qui ne fonctionnent pas à pleine capacité à tout moment (par exemple, pendant les nuits ou les week-ends).

En particulier, si vous voulez exploiter des centaines, voire des milliers de conteneurs en production simultanément, vous avez certainement besoin d'un moyen de les gérer efficacement.

Cependant, une gestion efficace des charges de travail sur plusieurs hôtes de votre infrastructure informatique peut s'avérer difficile et complexe.

C'est là qu'intervient Kubernetes. Kubernetes peut gérer et orchestrer efficacement les charges de travail en les planifiant automatiquement sur l'hôte approprié, en les mettant à l'échelle selon les besoins et en déployant de nouvelles versions d'applications.

Par exemple, en fonction de la forte demande actuelle, Kubernetes peut automatiquement faire évoluer les applications horizontalement (c'est-à-dire en ajoutant plus d'instances) et équilibrer le trafic entrant à travers ces instances. Kubernetes peut également déplacer automatiquement des applications d'un hôte à un autre si l'hôte actuel devient indisponible ou si l'hôte est sur-provisionné. Kubernetes joue à Tetris® avec des conteneurs pour s'assurer que les applications fonctionnent toujours et qu'elles fonctionnent de la manière la plus efficace possible.

Pour ces raisons, Kubernetes est également connu sous le nom de Container Orchestrator.

Fonctionnalités de Kubernetes

Kubernetes dispose de plusieurs fonctionnalités qui vous permettent de gérer des applications conteneurisées de manière évolutive et fiable. Les fonctionnalités les plus importantes sont les suivantes :

Découverte de service et équilibrage de la charge

Les conteneurs peuvent être exposés en utilisant leur nom DNS ou leur adresse IP. En adoptant une approche d'équilibrage de charge, Kubernetes peut distribuer le trafic réseau pour stabiliser le déploiement lorsque le trafic de conteneurs est trop élevé.

Orchestration du stockage

Le stockage peut être automatiquement intégré à Kubernetes à l'aide d'un système de stockage de votre choix, tel que le stockage sur site, les fournisseurs de cloud public ou un système de stockage en réseau.

Déploiements et rollbacks automatisés

Kubernetes vous permet de mettre à jour les conteneurs à l'aide de mises à jour continues. Kubernetes démarre de nouveaux conteneurs puis en tue d'anciens. Cette fonctionnalité garantit également l'absence de temps d'arrêt pendant le déploiement. Si quelque chose ne va pas pendant le processus de déploiement, Kubernetes annule le changement pour vous.

Immuabilité et auto-guérison

Tout dans Kubernetes est défini de manière déclarative. Vous indiquez l'état souhaité d'une application ou d'une infrastructure et Kubernetes s'assure toujours que l'état actuel correspond à l'état souhaité. Lorsqu'un conteneur plante, Kubernetes le redémarre pour vous. Lorsqu'un nœud entier descend, Kubernetes déplace les conteneurs vers un nœud sain et arrête les conteneurs qui ne répondent pas à vos contrôles de fonctionnement personnalisés.

Gestion des clés secrètes et de la configuration

Vous pouvez utiliser Kubernetes pour stocker et gérer des informations confidentielles, telles que des mots de passe, des jetons et des clés SSH. Vous pouvez déployer et mettre à jour des Secrets avec les configurations d'application sans recréer vos images de conteneur ou révéler des informations sensibles dans les applications.

Remarque

Notez que vous ne devez pas stocker vos clés secrètes dans votre système de contrôle de version ou votre code source. Outre les clés secrètes Kubernetes, vous pouvez également utiliser des destinations SAP BTP ou le magasin d'identifiants.
Extensibilité et écosystème

L'API Kubernetes est fournie avec un ensemble standard d'implémentations et d'objets. Kubernetes définit souvent l'API mais pas l'implémentation concrète. Cela vous permet d'utiliser et de basculer entre différentes implémentations de la même API. Par exemple, vous pouvez utiliser différents systèmes de stockage pour les volumes persistants. Vous pouvez également utiliser différentes durées d'exécution des conteneurs, telles que Docker, rkt et Rocket. Au fil du temps, l'écosystème de Kubernetes s'est développé à une taille où vous pouvez trouver une solution à presque n'importe quel problème. Par exemple, il existe des solutions pour la journalisation, la surveillance, les maillages de service, l'entrée et bien plus encore. Nous aborderons certains d'entre eux plus tard dans ce cours.

Pour obtenir une liste complète de toutes les fonctionnalités de Kubernetes, consultez la documentation Kubernetes.

Synthèse

Dans cette leçon, vous avez découvert ce qu'est Kubernetes, les défis qu'il résout et comment il les résout. En outre, vous pouvez maintenant décrire certaines des principales fonctionnalités de Kubernetes.

En savoir plus sur les concepts de base de Kubernetes

Pour plus d'informations, voir les sites suivants :