Kubernetes

Tutoriel Opérateur Kubernetes

Tutoriel Opérateur Kubernetes
Les opérateurs Kubernetes sont un concept introduit par le projet CoreOS pour étendre les capacités de Kubernetes, en particulier la gestion des applications Stateful. Il est censé simplifier l'ensemble du cycle de vie des ressources avec état, de l'empaquetage de l'application et de son déploiement sur un cluster Kubernetes jusqu'à la gestion et la mise à l'échelle de l'application.

À titre d'exemple, certains des composants principaux de Kubernetes comme etcd ont leurs opérateurs correspondants mis à disposition par le projet CoreOs. Etcd est un magasin de clé-valeur distribué qui reflète l'état de fonctionnement de l'ensemble du cluster Kubernetes à un instant donné. Naturellement, il s'agit d'une application avec état et divers contrôleurs Kubernetes se réfèrent à etcd afin de déterminer quelle sera leur prochaine étape. Par exemple, le contrôleur ReplicaSet examinera le nombre de pods exécutés sous un sélecteur donné et essaiera d'amener le nombre d'instances en cours d'exécution égal au nombre spécifié par votre ReplicaSet ou Deployment YAML. Le ReplicaSet fait référence à etcd qui garde une trace du nombre de pods en cours d'exécution et une fois que le nombre de pods est modifié à une valeur souhaitée, etcd mettrait à jour son enregistrement également.

Mais en ce qui concerne les applications avec état, comme etcd lui-même, nous ne pouvons pas faire tourner plus de pods sur différents nœuds sans une intervention sérieuse. Parce que toutes les instances en cours d'exécution doivent avoir des données cohérentes les unes avec les autres à tout moment. C'est là que les opérateurs sont utiles.

Conditions préalables

Si vous souhaitez suivre ce didacticiel, vous pouvez commencer par quelque chose de petit comme un Minikube installé sur votre ordinateur portable ou la distribution Kubernetes fournie avec Docker pour ordinateur de bureau.

L'important est d'avoir une compréhension des idées de base de Kubernetes pour commencer.

Etcd

Créons un opérateur qui gérerait etcd dans notre cluster Kubernetes. Nous n'installerons pas etcd en tant que composant Kubernetes (c'est-à-dire dans l'espace de noms kube-system) mais en tant qu'application régulière. Parce que cela mettrait tout le cluster en danger. Cependant, une fois que vous êtes à l'aise avec les opérateurs, vous pouvez les utiliser pour déployer etcd dans le système kube lorsque vous démarrez un nouveau cluster.

J'utiliserai Katacoda Playground ici, et une inspection plus approfondie de l'espace de noms du système kube vous montrerait que nous avons un pod en cours d'exécution, etc. pour nous. Mais ce n'est pas quelque chose avec lequel nous allons jouer. Nous allons installer etcd dans l'espace de noms par défaut géré par etcd-operator

Au départ, l'espace de noms par défaut n'a pas de pods en cours d'exécution, nous avons une table rase.

$ kubectl obtenir des pods

Aucune ressource trouvée.

Installons maintenant une nouvelle instance etcd dans cet espace de noms. On commence par cloner le dépôt suivi d'une simple commande kubectl.

$ git clone https://github.com/coreos/etcd-operator.git
$ cd etd-opérateur

Création de l'opérateur Etcd

Dans le repo, il y a plusieurs exemples sur lesquels opérer, le premier créerait un simple opérateur etcd en utilisant déploiement.yaml déposer. Avant d'utiliser cela, nous devons d'abord créer un rôle pour l'opérateur via lequel il peut gérer et mettre à l'échelle le cluster etcd. Vous pouvez créer ce rôle à l'aide d'un script shell.

$ /exemple/rbac/create_role.sh
$ kubectl créer -f ./exemple/déploiement.yaml

L'objet opérateur sera créé par la dernière commande bien qu'il n'y ait rien sur quoi opérer. Nous n'avons pas encore de cluster etcd. Alors créons-en un.

$ kubectl créer -f ./exemple/exemple-etcd-cluster.yaml

Cela crée un cluster de pods etcd. Vous pouvez les voir en utilisant :

$ kubectl obtenir des pods
 
NOM                              PRÊT     STATUT    REDÉMARRE   ÂGE
etcd-operator-69b559656f-495vg    1/1       En cours d'exécution   0          9 min
example-etcd-cluster-9bxfh657qq   1/1       En cours d'exécution   0          23s
example-etcd-cluster-ntzp4hrw79   1/1       En cours d'exécution   0          8 min
example-etcd-cluster-xwlpqrzj2q   1/1       En cours d'exécution   0          9 min

Le premier de cette liste est le pod d'opérateur qui garantirait que le cluster etcd conserve un certain état, comme indiqué dans les fichiers yaml que nous avons utilisés précédemment. Si vous essayez de supprimer l'un des pods example-etcd-cluster, un autre sera créé pour prendre sa place. C'est remarquablement similaire à ce que fait ReplicaSet, mais ici, les pods sont avec état!

Opérateurs en général

Comme mentionné précédemment, les opérateurs sont un cadre général dans lequel on peut déployer et gérer des applications complexes. Le cadre lui-même est ce qui les rend utiles et les exemples particuliers tels que l'opérateur etcd ou l'opérateur Prometheus fournis par CoreOS sont destinés à vous guider pour développer votre propre application de la même manière.

Quelques aspects importants des opérateurs Kubernetes sont le SDK utilisé pour écrire, construire et tester votre propre opérateur personnalisé, le second est l'idée de Gestionnaire du cycle de vie des opérateurs où vous pouvez réfléchir à toutes les différentes étapes que votre opérateur ainsi que le service qu'il propose peuvent passer.

Les étapes du cycle de vie peuvent inclure diverses mises à jour, déterminer quel opérateur s'exécute dans quels espaces de noms et également mettre à jour les opérateurs lorsqu'une nouvelle version arrive.

Les références

Vous pouvez en savoir plus sur cette technologie dans :

  1. le message d'origine de CoreOS, et
  2. L'opérateur etcd peut être exploré ici
Comment utiliser le moteur de triche GameConqueror sous Linux
L'article couvre un guide sur l'utilisation du moteur de triche GameConqueror sous Linux. De nombreux utilisateurs qui jouent à des jeux sur Windows u...
Meilleurs émulateurs de console de jeu pour Linux
Cet article répertorie les logiciels d'émulation de console de jeu populaires disponibles pour Linux. L'émulation est une couche de compatibilité logi...
Meilleures distributions Linux pour les jeux en 2021
Le système d'exploitation Linux a parcouru un long chemin depuis son apparence originale, simple et basée sur le serveur. Ce système d'exploitation s'...