Ce document décrit les principes de base de la plate-forme d'orchestration de conteneurs Open Source Kubernetes. De nombreux composants de Google Distributed Cloud (GDC) air-gapped sont basés sur Kubernetes. Une grande partie de la documentation suppose que vous connaissez déjà les concepts et la terminologie de base de Kubernetes. Si vous ne connaissez pas Kubernetes, utilisez ce document comme référence pour trouver des lectures recommandées pour vous aider à démarrer.
Il est essentiel de connaître les bases de Kubernetes pour concevoir, déployer et gérer les applications GDC et les composants système sous-jacents. Les professionnels techniques suivants doivent comprendre Kubernetes pour pouvoir utiliser GDC :
- Opérateurs du groupe d'opérateurs d'infrastructure chargés d'installer et de gérer l'infrastructure logicielle et matérielle GDC sous-jacente.
- Administrateurs du groupe d'administrateurs de plate-forme chargés de concevoir des architectures d'infrastructure et d'application résilientes sur GDC.
- Développeurs du groupe d'opérateurs d'applications chargés de créer des applications.
Pour en savoir plus, consultez Audiences pour la documentation GDC sous air gap.
À propos de Kubernetes
Kubernetes est une plate-forme d'orchestration de conteneurs Open Source. À la base, un cluster Kubernetes est un ensemble de machines de calcul appelées nœuds qui exécutent des applications conteneurisées. L'ensemble du cluster est géré par le plan de contrôle, qui inclut des composants tels que le serveur d'API, le programmeur et la base de données etcd, et est responsable du maintien de l'état du cluster.
Les applications sont regroupées dans des pods, qui sont les plus petites unités déployables dans Kubernetes. Elles peuvent contenir un ou plusieurs conteneurs et s'exécuter sur les nœuds. Pour organiser les ressources d'un cluster, souvent pour différentes équipes ou différents environnements, Kubernetes utilise des espaces de noms.
Le cycle de vie et l'état des pods sont gérés par des contrôleurs. Par exemple, les objets Deployment gèrent les mises à jour continues et les objets ReplicaSet garantissent qu'un nombre spécifique de répliques de pods sont en cours d'exécution. Pour fournir des points de terminaison réseau stables, tels que des adresses IP et des noms DNS pour accéder aux pods, Kubernetes utilise des services.
Étant donné que le stockage de conteneurs est éphémère par défaut, Kubernetes propose différentes abstractions de stockage, telles que les volumes et les volumes persistants, pour gérer les données.
Pour sécuriser l'accès aux ressources du cluster et à l'API Kubernetes, Kubernetes utilise le contrôle des accès basé sur les rôles (RBAC) pour définir des rôles, des rôles de cluster et des liaisons afin d'accorder des autorisations spécifiques aux utilisateurs et aux comptes de service.
Concepts clés
Voici quelques concepts clés que nous utilisons dans la documentation GDC. Cette liste de concepts Kubernetes n'est pas exhaustive. Pour en savoir plus, consultez les rubriques fournies dans la documentation Kubernetes et nos lectures recommandées.
Nœuds et clusters
Toutes les charges de travail Kubernetes s'exécutent sur des nœuds. Dans GDC, un nœud est une machine virtuelle (VM). Sur d'autres plates-formes Kubernetes, un nœud peut être une machine physique ou virtuelle. Chaque nœud est géré par le plan de contrôle Kubernetes et dispose de tous les composants nécessaires à l'exécution des pods. Un cluster est un ensemble de nœuds pouvant être traités ensemble, comme une seule entité, sur laquelle vous déployez une application conteneurisée.
Pour en savoir plus, consultez la documentation Kubernetes :
Plan de contrôle Kubernetes
Le plan de contrôle Kubernetes est un ensemble de composants système qui gèrent l'état global de votre cluster, y compris le serveur d'API Kubernetes qui vous permet d'interagir avec vos clusters et applications à l'aide de l'CLI de commande kubectl et d'autres outils, un programmeur pour planifier les pods sur les nœuds disponibles et les contrôleurs qui suivent et gèrent l'état du cluster. Le plan de contrôle est fourni et géré par GDC.
Pour en savoir plus, consultez la documentation Kubernetes sur les composants du plan de contrôle.
Pods
Dans Kubernetes, les applications conteneurisées s'exécutent dans un pod. Un pod est la plus petite unité de calcul déployable que vous pouvez créer et gérer dans Kubernetes. Un pod comporte un ou plusieurs conteneurs. Lorsqu'un pod exécute plusieurs conteneurs, tels qu'un serveur d'applications et un serveur proxy, les conteneurs sont gérés comme une seule entité et partagent les ressources du pod.
Pour en savoir plus, consultez la documentation Kubernetes :
Espaces de noms
Les espaces de noms Kubernetes permettent de regrouper et de sélectionner des ressources, telles que des pods et des services, au sein d'un cluster. Par exemple, si plusieurs équipes d'application exécutent des charges de travail sur un même cluster.
Pour en savoir plus, consultez la documentation Kubernetes sur les espaces de noms.
Contrôleurs
Les contrôleurs Kubernetes suivent et gèrent l'état de vos clusters et de vos charges de travail, en fonction de l'état que vous spécifiez (par exemple, "J'aimerais exécuter trois de ces pods sur ce cluster, avec ce conteneur dans chaque pod"). Différents contrôleurs suivent différents types de ressources Kubernetes, y compris les suivants :
Les contrôleurs Kubernetes suivent et gèrent l'état de vos clusters et de vos charges de travail en fonction de l'état que vous spécifiez. Par exemple, vous pouvez définir le comportement d'un cluster pour qu'il exécute trois pods, avec un conteneur désigné dans chaque pod. Différents contrôleurs suivent différents types de ressources Kubernetes, y compris les suivants :
- Déploiement : une ressource personnalisée
Deploymentest un objet Kubernetes qui représente un ou plusieurs pods identiques, appelés répliques. Un déploiement exécute plusieurs instances dupliquées des pods répartis entre les nœuds d'un cluster. Un déploiement remplace automatiquement tous les pods qui échouent ou ne répondent pas. - StatefulSet : une ressource personnalisée
StatefulSetest semblable à un déploiement, mais conserve une identité unique et persistante pour chacun de ses pods. Les ressourcesStatefulSetpeuvent être utiles dans les applications avec état persistant, comme les applications avec état. - DaemonSet : une ressource personnalisée
DaemonSetvous permet d'ajouter des pods par défaut à certains ou à tous vos nœuds. Il s'agit souvent de services d'assistance pour vos charges de travail, tels qu'un daemon de collecte de journaux ou un daemon de surveillance. - ReplicaSet : une ressource personnalisée
ReplicaSetest un ensemble de pods identiques. UnReplicaSetest généralement géré dans le cadre d'une ressourceDeployment.
Pour en savoir plus, consultez la documentation Kubernetes :
Service Kubernetes
Par défaut, vous ne pouvez pas contrôler le nœud de cluster sur lequel un pod est en cours d'exécution. Par conséquent, les pods ne disposent pas d'adresses IP stables. Pour obtenir une adresse IP pour une application s'exécutant dans Kubernetes, vous devez définir une abstraction de mise en réseau au-dessus de ses pods, appelée service Kubernetes.
Un service Kubernetes fournit un point de terminaison de mise en réseau stable pour un ensemble de pods.
Il existe plusieurs types de services, y compris les services LoadBalancer, qui exposent une adresse IP externe afin que vous puissiez accéder aux applications depuis l'extérieur du cluster.
Kubernetes dispose également d'un système DNS intégré pour la résolution d'adresses internes, qui attribue un nom DNS, tel que helloserver.default.cluster.local, aux services.
Cela permet aux pods du cluster d'atteindre d'autres pods du cluster à l'aide d'une adresse stable. Vous ne pouvez pas utiliser ce nom DNS en dehors du cluster, par exemple depuis la CLI gdcloud.
Pour en savoir plus, consultez la documentation Kubernetes sur les services.
Stockage
Si vos applications doivent enregistrer des données qui existent au-delà de la durée de vie de leur pod, comme dans les applications avec état, vous pouvez utiliser un objet PersistentVolume Kubernetes pour provisionner ce stockage. Vous pouvez également choisir d'utiliser un stockage éphémère, qui est détruit lorsque le pod correspondant se termine.
Pour en savoir plus, consultez la documentation Kubernetes :
Contrôle des accès basé sur les rôles
Kubernetes inclut un mécanisme de contrôle des accès basé sur les rôles (RBAC) qui vous permet de créer des règles d'autorisation pour accéder à vos clusters et à leurs ressources. Lorsque vous utilisez GDC, vous combinez souvent le contrôle d'accès basé sur les rôles (RBAC) de Kubernetes et Identity and Access Management (IAM) de GDC pour sécuriser vos applications.
Pour en savoir plus, consultez la documentation Kubernetes sur le contrôle des accès basé sur les rôles.
Lectures conseillées
Cette section fournit des liens vers des ressources recommandées pour en savoir plus sur Kubernetes. En particulier, Kubernetes.io, le site Web officiel de Kubernetes, propose des informations complètes et fiables sur tous les aspects de Kubernetes.
Guides et tutoriels externes
- Présentation de Kubernetes : présentation conceptuelle détaillée de Kubernetes.
- Tutoriel : Apprendre les bases de Kubernetes : Découvrez les bases de Kubernetes à l'aide d'un exemple.
- Tutoriels Kubernetes : lorsque vous êtes prêt à aller au-delà des bases, cette section de la documentation Kubernetes propose des tutoriels sur divers sujets Kubernetes, des applications avec état à la sécurité.
Documentation de référence
- Glossaire Kubernetes : liste complète et standardisée des termes Kubernetes. Si vous n'êtes pas sûr d'un terme Kubernetes, consultez le glossaire.
Étapes suivantes
- Charges de travail Kubernetes pour la haute disponibilité
- Clusters Kubernetes dans GDC
- Charges de travail de conteneur dans GDC