安裝 Google Distributed Cloud 叢集時,系統會在代管該叢集的節點上安裝二進位檔和 systemd 服務,並開始監聽節點上的連接埠。
不過,如果叢集安裝失敗,就必須刪除所有這些二進位檔和服務。換句話說,節點必須重設或清除乾淨,才能重新嘗試安裝叢集。如果節點未以這種方式重設,下次嘗試在節點上安裝叢集時就會失敗。
本頁說明如何對特定節點執行這項清除作業,以及如何刪除叢集。
本文適用於管理底層技術基礎架構生命週期的管理員、架構師和營運人員。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。
選擇刪除方法
刪除叢集的方法取決於:
- 叢集類型。
- 如果只想清除特定節點,而非刪除整個叢集。
- 叢集的建立方式。
Google Distributed Cloud 提供下列刪除方法:
Google Cloud 控制台或 Google Cloud CLI:
使用主控台或 gcloud CLI 刪除由 GKE On-Prem API 管理的使用者叢集。如果符合下列任一條件,使用者叢集就會由 GKE On-Prem API 管理:
叢集是在 Google Cloud 控制台中建立,或使用 gcloud CLI 建立,這會自動設定 GKE On-Prem API 來管理叢集。
叢集是使用
bmctl
建立,但已設定為由 GKE On-Prem API 管理。
bmctl
:- 使用
bmctl reset nodes
重設特定節點。 使用
bmctl reset
刪除下列叢集類型:- 管理員、混合式和獨立叢集 (稱為「自行管理的叢集」)。包括由 GKE On-Prem API 管理的管理員叢集。
- 不是由 GKE On-Prem API 管理的使用者叢集。
如果您使用
bmctl
重設節點或刪除叢集,指令會預期叢集設定檔位於目前的工作目錄中。根據預設,路徑如下所示:bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml
如果在建立叢集時使用
--workspace-dir
旗標指定其他目錄,則在重設叢集時,也必須使用該旗標指定工作目錄。- 使用
kubectl
:- 使用
kubectl delete cluster
僅刪除未由 GKE On-Prem API 叢集管理的使用者叢集。請勿在其他叢集類型上執行指令。 - 請注意,如果您使用
kubectl delete cluster
,刪除叢集後,也必須刪除叢集所在的命名空間。
- 使用
刪除叢集後,您可以視需要變更設定,然後重新安裝。
刪除自行管理的叢集
如要刪除管理員、混合式或獨立叢集,請執行下列指令:
bmctl reset --cluster CLUSTER_NAME
在指令中,將 CLUSTER_NAME
替換為要重設的叢集名稱。
bmctl cluster reset
指令的輸出內容會與下列範例類似:
Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log [2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK [2022-10-25 18:48:18+0000] Loading images... OK [2022-10-25 18:48:18+0000] Waiting for reset jobs to finish... [2022-10-25 18:48:28+0000] Operation reset in progress: 1 Completed: 0 Failed: 0 ... [2022-10-25 18:50:08+0000] Operation reset in progress: 0 Completed: 1 Failed: 0 [2022-10-25 18:50:08+0000] Flushing logs... OK [2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345... [2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345 [2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK
除了刪除叢集,這項指令也會從機群中刪除叢集的成員資格。
如果是透過 GKE On-Prem API 管理的管理員叢集,您也必須刪除 Google Cloud中的 API 資源。否則,叢集會顯示在 Google Cloud 控制台的「GKE clusters」(GKE 叢集) 頁面。使用下列指令刪除管理員叢集的 GKE On-Prem API 資源:
gcloud container bare-metal admin-clusters unenroll CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=REGION \ --ignore-errors
更改下列內容:
FLEET_HOST_PROJECT_ID
:機群的專案 ID,管理員叢集是該機群的成員。REGION
:GKE On-Prem API 儲存叢集中繼資料的 Google Cloud 區域。
--ignore-errors
旗標可確保即使在取消註冊期間發生錯誤,裸機管理員叢集資源仍能成功取消註冊。
叢集刪除完畢後,您就可以建立新叢集。詳情請參閱「叢集建立總覽」。
刪除使用者叢集
如果使用者叢集是由 GKE On-Prem API 管理,請使用控制台或 gcloud CLI 刪除叢集。否則,請使用 bmctl
或 kubectl
刪除叢集。
bmctl
您可以使用 bmctl
刪除透過 bmctl
或 kubectl
建立,且未註冊 GKE On-Prem API 的使用者叢集。
執行下列指令,使用 bmctl
刪除使用者叢集:
bmctl reset --cluster USER_CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
在指令中,將下列項目替換為您環境的專屬資訊:
USER_CLUSTER_NAME
:要刪除的使用者叢集名稱。ADMIN_KUBECONFIG_PATH
:相關聯管理員叢集的kubeconfig
檔案路徑。bmctl
支援使用--kubeconfig
做為--admin-kubeconfig
旗標的別名。
bmctl cluster reset
指令的輸出內容會與下列範例類似:
Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log [2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK [2022-10-25 18:48:18+0000] Loading images... OK [2022-10-25 18:48:18+0000] Waiting for reset jobs to finish... [2022-10-25 18:48:28+0000] Operation reset in progress: 1 Completed: 0 Failed: 0 ... [2022-10-25 18:50:08+0000] Operation reset in progress: 0 Completed: 1 Failed: 0 [2022-10-25 18:50:08+0000] Flushing logs... OK [2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345... [2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345 [2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK
kubectl
您可以使用 kubectl
刪除透過 bmctl
或 kubectl
建立,且未註冊 GKE On-Prem API 的使用者叢集。如要使用 kubectl
刪除使用者叢集,必須先刪除叢集物件,然後刪除其命名空間。否則系統無法建立重設機器的作業,
刪除程序可能會無限期停滯。
如要使用 kubectl
刪除使用者叢集,請按照下列步驟操作:
執行下列指令來刪除叢集物件:
kubectl delete cluster USER_CLUSTER_NAME -n USER_CLUSTER_NAMESPACE \ --kubeconfig ADMIN_KUBECONFIG_PATH
在指令中,將下列項目替換為您環境的專屬資訊:
USER_CLUSTER_NAME
:要刪除的使用者叢集名稱。USER_CLUSTER_NAMESPACE
:叢集的命名空間。根據預設,Google Distributed Cloud 的叢集命名空間是叢集名稱,並以cluster-
為前置字元。舉例來說,如果將叢集命名為test
,命名空間的名稱會類似cluster-test
。ADMIN_KUBECONFIG_PATH
:相關聯管理員叢集的kubeconfig
檔案路徑。
叢集刪除成功後,請執行下列指令來刪除命名空間:
kubectl delete namespace USER_CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
控制台
如果使用者叢集是由 GKE On-Prem API 管理,請按照下列步驟刪除叢集:
在控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。
選取使用者叢集所在的 Google Cloud 專案。
在叢集清單中,按一下要刪除的叢集。
在叢集清單中,找出要刪除的叢集。 如果「類型」為「外部」,表示叢集是使用
bmctl
建立,且未註冊 GKE On-Prem API。在這種情況下,請按照「bmctl
」或「kubectl
」分頁中的步驟刪除叢集。如果「狀態」欄中的圖示指出有問題,請按照 gcloud CLI 分頁中的步驟刪除叢集。您必須在刪除指令中加入
--ignore-errors
旗標。按一下您要刪除的叢集名稱。
在「詳細資料」面板中,按一下視窗頂端的「刪除」
。系統提示您確認時,請輸入叢集名稱,然後按一下「移除」。
gcloud CLI
如果使用者叢集是由 GKE On-Prem API 管理,請在已安裝 gcloud CLI 的電腦上,按照下列步驟刪除叢集:
使用 Google 帳戶登入:
gcloud auth login
更新元件:
gcloud components update
取得叢集清單,確保您在刪除指令中指定正確的叢集名稱:
gcloud container bare-metal clusters list \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
更改下列內容:
FLEET_HOST_PROJECT_ID
:叢集建立所在的專案 ID。LOCATION
:與使用者叢集相關聯的 Google Cloud 位置。
輸出結果會與下列內容相似:
NAME LOCATION VERSION ADMIN_CLUSTER STATE example-user-cluster-1a us-west1 1.32.100-gke.106 example-admin-cluster-1 RUNNING
執行下列指令來刪除叢集:
gcloud container bare-metal clusters delete USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --force \ --allow-missing
更改下列內容:
USER_CLUSTER_NAME
:要刪除的使用者叢集名稱。FLEET_HOST_PROJECT_ID
:叢集建立所在的專案 ID。LOCATION
:與使用者叢集相關聯的 Google Cloud 位置。
--force
標記可讓您刪除含有節點集區的叢集。如果沒有--force
標記,您必須先刪除節點集區,然後再刪除叢集。--allow-missing
標記是標準 Google API 標記。加入這個旗標後,如果找不到叢集,指令會傳回成功。如果指令傳回的錯誤包含
failed connecting to the cluster's control plane
文字,表示管理員叢集、Connect Agent 或地端環境發生連線問題。如要排解 Connect Agent 的相關問題,請參閱收集 Connect Agent 記錄。
如要瞭解其他標記,請參閱 gcloud CLI 參考資料。
重設特定叢集節點
舉例來說,如果管理員叢集已刪除,但該管理員叢集管理的使用者叢集仍存在,您可能需要重設叢集的特定節點。在這種情況下,由於管理員叢集已刪除,因此無法一併刪除使用者叢集。因此,使用者叢集的節點必須個別重設。
如要重設節點,您需要具備 Artifact Registry 讀取權限的服務帳戶。bmctl
指令會將這個服務帳戶的 JSON 金鑰檔案視為引數。如要重設叢集的個別節點,請執行下列指令:
bmctl reset nodes --addresses NODE_1_IP_ADDRESS,NODE_2_IP_ADDRESS \ --ssh-private-key-path SSH_KEY_PATH \ --gcr-service-account-key SERVICE_ACCOUNT_KEY_PATH \ --login-user root
在指令中,將下列項目替換為您環境的專屬資訊:
NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS
:以逗號分隔的清單,列出要刪除的節點 IP 位址。SSH_KEY_PATH
:安全殼層私密金鑰的路徑。這是重設期間用來與節點建立 SSH 連線的金鑰。SERVICE_ACCOUNT_KEY_PATH
:包含服務帳戶金鑰的 JSON 檔案路徑。這個金鑰可授權bmctl
從 Artifact Registry 提取映像檔。您可以使用控制台或 gcloud CLI 建立服務帳戶金鑰。詳情請參閱「建立及管理服務帳戶金鑰」。您也可以執行create config
指令並加上--create-service-accounts
標記,建立服務帳戶金鑰檔案。如要進一步瞭解該指令,請參閱「使用 bmctl 建立及管理叢集設定」。
叢集刪除詳細資料
刪除期間,系統會刪除叢集的車隊成員註冊、儲存空間掛接,以及 anthos-system StorageClass
中的資料。
系統會移除所有節點用於叢集網路的通道介面,並刪除下列目錄:
/etc/kubernetes
/etc/cni/net.d
/root/.kube
/var/lib/kubelet
負載平衡器節點:
- 系統會刪除
keepalived
和haproxy
服務。 - 系統會刪除
keepalived
和haproxy
的設定檔。