Questo argomento spiega come arrestare e riavviare i cluster del carico di lavoro e come eliminarli.
Potrebbe essere necessario arrestare e riavviare i cluster del carico di lavoro per consentire le interruzioni pianificate per la manutenzione della rete o il tempo di inattività pianificato della rete.
jq
installato in locale.Eseguire il comando seguente per raccogliere informazioni sul database 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
Output di esempio:
[
"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"
]
Per ogni nodo del piano di controllo:
Per accedere al nodo, eseguire il comando ssh
.
Eseguire il comando seguente per individuare l'eseguibile etcdctl
corrispondente.
find / -type f -name "*etcdctl*" -print
Output di esempio:
/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
Creare un file di backup etcd
ed eseguire la verifica.
Eseguire il comando seguente:
ETCD-EXE snapshot save LOCAL-BACKUP --endpoints=ENDPOINTS --cacert=CA --cert=CERT --key=KEY
In cui:
ETCD-EXE
è il percorso locale dell'eseguibile etcdctl
LOCAL-BACKUP
è il file locale in cui eseguire il backup, ad esempio /tmp/etcdBackup1.db
ENDPOINTS
, CA
, CERT
e KEY
sono i valori --advertise-client-urls
, --peer-trusted-ca-file
, --cert-file
e --key-file
registrati sopraAd esempio:
/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
Verificare che il file il backup sia stato creato:
ls -l LOCAL-BACKUP
Verificare il contenuto del backup generando uno snapshot dal file:
ETCD-EXE --write-out=table snapshot status LOCAL-BACKUP
Dalla macchina di bootstrap, eseguire la sequenza di comandi seguente per raccogliere informazioni sul cluster e salvarle in un file:
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
In cui CLUSTER-INFO-1
è un file di testo locale in cui salvare le informazioni, ad esempio /tmp/SaveClusterInfo1.txt
.
Svuotare tutte le applicazioni nei nodi worker.
Arrestare tutte le macchine virtuali in vCenter nell'ordine seguente:
Riavviare tutte le macchine virtuali in vCenter nell'ordine seguente:
Eseguire la sequenza di comandi seguente per raccogliere informazioni sul cluster e salvarle in un file diverso:
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
In cui CLUSTER-INFO-2
è un file di testo locale diverso in cui salvare le informazioni, ad esempio /tmp/SaveClusterInfo2.txt
.
Confrontare i due file di informazioni del cluster per verificare che dispongano delle stesse informazioni sul cluster, ad esempio:
sdiff /tmp/SaveClusterInfo1.txt /tmp/SaveClusterInfo2.txt
Per eliminare un cluster del carico di lavoro, eseguire il comando tanzu cluster delete
. In base al contenuto del cluster e all'infrastruttura del cloud, potrebbe essere necessario eliminare i volumi e i servizi all'interno del cluster prima di eliminare il cluster stesso.
ImportanteÈ necessario eliminare esplicitamente i cluster del carico di lavoro; non è possibile eliminarli eliminando il relativo spazio dei nomi nel cluster di gestione.
Creare un elenco dei cluster.
Per creare un elenco di tutti i cluster del carico di lavoro nel contesto di accesso corrente della CLI di Tanzu, eseguire il comando tanzu cluster list -A
.
tanzu cluster list -A
Eliminare volumi e servizi.
Se il cluster che si desidera eliminare contiene volumi o servizi persistenti, ad esempio bilanciamenti del carico e database, potrebbe essere necessario eliminarli manualmente prima di eliminare il cluster stesso. Le operazioni necessarie per questa eliminazione dipendono dall'infrastruttura del cloud:
Per eliminare il tipo di servizio LoadBalancer (servizio) in un cluster:
Impostare kubectl
sul contesto del cluster.
kubectl config set-context my-cluster@user
Recuperare l'elenco di servizi del cluster.
kubectl get service
Eliminare ogni tipo di servizio LoadBalancer
.
kubectl delete service <my-svc>
Per eliminare gli oggetti Persistent Volume (PV) e Persistent Volume Claim (PVC) in un cluster:
Eseguire kubectl config set-context my-cluster@user
per impostare kubectl
sul contesto del cluster.
Eseguire kubectl get pvc
per recuperare gli oggetti Persistent Volume Claim (PVC).
Per ogni PVC:
Eseguire kubectl describe pvc <my-pvc>
per identificare l'oggetto PV a cui è associato. L'oggetto PV è indicato nell'output del comando come Volume dopo Status: Bound.
Eseguire kubectl describe pv <my-pv>
per stabilire se l'oggetto PV Bound Reclaim Policy
è Retain
o Delete
.
Eseguire kubectl delete pvc <my-pvc>
per eliminare l'oggetto PVC.
Se il criterio di recupero dell'oggetto PV è Retain
, eseguire kubectl delete pv <my-pvc>
e quindi accedere al portale cloud ed eliminare l'oggetto PV in tale portale. Ad esempio, eliminare un volume vSphere CNS dal riquadro del datastore > Monitora > Cloud Native Storage > Volumi container. Per ulteriori informazioni su vSphere CNS, vedere Introduzione a VMware Cloud Native Storage.
kubectl delete
.Altri servizi: qualsiasi subnet e servizio supportato da AWS nel VPC del cluster, ad esempio RDS o VPC, e le risorse correlate, come:
Eliminare queste risorse nell'interfaccia utente di AWS come indicato sopra o con la CLI aws
.
Volumi persistenti e richieste di volumi persistenti: Eliminare queste risorse con il comando kubectl delete
come descritto in Eliminazione di richieste di volumi persistenti e volumi persistenti di seguito.
Se si elimina un cluster, vengono eliminati tutti gli elementi creati da TKG nel gruppo di risorse del cluster.
Se necessario, eseguire la migrazione dei carichi di lavoro dai cluster, ad esempio utilizzando Velero come descritto in Migrazione dei cluster e Filtro delle risorse nella documentazione di Velero.
Eliminare i cluster.
Per eliminare un cluster, eseguire tanzu cluster delete
.
tanzu cluster delete my-cluster
Se il cluster è in esecuzione in uno spazio dei nomi diverso dallo spazio dei nomi default
, è necessario specificare l'opzione --namespace
per eliminare tale cluster.
tanzu cluster delete my-cluster --namespace=my-namespace
Per ignorare il passaggio di verifica yes/no
quando si esegue tanzu cluster delete
, specificare l'opzione --yes
.
tanzu cluster delete my-cluster --namespace=my-namespace --yes
Per eliminare un cluster in AWS, la variabile AWS_REGION
deve essere impostata sulla regione in cui il cluster è in esecuzione. È possibile impostare AWS_REGION
nel profilo delle credenziali o nell'ambiente locale, come descritto in Configurazione delle credenziali dell'account AWS. Per eliminare il cluster in una regione diversa, anteporre l'impostazione al comando tanzu cluster delete
:
AWS_REGION=eu-west-1 tanzu cluster delete my-cluster
ImportanteNon modificare il contesto o modificare il file
.kube-tkg/config
mentre sono in esecuzione le operazioni di Tanzu Kubernetes Grid.