GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un StatefulSet dans Kubernetes

Les StatefulSets contiennent un ensemble de pods avec des identités uniques et persistantes et des noms d'hôte stables. Un modèle de pod est utilisé dans un Statefulset, qui contient une spécification pour ses pods, les pods sont créés à l'aide de cette spécification. Nous pouvons déployer des applications avec état et des applications en cluster à l'aide de Statefulsets dans Kubernetes. StatefulSet peut être mis à jour en apportant des modifications à sa spécification de pod, qui inclut ses images de conteneur et ses volumes.

StatefulSets peut être utilisé lorsque les applications nécessitent l'une des propriétés suivantes.

  • Identifiants de réseau stables et uniques.
  • Stockage stable et persistant.
  • Déploiement et mise à l'échelle ordonnés et gracieux.
  • Mises à jour progressives, ordonnées et automatisées

Pour un StatefulSet avec N répliques, lorsque les pods sont déployés, ils sont créés séquentiellement, dans l'ordre de {0..N-1}. Lorsque les pods sont supprimés, ils sont résiliés dans l'ordre inverse, à partir de {N-1..0}.

Pour en savoir plus sur Statefulset, cliquez ici.

Dans cet article, nous allons créer un Statefulset avec des répliques de pods Nginx. Nous effectuerons des opérations sur les pods pour voir comment ils sont supprimés et créés.

Prérequis

  1. Cluster Kubernetes avec au moins 1 nœud de travail.
    Si vous souhaitez apprendre à créer un cluster Kubernetes, cliquez ici. Ce guide vous aidera à créer un cluster Kubernetes avec 1 maître et 2 nœuds sur les instances AWS Ubuntu 18l04 EC2.

Ce que nous allons faire

  1. Créer un ensemble avec état

Créer un ensemble d'états

Créez un fichier et ajoutez-y la définition Statefulset suivante.

vim statefulset.yml

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web

Dans cet exemple, 

  • Un service sans tête, nommé nginx , est utilisé pour contrôler le réseau.
  • Le StatefulSet, nommé web, possède 3 réplicas du conteneur nginx qui seront lancés dans des pods uniques.
  • nginx Image avec la version slim :0.8 est utilisée pour déployer Nginx.

Pour créer un Statefulset, exécutez les commandes suivantes.

kubectl get statefulset

kubectl créer -f statefulset.yml

Exécutez les 2 commandes suivantes pour répertorier le Statefulset et le Service créés à l'étape ci-dessus.

kubectl get statefulset

kubectl obtenir le service

Obtenez les pods à l'aide de la commande suivante et voyez que les pods ont des numéros comme suffixe dans le nom du pod.

kubectl obtenir des pods

Pour obtenir les détails complets du Statefulset, exécutez les commandes suivantes.

kubectl get statefulset

kubectl décrire statefulset web

Maintenant, supprimons les pods et voyons comment les noms sont conservés même après la création de nouveaux pods.

Nous supprimons 2 pods pour voir quels noms seront attribués aux nouveaux pods lors de leur création.

kubectl obtenir des pods

kubectl supprimer les pods web-0 web-2

kubectl obtenir des pods

Dans la capture d'écran ci-dessus, vous pouvez voir que, même après la suppression des pods, les pods nouvellement créés portent le même nom.

Conclusion

Dans cet article, nous avons créé un Statefulset et effectué des opérations dessus pour vérifier ses détails. Nous avons également supprimé les pods pour voir comment le nom du pod est conservé et le même est attribué aux pods nouvellement créés après sa suppression.


Linux
  1. Comment créer des balises Git

  2. Comment créer un sous-domaine

  3. Comment créer un sous-domaine

  4. Comment supprimer des pods dans Kubernetes [Quick K8s Tips]

  5. Comment obtenir l'historique des pods exécutés sur le nœud Kubernetes ?

Comment créer un fichier sous Linux

Comment créer un fichier Tar Gz

Comment créer un module Terraform

Comment créer un déploiement dans Kubernetes

Comment créer un cluster Kubernetes avec AWS CLI

Comment créer et gérer des pods Kubernetes sous Linux