Reiniciar y eliminar clústeres

En este tema se explica cómo apagar y reiniciar los clústeres de carga de trabajo, y cómo eliminarlos.

Apagar y reiniciar clústeres de carga de trabajo

Es posible que deba apagar y reiniciar los clústeres de carga de trabajo para admitir interrupciones planificadas durante el mantenimiento de la red o el tiempo de inactividad de la red planificado.

Requisitos previos

  • La concesión y la reserva de DHCP para todos los nodos del clúster en todas las redes deben ser mayores que la interrupción planificada.
    • Esto garantiza que los nodos conserven sus mismas direcciones después de que se reinicien, lo cual es necesario.
  • jq instalado localmente.
  • Realice una copia de seguridad de NSX Manager.

Procedimiento

  1. Ejecute el siguiente comando para recopilar información sobre la base de datos de 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
    

    Resultados de ejemplo:

    [
      "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. Para cada nodo del plano de control:

    1. Ejecute el comando ssh para iniciar sesión en el clúster de destino.

    2. Ejecute el siguiente comando para localizar su etcdctl ejecutable.

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

      Resultados de ejemplo:

       /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. Cree un archivo de copia de seguridad etcd y compruébelo.

      1. Ejecute el siguiente comando:

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

        Donde:

        • ETCD-EXE es la ruta de acceso local al ejecutable etcdctl
        • LOCAL-BACKUP es el archivo local al que realizar una copia de seguridad, por ejemplo, /tmp/etcdBackup1.db
        • ENDPOINTS, CA, CERT y KEY son los valores de --advertise-client-urls, --peer-trusted-ca-file, --cert-file y --key-file registrados anteriormente

        Por ejemplo:

        /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. Compruebe que se haya creado el archivo de copia de seguridad:

          ls -l  LOCAL-BACKUP
          
        2. Verifique el contenido de la copia de seguridad generando una instantánea a partir del archivo:

          ETCD-EXE --write-out=table snapshot status LOCAL-BACKUP
          
  3. Desde su máquina de arranque, ejecute la siguiente secuencia de comandos para recopilar información del clúster y guardarla en un archivo:

      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
    

    Donde CLUSTER-INFO-1 es un archivo de texto local en el que guardar la información, por ejemplo, /tmp/SaveClusterInfo1.txt.

  4. Purgar todas las aplicaciones en los nodos de trabajo.

  5. Detenga todas las máquinas virtuales en vCenter en el siguiente orden:

    1. Apagar nodos del plano de control del clúster de administración.
    2. Apagar nodos de trabajo del clúster de administración.
    3. Apagar nodos del plano de control del clúster de carga de trabajo.
    4. Apagar nodos de trabajo del clúster de carga de trabajo.
  6. Reinicie todas las máquinas virtuales en vCenter en el siguiente orden:

    1. Iniciar nodos del plano de control del clúster de carga de trabajo.
    2. Iniciar nodos de trabajo del clúster de carga de trabajo.
    3. Iniciar nodos del plano de control del clúster de administración.
    4. Iniciar nodos de trabajo del clúster de administración.
  7. Ejecute la siguiente secuencia de comandos para recopilar información del clúster y guardarla en un archivo diferente:

    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
    

    Donde CLUSTER-INFO-2 es un archivo de texto local diferente en el que guardar la información (por ejemplo, /tmp/SaveClusterInfo2.txt.

  8. Compare los dos archivos de información del clúster para comprobar que tienen la misma información del clúster, por ejemplo:

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

Eliminar clústeres de carga de trabajo

Para eliminar un clúster de carga de trabajo, ejecute el comando tanzu cluster delete. Según el contenido del clúster y la infraestructura de nube, es posible que deba eliminar los volúmenes y los servicios en el clúster antes de eliminar el propio clúster.

Importante

Debe eliminar los clústeres de carga de trabajo explícitamente; no puede eliminarlos mediante la eliminación de su espacio de nombres en el clúster de administración.

  1. Enumerar los clústeres.

    Para enumerar todos los clústeres de carga de trabajo dentro del contexto de inicio de sesión actual de la CLI de Tanzu, ejecute el comando tanzu cluster list -A.

    tanzu cluster list -A
    
  2. Eliminar volúmenes y servicios.

    Si el clúster que desea eliminar contiene volúmenes persistentes o servicios, como equilibradores de carga y bases de datos, es posible que deba eliminarlos manualmente antes de eliminar el propio clúster. Lo que debe eliminar previamente depende de la infraestructura de nube:

    vSphere
    Haga lo siguiente si la infraestructura es vSphere.

    Eliminar tipo de servicio LoadBalancer

    Para eliminar el tipo de servicio LoadBalancer (Servicio) en un clúster:

    1. Establezca kubectl en el contexto del clúster.

      kubectl config set-context my-cluster@user
      
    2. Recupere la lista de servicios del clúster.

      kubectl get service
      
    3. Elimine cada tipo de servicio LoadBalancer.

      kubectl delete service <my-svc>
      

    Eliminar volúmenes persistentes y notificaciones de volumen persistente

    Para eliminar objetos de volumen persistente (Persistent Volume, PV) y notificación de volumen persistente (Persistent Volume Claim, PVC) en un clúster:

    1. Ejecute kubectl config set-context my-cluster@user para establecer kubectl en el contexto del clúster.

    2. Ejecute kubectl get pvc para recuperar las notificaciones de volumen persistente (Persistent Volume Claims, PVC) del clúster.

    3. Para cada PVC:

      1. Ejecute kubectl describe pvc <my-pvc> para identificar el PV al que está enlazado. El PV aparece en la salida del comando como Volumen, después de Estado: Enlazado.

      2. Ejecute kubectl describe pv <my-pv> para describir si su Reclaim Policy de PV enlazada es Retain o Delete.

      3. Ejecute kubectl delete pvc <my-pvc> para eliminar la PVC.

      4. Si la directiva de recuperación de PV está Retain, ejecute kubectl delete pv <my-pvc> y, a continuación, inicie sesión en el portal de nube y elimine el objeto PV allí. Por ejemplo, elimine un volumen de CNS vSphere del panel del almacén de datos > Monitor > Almacenamiento nativo de nube (Cloud Native Storage) > Volúmenes de contenedores (Container Volumes) Para obtener más información sobre vSphere CNS, consulte Introducción al almacenamiento nativo de nube de VMware.

    Amazon Web Services (AWS)
    Haga lo siguiente si su infraestructura es AWS.
    • Equilibradores de carga: Equilibradores de carga de red o aplicación (ALB o NLB) en la VPC del clúster, pero no equilibradores de carga clásico (ELB v1). Elimine estos recursos en la interfaz de usuario de AWS o con el comando kubectl delete.
    • Otros servicios: Cualquier subred y servicio respaldado por AWS en la VPC del clúster, como un RDS o una VPC, y los recursos relacionados, como:

      • VPC: Elimine en Panel de control de VPC > Virtual Private Cloud > las VPC.
      • RDS: Elimine en Panel de control de RDS > Bases de datos.
      • Subredes: Elimine en Panel de control de VPC > Virtual Private Cloud > Subredes.
      • Tablas de ruta: Elimine en Panel de control de VPC > Virtual Private Cloud > Tablas de rutas.
      • Puertas de enlace de Internet: Elimine en Panel de control de VPC > Virtual Private Cloud > Puertas de enlace de Internet.
      • Direcciones de IP elástica: Elimine en Panel de control de VPC > Virtual Private Cloud > IP elásticas.
      • Puertas de enlace NAT: Elimine en Panel de control de VPC > Virtual Private Cloud > Puertas de enlace NAT.
      • ACL de red: Elimine en Panel de control de VPC > Seguridad > ACL de red.
      • Grupos de seguridad: Elimine en Panel de control de VPC > Seguridad > Grupos de seguridad.

      Elimine estos recursos en la interfaz de usuario de AWS como se indica arriba o con la CLI aws.

    • Volúmenes persistentes y notificaciones de volumen persistente: Elimine estos recursos con el comando kubectl delete como se describe en Eliminar notificaciones de volumen persistente y volúmenes persistentes, a continuación.

    Azure
    No se requiere ninguna acción si la infraestructura es Azure.

    Al eliminar un clúster, se eliminan todos los elementos que TKG creó en el grupo de recursos del clúster.

  3. Si es necesario, migre las cargas de trabajo fuera de los clústeres, por ejemplo, mediante Velero como se describe en Migración de clústeres y Filtrado de recursos en la documentación de Velero.

  4. Elimine los clústeres.

    Para eliminar un clúster, ejecute tanzu cluster delete.

    tanzu cluster delete my-cluster
    

    Si el clúster se ejecuta en un espacio de nombres que no sea el espacio de nombres default, debe especificar la opción --namespace para eliminar ese clúster.

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

    Para omitir el paso de verificación yes/no al ejecutar la eliminación del clúster de tanzu cluster delete, especifique la opción --yes.

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

    Para eliminar un clúster en AWS, la variable AWS_REGION debe establecerse en la región en la que se ejecuta el clúster. Puede establecer AWS_REGION en el perfil de credenciales o el entorno local, como se describe en Configurar credenciales de la cuenta de AWS. Para eliminar el clúster en una región diferente, anteponga el ajuste al comando tanzu cluster delete:

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

No cambie el contexto ni edite el archivo .kube-tkg/config mientras se ejecutan las operaciones de Tanzu Kubernetes Grid.

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