Kubernetes MatchLabels

Kubernetes MatchLabels
Dans cet article, nous discuterons principalement des étiquettes, des allumettes et des sélecteurs et comment ils seront utilisés dans les pods, les services et les déploiements. Vous saurez comment les articles Kubernetes comme le travail, le déploiement, les répliques et l'ensemble de démon utilisent ces idées une fois que vous les comprenez. Alors, commençons par la définition des étiquettes et des allumettes.

Quelles sont les étiquettes et les allumettes?

Au sein de Kubernetes, les étiquettes sont une pièce de métadonnées à formate clé / valeur liée à un objet. Des informations supplémentaires sur la chose pertinente pour le consommateur ou l'objet sont fournies via des étiquettes. Par exemple, une étiquette peut identifier les spécifications matérielles d'un nœud ou si une charge de travail est pour les tests de production.

Les étiquettes servent de technique de regroupement implicite pour des objets similaires tout en offrant un mécanisme de recherche pour les utilisateurs, les contrôleurs et autres systèmes.

Les étiquettes permettent aux utilisateurs de cartographier leurs propres systèmes organisationnels aux éléments du système de manière vaguement connectée sans obliger les clients à enregistrer les mappages.

Les entités multidimensionnelles telles que les déploiements de services ainsi que les pipelines de traitement par lots sont courantes. Des actions de coupe croisée sont fréquemment nécessaires dans la gestion, ce qui sape l'encapsulation de représentations rigoureusement hiérarchiques, en particulier les hiérarchies inflexibles dictées par l'infrastructure plutôt que par les utilisateurs.

Les allumettes sont un type de carte de paire de valeurs clés. Une seule paire de valeurs de clé dans la carte MatchLabels correspond à un élément de MatchExpressions avec le champ de clé «clé», l'opérateur «in» et uniquement «valeur» dans le tableau des valeurs. Une collection d'exigences de sélecteur de pod est appelée MatchExpressions.

Dans, existe, ne sont que les opérateurs sont valides et obligatoires. Dans le cas de 'in' et 'notin', assurez-vous que les valeurs définies sont non vides. Toutes les exigences de MatchLabels et MatchExpressions sont ensemble et elles doivent toutes être satisfaites pour correspondre.

Prérequis:

Nous devons installer Ubuntu 20.04 afin de mettre les connaissances théoriques en pratique et d'effectuer les instructions dans Kubernetes. Les commandes Kubectl sont exécutées sur le système d'exploitation Linux dans cet exemple. Afin d'exécuter Kubernetes sur Linux, installez le cluster Minikube. Minikube facilite la compréhension en fournissant un mécanisme efficace pour tester les commandes et les applications.

Nous avons exécuté la commande «Minikube Start» sur le terminal afin d'initialiser le minikube. Cette commande lance le cluster Kubernetes et crée une machine virtuelle capable d'exécution de cluster. Il se connectera également avec le cluster en utilisant l'installation de Kubectl. La sortie de la commande «Minikube Start» est représentée ci-dessous.

Création d'un déploiement

Dans cet exemple, nous avons créé deux déploiements. Un pour un service Web qui fonctionne sur une infrastructure interne et une autre sur l'infrastructure DMZ. Le déploiement initial (nommé DEP11.yaml) est fait, comme indiqué ci-dessous.

Voici tout le DEP11.Fichier de configuration YAML, qui comprend le champ MatchLabels.

La commande pour créer le pod est la suivante.

Le déploiement (nommé: DEP12.yaml) qui fonctionne sur l'infrastructure DMZ est illustré ci-dessous.

L'ensemble du fichier de configuration se trouve ci-dessous.

Lorsque les pods sont déployés, ils font fonctionner les étiquettes = Nginx. Plusieurs étiquettes sont possibles pour un objet; Cependant, plusieurs étiquettes avec la même clé ne sont pas. S'il y a plusieurs entrées d'étiquette avec la même clé dans un manifeste d'objet, la dernière valeur est utilisée.

La balise de sélecteur peut être vue ici, ce que le déploiement utilise pour communiquer avec ses pods. Le champ de sélecteur du déploiement spécifie comment il détermine les pods à gérer. Vous devez d'abord sélectionner une étiquette dans le modèle de pod. Des règles de sélection plus compliquées étaient également possibles si le modèle de pod correspond aux critères. Voici la commande pour créer le pod.

Pour voir les étiquettes d'un pod, utilisez la sous-commande get:

Les pods lancés à l'aide des manifestes de déploiement ci-dessus sont affichés dans le bloc de code ci-dessous. L'étiquette de Hash-Template est appliquée automatiquement par le contrôleur de déploiement.

Les pods fournis par Kubectl Get Pods peuvent être filtrés à l'aide d'un ou plusieurs paramètres de sélection. Dans la sortie, les étiquettes sont présentées comme une colonne supplémentaire.

Pour obtenir des pods nginx internes, utilisez plusieurs sélecteurs.

Le contrôleur de déploiement utilise un sélecteur pour déterminer quelles pods sont inclus dans un déploiement. Un objet répliques est créé lorsqu'un déploiement est créé, et le contrôleur de réplication le surveille pour s'assurer que le nombre de pods opérant correspond au numéro prévu.

Nos déploiements ont actuellement quatre gousses dans un état prêt.

La configuration d'un répliques est illustrée ci-dessous.

Voici le reste de la sortie du code aérien.

Changeons l'une des étiquettes sur une pod de telle sorte qu'elle ne correspond plus à notre sélecteur. Découvrez les spécifications de MatchLabels afin de voir ce qui se passe.

Après avoir modifié l'étiquette d'exécution sur le pod et déployé un autre pod pour résoudre le problème, le contrôleur de réplique ne pouvait localiser que trois pods fonctionnant en utilisant la sélection de MatchLabel.

Pour confirmer que le déploiement a été créé, exécutez l'instruction «Kubectl Get Deployments». Les champs suivants sont présentés lorsque vous inspectez les déploiements dans votre cluster: nom, prêt, à jour, disponible et âge.

Comme vous pouvez le voir ci-dessous, nous avons utilisé plusieurs critères pour acquérir des gousses Nginx internes.

Conclusion:

Cet article a clarifié les différences entre les étiquettes et les allumettes. Nous avons déjà vu les avantages de l'emploi d'étiquettes. Les capacités de catégorisation et de filtrage des étiquettes de Kubernetes sont fantastiques, comme vous pouvez le voir ci-dessus. L'utilisation d'étiquettes rendra vos journaux plus pertinents, les outils de surveillance vous permettra de choisir certaines charges de travail d'intérêt, et les scripts de bases vous fourniront une plus large gamme de données pour gérer.