Redémarrer et supprimer des clusters

Cette rubrique explique comment arrêter et redémarrer les clusters de charge de travail, et comment les supprimer.

Arrêter et redémarrer les clusters de charge de travail

Vous devrez peut-être arrêter et redémarrer les clusters de charge de travail pour gérer les interruptions de service prévues pour la maintenance du réseau ou l'interruption planifiée du réseau.

Conditions requises

  • Le bail et la réservation DHCP pour tous les nœuds de cluster sur tous les réseaux doivent être plus longs que votre interruption prévue.
    • Cela garantit que les nœuds conservent leur adresse après qu'ils ont redémarré, ce qui est nécessaire.
  • jq installé localement.
  • Sauvegardez NSX Manager.

Procédure

  1. Exécutez la commande suivante pour collecter des informations sur votre base de données etcd :

    kubectl --kubeconfig /etc/kubernetes/admin.conf get pods `kubectl --kubeconfig /etc/kubernetes/admin.conf  get pods -A | grep etc | awk '{print $2}'` -n kube-system  -o=jsonpath='{.spec.containers[0].command}' | jq
    

    Exemple de sortie :

    [
      "etcd",
      "--advertise-client-urls=https://192.168.7.154:2379",
      "--cert-file=/etc/kubernetes/pki/etcd/server.crt",
      "--client-cert-auth=true",
      "--data-dir=/var/lib/etcd",
      "--initial-advertise-peer-urls=https://192.168.7.154:2380",
      "--initial-cluster=workload-vsphere-tkg2-control-plane-fk5hw=https://192.168.7.154:2380",
      "--key-file=/etc/kubernetes/pki/etcd/server.key",
      "--listen-client-urls=https://127.0.0.1:2379,https://192.168.7.154:2379",
      "--listen-metrics-urls=http://127.0.0.1:2381",
      "--listen-peer-urls=https://192.168.7.154:2380",
      "--name=workload-vsphere-tkg2-control-plane-fk5hw",
      "--peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt",
      "--peer-client-cert-auth=true",
      "--peer-key-file=/etc/kubernetes/pki/etcd/peer.key",
      "--peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt",
      "--snapshot-count=10000",
      "--trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt"
    ]
    
  2. Pour chaque nœud de plan de contrôle :

    1. Exécutez la commande ssh pour vous connecter au nœud.

    2. Exécutez la commande suivante pour localiser son fichier etcdctl exécutable.

      find / -type f -name "*etcdctl*" -print
      

      Exemple de sortie :

       /run/containerd/io.containerd.runtime.v1.linux/k8s.io/823581f975804b65048f4babe2015a95cfa7ed6f767073796afe47b9d03299fb/rootfs/usr/local/bin/etcdctl`
       /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/19/fs/usr/local/bin/etcdctl
      
    3. Créez un fichier de sauvegarde etcd et vérifiez.

      1. Exécutez la commande suivante :

        ETCD-EXE snapshot save LOCAL-BACKUP --endpoints=ENDPOINTS --cacert=CA --cert=CERT --key=KEY
        

        Où :

        • ETCD-EXE est le chemin d'accès local au fichier etcdctl exécutable
        • LOCAL-BACKUP est le fichier local vers lequel effectuer la sauvegarde, par exemple /tmp/etcdBackup1.db
        • ENDPOINTS, CA, CERT et KEY sont les valeurs --advertise-client-urls, --peer-trusted-ca-file, --cert-file et --key-file enregistrées ci-dessus

        Par exemple :

        /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/19/fs/usr/local/bin/etcdctl snapshot save /tmp/etcdBackup1.db \
         --endpoints=https://192.168.7.154:2379 \
         --cacert=/etc/kubernetes/pki/etcd/ca.crt \
         --cert=/etc/kubernetes/pki/etcd/server.crt \
         --key=/etc/kubernetes/pki/etcd/server.key
        
        1. Vérifiez que le compartiment a été créé :

          ls -l  LOCAL-BACKUP
          
        2. Vérifiez le contenu de la sauvegarde en générant un snapshot à partir du fichier :

          ETCD-EXE --write-out=table snapshot status LOCAL-BACKUP
          
  3. À partir de votre machine de démarrage, exécutez la séquence de commandes suivante pour collecter des informations sur le cluster et les enregistrer dans un fichier :

      tanzu cluster list -A > CLUSTER-INFO-1
      kubectl config get-contexts >> CLUSTER-INFO-1
      kubectl config use-context tkg-mgmt-vsphere-20211111074850-admin@tkg-mgmt-vsphere-20211111074850 >> CLUSTER-INFO-1
      kubectl get nodes -o wide >> CLUSTER-INFO-1
      kubectl config use-context mycluster1-admin@mycluster1 >> CLUSTER-INFO-1
      kubectl get nodes -o wide >> CLUSTER-INFO-1
      cat CLUSTER-INFO-1
    

    CLUSTER-INFO-1 est un fichier texte local dans lequel enregistrer les informations, par exemple /tmp/SaveClusterInfo1.txt.

  4. Purgez toutes les applications sur les nœuds worker.

  5. Arrêtez toutes les machines virtuelles sur vCenter dans l'ordre suivant :

    1. Arrêtez les nœuds du plan de contrôle du cluster de gestion.
    2. Arrêtez les nœuds worker du cluster de gestion.
    3. Arrêtez les nœuds de plan de contrôle du cluster de charge de travail.
    4. Arrêtez les nœuds worker du cluster de charge de travail.
  6. Redémarrez toutes les machines virtuelles sur vCenter dans l'ordre suivant :

    1. Démarrez les nœuds du plan de contrôle du cluster de charge de travail.
    2. Démarrez les nœuds worker du cluster de charge de travail.
    3. Démarrez les nœuds du plan de contrôle du cluster de gestion.
    4. Démarrez les nœuds worker du cluster de gestion.
  7. Exécutez la séquence de commandes suivante pour collecter des informations sur le cluster et les enregistrer dans un fichier différent :

    tanzu cluster list -A --include-management-cluster -A > CLUSTER-INFO-2
    kubectl config get-contexts >> CLUSTER-INFO-2
    kubectl config use-context tkg-mgmt-vsphere-20211111074850-admin@tkg-mgmt-vsphere-20211111074850 >> CLUSTER-INFO-2
    kubectl get nodes -o wide >> CLUSTER-INFO-2
    kubectl config use-context mycluster1-admin@mycluster1 >> CLUSTER-INFO-2
    kubectl get nodes -o wide >> CLUSTER-INFO-2
    cat CLUSTER-INFO-2
    

    CLUSTER-INFO-2 est un autre fichier texte local dans lequel enregistrer les informations, par exemple /tmp/SaveClusterInfo2.txt.

  8. Comparez les deux fichiers d'informations sur le cluster pour vérifier qu'ils disposent des mêmes informations sur le cluster, par exemple :

    sdiff /tmp/SaveClusterInfo1.txt /tmp/SaveClusterInfo2.txt
    

Supprimer des clusters de charge de travail

Pour supprimer un cluster de charge de travail, exécutez la commande tanzu cluster delete. En fonction du contenu du cluster et de l'infrastructure cloud, vous devrez peut-être supprimer des volumes et des services dans le cluster avant de supprimer le cluster.

Important

Vous devez supprimer les clusters de charge de travail explicitement. Vous ne pouvez pas le faire en supprimant leur espace de noms dans le cluster de gestion.

  1. Répertoriez les clusters.

    Pour répertorier tous les clusters de charge de travail dans le contexte de connexion actuel de la CLI Tanzu, exécutez la commande tanzu cluster list -A.

    tanzu cluster list -A
    
  2. Supprimez des volumes et des services.

    Si le cluster que vous souhaitez supprimer contient des volumes persistants ou des services tels que des équilibrages de charge et des bases de données, vous devrez peut-être les supprimer manuellement avant de supprimer le cluster lui-même. Ce que vous devez supprimer préalablement dépend de votre infrastructure de cloud :

    vSphere
    Procédez comme suit si votre infrastructure est de type vSphere.

    Supprimer le type de service LoadBalancer

    Pour supprimer le type de service LoadBalancer (Service) dans un cluster :

    1. Définissez kubectl dans le contexte du cluster.

      kubectl config set-context my-cluster@user
      
    2. Récupérez la liste des services du cluster.

      kubectl get service
      
    3. Supprimez chaque type de service LoadBalancer.

      kubectl delete service <my-svc>
      

    Supprimer des volumes persistants et des réclamations de volume persistant

    Pour supprimer des objets de volume persistant (PV) et de réclamation de volume persistant (PVC) dans un cluster :

    1. Exécutez kubectl config set-context my-cluster@user pour définir kubectl sur le contexte du cluster.

    2. Exécutez kubectl get pvc pour récupérer les réclamations de volume persistant (PVC) du cluster.

    3. Pour chaque réclamation de volume persistant :

      1. Exécutez kubectl describe pvc <my-pvc> pour identifier le volume persistant auquel il est lié. Le volume persistant est répertorié dans la sortie de la commande comme Volume, après État : Lié.

      2. Exécutez kubectl describe pv <my-pv> pour déterminer si sa Reclaim Policy de volume persistant lié est Retain ou Delete.

      3. Exécutez kubectl delete pvc <my-pvc> pour supprimer la réclamation de volume persistant.

      4. Si la stratégie de récupération de volume persistant est Retain, exécutez kubectl delete pv <my-pvc>, puis connectez-vous à votre portail cloud et supprimez l'objet de volume persistant à cet emplacement. Par exemple, supprimez un volume vSphere CNS de votre volet de banque de données > Surveiller (Monitor) > Stockage cloud natif (Cloud Native Storage) > Volumes de conteneur (Container Volumes). Pour plus d'informations sur vSphere CNS, reportez-vous à la section Démarrage avec le stockage natif Cloud dans vSphere.

    Amazon Web Services (AWS)
    Procédez comme suit si votre infrastructure est de type AWS.
    • Équilibrages de charge : équilibrages de charge d'application ou de réseau (ALB ou NIB) dans le VPC du cluster, mais pas les équilibrages de charge classiques (ELB v1). Supprimez ces ressources dans l'interface utilisateur d'AWS ou à l'aide de la commande kubectl delete.
    • Autres services : tout sous-réseau et service reposant sur AWS dans le VPC du cluster, tel qu'un RDS ou un VPC, et les ressources associées telles que :

      • VPC : supprimez sous Tableau de bord VPC (VPC Dashboard) > Virtual Private Cloud > Vos VPC (Your VPCs).
      • RDS : supprimez sous Tableau de bord RDS (RDS Dashboard) > Bases de données (Databases).
      • Sous-réseaux : supprimez sous Tableau de bord VPC (VPC Dashboard) > Virtual Private Cloud > Sous-réseaux (Subnets).
      • Tables de routage : supprimez sous Tableau de bord VPC (VPC Dashboard) > Virtual Private Cloud > Tables de routage (Route Tables).
      • Passerelles Internet : supprimez sous Tableau de bord VPC (VPC Dashboard) > Virtual Private Cloud > Passerelles Internet (Internet Gateways).
      • Adresses IP élastiques : supprimez sous Tableau de bord VPC (VPC Dashboard) > Virtual Private Cloud > Adresses IP élastiques (Elastic IPs).
      • Passerelles NAT : supprimez sous Tableau de bord VPC (VPC Dashboard) > Virtual Private Cloud > Passerelles NAT (NAT Gateways).
      • ACL réseau : supprimez sous Tableau de bord VPC (VPC Dashboard) > Sécurité (Security) > ACL réseau (Network ACLs).
      • Groupes de sécurité : supprimez sous Tableau de bord VPC (VPC Dashboard) > Sécurité (Security) > Groupes de sécurité (Security Groups).

      Supprimez ces ressources dans l'interface utilisateur AWS comme ci-dessus ou avec l'interface de ligne de commande aws.

    • Volumes persistants et réclamations de volume persistant : Supprimez ces ressources à l'aide de la commande kubectl delete comme décrit dans la section Supprimer les réclamations de volume persistant et les volumes persistants ci-dessous.

    Azure
    Aucune action n’est requise si votre infrastructure est Azure.

    La suppression d'un cluster supprime tout ce que TKG a créé dans le groupe de ressources du cluster.

  3. Si nécessaire, migrez les charges de travail hors des clusters, par exemple en utilisant Velero, comme décrit dans les sections Migration des clusters et Filtrage des ressources de la documentation de Velero.

  4. Supprimez les clusters.

    Pour supprimer un cluster, exécutez tanzu cluster delete.

    tanzu cluster delete my-cluster
    

    Si le cluster s'exécute dans un espace de noms autre que l'espace de noms default, vous devez spécifier l'option --namespace pour supprimer ce cluster.

    tanzu cluster delete my-cluster --namespace=my-namespace
    

    Pour ignorer l'étape de vérification yes/no lorsque vous exécutez tanzu cluster delete, spécifiez l'option --yes.

    tanzu cluster delete my-cluster --namespace=my-namespace --yes
    

    Pour supprimer un cluster sur AWS, la variable AWS_REGION doit être définie sur la région dans laquelle le cluster s'exécute. Vous pouvez définir AWS_REGION dans l'environnement local ou le profil d'informations d'identification, comme décrit dans la section Configurer les informations d'identification du compte AWS. Pour supprimer le cluster dans une autre région, ajoutez le paramètre à la commande tanzu cluster delete :

    AWS_REGION=eu-west-1 tanzu cluster delete my-cluster
    
Important

ne modifiez pas le contexte ou le fichier .kube-tkg/config lorsque des opérations Tanzu Kubernetes Grid sont en cours d'exécution.

check-circle-line exclamation-circle-line close-line
Scroll to top icon