重新啟動和刪除叢集

本主題解釋如何關閉並重新啟動工作負載叢集,以及如何刪除它們。

關閉並重新啟動工作負載叢集

您可能需要關閉並重新啟動工作負載叢集,以配合網路維護或計劃的網路停機的計劃中斷。

必要條件

  • 所有網路上所有叢集節點的 DHCP 租約和保留時間,都必須比您計劃的中斷時間長。
    • 這可確保節點在重新啟動後仍保有相同的位址,這是必要的。
  • jq 安裝在本機。
  • 備份 NSX Manager

程序

  1. 執行以下命令,以收集有關 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"
    ]
    
  2. 對於每個控制平面節點:

    1. 執行 ssh 命令以登入節點。

    2. 執行以下命令,尋找其 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
      
    3. 建立 etcd 備份檔案並進行驗證。

      1. 執行下列命令:

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

        其中:

        • ETCD-EXE 是指向 etcdctl 可執行檔的本機路徑
        • LOCAL-BACKUP 是要備份的本機檔案,例如 /tmp/etcdBackup1.db
        • ENDPOINTSCACERTKEY 是上面所記錄的 --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
        
        1. 驗證已建立備份檔:

          ls -l  LOCAL-BACKUP
          
        2. 從檔案產生快照,以驗證備份內容:

          ETCD-EXE --write-out=table snapshot status LOCAL-BACKUP
          
  3. 在啟動機器中,依下列順序來執行命令,以收集叢集資訊並將其儲存至檔案:

      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

  4. 清空工作節點上的所有應用程式。

  5. 依以下順序,停止 vCenter 上的所有虛擬機器:

    1. 關閉管理叢集控制平面節點。
    2. 關閉管理叢集工作節點。
    3. 關閉工作負載叢集控制平面節點。
    4. 關閉工作負載叢集工作節點。
  6. 依以下順序,重新啟動 vCenter 上的所有虛擬機器:

    1. 啟動工作負載叢集控制平面節點。
    2. 啟動工作負載叢集工作節點。
    3. 啟動管理叢集控制平面節點。
    4. 啟動管理叢集工作節點。
  7. 依下列順序來執行命令,以收集叢集資訊並儲存到另一個檔案中:

    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

  8. 比較這兩個叢集資訊檔,以驗證它們具有相同的叢集資訊,例如:

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

刪除工作負載叢集

若要刪除工作負載叢集,請執行 tanzu cluster delete 命令。視叢集內容和雲端基礎結構而定,您可能需要先刪除叢集中的磁碟區和服務,之後才刪除叢集本身。

重要

您必須明確刪除工作負載叢集;您無法透過在管理叢集中刪除其命名空間來將其刪除。

  1. 列出叢集。

    若要列出 Tanzu CLI 目前登入內容中的所有工作負載叢集,請執行 tanzu cluster list -A 命令。

    tanzu cluster list -A
    
  2. 刪除磁碟區和服務。

    如果您想刪除的叢集含有持續性磁碟區或服務 (例如負載平衡器和資料庫),您可能需要先手動刪除它們,然後才刪除叢集本身。您需要預先刪除哪些內容,取決於您的雲端基礎結構:

    vSphere
    如果您的基礎結構為 vSphere,請執行以下操作。

    刪除服務類型 LoadBalancer

    若要在叢集中刪除服務類型 LoadBalancer (服務),請執行以下動作:

    1. kubectl 設定為叢集的內容。

      kubectl config set-context my-cluster@user
      
    2. 擷取叢集的服務清單。

      kubectl get service
      
    3. 刪除每個服務類型 LoadBalancer

      kubectl delete service <my-svc>
      

    刪除持續性磁碟區和持續性磁碟區宣告

    若要刪除叢集中的持續性磁碟區 (PV) 和持續性磁碟區宣告 (PVC) 物件,請執行以下動作:

    1. 執行 kubectl config set-context my-cluster@user,以將 kubectl 設定為叢集的內容。

    2. 執行 kubectl get pvc,以擷取叢集的持續性磁碟區宣告 (PVC)。

    3. 針對每個 PVC:

      1. 執行 kubectl describe pvc <my-pvc>,以識別其繫結的 PV。PV 在命令輸出中會列出為磁碟區,並且放在狀態:已繫結後面。

      2. 執行 kubectl describe pv <my-pv>,以說明其繫結的 PV Reclaim PolicyRetain 還是 Delete

      3. 執行 kubectl delete pvc <my-pvc>,以刪除 PVC。

      4. 如果 PV 回收原則為 Retain,請執行 kubectl delete pv <my-pvc>,然後登入雲端入口網站,並刪除其中的 PV 物件。例如,從您的資料存放區窗格 > 監控 (Monitor) > 雲端原生儲存區 (Cloud Native Storage) > 容器磁碟區 (Container Volumes) 中,刪除 vSphere CNS 磁碟區。如需 vSphere CNS 的詳細資訊,請參閱 VMware Cloud 原生儲存區入門

    Amazon Web Services (AWS)
    如果您的基礎結構為 AWS,請執行以下操作。
    • 負載平衡器:叢集 VPC 中的應用程式或網路負載平衡器 (ALB 或 NLB),但不是傳統負載平衡器 (ELB v1)。在 AWS UI 中或使用 kubectl delete 命令,來刪除這些資源。
    • 其他服務:叢集 VPC 中的任何子網路和 AWS 支援的服務 (例如 RDS 或 VPC),以及相關的資源,例如:

      • VPC:在 VPC 儀表板 (VPC Dashboard) > Virtual Private Cloud > 您的 VPC (Your VPCs) 下刪除。
      • RDS:在 RDS 儀表板 (RDS Dashboard) > 資料庫 (Databases) 下刪除。
      • 子網路:在 VPC 儀表板 (VPC Dashboard) > Virtual Private Cloud > 子網路 (Subnets) 下刪除。
      • 路由表:在 VPC 儀表板 (VPC Dashboard) > Virtual Private Cloud > 路由表 (Route Tables) 下刪除。
      • 網際網路閘道:在 VPC 儀表板 (VPC Dashboard) > Virtual Private Cloud > 網際網路閘道 (Internet Gateways) 下刪除。
      • 彈性 IP 位址:在 VPC 儀表板 (VPC Dashboard) > Virtual Private Cloud > 彈性 IP (Elastic IPs) 下刪除。
      • NAT 閘道:在 VPC 儀表板 (VPC Dashboard) > Virtual Private Cloud > NAT 閘道 (NAT Gateways) 下刪除。
      • 網路 ACL:在 VPC 儀表板 (VPC Dashboard) > 安全性 (Security) > 網路 ACL (Network ACLs) 下刪除。
      • 安全群組:在 VPC 儀表板 (VPC Dashboard) > 安全性 (Security) > 安全群組 (Security Groups) 下刪除。

      在 AWS UI 中如上所述或使用 aws CLI,來刪除這些資源。

    • 持續性磁碟區和持續性磁碟區宣告:如下面刪除持續性磁碟區宣告和持續性磁碟區中所述,使用 kubectl delete 命令來刪除這些資源。

    Azure
    如果您的基礎結構是 Azure,則無需執行任何操作。

    如果刪除叢集,將會刪除 TKG 在叢集的資源群組中所建立的一切。

  3. 如有需要,將工作負載移轉出叢集,例如使用 Velero,如 Velero 說明文件中的叢集移轉資源篩選中所述。

  4. 刪除 叢集。

    若要刪除叢集,請執行 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 檔案。

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