En este tema se explica cómo apagar y reiniciar los clústeres de carga de trabajo, y cómo eliminarlos.
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.
jq
instalado localmente.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"
]
Para cada nodo del plano de control:
Ejecute el comando ssh
para iniciar sesión en el clúster de destino.
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
Cree un archivo de copia de seguridad etcd
y compruébelo.
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 anteriormentePor 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
Compruebe que se haya creado el archivo de copia de seguridad:
ls -l LOCAL-BACKUP
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
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
.
Purgar todas las aplicaciones en los nodos de trabajo.
Detenga todas las máquinas virtuales en vCenter en el siguiente orden:
Reinicie todas las máquinas virtuales en vCenter en el siguiente orden:
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
.
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
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.
ImportanteDebe 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.
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
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:
Para eliminar el tipo de servicio LoadBalancer (Servicio) en un clúster:
Establezca kubectl
en el contexto del clúster.
kubectl config set-context my-cluster@user
Recupere la lista de servicios del clúster.
kubectl get service
Elimine cada tipo de servicio LoadBalancer
.
kubectl delete service <my-svc>
Para eliminar objetos de volumen persistente (Persistent Volume, PV) y notificación de volumen persistente (Persistent Volume Claim, PVC) en un clúster:
Ejecute kubectl config set-context my-cluster@user
para establecer kubectl
en el contexto del clúster.
Ejecute kubectl get pvc
para recuperar las notificaciones de volumen persistente (Persistent Volume Claims, PVC) del clúster.
Para cada PVC:
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.
Ejecute kubectl describe pv <my-pv>
para describir si su Reclaim Policy
de PV enlazada es Retain
o Delete
.
Ejecute kubectl delete pvc <my-pvc>
para eliminar la PVC.
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 vSphere.
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:
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.
Al eliminar un clúster, se eliminan todos los elementos que TKG creó en el grupo de recursos del clúster.
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.
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
ImportanteNo cambie el contexto ni edite el archivo
.kube-tkg/config
mientras se ejecutan las operaciones de Tanzu Kubernetes Grid.