本主題解釋如何關閉並重新啟動工作負載叢集,以及如何刪除它們。
您可能需要關閉並重新啟動工作負載叢集,以配合網路維護或計劃的網路停機的計劃中斷。
jq
安裝在本機。執行以下命令,以收集有關 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
範例輸出:
[
"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"
]
對於每個控制平面節點:
執行 ssh
命令以登入節點。
執行以下命令,尋找其 etcdctl
可執行檔。
find / -type f -name "*etcdctl*" -print
範例輸出:
/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
建立 etcd
備份檔案並進行驗證。
執行下列命令:
ETCD-EXE snapshot save LOCAL-BACKUP --endpoints=ENDPOINTS --cacert=CA --cert=CERT --key=KEY
其中:
ETCD-EXE
是指向 etcdctl
可執行檔的本機路徑LOCAL-BACKUP
是要備份的本機檔案,例如 /tmp/etcdBackup1.db
ENDPOINTS
、CA
、CERT
和 KEY
是上面所記錄的 --advertise-client-urls
、--peer-trusted-ca-file
、--cert-file
和 --key-file
值例如:
/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
驗證已建立備份檔:
ls -l LOCAL-BACKUP
從檔案產生快照,以驗證備份內容:
ETCD-EXE --write-out=table snapshot status LOCAL-BACKUP
在啟動機器中,依下列順序來執行命令,以收集叢集資訊並將其儲存至檔案:
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
是用來儲存資訊的本機文字檔,例如 /tmp/SaveClusterInfo1.txt
。
清空工作節點上的所有應用程式。
依以下順序,停止 vCenter 上的所有虛擬機器:
依以下順序,重新啟動 vCenter 上的所有虛擬機器:
依下列順序來執行命令,以收集叢集資訊並儲存到另一個檔案中:
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
是用來儲存資訊的另一個本機文字檔,例如 /tmp/SaveClusterInfo2.txt
。
比較這兩個叢集資訊檔,以驗證它們具有相同的叢集資訊,例如:
sdiff /tmp/SaveClusterInfo1.txt /tmp/SaveClusterInfo2.txt
若要刪除工作負載叢集,請執行 tanzu cluster delete
命令。視叢集內容和雲端基礎結構而定,您可能需要先刪除叢集中的磁碟區和服務,之後才刪除叢集本身。
重要您必須明確刪除工作負載叢集;您無法透過在管理叢集中刪除其命名空間來將其刪除。
列出叢集。
若要列出 Tanzu CLI 目前登入內容中的所有工作負載叢集,請執行 tanzu cluster list -A
命令。
tanzu cluster list -A
刪除磁碟區和服務。
如果您想刪除的叢集含有持續性磁碟區或服務 (例如負載平衡器和資料庫),您可能需要先手動刪除它們,然後才刪除叢集本身。您需要預先刪除哪些內容,取決於您的雲端基礎結構:
若要在叢集中刪除服務類型 LoadBalancer (服務),請執行以下動作:
將 kubectl
設定為叢集的內容。
kubectl config set-context my-cluster@user
擷取叢集的服務清單。
kubectl get service
刪除每個服務類型 LoadBalancer
。
kubectl delete service <my-svc>
若要刪除叢集中的持續性磁碟區 (PV) 和持續性磁碟區宣告 (PVC) 物件,請執行以下動作:
執行 kubectl config set-context my-cluster@user
,以將 kubectl
設定為叢集的內容。
執行 kubectl get pvc
,以擷取叢集的持續性磁碟區宣告 (PVC)。
針對每個 PVC:
執行 kubectl describe pvc <my-pvc>
,以識別其繫結的 PV。PV 在命令輸出中會列出為磁碟區,並且放在狀態:已繫結後面。
執行 kubectl describe pv <my-pv>
,以說明其繫結的 PV Reclaim Policy
是 Retain
還是 Delete
。
執行 kubectl delete pvc <my-pvc>
,以刪除 PVC。
如果 PV 回收原則為 Retain
,請執行 kubectl delete pv <my-pvc>
,然後登入雲端入口網站,並刪除其中的 PV 物件。例如,從您的資料存放區窗格 > 監控 (Monitor) > 雲端原生儲存區 (Cloud Native Storage) > 容器磁碟區 (Container Volumes) 中,刪除 vSphere CNS 磁碟區。有關 vSphere CNS 的詳細資訊,請參閱 vSphere 中的 Cloud 原生存儲入門。
kubectl delete
命令,來刪除這些資源。其他服務:叢集 VPC 中的任何子網路和 AWS 支援的服務 (例如 RDS 或 VPC),以及相關的資源,例如:
在 AWS UI 中如上所述或使用 aws
CLI,來刪除這些資源。
持續性磁碟區和持續性磁碟區宣告:如下面刪除持續性磁碟區宣告和持續性磁碟區中所述,使用 kubectl delete
命令來刪除這些資源。
如果刪除叢集,將會刪除 TKG 在叢集的資源群組中所建立的一切。
刪除 叢集。
若要刪除叢集,請執行 tanzu cluster delete
。
tanzu cluster delete my-cluster
如果叢集正在 default
命名空間以外的命名空間中執行,您必須指定 --namespace
選項,以刪除該叢集。
tanzu cluster delete my-cluster --namespace=my-namespace
若要在執行 tanzu cluster delete
時跳過 yes/no
驗證步驟,請指定 --yes
選項。
tanzu cluster delete my-cluster --namespace=my-namespace --yes
若要刪除 AWS 上的叢集,必須將 AWS_REGION
變數設定為執行叢集的區域。您可以在本機環境或認證設定檔中設定 AWS_REGION
,如設定 AWS 帳戶認證中所述。若要刪除不同區域中的叢集,請在 tanzu cluster delete
命令前放置該設定:
AWS_REGION=eu-west-1 tanzu cluster delete my-cluster
重要當 Tanzu Kubernetes Grid 作業正在執行期間,請勿變更內容或編輯
.kube-tkg/config
檔案。