[Ressources Kubernetes] Explication détaillée du combat réel du contrôleur Replicaset

1. Introduction au contrôleur ReplicaSet

Documents de référence officiels chinois :

ReplicaSet est un objet de ressource dans k8s, abrégé rs, utilisé pour gérer le nombre de copies de pod et l'état de santé. Dans spec.replicasle champ, vous pouvez définir le nombre de copies de pod. ReplicaSet conservera toujours le nombre de pods au nombre spécifié . Lorsque le En plus des pods supplémentaires, lorsque le nombre de pods est inférieur au nombre de répliques, des pods seront automatiquement créés pour maintenir le nombre de répliques. , ReplicaSet surveillera également l'état de santé des pods. Si un pod tombe en panne, ReplicaSet le remplacera automatiquement .

Les caractéristiques de ReplicaSet sont les suivantes :

  • Gestion automatisée : ReplicaSet peut automatiquement créer, supprimer et mettre à jour des copies de pod pour garantir que le nombre spécifié de copies de pod est toujours en cours d'exécution.
  • Bilan de santé : ReplicaSet vérifie périodiquement l'état de santé des pods et redémarre ou remplace les pods défectueux si nécessaire.
  • Extension horizontale : en augmentant ou en diminuant le nombre de copies de pod, l'application peut être mise à l'échelle horizontalement pour répondre aux différentes exigences de charge.
  • Sélecteur : un ReplicaSet utilise un sélecteur d'étiquettes pour sélectionner les répliques de pod à gérer.
  • Gestion avec état : ReplicaSet peut gérer des applications avec état, telles que des bases de données, pour assurer la cohérence et la disponibilité des données.
  • Mise à jour : les mises à jour progressives ne sont pas prises en charge et les anciens pods doivent être supprimés manuellement pour mettre en œuvre les mises à jour .

Explication des champs communs de ReplicaSet :

apiVersion: apps/v1      # RS版本
kind: ReplicaSet         # 定义RS资源类型  
metadata:                # RS元数据
  name: nginx-replicaset # RS名称
  namespace: default     # RS命名空间
  labels:                # RS标签
    app: web
    env: uat
spec: 
  replicas: 3            # 关联Pod副本数量
  selector:              
    matchLabels:         # 关联具有app=web的Pod
      app: web
  template:              # Pod模板
    metadata:            # Pod元数据
      namespace: default # Pod命名空间
      labels:            # Pod标签
        app: web
        env: uat
    spec:
      containers:        # Pod定义容器
      - name: web-nginx  # 容器名称
        image: nginx     # 容器使用镜像
        imagePullPolicy: IfNotPresent  # 容器镜像下载策略
        ports:         
        - containerPort: 80            # 容器内端口

Deux, boîtier ReplicaSet

1. Cas d'expansion et de contraction de copie de pod

spec.replicasDéveloppez et réduisez dynamiquement en modifiant la valeur, utilisez nginxle miroir pour définir le nombre de copies 3et ajoutez quelques détections nécessaires, comme suit :

cat replicaset.yaml 

---
apiVersion: apps/v1     
kind: ReplicaSet 
metadata:                
  name: nginx-replicaset
  namespace: default   
  labels:               
    app: web
spec: 
  replicas: 3           
  selector:              
    matchLabels:       
      app: web
  template:             
    metadata:            
      namespace: default 
      labels:            
        app: web
    spec:
      containers:       
      - name: web-nginx 
        image: nginx:1.18.0
        imagePullPolicy: IfNotPresent  
        ports:         
        - containerPort: 80 
        startupProbe:
          tcpSocket:
            port: 80
        livenessProbe:
          httpGet:
            path: /index.html
            port: 80
        readinessProbe:
          httpGet:
            path: /index.html
            port: 80

Exécutez le fichier YAML :

kubectl apply -f replicaset.yaml 

Vérifiez l'état du Pod et du RS, s'il est créé et normal :

kubectl get rs,pod -l app=web

[Le transfert d'image du lien externe a échoué, le site source peut avoir un mécanisme anti-leeching, il est recommandé de sauvegarder l'image et de la télécharger directement (img-ZNCdEd20-1685257135299) (D:\MD Archives\IMG\image-20230528133211004.png )]

Lorsque nous supprimons un pod, RS le crée automatiquement pour nous et RS maintient toujours le nombre de pods à 3. La commande de suppression est la suivante :

kubectl delete pod nginx-replicaset-7mh2r

Augmentez dynamiquement le nombre de copies et mettez à jour le nombre de copies à 5 :

[Le transfert d'image du lien externe a échoué, le site source peut avoir un mécanisme anti-leeching, il est recommandé de sauvegarder l'image et de la télécharger directement (img-2AHacQTU-1685257135300) (D:\MD Archives\IMG\image-20230528133458570.png )]

Réappliquez le fichier YAML :

kubectl apply -f replicaset.yaml 

Vérification, le nombre de Pods :

kubectl get pod -l app=web

[Le transfert d'image du lien externe a échoué, le site source peut avoir un mécanisme anti-leeching, il est recommandé d'enregistrer l'image et de la télécharger directement (img-E4AEtJpV-1685257135301)(D:\MD Archives\IMG\image-20230528133646092.png )]

La réduction est la même opération, changez simplement la valeur des répliques et appliquez à nouveau, ce qui est omis ici.

2. Cas de version de mise à jour du pod

L'adresse de téléchargement d'image requise

ReplicaSet ne prend pas en charge les mises à jour dynamiques et ne peut être supprimé qu'en supprimant les anciens pods. La démonstration de cas est la suivante :

web:v1Créer une ressource ReplicaSet à l'aide de la mise en miroir

cat replicaset.yaml 
---
apiVersion: apps/v1     
kind: ReplicaSet 
metadata:                
  name: nginx-replicaset
  namespace: default   
  labels:               
    app: web
spec: 
  replicas: 3          
  selector:              
    matchLabels:       
      app: web
  template:             
    metadata:            
      namespace: default 
      labels:            
        app: web
    spec:
      containers:       
      - name: web-nginx 
        image: web:v1     # V1 镜像
        imagePullPolicy: IfNotPresent  
        ports:         
        - containerPort: 80 

fichier exécutable:

kubectl apply -f replicaset.yaml
kubectl get pod -l app=web

Vérifiez l'adresse PodIP et visitez :

kubectl describe pod nginx-replicaset-wht6q|grep IP

[Le transfert d'image du lien externe a échoué, le site source peut avoir un mécanisme anti-leeching, il est recommandé de sauvegarder l'image et de la télécharger directement (img-xeRqOgj6-1685257135302) (D:\MD Archives\IMG\image-20230528144500659.png )]

Basé sur la mise à jour ci-dessus utilisant web:v2le miroir :

Modifiez le fichier YAML ci-dessus et modifiez uniquement la version miroir comme indiqué ci-dessous :

[Le transfert d'image du lien externe a échoué, le site source peut avoir un mécanisme anti-leeching, il est recommandé de sauvegarder l'image et de la télécharger directement (img-uWGTenzq-1685257135302) (D:\MD Archives\IMG\image-20230528144647385.png )]

fichier exécutable:

kubectl apply -f replicaset.yaml
kubectl get pod -l app=web

Notez qu'à ce stade, le contenu renvoyé par curl Pod est toujours le contenu de l'ancienne version du Pod. Vous devez supprimer manuellement les anciennes ressources du Pod. RS créera automatiquement le Pod, et le Pod créé automatiquement utilisera le nouveau image .

[Le transfert d'image du lien externe a échoué, le site source peut avoir un mécanisme anti-leeching, il est recommandé de sauvegarder l'image et de la télécharger directement (img-pXMdKw2n-1685257135302) (D:\MD Archives\IMG\image-20230528145222569.png )]

Pour supprimer un pod, supprimez-le en fonction du nom de votre pod d'environnement actuel :

kubectl delete pod nginx-replicaset-ff5pl nginx-replicaset-rvr9k nginx-replicaset-wht6q

Après la suppression, RS sera créé automatiquement, vérifiez le nouveau Pod :

kubectl get pod -l app=web

Accéder aux modules :

[Le transfert d'image du lien externe a échoué, le site source peut avoir un mécanisme anti-leeching, il est recommandé de sauvegarder l'image et de la télécharger directement (img-lfXPHJsB-1685257135303) (D:\MD Archives\IMG\image-20230528145620136.png )]

Supongo que te gusta

Origin blog.csdn.net/weixin_45310323/article/details/130912882
Recomendado
Clasificación