升級使用者叢集控制層後,您可以使用略過版本升級功能,在升級 worker 節點集區時略過子版本,減少節點耗盡和重新啟動週期的次數。舉例來說,如果 worker 節點集區的版本為 1.29,您可以將使用者叢集控制層升級至 1.30,再升級至 1.31,然後直接將 worker 節點集區從 1.29 升級至 1.31。進階和非進階叢集都支援這項功能,但 1.31 版進階叢集和 1.28 以下版本的 Google Distributed Cloud 軟體 (僅限 VMware) 除外。
開始之前,請務必熟悉升級總覽、升級版本規則、升級最佳做法和升級叢集。
限制
以下是略過版本升級的限制:
Ubuntu 和 Container-Optimized OS 節點集區支援略過版本升級,但 Windows 節點集區不支援。
1.31 版:進階叢集不支援這項功能。
1.32 以上版本:進階叢集可使用這項功能。
負載平衡器節點集區 (具有
enableLoadBalancer: true的節點集區) 不支援略過版本升級或版本偏差。負載平衡器節點集區的版本必須與叢集版本相符。根據 Kubernetes 限制,使用者叢集的控制層一次只能升級一個子版本。不過請注意,相較於升級執行工作負載的節點集區,僅升級控制層所需的時間大幅減少,風險也較低。
跳過版本升級的好處
本節說明使用略過版本升級功能的一些優點。
更輕鬆地將叢集維持在支援的版本
Google Distributed Cloud 每四個月會推出新的子版本,每個子版本都有一年的支援期。為確保叢集在支援期間內,您必須大約每四個月執行一次子版本升級,如下所示:
12 月 |
1 月 |
2 月 |
3 月 |
4 月 |
5 月 |
6 月 |
7 月 |
8 月 |
9 月 |
10 月 |
11 月 |
12 月 |
1 月 |
2 月 |
3 月 |
4 月 |
5 月 |
6 月 |
7 月 |
8 月 |
9 月 |
10 月 |
11 月 |
12 月 |
1 月 |
2 月 |
3 月 |
| 1.14 | 升級 | ||||||||||||||||||||||||||
| 1.15 | 升級 | ||||||||||||||||||||||||||
| 1.16 | 升級 | ||||||||||||||||||||||||||
| 1.28 | 升級 | ||||||||||||||||||||||||||
| 1.29 | 升級 |
如果您需要較長的驗證時間來驗證新的子版本,以及較短的維護期間來將叢集升級至新的子版本,這項規定就會造成挑戰。為克服這些挑戰,您可以使用略過版本升級,每八個月升級一次叢集,而非每四個月升級一次,讓叢集保持在支援期間內。下表顯示略過 1.15 版升級作業,代表您在八個月後才升級,而非四個月。
12 月 |
1 月 |
2 月 |
3 月 |
4 月 |
5 月 |
6 月 |
7 月 |
8 月 |
9 月 |
10 月 |
11 月 |
12 月 |
1 月 |
2 月 |
3 月 |
4 月 |
5 月 |
6 月 |
7 月 |
8 月 |
9 月 |
10 月 |
11 月 |
12 月 |
1 月 |
2 月 |
3 月 |
| 1.14 | 升級 | ||||||||||||||||||||||||||
| 1.15 | |||||||||||||||||||||||||||
| 1.16 | 升級 | ||||||||||||||||||||||||||
| 1.28 | |||||||||||||||||||||||||||
| 1.29 |
升級節點集區時,如果略過一個子版本,就能減少升級次數,同時維持在支援的版本。此外,您也不需要驗證略過的子版本,因為控制層只會暫時使用該版本。
維護期間較短
使用略過版本升級功能,就不必延長維護期間。升級節點集區時,略過子版本所需的時間與升級至下一個子版本相同,因為節點集區中的每個節點都會清空並重新建立一次。因此,跳過版本升級可節省整體時間,並減少工作負載中斷。
摘要
總之,跳過版本升級有下列好處:
將叢集升級至支援的版本:Google Distributed Cloud 支援最近的三個子版本。如果叢集使用不支援的版本,視叢集版本而定,在升級節點集區時略過子版本,可讓叢集以較少的升級次數升級至支援的版本。
節省時間:升級節點集區時,略過子版本所需的時間,與將節點集區升級至下一個子版本所需的時間相同。因此,跳過版本升級所需的時間,大約是升級節點集區兩次的一半。同樣地,跳過版本升級只有一個驗證時間範圍,而一般升級則有兩個。
減少中斷:升級間隔時間更長,升級和驗證時間更短,代表工作負載執行時間更長,中斷次數更少。
在升級期間控管控制層和節點集區版本
在使用者叢集設定檔中,nodePools[i].gkeOnPremVersion 欄位可讓特定節點集區使用與頂層 gkeOnPremVersion 欄位不同的版本。變更 nodePools[i].gkeOnPremVersion 欄位的值,即可控制執行 gkectl upgrade cluster 時升級節點集區的時間。如果您未在設定
檔中加入 nodePools[i].gkeOnPremVersion,或將該欄位設為空字串,節點集區會升級
至您在 gkeOnPremVersion 中指定的相同目標版本。
略過版本升級序列
升級管理員和使用者叢集的順序,取決於要升級至哪個叢集版本,也就是「目標版本」:
1.32 以上
如果目標版本為 1.32 以上,請使用這個序列。假設使用者叢集控制層和所有節點集區都採用子版本 1.N。大致來說,使用略過版本升級功能將叢集從 1.N 升級至 1.N+2 的運作方式如下:
- 將管理員叢集從
1.N版升級至中繼版本1.N+1。 - 將管理員叢集從中繼版本
1.N+1升級至目標版本1.N+2。 - 僅將使用者叢集控制層從來源版本
1.N升級至中繼版本1.N+1。將節點集區保留在來源版本。控制層必須一次升級一個子版本,因此需要中繼版本。 - 將控制層和節點集區升級至目標版本
1.N+2。
1.31
如果使用者叢集版本為 1.29,則目標版本為 1.31,請使用這個特殊序列。如果使用者叢集版本為 1.29,管理該使用者叢集的管理員叢集版本可能是 1.16、1.28 或 1.29。
- 如果管理員叢集版本為 1.16,請升級至 1.28。
- 如果管理員叢集版本為 1.28,請升級至 1.29。
- 僅將使用者叢集控制層從來源版本 1.29 升級至中繼版本 1.30。將節點集區保留在來源版本。控制層一次只能升級一個子版本,因此需要中繼 1.30 版。
- 將管理員叢集從 1.29 版升級至中繼版本 1.30。
- 將管理員叢集升級至目標版本 1.31。
- 將使用者叢集控制層和節點集區升級至目標版本 1.31。
1.30 以下版本
如果目標版本為 1.30 以下,請使用這個序列。
假設使用者叢集控制層和所有節點集區都採用子版本 1.N。大致來說,使用略過版本升級功能將叢集從 1.N 升級至 1.N+2 的運作方式如下:
- 僅將控制層從來源版本
1.N升級至中繼版本1.N+1。將節點集區保留在來源版本。控制層必須一次升級一個子版本,因此需要中繼版本。 - 將控制層和節點集區升級至目標版本
1.N+2。
執行跳過版本升級
本節說明如何執行略過版本升級。
事前準備
確認叢集的目前版本 (來源版本) 為 1.16 以上版本。請務必檢查控制層 (
gkeOnPremVersion) 和所有節點集區 (nodePools[i].gkeOnPremVersion) 的版本。在 1.29 以上版本中,伺服器端預檢預設為啟用。請務必檢查防火牆規則,並視需要進行變更。
如要升級至 1.28 以上版本,您必須啟用
kubernetesmetadata.googleapis.com,並將kubernetesmetadata.publisherIdentity and Access Management (IAM) 角色授予記錄/監控服務帳戶。詳情請參閱「Google API 和 IAM 需求」。
執行升級
1.32 以上
如果目標版本為 1.32 以上,請使用這個序列。
開始之前,請確認管理員叢集的子版本至少與使用者叢集相同 (1.N)。如果使用者叢集版本為 1.30,管理員叢集版本為 1.28 或 1.29,請逐一升級管理員叢集的子版本,直到升至 1.30 為止。如果您已將管理員叢集升級至 1.N+1 或 1.N+2 (例如在升級其他使用者叢集時),請略過已完成的管理員叢集升級步驟。
在下列預留位置變數中,定義來源版本 (
1.N)、中繼版本 (1.N+1) 和目標版本 (1.N+2)。請以X.Y.Z-gke.N格式指定完整版本號碼,例如1.34.1000-gke.111:說明 版本 取得目前的使用者叢集版本。這是來源版本 ( 1.N)。SOURCE_VERSION選取中繼版本 ( 1.N+1)。INTERMEDIATE_VERSION從目標子版本 ( 1.N+2) 選取建議的修補程式。TARGET_VERSION將管理員工作站和管理員叢集從來源版本 (
1.N) 升級至中繼版本 (1.N+1):將管理員工作站升級至中繼版本
INTERMEDIATE_VERSION,並等待升級完成。將中繼套件中的 OS 映像檔匯入 vSphere:
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG將
ADMIN_CLUSTER_KUBECONFIG替換為管理員叢集kubeconfig檔案的路徑。將管理員叢集設定檔中的
bundlePath欄位設為中繼套件:bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz"
將管理員叢集升級至中繼版本:
gkectl upgrade admin \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG_FILE將
ADMIN_CLUSTER_CONFIG_FILE替換為管理員叢集設定檔的路徑。
將管理員工作站和管理員叢集從中繼版本 (
1.N+1) 升級至目標版本 (1.N+2):將管理員工作站升級至目標版本
TARGET_VERSION,並等待升級完成。將目標套件中的 OS 映像檔匯入 vSphere:
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG將管理員叢集設定檔中的
bundlePath欄位設為目標套件:bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz"
將管理員叢集升級至目標版本:
gkectl upgrade admin \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG_FILE
僅將使用者叢集控制層從來源版本 (
1.N) 升級至中繼版本 (1.N+1):在使用者叢集設定檔中進行下列變更:
將
gkeOnPremVersion欄位設為中繼版本INTERMEDIATE_VERSION。將
nodePools[i].gkeOnPremVersion中的所有 worker 節點集區版本設為來源版本SOURCE_VERSION。如果叢集有負載平衡器節點集區 (enableLoadBalancer: true),請將其gkeOnPremVersion欄位設為空字串 (""),以便與控制層一起升級。
更新設定檔後,內容應大致如下:
gkeOnPremVersion: INTERMEDIATE_VERSION # Omitted fields nodePools: - name: pool-1 gkeOnPremVersion: SOURCE_VERSION # Omitted fields - name: pool-2 gkeOnPremVersion: SOURCE_VERSION # Omitted fields
升級使用者叢集控制層:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE將
USER_CLUSTER_CONFIG_FILE替換為使用者叢集設定檔的路徑。
將使用者叢集控制層和 worker 節點集區升級至目標版本 (
1.N+2):在使用者叢集設定檔中進行下列變更:
將
gkeOnPremVersion欄位設為目標版本TARGET_VERSION。將每個節點集區的
nodePools[i].gkeOnPremVersion設為空字串 ("")。
更新設定檔後,內容應大致如下:
gkeOnPremVersion: TARGET_VERSION # Omitted fields nodePools: - name: pool-1 gkeOnPremVersion: "" # Omitted fields - name: pool-2 gkeOnPremVersion: "" # Omitted fields
升級使用者叢集控制層和節點集區:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
1.31
如果使用者叢集版本為 1.29,表示目標版本為 1.31,請使用這個特殊序列。由於版本規則在 1.31 版有所變更,因此必須採用這個順序。
如果使用者叢集版本為 1.29,管理該使用者叢集的管理員叢集版本可能是 1.16、1.28 或 1.29。
如要節省管理員工作站的空間,請移除下載的套件:
rm /var/lib/gke/bundles/gke-onprem-vsphere-*.tgz
管理員叢集和所有使用者叢集都升級至 1.29 版後,即可開始略過版本升級。
在下列預留位置變數中,定義來源版本 (1.29)、中繼版本 (1.30) 和目標版本 (1.31)。所有版本都必須是完整版本號碼,格式為
x.y.z-gke.N,例如1.29.700-gke.110。版本 取得目前使用者叢集的 1.29 版本。這是來源版本。 SOURCE_VERSION選擇中繼 1.30 版本。 INTERMEDIATE_VERSION選擇 1.31 目標版本。從 1.31 子版本中選取建議的修補程式。 TARGET_VERSION將管理員工作站升級至中繼 1.30 版本
INTERMEDIATE_VERSION。等待系統顯示升級成功的訊息。安裝對應的套件組合:
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG再次升級管理員工作站,但這次要升級至目標 1.31 版本
TARGET_VERSION。等待系統顯示升級成功的訊息。安裝對應的套件組合:
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG僅將使用者叢集控制層升級至中繼版本,如下所示:
在使用者叢集設定檔中進行下列變更:
將
gkeOnPremVersion欄位設為中繼版本INTERMEDIATE_VERSION。將
nodePools[i].gkeOnPremVersion中的所有節點集區版本設為來源版本SOURCE_VERSION。
更新設定檔後,內容應大致如下:
gkeOnPremVersion: INTERMEDIATE_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: SOURCE_VERSION ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...
升級控制層:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE將
USER_CLUSTER_CONFIG替換為使用者叢集設定檔的路徑。
將管理員叢集設定檔中的
bundlePath欄位設為套件的中繼 1.30 版本:bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz"
將管理員叢集升級至中繼 1.30 版本:
gkectl upgrade admin \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG_FILE將管理員叢集設定檔中的
bundlePath欄位設為套件的目標 1.31 版本:bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz"
將管理員叢集升級至目標 1.31 版本:
gkectl upgrade admin \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG_FILE請按照下列步驟,將控制層和節點集區升級至目標版本:
在使用者叢集設定檔中進行下列變更:
將
gkeOnPremVersion欄位設為目標版本TARGET_VERSION。將所有
nodePools[i].gkeOnPremVersion設為空白字串。
更新設定檔後,內容應大致如下:
gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...
升級控制層和節點集區:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
1.30 以下版本
如果目標版本為 1.30 以下,請使用這個序列。
在下列預留位置變數中,定義來源版本 (
1.N)、中繼版本 (1.N+1) 和目標版本 (1.N+2)。所有版本都必須是完整版本號碼,格式為x.y.z-gke.N,例如1.16.11-gke.25。版本 取得目前的叢集版本。這是來源版本 ( 1.N)。SOURCE_VERSION選擇中繼版本 ( 1.N+1)。INTERMEDIATE_VERSION選擇目標版本 ( 1.N+2)。從目標子版本中選取建議的修補程式。TARGET_VERSION將管理員工作站升級至中繼版本
INTERMEDIATE_VERSION。等待系統顯示升級成功的訊息。安裝對應的套件組合:
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG將
ADMIN_CLUSTER_KUBECONFIG替換為管理員叢集kubeconfig檔案的路徑。再次升級管理員工作站,但這次要升級至目標版本
TARGET_VERSION。等待系統顯示升級成功的訊息。安裝對應的套件:
gkectl prepare \ --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG僅將控制層升級至中繼版本,如下所示:
在使用者叢集設定檔中進行下列變更:
將
gkeOnPremVersion欄位設為中繼版本INTERMEDIATE_VERSION。將
nodePools[i].gkeOnPremVersion中的所有節點集區版本設為來源版本SOURCE_VERSION。
更新設定檔後,內容應大致如下:
gkeOnPremVersion: INTERMEDIATE_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: SOURCE_VERSION ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...
升級控制層:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE將
USER_CLUSTER_CONFIG替換為使用者叢集設定檔的路徑。
請按照下列步驟,將控制層和節點集區升級至目標版本:
在使用者叢集設定檔中進行下列變更:
將
gkeOnPremVersion欄位設為目標版本TARGET_VERSION。將所有
nodePools[i].gkeOnPremVersion設為空白字串。
更新設定檔後,內容應大致如下:
gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...
升級控制層和節點集區:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
如果沒有其他使用者叢集需要升級,請從管理員工作站移除套件,以節省空間:
rm /var/lib/gke/bundles/gke-onprem-vsphere-*.tgz