升級叢集

本頁面說明如何升級或降級 Google Kubernetes Engine 叢集執行的 Kubernetes 版本。

請參閱版本管理和升級,瞭解如何將 Kubernetes 版本提供給叢集主要執行個體和節點使用。如要進一步瞭解叢集,請參閱叢集架構

事前準備

如要準備這項工作,請執行下列步驟:

  • 確認您已啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 確認您已安裝 Cloud SDK
  • 設定預設的專案 ID
    gcloud config set project [PROJECT_ID]
  • 如果您使用區域叢集,請設定預設的運算區域
    gcloud config set compute/zone [COMPUTE_ZONE]
  • 如果您使用地區叢集,請設定預設的運算地區
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud 更新到最新版本:
    gcloud components update

關於升級叢集

叢集升級程序分成兩個部分,其中包含升級叢集主要執行個體和/或節點。您無法同時升級叢集主要執行個體和節點。

Google 會自動升級叢集主要執行個體,但您可以選擇手動升級

當您升級叢集節點時,GKE 會停止排定新 Pod 並將現有 Pod 重新排定至不同節點上,接著逐次刪除所有叢集節點。如果刪除 Pod 所需時間超過 10 分鐘,GKE 就會強制終止 Pod 以關閉並刪除節點。系統會重新建立替代節點,並採用與前身相同的名稱。只有在所有節點都重新建立完畢且叢集處於所需狀態的情況下,升級作業才算完成。新節點註冊主要執行個體時,GKE 會將這些節點標記為可排定項目。

新節點執行個體會執行需要的 Kubernetes 版本,以及:

支援的版本

如要尋找支援 Kubernetes 主要執行個體和節點的版本來進行升級和降級,請執行下列指令:

gcloud container get-server-config

我們不建議您降級叢集。節點可以降級為比主要執行個體版本還舊的「修補程式版本」,不過您無法將次要版本的叢集降級為另一個次要版本。舉例來說,如果叢集正在執行 GKE 1.11.5 版,則您可將這個叢集降級為 1.11.4 版 (若該版本仍可供使用),但無法繼續降級為 1.10.9 版。系統產生的錯誤應如下所示:

ERROR: (gcloud.container.clusters.upgrade) ResponseError: code=400,
message=Master cannot be upgraded to "1.10.9-gke.7": specified version is not
newer than the current version.

如要將叢集降級為先前的修補程式版本,請使用 gcloud 指令列工具更新叢集主要執行個體版本。

我們會依據支援版本中的時間表推出 GKE 版本,版本推出後需要幾天的時間才會在所有區域生效。您可以使用 gcloud container get-server-config 查看某個區域或地區能使用的版本。

將您的資料儲存到永久磁碟

您必須先透過使用永久磁碟永久磁碟區來確保要保留的所有資料都儲存在 Pod 中,才能升級節點集區。升級期間,永久磁碟會被卸載而不是被清除,裡面的資料會在 Pod 之間傳遞。

永久磁碟存在下列限制:

  • 執行 Pod 的節點必須是 Compute Engine VM
  • 這些 VM 必須位在與永久磁碟相同的 Compute Engine 專案和區域內

如要瞭解如何將永久磁碟新增到現有的節點執行個體,請參閱新增永久磁碟或調整其大小

手動升級節點

您可以使用 Google Cloud Platform 主控台或 gcloud 指令列工具手動升級節點。

gcloud

以下指令可將節點升級為主要執行個體執行的版本:

gcloud container clusters upgrade [CLUSTER_NAME]

其中 [CLUSTER_NAME] 是待升級叢集的名稱。

如要安裝特定版本的 Kubernetes,請加上選用的 --cluster-version 標記:

gcloud container clusters upgrade [CLUSTER_NAME] --cluster-version [CLUSTER_VERSION]

其中 [CLUSTER_VERSION] 是 Kubernetes 版本,節點會升級到該版本。例如:--cluster-version=1.7.2cluster-version=latest

如要進一步瞭解如何指定版本,請參閱版本管理和升級說明文件。

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

主控台

如要使用 GCP 主控台升級叢集,請執行下列步驟:

  1. 造訪 GCP 主控台的「Google Kubernetes Engine」選單。

    造訪 Google Kubernetes Engine 選單

  2. 按一下鉛筆形狀的叢集 [Edit] (編輯) 按鈕。

  3. 在「Node Pools」(節點集區) 區段中,展開揭露箭頭以查看要升級的節點集區。

  4. 按一下「Node version」(節點版本) 旁的 [Change] (變更) 連結。

  5. 選取需要的版本,然後按一下 [Change] (變更)

  6. 按一下 [儲存]

自動升級節點

節點自動升級功能會在有新版本可用時,指示 GKE 升級節點的 Kubernetes 版本。

如要啟用自動升級節點,請參閱節點自動升級功能說明文件。

檢查升級狀態

您可以使用 gcloud beta container operations 查看升級狀態。

如要查看叢集中所有執行中和已完成作業的清單,請執行下列指令:

gcloud beta 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 beta container operations describe [OPERATION_ID]

例如:

gcloud beta 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

取消節點升級

您可隨時取消升級。取消升級時:

  • 已開始升級的節點會完成升級
  • 尚未開始升級的節點不會進行升級
  • 「成功完成」升級的節點不受影響且不會復原

首先,使用下列指令取得升級的「作業 ID」

gcloud container operations list

接著,如要取消升級,請執行下列指令:

gcloud beta container operations cancel [OPERATION_ID]

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

復原節點升級

節點集區升級失敗或已取消升級時,您可以復原到之前的 Kubernetes 版本。節點集區成功升級後就不能復原。尚未開始升級的節點不受影響。

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

gcloud container node-pools rollback [POOL_NAME] --cluster [CLUSTER_NAME]

其中:

  • [POOL_NAME] 是待復原的節點集區名稱
  • [CLUSTER_NAME] 是待復原節點集區所在的叢集名稱
  • [COMPUTE_ZONE] 是專案的運算區域

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

手動啟動主要執行個體升級

一旦啟動叢集主要執行個體升級程序,您將有幾分鐘的時間無法修改叢集配置,直到可再次存取控制層為止。如果您需要在主要執行個體升級期間防止停機問題,請考慮使用地區叢集

您可以使用 GCP 主控台或 gcloud 指令列工具手動升級主要執行個體。叢集的主要執行個體完成升級後,節點就可以升級到相同版本。

gcloud

如要升級叢集主要執行個體的版本,請先執行下列指令查看可用的版本:

gcloud container get-server-config

如要升級到最新版本,請執行下列指令:

gcloud container clusters upgrade [CLUSTER_NAME] --master

如要升級到非預設的特定版本,請執行下列指令:

gcloud container clusters upgrade [CLUSTER_NAME] --master --cluster-version [CLUSTER_VERSION]

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

主控台

如要手動更新叢集主要執行個體,請執行下列步驟:

  1. 造訪 Google Cloud Platform 主控台的「Google Kubernetes Engine」選單。

    造訪 Google Kubernetes Engine 選單

  2. 選取需要的叢集。

  3. 按一下「Master version」(主要執行個體版本) 旁的 [Upgrade available] (可升級) 連結。

  4. 選取需要的版本,然後按一下 [Change] (變更)

  5. 按一下畫面頂端的箭頭,返回叢集總覽頁面。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件