在 Google Distributed Cloud 中重設節點及刪除叢集,會從主機移除殘留的二進位檔、systemd 服務和監聽通訊埠。清除這些節點後,環境就能重新部署或停用。
安裝叢集時,二進位檔和 systemd 服務會安裝在主機節點上,服務也會開始監聽通訊埠。如果安裝失敗,您必須重設 (抹除) 節點,移除這些二進位檔和服務,並準備節點,以便重新嘗試安裝叢集。如果不重設節點,後續嘗試在節點上安裝叢集時就會失敗。
選擇刪除方法
刪除叢集的方法取決於:
- 叢集類型。
- 只想清理特定節點,不刪除整個叢集。
- 叢集的建立方式。
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 專案。
在叢集清單中,按一下要刪除的叢集。
在叢集清單中,找出要刪除的叢集。如果「Type」(類型) 為「external」(外部),表示叢集是使用
bmctl建立,且未在 GKE On-Prem API 註冊。在這種情況下,請按照「bmctl」或「kubectl」分頁中的步驟刪除叢集。如果「Status」(狀態) 欄中的圖示指出有問題,請按照 gcloud CLI 分頁中的步驟刪除叢集。您必須在刪除指令中加入
--ignore-errors旗標。按一下您要刪除的叢集名稱。
在「Details」(詳細資料) 面板中,按一下視窗頂端附近的 「Delete」(刪除)。
系統提示您確認時,請輸入叢集名稱,然後按一下「Remove」(移除)。
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.36.200-gke.118 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 代理程式或地端部署環境有連線問題。如要排解 Connect Agent 的問題,請參閱「收集 Connect Agent 記錄」。如果您認為連線能力問題只是暫時性 (例如網路問題),請稍候再重試指令。
如果您知道管理員叢集已刪除,或管理員或使用者叢集的節點機器已關閉或離線,請加入
--ignore-errors旗標,然後重試指令。如果叢集是使用
bmctl或kubectl刪除,您也必須加入--ignore-errors,這會將 GKE On-Prem API 資源留在 Google Cloud中。其中一個徵兆是,控制台的「GKE 叢集」頁面仍會顯示該叢集,且狀態為「健康狀態不佳」。
如要瞭解其他旗標,請參閱 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的設定檔會刪除。