本文將說明如何在 Google Kubernetes Engine (GKE) 中管理叢集。如要瞭解叢集的運作方式,請參閱叢集架構。
事前準備
開始之前,請務必先完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。
查看叢集
gcloud
如要查看特定叢集,請執行下列指令:
gcloud container clusters describe CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION更改下列內容:
CLUSTER_NAME:叢集名稱。CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。提供區域叢集的區域,或可用區叢集的可用區。
如要列出專案中任何區域或可用區的所有叢集,請執行下列指令:
gcloud container clusters list如要列出特定區域或可用區中的叢集,請執行下列指令:
gcloud container clusters list \ --location=CONTROL_PLANE_LOCATION
控制台
如要查看叢集,請前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
如要進一步瞭解叢集,請從清單中選取叢集。
為「kubectl」設定預設叢集
如果有多個叢集,則可以設定 kubectl 指令列工具的預設叢集。
詳情請參閱「設定 kubectl 指令的預設叢集」。
為「gcloud」設定預設叢集
如要設定 gcloud 指令的預設叢集,請執行下列指令:
gcloud config set container/cluster CLUSTER_NAME
將 CLUSTER_NAME 替換為叢集名稱。
升級叢集
根據預設,GKE 會自動升級叢集。不過,您可以選擇自行升級標準叢集。詳情請參閱「手動升級叢集」。
如需升級叢集的指南,請參閱「升級叢集的最佳做法」。
在 Standard 叢集中新增或移除可用區
以下各節說明如何新增或移除叢集可用區。所有可用區都必須位於叢集的區域。
做好中斷準備。變更可用區叢集的可用區
如果是現有的可用區叢集,您可以新增或移除可用區。
gcloud
如要為區域叢集新增或移除區域,請使用 gcloud container
clusters update 指令:
gcloud container clusters update CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--node-locations COMPUTE_ZONE1,COMPUTE_ZONE2
更改下列內容:
CLUSTER_NAME:您為叢集選擇的名稱。CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 可用區。COMPUTE_ZONE1,COMPUTE_ZONE2,[...]:建立節點的可用區。您可以視叢集需求指定任意數量的可用區。所有可用區都必須與叢集控制層位於同一個區域,並由--location旗標指定。如果是區域叢集,--node-locations必須包含叢集的主要區域。
例如,example-cluster 是在 us-central1-a 中執行。如要在叢集中額外新增兩個區域,請執行下列指令:
gcloud container clusters update example-cluster \
--location us-central1-a
--node-locations us-central1-a,us-central1-b,us-central1-c
在另一個範例中,example-cluster 在 us-central1-a、us-central1-b 和 us-central1-c中執行。如果只要叢集在 us-central1-a 和 us-central1-b 中執行,則可以執行下列指令:
gcloud container clusters update example-cluster \
--location us-central1-a \
--node-locations us-central1-a,us-central1-b
主控台
如要在現有叢集中新增或移除可用區,請按照下列步驟操作:
前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。
按一下要編輯的叢集旁的more_vert「動作」,然後按一下edit「編輯」。
在「詳細資料」分頁中,按一下「預設節點區域」欄位下方的「編輯節點集區」edit。
選取所需區域,然後儲存變更。
變更區域叢集的可用區
目前,只能使用 gcloud 指令變更現有地區叢集的區域。
如要為地區叢集新增或移除區域,請使用 gcloud container
clusters update 指令並加上 --node-locations 旗標:
gcloud container clusters update CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION \
--node-locations COMPUTE_ZONE1,COMPUTE_ZONE2
更改下列內容:
CLUSTER_NAME:叢集名稱。CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域。COMPUTE_ZONE1、COMPUTE_ZONE2,[...]:建立節點的可用區控制層區域。可用區必須與--location旗標指定的叢集控制層位於相同的CONTROL_PLANE_LOCATION。
例如,example-cluster 是在 us-central1-a 和 us-central1-b 中執行。如要新增 us-central1-c,請執行下列指令:
gcloud container clusters update example-cluster \
--location us-central1 \
--node-locations us-central1-a,us-central1-b,us-central1-c
在另一個範例中,example-cluster 在 us-central1-a、us-central1-b 和 us-central1-c中執行。如果只要叢集在 us-central1-a 和 us-central1-b 中執行,則可以執行下列指令:
gcloud container clusters update example-cluster \
--location us-central1 \
--node-locations us-central1-a,us-central1-b
調整叢集大小
您可以調整 Standard 叢集的大小,增加或減少節點數量。舉例來說,如果您想停止叢集耗用資源,但不想刪除叢集,可以將節點縮減為零。如要進一步瞭解如何調整大小,請參閱「調整叢集大小」。
Autopilot 叢集會根據 Pod 規格自動調整大小,因此您不必擔心叢集大小問題。舉例來說,如果您變更 Pod 副本數量或要求的資源,叢集會適當放大或縮小。
如要以更有效率的方式最佳化叢集,也可以使用垂直自動調度 Pod 資源 (VPA)。自動配置器可以建議 CPU/記憶體要求和相關限制的值,這些值也可自動更新。
刪除叢集
如有需要,可以刪除叢集。詳情請參閱「刪除叢集」。
使用拒絕政策防止叢集遭到刪除
您可以透過 IAM 拒絕政策,防止刪除特定重要叢集,無論是哪個主體嘗試刪除都適用。如要在拒絕政策中指定特定叢集,請在這些叢集中加入標記。接著,您可以使用拒絕條件,將拒絕政策套用至具有該標記的叢集。
如要防止特定叢集遭到刪除,請按照下列步驟操作:
建立及定義標記鍵,以識別受保護的叢集。舉例來說,您可以建立名為
do_not_delete的標記鍵。選取下列其中一個選項,建立 IAM 拒絕政策:
控制台
前往 Google Cloud 控制台,然後前往「IAM」頁面的「Deny」(拒絕) 分頁。
按一下「 Create deny policy」(建立拒絕政策)。「Create deny policy」(建立拒絕政策) 頁面隨即開啟。
在「ID」欄位中,指定拒絕政策的專屬 ID,這個 ID 無法變更。
在「New deny rule」(新增拒絕規則) 專區中,執行以下操作:
在「Denied principals」(遭拒主體) 欄位中,指定
principalSet://goog/public:all,涵蓋所有主體。在「Denied permissions」部分,於「Permission 1」下拉式選單中,找出並選取
container.googleapis.com/clusters.delete權限。按一下「新增拒絕條件」。「新增拒絕條件」窗格隨即開啟。
為條件指定清楚明確的標題,例如
Cluster has the do_not_delete tag。在「條件建構工具」分頁中,從「條件類型 1」下拉式選單中選取「標記」。
在「運算子」下拉式選單中,選取「包含鍵」。
在 Key path 下拉式選單中,選取您套用至叢集的標記金鑰,例如
do_not_delete。按一下 [儲存]。
點選「建立」。
gcloud
建立包含下列拒絕政策的 JSON 檔案:
{ "displayName": "Prevent cluster deletion based on tag", "rules": [ { "description": "Prevent cluster deletion based on tag", "deniedPrincipals": [ "principalSet://goog/public:all" ], "deniedPermissions": [ "container.googleapis.com/clusters.delete" ], "denialCondition": { "title": "Cluster has the do_not_delete tag", "expression": "resource.hasTagKey('TAG_KEY_NAME')" } } ] }將
TAG_KEY_NAME替換為您建立的標記金鑰路徑。使用
gcloud iam policies create指令建立拒絕政策:gcloud iam policies create POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies --policy-file=POLICY_FILE更改下列內容:
POLICY_ID:拒絕政策的 ID。ATTACHMENT_POINT:要附加拒絕政策的機構、資料夾或專案。舉例來說,如果您將拒絕政策附加至資料夾,該政策會套用至該資料夾中任何專案的叢集。詳情請參閱「連接點」。POLICY_FILE:您在上一個步驟中建立的 JSON 檔案路徑。
建立拒絕政策後,任何人都無法刪除具有拒絕條件中指定標記鍵的叢集。任何刪除叢集的嘗試都會失敗,並顯示 Permission denied 錯誤訊息。如要允許刪除叢集,請從叢集卸離該標記鍵。
將叢集新增至機群
如果貴組織使用多個叢集,可以將叢集新增至機群 (Kubernetes 叢集的邏輯群組),簡化多叢集管理作業。建立機群後,貴機構就能將管理單位從個別叢集提升為整個叢集群組,並使用支援機群的功能,例如多叢集 Ingress、 Config Sync 和 Policy Controller。
您可以使用Google Cloud 控制台、gcloud CLI,或透過 Terraform 或 Config Connector 以宣告方式,將 GKE 叢集新增至機群。
如要進一步瞭解機群的運作方式,請參閱「機群管理」一文;如要瞭解如何建立機群,請參閱「建立機群,簡化多叢集管理作業」一文。