自動升級節點


本頁面說明如何在 Google Kubernetes Engine (GKE) 中設定節點自動升級功能。

總覽

當系統代您更新控制層時,「節點自動升級」可協助您更新叢集中的節點,與叢集控制層版本保持一致。使用 Google Cloud 控制台或 gcloud 指令建立新的叢集或節點集區時,系統預設會啟用節點自動升級功能。

您可以進一步瞭解叢集和節點升級

節點自動升級具有以下優點:

  • 降低管理負擔:當控制層代替您升級時,您不必手動追蹤和更新節點。
  • 更高的安全性:有時系統會發佈新的二進位檔以修正安全性問題。有了自動升級功能,GKE 會確保自動套用安全性更新,保持在最新狀態。
  • 使用方便:提供簡單的方式來讓節點保持在最新狀態,擁有 Kubernetes 的最新功能。

節點集區啟用自動升級功能後,只要符合選取條件 (請參閱版本說明),就會排定升級時間。為確保叢集和機群穩定性,我們會在數週內分階段推出這項功能。執行升級時,節點會被清空並重新建立,以符合目前的控制層版本。節點重新建立之後,您先前對該節點 VM 開機磁碟所做的變更便會失效。如要讓重新建立的節點沿用原有變更,請使用 DaemonSet

Alpha 版叢集不支援節點自動升級功能。如果您使用的叢集含有 Windows Server 節點集區,請先參閱「升級 Windows Server 節點集區」,再啟用節點自動升級功能。

檢查現有節點集區的自動升級狀態

您可以使用 Google Cloud 控制台或 gcloud 指令,檢查節點集區是否已啟用或停用自動升級功能。

gcloud

如要檢查節點集區的自動升級狀態,請執行下列指令:

gcloud container node-pools describe NODE_POOL_NAME \
  --cluster CLUSTER_NAME \
  --location CONTROL_PLANE_LOCATION

更改下列內容:

  • NODE_POOL_NAME:節點集區的名稱。
  • CLUSTER_NAME:節點集區所在叢集的名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。

在輸出內容中找出 autoUpgrade 欄位,即可查看節點集區是否啟用或停用自動升級功能。

management:
  autoUpgrade: true

控制台

如要檢查節點集區的自動升級狀態,請執行下列操作:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下要查看的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 在「Node Pools」(節點集區) 下方,按一下要查看的節點集區名稱。

  5. 在「Node pool details」(節點集區詳細資料) 頁面中,前往「Management」(管理),查看「Auto-upgrade」(自動升級) 欄位的值。

啟用現有節點集區的節點自動升級功能

使用 Google Cloud 控制台或 gcloud 指令建立新叢集時,系統預設會啟用節點自動升級功能。

您可以啟用節點自動升級功能 (若目前停用的話)。

gcloud

如要啟用現有節點集區的自動升級功能,請執行下列指令:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --enable-autoupgrade

更改下列內容:

  • NODE_POOL_NAME:節點集區的名稱。
  • CLUSTER_NAME:節點集區所在叢集的名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。

控制台

如要啟用現有節點集區的自動升級功能,請執行下列步驟:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下您要修改的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 在「Node Pools」(節點集區) 下方,按一下要修改的節點集區名稱。

  5. 在「Node pool details」(節點集區詳細資料) 頁面中,按一下 「Edit」(編輯)

  6. 在「Management」(管理) 下方,勾選「Enable auto-upgrade」(啟用自動升級功能) 核取方塊。

  7. 按一下 [儲存]

如要進階控制節點何時可自動升級,建議您設定維護期間和排除的時段

查看節點升級狀態

您可以使用 gcloud container operations 查看升級作業的狀態。

查看叢集中所有執行中和已完成作業的清單 (如果作業少於 5,000 項,則為過去 12 天的作業;如果作業超過 5, 000 項,則為最近 5,000 項作業):

gcloud container operations list

每個作業都會獲派一個「作業 ID」和作業類型,還有開始和結束時間、目標叢集和狀態。清單看起來類似以下範例:

NAME                              TYPE                ZONE           TARGET              STATUS_MESSAGE  STATUS  START_TIME                      END_TIME
operation-1505407677851-8039e369  CREATE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT16:47:57.851933021Z  20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4  UPGRADE_CLUSTER     us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:40:05.136739989Z  20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989  DELETE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:41:53.918825764Z  20xx-xx-xxT18:43:48.639506814Z

如要取得某個特定作業的詳細資訊,請使用下列指令來指定作業 ID:

gcloud container operations describe OPERATION_ID

例如:

gcloud container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a

如果升級作業已取消或失敗,但部分作業已完成,您可以繼續復原升級作業。

檢查節點集區升級設定

您可以使用 gcloud container node-pools describe 指令,查看節點集區使用的節點升級策略詳細資料。如果是藍綠升級,這項指令也會傳回升級的目前階段

執行下列指令:

gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME

更改下列內容:

  • NODE_POOL_NAME:要說明的節點集區名稱。
  • CLUSTER_NAME:要說明節點集區的叢集名稱。

這項指令會輸出目前的升級設定。以下範例顯示使用藍綠升級策略時的輸出內容。

upgradeSettings:
  blueGreenSettings:
    nodePoolSoakDuration: 1800s
    standardRolloutPolicy:
      batchNodeCount: 1
      batchSoakDuration: 10s
  strategy: BLUE_GREEN

如果您使用藍綠升級策略,輸出內容也會包含藍綠升級設定和目前中間階段的詳細資料。以下範例顯示這類要求可能看起來的樣子:

updateInfo:
  blueGreenInfo:
    blueInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{BLUE_INSTANCE_GROUP_NAME}
    bluePoolDeletionStartTime: {BLUE_POOL_DELETION_TIME}
    greenInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{GREEN_INSTANCE_GROUP_NAME} 
    greenPoolVersion: {GREEN_POOL_VERSION}
    phase: DRAINING_BLUE_POOL

停用節點自動升級功能

雖然不建議這麼做,但如果基礎叢集未註冊發布管道,您可以停用現有節點集區的節點自動升級功能。

停用節點自動升級功能前的注意事項

如果停用節點集區的節點自動升級功能,GKE 就不會更新節點版本。選擇停用節點自動升級功能後,GKE 仍會升級叢集的控制層。

停用後,系統不會更新版本,但仍會執行所有維護工作

停用節點自動升級功能只會防止 GKE 更新節點版本,但不會阻止 GKE 啟動其他維護工作。舉例來說,即使已停用節點自動升級功能,只要在叢集上觸發 IP 位址輪替啟用網路政策PSC 遷移,不管選定的節點集區版本為何,系統會重新建立所有節點並與控制層版本相同。如要控管維護時間點,請使用維護期間和排除時段

停用後,您必須負責確保控制層節點相容性

如果停用節點集區的節點自動升級功能,您應確保叢集節點執行的版本與叢集的控制層版本相容,並遵守 GKE 版本差異政策。停用節點自動升級功能後,節點集區只會停止升級,直到標準支援期結束為止。如果節點執行的版本已停用,GKE 會升級節點,確保叢集健康狀態良好。

如要瞭解終止支援的確切時間,請參閱「各發布管道的預估時間表」。如果節點執行的版本不受支援,系統可能不會在版本支援期限結束時立即升級,實際時間可能因 Google 的決定而異。

停用不會停止執行中的作業

停用節點自動升級功能後,系統不會停止或取消節點集區中節點的任何升級作業。如要取消或停止進行中的升級作業,請按照「取消節點升級」一節的說明操作。如果發現工作負載在升級的節點上失敗,並想避免進一步中斷,取消節點升級就很有幫助。

如果整個節點集區的升級作業已完全完成,則無法復原或取消升級。如要降級節點集區,請參閱降級節點集區

停用現有節點集區的節點自動升級功能

gcloud

若要停用現有節點集區的自動升級功能,請執行下列指令:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --no-enable-autoupgrade

主控台

若要停用現有節點集區的自動升級功能,請執行下列步驟:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下您要修改的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 在「Node Pools」(節點集區) 下方,按一下要修改的節點集區名稱。

  5. 在「Node pool details」(節點集區詳細資料) 頁面中,按一下 「Edit」(編輯)

  6. 在「管理」下方,取消勾選「啟用自動升級功能」核取方塊。

  7. 再按一次 [Save] (儲存) 即可修改叢集。

建立啟用節點自動升級功能的叢集或節點集區

gcloud

如要針對「預設節點集區」建立啟用自動升級功能的叢集,請在 gcloud container clusters create 指令中指定 --enable-autoupgrade 旗標:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --enable-autoupgrade

如要建立啟用自動升級功能的節點集區,請在 gcloud container node-pools create 指令中指定 --enable-autoupgrade 旗標:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --enable-autoupgrade

控制台

根據預設,使用 Google Cloud 控制台建立的叢集和節點集區已啟用自動升級功能。如需建立叢集和節點集區的操作說明,請參閱「建立叢集」或「新增及管理節點集區」。

您可以停用新節點集區的自動升級功能。在叢集建立頁面中,按一下要修改的節點集區名稱,然後清除「啟用自動升級功能」

接收升級通知

GKE 會將升級通知發布至 Pub/Sub,您可以透過這個管道接收 GKE 發送的叢集相關資訊。

詳情請參閱「接收叢集升級通知」。

變更節點數擴充升級參數

如要進一步瞭解如何變更節點數擴充升級參數,請參閱「設定節點數擴充升級」。

在節點集區升級期間控管作業

在自動升級和手動啟動節點集區升級期間,您可以採取下列動作。

取消節點集區升級

您可隨時取消升級。如要進一步瞭解取消節點數擴充升級的影響,請參閱「取消節點數擴充升級」。如要進一步瞭解取消藍綠升級的影響,請參閱「取消藍綠升級」。

  1. 取得升級作業的 ID:

    gcloud container operations list
    
  2. 取消升級:

    gcloud container operations cancel OPERATION_ID
    

請參閱 gcloud container operations cancel 說明文件。

繼續升級節點集區

如要繼續升級,請再次手動啟動升級,並指定原始升級的目標版本。

舉例來說,如果升級失敗,或是您暫停進行中的升級作業,可以對節點集區再次啟動相同的升級作業,並指定初始升級作業的目標版本,藉此繼續已取消的升級作業。

如要進一步瞭解繼續升級作業的影響,請參閱「繼續節點數擴充升級」和「藍綠升級」。

如要繼續升級,請使用下列指令:

    gcloud container clusters upgrade CLUSTER_NAME \
      --node-pool=NODE_POOL_NAME \
      --cluster-version VERSION

更改下列內容:

  • NODE_POOL_NAME:要繼續升級的節點集區名稱。
  • CLUSTER_NAME:要繼續升級的節點集區叢集名稱。
  • VERSION:取消升級節點集區的目標版本。

詳情請參閱 gcloud container clusters upgrade 說明文件。

復原節點集區升級

您可以將節點集區復原,將升級的節點降級至節點集區升級前的原始狀態。

如果升級作業取消、失敗或因維護期間逾時而未完成,請使用 rollback 指令。或者,如要指定版本,請按照降級節點集區的說明操作。

如要進一步瞭解復原節點集區升級作業的影響,請參閱「復原節點數擴充升級」或「復原藍綠升級」。

如要復原升級,請執行下列指令:

gcloud container node-pools rollback NODE_POOL_NAME \
  --cluster CLUSTER_NAME

更改下列內容:

  • NODE_POOL_NAME:要復原節點集區升級的節點集區名稱。
  • CLUSTER_NAME:要復原升級的節點集區所在叢集名稱。

請參閱 gcloud container node-pools rollback 說明文件。

完成節點集區升級

如果您使用藍綠升級策略,可以在浸泡階段完成節點集區升級,略過其餘浸泡時間。

如要瞭解如何完成節點集區升級作業,請參閱「完成節點集區升級作業」。

使用藍綠升級策略時,請執行下列指令來完成升級:

gcloud container node-pools complete-upgrade NODE_POOL_NAME \
  --cluster CLUSTER_NAME

更改下列內容:

  • NODE_POOL_NAME:要完成升級的節點集區名稱。
  • CLUSTER_NAME:要完成升級的節點集區叢集名稱。

請參閱 gcloud container node-pools complete-upgrade 說明文件。

後續步驟