Application avec état de k8s

Un. StatefulSet

(1) StatefulSet est un objet API de charge de travail utilisé pour gérer les applications avec état. Les applications qui ont des relations asymétriques entre les instances et les instances qui reposent sur des données externes sont appelées «applications avec état»
(2) StatefulSet est utilisé pour gérer le déploiement et étendre un ensemble de pods, et peut fournir des numéros de série et unicité pour ces pods garantis .
(3) Les StatefulSets sont utiles pour les applications qui doivent répondre à une ou plusieurs des exigences suivantes:
1. Un identifiant de réseau stable et unique.
2. Stockage stable et durable.
3. Déploiement et mise à l'échelle ordonnés et élégants.
4. Mises à jour progressives ordonnées et automatiques

2. État de la topologie

apiVersion: v1  #创建Headless service
kind: Service
metadata:
 name: nginx-svc
 labels:
  app: nginx
spec:
 ports:
 - port: 80
   name: web
 clusterIP: None
 selector:
  app: nginx
---
apiVersion: apps/v1  #StatefulSet控制器
kind: StatefulSet
metadata:
 name: web
spec:
 serviceName: "nginx-svc"
 replicas: 2
 selector:
  matchLabels:
   app: nginx
 template:
  metadata:
   labels:
    app: nginx
  spec:
   containers:
   - name: nginx
     image: myapp:v1
     ports:
     - containerPort: 80
       name: web

Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

3. Demandes avec état

(1) StatefulSet résume l'état de l'application en deux situations:
État topologique: les instances d'application doivent être démarrées dans un certain ordre. Le pod nouvellement créé doit avoir le même ID réseau que le pod d'origine.
État de stockage: plusieurs instances de l'application sont liées à des données de stockage différentes.
(2) StatefulSet numérote tous les pods. La règle de numérotation est la suivante: (statefulset name) - (statefulset ) nom) -( S T A T E F U L S E T nom appelé ) - (nombre), de 0
supprimer (c), le nombre de copies à 0, le pod est supprimé reconstruit dans l'identification du réseau du pod n'est pas Change, la topologie du pod le statut est fixé en fonction du "nom + numéro" du pod, et une entrée d'accès fixe et unique est fournie pour chaque pod, c'est-à-dire l'enregistrement DNS
dig -t A nginx-svc.defaultcorrespondant au pod. svc.cluster. local @ 10.96.0.10
Comment StatefulSet maintient-il l'état de la topologie du pod via le service sans tête

4. État du stockage

La conception du PV et du PVC permet à StatefulSet de gérer l'état de stockage

apiVersion: v1
kind: Service
metadata:
 name: nginx-svc
 labels:
  app: nginx
spec:
 ports:
 - port: 80
   name: web
 clusterIP: None
 selector:
  app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: web
spec:
 serviceName: "nginx-svc"
 replicas: 2  #通过副本数扩容或删除
 selector:
  matchLabels:
   app: nginx
 template:
  metadata:
   labels:
    app: nginx
  spec:
   containers:
   - name: nginx
     image: myapp:v1
     ports:
     - containerPort: 80
       name: web
     volumeMounts:
       - name: www
         mountPath: /usr/share/nginx/html
 volumeClaimTemplates:
  - metadata:
     name: www
    spec:
     storageClassName: managed-nfs-storage
     accessModes:
     - ReadWriteOnce
     resources:
      requests:
       storage: 1Gi

La création de Pod est également effectuée strictement par ordre de nombre. Par exemple, avant que Web-0 n'entre dans l'état d'exécution et que Conditions soit Ready, Web-1 sera toujours à l'état En attente. Le
Insérez la description de l'image ici
Insérez la description de l'image ici
StatefulSet allouera et créera également un PVC avec le même numéro pour chaque Pod. De cette manière, kubernetes peut lier le PV correspondant à ce PVC via le mécanisme de volume persistant, afin de garantir que chaque pod a un volume indépendant
Insérez la description de l'image ici
Insérez la description de l'image ici

5. Utilisez statefullset pour déployer un cluster maître-esclave mysql

Insérez la description de l'image ici
Reportez-vous à
Insérez la description de l'image ici
Insérez la description de l'image ici
StatefulSet
pour commencer par extraire l'image requise et la télécharger dans l'entrepôt local. Faites attention à l'emplacement de l'image lors de son utilisation.
Sauvegardez les données de la base de données principale via xtrabackup pour obtenir une base de données maître-esclave sur une seule ligne.
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_49564346/article/details/114155987
conseillé
Classement