瞭解目前版本和目標版本對叢集升級的影響,有助於在開始前確認版本偏斜、升級順序和 OS 需求。
版本專屬升級資訊
下表說明各版本的升級資訊。表格下方則列出特定版本的詳細資料。版本會由新到舊排序。找出要升級「至」的版本,查看適用於叢集的具體詳細資料和規則。
| 版本 | 先升級 | 控制層 (CP) 版本 | worker 節點集區版本 | 進階叢集狀態 | 舊版功能支援 | 預設和必要的 OS 映像檔 | Kubeception 節點升級行為 | cert-manager 組合 |
|---|---|---|---|---|---|---|---|---|
| 1.36 | 管理員叢集 | 1.36、1.35、1.34 | 1.36、1.35、1.34 | 必填 | 無 | ubuntu_cgv2、cos_cgv2 |
不支援 | 隨附 |
| 1.35 | 管理員叢集 | 1.35、1.34、1.33 | 1.35、1.34、1.33 | 必填 | 無 | ubuntu_cgv2、cos_cgv2 為必要項目 (cgroup v1 已停用) |
不支援 | 隨附 |
| 1.34 | 管理員叢集 | 1.34、1.33、1.32 | 1.34、1.33、1.32 | 強制 (無法選擇不採用;非進階廣告活動會自動轉換) | 無 | ubuntu_cgv2 (預設)、cos_cgv2、ubuntu_containerd、cos |
不支援 | 隨附 |
| 1.33 | 管理員叢集 | 1.33、1.32、1.31 | 1.33、1.32、1.31 | 預設 (自動轉換) (僅限 1.32 至 1.33 版可選擇不採用) | 無 | ubuntu_cgv2 (預設)、cos_cgv2、ubuntu_containerd、cos |
不支援 | 進階叢集套裝組合 |
| 1.32 | 管理員叢集 | 1.32、1.31、1.30 | 1.32、1.31、1.30 | 正式發布版 (支援升級;支援個別和略過節點升級) | 無 | ubuntu_cgv2 (預設)、cos_cgv2、ubuntu_containerd、cos |
不支援 (必須遷移至 Controlplane V2) | 進階叢集套裝組合 |
| 1.31 | 管理員叢集 | 1.31、1.30、1.29 | 1.31、1.30、1.29 | 預先發布版 (不升級至 1.32;不執行個別或略過節點升級作業) | 是 (Seesaw、F5、Kubeception、非高可用性);強烈建議遷移至建議功能;必須使用 Dataplane V2 | ubuntu_cgv2 (預設)、cos_cgv2、ubuntu_containerd、cos |
管理員節點與管理員叢集一起升級;使用者控制層節點與使用者叢集一起升級 | 未綁定 |
| 1.30 | 使用者叢集 | 1.30 | 1.30、1.29、1.28 | 無法使用 | 是 (Seesaw、F5、Kubeception、非高可用性);強烈建議遷移至建議功能 | ubuntu_cgv2 (預設)、cos_cgv2、ubuntu_containerd、cos |
升級管理員叢集時,CP 和管理員節點也會升級 | 未綁定 |
| 1.29 | 使用者叢集 | 1.29、1.30 | 1.29、1.28、1.16 | 無法使用 | 是 (Seesaw、F5、Kubeception、非高可用性) | ubuntu_cgv2 (預設)、cos_cgv2、ubuntu_containerd、cos |
升級管理員叢集時,CP 和管理員節點也會升級 | 未綁定 |
| 1.28 | 使用者叢集 | 1.28、1.29、1.30 | 1.28、1.16、1.15 | 無法使用 | 是 (Seesaw、F5、Kubeception、非高可用性) | ubuntu_containerd (預設)、cos、ubuntu_cgv2、cos_cgv2 |
升級管理員叢集時,CP 和管理員節點也會升級 | 未綁定 |
無論是哪個版本,您都必須同時升級負載平衡器節點集區版本 (具有 enableLoadBalancer: true 的節點集區),並升級至與使用者叢集控制層相同的版本。
各發布版本的升級資訊
找到要升級「至」的版本對應段落,查看升級至該版本所需的具體資訊。
1.36 版本
先升級:管理員叢集
- 1.36 版的管理員叢集可以管理 1.36、1.35 和 1.34 版的使用者叢集。
- 使用者叢集控制層版本:1.36、1.35 或 1.34。
- worker 節點集區版本:1.36、1.35 或 1.34。
進階叢集狀態:必須使用進階叢集。
略過節點升級:支援。
是否支援舊版功能:否。會阻擋升級。
預設和必要的 OS 映像檔:ubuntu_cgv2、cos_cgv2。新設定的預設 osImageType 為 ubuntu_cgv2。
Kubeception 節點升級行為:不支援。封鎖升級。
升級工具:
gkectl:管理員叢集的必要項目。支援的版本為 1.36、1.37 和 1.38。- Terraform:如果您使用 Terraform 建立使用者叢集,則支援此功能。
- Google Cloud 控制台:支援使用者叢集升級。
- Google Cloud CLI:支援使用者叢集升級。
其他規定:
- 您可以使用
gkectl upgrade admin --async,以非同步方式執行管理員叢集升級作業。
1.35 版
先升級:管理員叢集
- 1.35 版的管理員叢集可以管理 1.35、1.34 和 1.33 版的使用者叢集。
- 使用者叢集控制層版本:1.35、1.34 或 1.33。
- worker 節點集區版本:1.35、1.34 或 1.33。
進階叢集狀態:必須使用進階叢集。
略過節點升級:支援。
是否支援舊版功能:否。會阻擋升級。
預設和必要的 OS 映像檔:ubuntu_cgv2、cos_cgv2 為必要 (cgroup v1 已停用)。新設定的預設 osImageType 為 ubuntu_cgv2。您必須先將叢集遷移至 cgroup v2,才能升級。
Kubeception 節點升級行為:不支援。封鎖升級。
升級工具:
gkectl:管理員叢集的必要項目。支援的版本為 1.35、1.36 和 1.37。- Terraform:如果您使用 Terraform 建立使用者叢集,則支援此功能。
- 控制台:支援使用者叢集升級。
- gcloud CLI:支援使用者叢集升級。
其他規定:
- 您可以使用
gkectl upgrade admin --async,以非同步方式執行管理員叢集升級作業。
1.34 版
先升級:管理員叢集
- 1.34 版的管理員叢集可以管理 1.34、1.33 和 1.32 版的使用者叢集。
- 使用者叢集控制層版本:1.34、1.33 或 1.32。
worker 節點集區版本:1.34、1.33 或 1.32。
進階叢集狀態:必須使用進階叢集。
略過節點升級:支援。
是否支援舊版功能:否。會阻擋升級。
預設和必要的 OS 映像檔:ubuntu_cgv2、cos_cgv2、ubuntu_containerd、cos。預設 osImageType 為 ubuntu_cgv2。
Kubeception 節點升級行為:不支援。封鎖升級。
升級工具:
gkectl:管理員叢集的必要項目。將非進階叢集轉換為進階叢集時,必須使用這個指令 (1.34 版起強制使用;gkectl二進位檔版本必須與目標發布版本完全一致)。支援的版本為 1.34、1.35 和 1.36。- Terraform:如果您使用 Terraform 建立使用者叢集,則支援此功能。
- 控制台:支援進階使用者叢集升級。
- gcloud CLI:支援進階使用者叢集升級。
其他規定:
升級至 1.34 版時,須遵守下列額外規定:
升級至 1.34 版時,非進階叢集會自動轉換為進階叢集。如要瞭解從非進階叢集升級至進階叢集的特定規則,請參閱「將叢集更新或升級至進階叢集」。
隨附的
cert-manager為必要項目,且已更新至 1.19 版,會覆寫現有的自訂cert-manager安裝項目。如要進一步瞭解隨附cert-manager的升級授權,請參閱「使用隨附的cert-manager」。節點容器執行階段已升級至 containerd 2.0。這可能會有下列影響:
- containerd 2.0 不支援舊版 Docker 映像檔資訊清單 v2 或結構定義 1 映像檔。升級至 1.34 版前,請確認工作負載使用 Docker 結構定義 2 或符合 OCI 標準的格式提取容器映像檔。
- 在 containerd 2.0 中,儲存庫鏡像設定會遷移至 hosts.toml 格式。如果您直接在節點上管理自訂鏡像設定或實體隔離的登錄檔端點,請確認設定與 hosts.toml 一致。
- 如果您使用自訂 DaemonSet 或指令碼修補 /etc/containerd/config.toml,請確認這些項目未使用已淘汰的 containerd v1 設定選項,否則 containerd 2.0 可能無法啟動 containerd。
nodePoolUpdatePolicy.maximumConcurrentNodePoolUpdate欄位的預設值在 1.34.300 版中有所變更。如要在 1.34.300 以上版本中依序升級節點集區,請在使用者叢集設定檔中設定nodePoolUpdatePolicy.maximumConcurrentNodePoolUpdate: 1:- 在 1.34.0-1.34.200 版中,
nodePoolUpdatePolicy.maximumConcurrentNodePoolUpdate預設為1,會依序更新節點集區,一次一個。 - 如果是 1.34.300 以上版本,
nodePoolUpdatePolicy.maximumConcurrentNodePoolUpdate預設為0,會同時更新所有節點集區。
詳情請參閱「設定節點集區更新政策」。
- 在 1.34.0-1.34.200 版中,
升級預檢會主動驗證叢集中的所有
PodDisruptionBudget(PDB) 設定。升級前,請確認工作負載沒有過度限制的 PDB (例如maxUnavailable: 0或minAvailable符合副本總數),以免節點耗盡或預檢失敗。如果升級作業中斷,請直接升級至 1.34.300-gke.59 以上版本。如果您需要在失敗後重新執行
gkectl upgrade admin,這個版本可防止啟動叢集遭到刪除。詳情請參閱「重新執行gkectl upgrade admin會刪除 bootstrap 叢集」。除了從非進階叢集轉換為進階叢集的情況外,您可以使用
gkectl upgrade admin --async非同步執行進階叢集的管理員叢集升級作業。
1.33 版
先升級:管理員叢集
- 1.33 版的管理員叢集可以管理 1.33、1.32 和 1.31 版的使用者叢集。
- 使用者叢集控制層版本:1.33、1.32 或 1.31。
worker 節點集區版本:1.33、1.32 或 1.31。
進階叢集狀態:進階叢集是預設叢集類型,會自動轉換。允許選擇不採用。詳情請參閱「升級及維護非進階叢集」。如果將 enableAdvancedCluster 設為 false,就無法建立新叢集。
略過節點升級:支援。
是否支援舊版功能:否。會阻擋升級。
預設和必要的 OS 映像檔:ubuntu_cgv2、cos_cgv2、ubuntu_containerd、cos。預設 osImageType 為 ubuntu_cgv2。
Kubeception 節點升級行為:不支援。封鎖升級。
升級工具:
gkectl:將非進階叢集轉換為進階叢集時,必須使用這個引數 (gkectl二進位檔版本必須與目標發布版本完全相符)。管理員叢集必須提供這項資訊。支援的版本為 1.33、1.34 和 1.35。- Terraform:如果您使用 Terraform 建立使用者叢集,則支援此功能。
- 控制台:支援進階使用者叢集升級。
- gcloud CLI:支援進階使用者叢集升級。
其他規定:
升級至 1.33 版時,須符合下列額外規定:
從 1.32 升級至 1.33 時,系統預設會自動將非進階叢集轉換為進階叢集。您可以保留非進階叢集。如要進一步瞭解如何讓叢集維持非進階狀態,請參閱「升級及維護非進階叢集」。
進階叢集會自動安裝並綁定
cert-manager1.18 版,覆寫現有的自訂cert-manager安裝項目。如要進一步瞭解隨附cert-manager的升級授權,請參閱「使用隨附的cert-manager」。如果您在這個版本中升級至進階叢集,則從非進階叢集轉換為進階叢集時,
gkectl二進位檔版本必須與目標版本完全相符。這項規定僅適用於升級至進階叢集時。對於進階叢集的所有其他升級,則適用標準版本偏誤規則。如果升級作業中斷,請直接升級至 1.33.700-gke.71 以上版本。如果您需要在失敗後重新執行
gkectl upgrade admin,這個版本可防止啟動叢集遭到刪除。如果所有使用者叢集都執行 Controlplane V2,您可以使用
gkectl upgrade admin --async,以非同步方式升級進階叢集和非進階高可用性叢集的管理員叢集。從非進階叢集轉換為進階叢集時,無法使用--async旗標。
1.32 版
先升級:管理員叢集
- 1.32 版的管理員叢集可以管理 1.32、1.31 和 1.30 版的使用者叢集。
- 使用者叢集控制層版本:1.32、1.31 或 1.30。
worker 節點集區版本:1.32、1.31 或 1.30。
進階叢集狀態:支援。
略過節點升級:支援。
是否支援舊版功能:否。會阻擋升級。
預設和必要的 OS 映像檔:ubuntu_cgv2、cos_cgv2、ubuntu_containerd、cos。預設 osImageType 為 ubuntu_cgv2。
Kubeception 節點升級行為:不支援。封鎖升級。必須遷移至 Controlplane V2。
升級工具:
gkectl:將非進階叢集轉換為進階叢集時,必須使用這個引數 (gkectl二進位檔版本必須與目標發布版本完全相符)。管理員叢集必須提供這項資訊。支援的版本為 1.32、1.33 和 1.34。- Terraform:如果您使用 Terraform 建立使用者叢集,則支援此功能。
- 控制台:支援進階使用者叢集升級。
- gcloud CLI:支援進階使用者叢集升級。
其他規定:
升級至 1.32 版時,須符合下列額外規定:
這是第一個可選用升級至完全支援的GA進階叢集的版本。您可以選擇:
升級至非進階叢集,並維護非進階叢集。如果選擇這個選項,從這個版本開始,您可以執行下列操作:
- 分別升級使用者叢集的控制層和 worker 節點集區。worker 節點集區最多可比控制層落後 2 個子版本。
- 以非同步方式升級管理員和使用者叢集。
升級至非進階叢集,然後將非進階叢集轉換為進階叢集。如果選擇這個選項,從這個版本開始,您可以執行下列操作:
- 升級非進階叢集時,請分別升級使用者叢集的控制層和 worker 節點集區,但轉換為進階叢集時則不必這麼做。worker 節點集區最多可比控制層落後 2 個子版本。
- 升級非進階叢集時,請以非同步方式升級管理員和使用者叢集。
- 轉換為進階叢集時,請升級至 1.32.1000-gke.57 以上版本,因為這個版本已修正已知問題,可避免刪除啟動叢集。
直接升級至進階叢集。如果選擇這個選項,從這個版本開始,系統會套用下列設定:
- 您必須一併升級控制層和所有節點集區。
- 您可以對使用者叢集執行非同步升級,但無法對管理員叢集執行。
- 請升級至發布版本 1.32.1000-gke.57 以上版本,因為這些版本已修正已知問題,可避免啟動叢集無法刪除。
從這個版本開始,系統不再支援下列舊版功能。詳情請參閱「舊版功能」:
- Dataplane V1 (Calico)。請先升級至 Dataplane V2,再升級至 1.32。
- Seesaw。請先升級至替代負載平衡器,再升級至 1.32。
- 整合式 F5 BIG-IP。請先升級至替代負載平衡器,再升級至 1.32。
- Kubeception。請先升級至非 Kubeception 叢集,再升級至 1.32。
- 非高可用性管理員叢集。升級至 1.32 前,請先升級至高可用性管理員叢集。
從非進階叢集轉換為進階叢集時,
gkectl二進位檔版本必須與目標發布版本完全相符。這項規定僅適用於升級至進階叢集時。對於進階叢集的所有其他升級,則適用標準版本偏誤規則。如果升級作業中斷,請直接升級至 1.32.1000-gke.57 以上版本。如果您需要在失敗後重新執行
gkectl upgrade admin,這個版本可防止啟動叢集遭到刪除。在 1.32 以上版本中,如果所有使用者叢集都執行 Controlplane V2,您可以使用
gkectl upgrade admin --async,以非同步方式升級進階叢集和非進階 HA 叢集的管理員叢集。從非進階叢集轉換為進階叢集時,無法使用--async旗標。
1.31 版本
先升級:管理員叢集
- 1.31 版的管理員叢集可以管理 1.31、1.30 和 1.29 版的使用者叢集。
- 使用者叢集控制層版本:1.31、1.30 或 1.29。
- worker 節點集區版本:1.31、1.30 或 1.29。(1.31 進階叢集不支援)。
- 如要從 1.29/1.30 升級至 1.31,您必須先將所有叢集升級至 1.30 版,再將管理員叢集升級至 1.31。
進階叢集狀態:僅供預覽。無法升級至更高版本。
略過節點升級:支援。
支援的舊版功能:必須使用 Dataplane V2;仍支援 Kubeception、Seesaw 和 F5。
預設和必要的 OS 映像檔:ubuntu_cgv2、cos_cgv2、ubuntu_containerd、cos。預設 osImageType 為 ubuntu_cgv2。
Kubeception 節點升級行為:管理員節點會與管理員叢集一起升級;使用者控制層節點會與使用者叢集一起升級。
升級工具:
gkectl:管理員叢集、非進階叢集和進階叢集 (預先發布版,適用於這個版本) 必須提供。支援的版本為 1.31、1.32 和 1.33。- Terraform:如果使用者叢集是以 Terraform 建立,則支援已註冊的使用者叢集。
- 控制台:支援已註冊的使用者叢集升級。
- gcloud CLI:支援已註冊的使用者叢集升級。
其他規定:
升級至 1.31 版時,須遵守下列額外規定:
這個版本推出預先發布版進階叢集。在這個版本中,您無法將非進階叢集遷移至進階叢集。您可以建立新的進階叢集,但無法將這些預先發布版進階叢集升級至更高版本。不建議在這個版本中建立進階叢集。如要進一步瞭解產品推出階段 (例如預先發布版),請參閱「產品推出階段」。
在 1.31 以上版本中,升級架構已變更為管理員叢集必須高於或等於使用者叢集的模式。過去,使用者叢集最多可以比管理員叢集高兩個子版本。
您必須先升級管理員叢集,才能升級由管理員叢集管理的使用者叢集。管理員叢集可以管理子版本相同或最多低 2 個子版本的使用者叢集。舉例來說,1.31 版的管理員叢集可以管理 1.31、1.30 和 1.29 版的使用者叢集。
如要從 1.29 升級至 1.31,必須先將 1.30 套件設為中繼步驟。您必須在管理員工作站下載 1.30 和 1.31 套件,才能升級至 1.31。如要執行從 1.29 到 1.31 的略過版本升級,請按照下列步驟操作:
- 僅將使用者叢集控制層從 1.29 升級至 1.30 (worker 節點集區維持在 1.29)。
- 將管理員叢集從 1.29 升級至 1.30。
- 將管理員叢集從 1.30 升級至目標 1.31。
- 將使用者叢集控制層和 worker 節點集區一併升級至 1.31。
如果您使用 Kubeception,管理員叢集節點會在管理員叢集升級期間升級,使用者叢集控制層節點則會在使用者叢集升級期間升級。
如要升級至 1.31,必須啟用 Dataplane V2。為避免 CNI 遷移期間發生網路政策衝突和流量下降,您必須手動儲存並刪除所有
NetworkPolicy物件,並在升級後還原這些物件。如要改用 Dataplane V2,請執行下列操作:匯出並儲存所有自訂網路政策:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get networkpolicy -A -o wide \ --field-selector metadata.namespace!=kube-system kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get networkpolicy POLICY_NAME \ -n NAMESPACE -o yaml > policy.yaml更改下列內容:
USER_CLUSTER_KUBECONFIG:使用者叢集的 kubeconfig 檔案路徑POLICY_NAME:NetworkPolicy物件的名稱NAMESPACE:NetworkPolicy物件的命名空間
從叢集刪除網路政策:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ delete networkpolicy POLICY_NAME \ -n NAMESPACE在使用者叢集設定檔中設定
enableDataplaneV2: true,然後升級至 1.31。1.31 升級作業完成後,請套用已儲存的政策,讓 Cilium 將政策完整編譯為擴充 Berkeley 封包篩選器 (eBPF):
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ apply -f policy.yaml
如果您有高可用性管理員叢集,且所有使用者叢集都執行 Controlplane V2,則可使用
gkectl upgrade admin --async指令以非同步方式執行升級。所有使用者叢集都必須啟用 Dataplane V2。將使用者叢集升級至 1.31 版之前,請按照「啟用 Dataplane V2」中的步驟操作。
1.32 版不支援舊版功能,您可以在 1.30 和 1.31 版中替換這些功能,以免升級至 1.32 版時發生問題。
1.30 版
先升級:使用者叢集
- 1.30 版的使用者叢集可由 1.30、1.29 或 1.28 版的管理員叢集管理。
- 1.30 版的管理員叢集只能管理 1.30 版的使用者叢集。所有使用者叢集和管理員叢集都必須達到 1.30,才能將管理員叢集升級至 1.31,而且必須先將管理員叢集升級至 1.31,才能將任何使用者叢集升級至 1.31。
- 使用者叢集控制層版本:1.30。
- worker 節點集區版本:1.30、1.29 或 1.28。
進階叢集狀態:不適用。
略過節點升級:支援。
支援舊版功能:支援。強烈建議您改用建議功能。
預設和必要的 OS 映像檔:ubuntu_cgv2、cos_cgv2、ubuntu_containerd、cos。預設 osImageType 為 ubuntu_cgv2。
- Kubeception 節點升級行為:** 升級管理員叢集時,控制層和管理員節點會一併升級
升級工具:
gkectl:管理員叢集的必要項目。支援的版本為 1.30、1.31 和 1.32。- Terraform:如果您使用 Terraform 建立使用者叢集,則支援已註冊的使用者叢集。
- 控制台:支援已註冊的使用者叢集升級。
- gcloud CLI:支援已註冊的使用者叢集升級。
其他規定:
升級至 1.30 版時,須符合下列額外規定:
對於這個版本和所有先前版本,您必須先遷移所有使用者叢集,才能升級管理員叢集。管理員叢集的子版本必須與任何代管使用者叢集相同或更低。
如果您使用 Kubeception,升級期間會發生下列情況:
- 升級使用者叢集。由於使用者控制層位於管理員叢集內,因此執行
gkectl upgrade cluster只會升級 worker 節點集區。 - 升級管理員叢集。管理員叢集升級作業會升級管理員節點,並同時自動升級所有使用者叢集控制層。
- 升級使用者叢集。由於使用者控制層位於管理員叢集內,因此執行
如果您使用 Controlplane V2,升級期間會發生下列情況:
- 升級使用者叢集。這會升級控制層和 worker 節點集區。
- 升級管理員叢集。管理員節點會隨之升級。
建立新的使用者叢集時,您必須將
enableControlplaneV2欄位設為true,這是這個版本開始的預設值。如果將enableControlplaneV2欄位設為false,gkectl會拒絕檔案,且不會建立叢集。如果您有高可用性管理員叢集,且所有使用者叢集都執行 Controlplane V2,則可使用
gkectl upgrade admin --async指令以非同步方式執行升級。1.32 版不支援舊版功能,您可以在 1.30 和 1.31 版中替換這些功能,以免升級至 1.32 版時發生問題。
1.29 版
先升級:使用者叢集
- 1.29 版的使用者叢集可由 1.29、1.28 或 1.16 版的管理員叢集管理。
- 1.29 版的管理員叢集可以管理 1.29 和 1.30 版的使用者叢集。1.29 版的管理員叢集無法管理 1.31 版的使用者叢集,因為所有叢集都必須先升級至 1.30 版,且管理員叢集必須先升級至 1.31 版,使用者叢集才能升級至 1.31 版。
- 使用者叢集控制層版本:1.29 或 1.30,最多高 1 個子版本。
- worker 節點集區版本:1.29、1.28 或 1.16。
進階叢集狀態:不適用。
略過節點升級:支援。
支援舊版功能:支援。
預設和必要的 OS 映像檔:ubuntu_cgv2、cos_cgv2、ubuntu_containerd、cos。預設 osImageType 為 ubuntu_cgv2。
Kubeception 節點升級行為:控制層和管理員節點會在管理員叢集升級期間升級
升級工具:
gkectl:管理員叢集的必要項目。支援的版本為 1.29、1.30 和 1.31。- Terraform:如果您使用 Terraform 建立使用者叢集,則支援已註冊的使用者叢集。
- 控制台:支援已註冊的使用者叢集升級。
- gcloud CLI:支援已註冊的使用者叢集升級。
其他規定:
升級至 1.29 版時,須遵守下列額外規定:
- worker 節點最多可比控制層落後 2 個子版本 (n+2)。
- 升級 worker 節點集區時,可以略過子版本。例如,您可以將 worker 節點集區從 1.28 升級至 1.30。
- 預檢作業會以 Pod 的形式,在管理員叢集或臨時啟動 kind 叢集內執行,而非在管理員工作站上執行。
- 從這個版本開始,您可以使用
gkectl upgrade cluster --dry-run執行預檢,不必升級叢集。 - 如果您有高可用性管理員叢集,且所有使用者叢集都執行 Controlplane V2,則可使用
gkectl upgrade admin --async指令以非同步方式執行升級。
1.28 版本
先升級:使用者叢集
- 1.28 版的使用者叢集可由 1.28、1.16 或 1.15 版的管理員叢集管理。
- 1.28 版的管理員叢集可以管理 1.28、1.29 和 1.30 版的使用者叢集。
- 使用者叢集控制層版本:1.28、1.29 或 1.30,最多可高出 2 個子版本。
- worker 節點集區版本:1.28、1.16 或 1.15,最多可低 2 個子版本。
進階叢集狀態:不適用。
略過節點升級:支援。
支援舊版功能:支援。
預設和必要的 OS 映像檔:ubuntu_containerd、cos、ubuntu_cgv2、cos_cgv2。預設 osImageType 為 ubuntu_containerd。
Kubeception 節點升級行為:控制層和管理員節點會在管理員叢集升級期間升級
升級工具:
gkectl:管理員叢集的必要項目。支援的版本為 1.28、1.29 和 1.30。- Terraform:如果您使用 Terraform 建立使用者叢集,則支援已註冊的使用者叢集。
- 控制台:支援已註冊的使用者叢集升級。
- gcloud CLI:支援已註冊的使用者叢集升級。
其他規定:
升級至 1.28 版時,須遵守下列額外規定:
您必須啟用
kubernetesmetadata.googleapis.com,並將roles/kubernetesmetadata.publisher授予記錄/監控服務帳戶。否則預檢可能會失敗,或出現403 PERMISSION_DENIED錯誤。啟用 API,並將角色授予現有的 logging-monitoring 服務帳戶:gcloud services enable kubernetesmetadata.googleapis.com gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:LOGGING_SA" \ --role="roles/kubernetesmetadata.publisher"更改下列內容:
PROJECT_ID:使用者叢集所屬機群主機專案的 ID。LOGGING_SA:記錄/監控服務帳戶的電子郵件地址。
雖然在技術上,您可以在節點集區升級期間略過版本,但這項功能是做為預先發布版功能推出,不建議用於這個版本。如要進一步瞭解產品推出階段 (例如預先發布版),請參閱「產品推出階段」。
如果節點集區含有隨附的負載平衡器,則必須與叢集版本完全比對。
您可以設定
nodePools[i].updateStrategy.rollingUpdate.maxSurge欄位,同時升級多個節點。vSphere 叢集必須有足夠的 CPU、RAM 和可用 IP 位址,才能在升級期間容納額外的增加 VM:- 設為
maxSurge: 1(預設) 可一次升級一個節點 (依序執行排除、替換、驗證,然後重複)。 - 設定
maxSurge: N(其中N > 1),最多可同時佈建及耗盡N個 worker 節點 (例如,maxSurge: 3會同時升級 3 個 worker 節點)。
- 設為
管理員工作站必須至少有 100 GB 的可用磁碟空間,才能升級管理員工作站。
用於升級的
gkectl版本最多可比目前叢集高兩個子版本。無法使用較低的子版本。
1.28 之前的版本
如要升級至 1.28 版之前的版本,請遵循下列額外規定。1.16 至 1.28 之間沒有發布版本:
1.16 版:
- 管理員和使用者叢集之間,以及控制層和節點集區之間的版本差異,只能相差 1 個子版本。舉例來說,1.15 版的管理員叢集只能管理 1.15 或 1.16 版的使用者叢集。使用者叢集控制層升級至 1.16 後,可管理執行 1.15 或 1.16 版的 worker 節點集區。1.14 版的集區必須先升級至 1.15 版,控制層才能升級至 1.16 版。如要進一步瞭解版本偏差,請參閱「版本偏差規則」。
- 建立叢集或將叢集升級至 1.16 版時,叢集會自動註冊至 GKE On-Prem API。這項異動可讓您透過控制台、gcloud CLI 和 Terraform 查看、監控及升級使用者叢集,不必再只使用管理員工作站殼層。
1.14 版:
- 您可以先只升級使用者叢集控制層,這樣就不必同時清空及升級每個 worker 節點集區。
- 升級期間,系統會自動檢查及更新工作站上現有的管理員和使用者叢集 kubeconfig 檔案,並自動更新憑證。
1.13 版:
- 在這個版本之前,您可以建立離線管理員叢集。這個版本需要您將管理員叢集註冊至 Google Cloud。如要瞭解如何註冊叢集,請參閱「註冊現有叢集」。
- 如要將叢集升級至 Google Distributed Cloud 軟體 (僅限 VMware 1.13 以上版本),您必須先將仍使用 Docker Engine 的使用者叢集節點集區更新為 containerd。
使用套裝組合 cert-manager
您必須使用隨附的 cert-manager,該工具會自動安裝在進階叢集上。從非進階叢集遷移至進階叢集時,整合式 cert-manager 會自動覆寫任何客戶安裝的 cert-manager 版本。在更新或升級至進階叢集之前,請確認現有的 cert-manager 未套用重要的自訂設定或功能。
如要查看是否已將重要的自訂設定或功能套用至 cert-manager,請按照下列步驟操作:
- 暫停持續部署工具。如果您使用 GitOps 工具 (例如 Config Sync、ArgoCD 或 Flux) 管理
cert-manager,請先暫停同步處理,或從存放區中移除cert-manager資訊清單,再進行升級。如果 GitOps 控制器在叢集升級期間嘗試將cert-manager協調回舊版本或自訂資訊清單,就會建立協調迴圈,可能導致叢集升級停滯。 - 升級前,請勿手動解除安裝或刪除
cert-managerPod、命名空間或 CRD。gkectl會就地管理這些升級作業。 - 如果您修改了
cert-manager部署作業旗標、節點選取器或 Pod 資源限制,請將其還原。進階叢集不支援自訂二進位引數,或cert-manager的部署層級覆寫。 - 如果您使用專門的外部簽發者、私人 ACME DNS-01 Webhook 外掛程式或自訂 Webhook,請確認第三方外掛程式與要升級版本的隨附
cert-manager版本相容。
詳情請參閱「升級至與進階叢集搭配使用的 cert-manager」。
下表列出哪些發布版本需要隨附 cert-manager:
| 版本 | 新叢集的狀態 | 現有叢集升級狀態 | 是否需要隨附 cert-manager? |
|---|---|---|---|
| 1.34+ | 必填 | 強制轉換 (隨附 v1.19) | 所有客戶都必須提供。非進階叢集已不復存在。 |
| 1.33 | 標準/所有新叢集的預設值 | 預設會自動轉換為進階叢集 (隨附 v1.18) | 幾乎所有叢集都必須啟用這項功能,除非明確使用 enableAdvancedCluster: false 選擇不啟用 (僅限 1.32 → 1.33)。 |
| 1.32 (正式發布版) | 預設為啟用 | 可選擇轉換為進階叢集 | 如果已啟用進階叢集,則為必填欄位。 |
| 1.31 (預先發布版) | 選用 (enableAdvancedCluster: true) |
不支援 | 如果已啟用進階叢集,則為必填欄位。 |
如要查看每個支援版本隨附的 cert-manager 版本,請參閱「隨附的 cert-manager 版本」。
Controlplane V2
啟用 Controlplane V2 後,使用者叢集的控制層會在使用者叢集上執行。如果是 Controlplane V2,使用者叢集控制層節點會在使用者叢集升級期間升級,管理員叢集控制層節點則會在管理員叢集升級期間升級。
舊版功能
下表列出 1.32 以上版本封鎖的舊版功能。如果您使用這些功能,必須先遷移至建議的替代方案,才能升級至 1.32 以上版本。
| 舊版功能 (1.32 版起禁止使用) | 建議替代方案 | 遷移操作說明連結 | | --- | --- | --- | | Dataplane V1 (Calico) | Dataplane V2 (Cilium/eBPF) | 遷移至 Dataplane V2| | Kubeception | Controlplane V2 | 遷移至 Controlplane V2 | | 非高可用性管理員叢集 (1 個副本) | 高可用性管理員叢集 (3 個副本) | 遷移至高可用性管理員叢集 | | Seesaw 負載平衡器 | MetalLB 或 ManualLB | 遷移至 MetalLB 或遷移負載平衡器類型| | 整合式 F5 BIG-IP (loadBalancer.kind: "F5BigIP") | ManualLB (與 F5 Big-IP Controller 或 CCGI 搭配) | 遷移至 ManualLB |
如要瞭解如何從舊版功能遷移至建議功能,請參閱「規劃叢集遷移至建議功能」。
Kubeception 遷移和版本行為
Kubeception 是舊版功能,必須先遷移至 Controlplane V2,才能升級至 1.32 以上版本。
對於採用 Kubeception 的叢集,升級行為會因版本而異:
- 1.28:在管理員叢集升級期間,升級控制層和管理員節點
- 1.29 版:在管理員叢集升級期間,升級控制層和管理員節點
1.30 版:控制層和管理員節點會在管理員叢集升級期間升級。如果您使用 Kubeception,升級期間會發生下列情況:
- 升級使用者叢集。由於使用者控制層位於管理員叢集內,因此執行
gkectl upgrade cluster只會升級 worker 節點集區。 - 升級管理員叢集。管理員叢集升級作業會升級管理員節點,並同時自動升級所有使用者叢集控制層。
- 升級使用者叢集。由於使用者控制層位於管理員叢集內,因此執行
1.31 版:管理員節點會與管理員叢集一起升級;使用者控制層節點會與使用者叢集一起升級。
1.32 以上版本:不支援 Kubeception。您必須先遷移至 Controlplane V2,才能升級至 1.32 以上版本。
如要進一步瞭解如何將 Kubeception 遷移至 Controlplane V2,請參閱「規劃叢集遷移作業,改用建議功能」。
版本偏差與升級時略過版本
版本偏誤是指管理員叢集與其代管使用者叢集之間,或使用者叢集控制層與使用者叢集節點集區之間,允許的子版本差異。
版本偏誤與升級時略過子版本不同。
只有在升級控制層後,升級 worker 節點集區時,才能略過子版本。這項規定適用於進階和非進階叢集,但執行 1.31 版和 1.28 版之前的進階叢集除外。舉例來說,如果 worker 節點集區的版本為 1.29,請先將使用者叢集控制層更新至 1.30,再更新至 1.31。控制層升級至 1.31 後,請直接將 worker 節點集區從 1.29 升級至 1.31,不必升級至 1.30。詳情請參閱「升級節點集區時略過版本」。
如要升級至高於下一個次要版本的版本,請先升級至下一個次要版本,再升級至更高的次要版本。升級管理員和使用者叢集控制層時,無法略過子版本。舉例來說,如果您想從 1.34.x 版升級至 1.36.x 版,則無法直接升級。您必須先從 1.34.x 升級至 1.35.x,再升級至 1.36.x。
使用者叢集的控制層最多可比叢集中的 worker 節點集區高 2 個子版本。舉例來說,如果使用者叢集的控制層版本為 1.36,叢集中的 worker 節點集區版本可以是 1.34、1.35 或 1.36。
允許哪些版本偏差?
管理員叢集最多可管理低 2 個子版本的使用者叢集。舉例來說,如果管理員叢集為 1.31 版,則由該管理員叢集管理的使用者叢集可以是 1.29、1.30 或 1.31 版。
1.31 版之前,適用下列版本偏誤規則:
- 如果是 1.28 至 1.30 版,使用者叢集最多可以比管理員叢集高 2 個子版本。舉例來說,如果管理員叢集為 1.15,則該管理員叢集管理的使用者叢集可以為 1.15、1.16 或 1.28。您必須先將管理員叢集升級至 1.16 以上版本,才能將 1.28 使用者叢集升級至 1.29。1.31 版會變更升級順序,要求先升級管理員叢集,因此 1.29 或 1.30 版的管理員叢集無法管理 1.31 或 1.32 版的使用者叢集。所有使用者叢集和管理員叢集都必須達到 1.30,才能將管理員叢集升級至 1.31。
- 如果是 1.16 以下版本,使用者叢集只能比管理員叢集高 1 個子版本。舉例來說,如果管理員叢集為 1.15,則由該管理員叢集管理的使用者叢集可以為 1.15 或 1.16。
我是否必須一次升級所有使用者叢集?
升級使用者叢集時,您可以選擇下列其中一項:
- 同時升級整個使用者叢集,包括控制層和叢集中的所有節點集區。
- 升級使用者叢集的控制層,並將節點集區保留在目前版本。
- 升級使用者叢集的控制層,並選擇性升級節點集區。
您採用的方法取決於多項因素,例如:
- 叢集所在的環境 (正式環境或非正式環境)。
- 維護期間的長度。
- 使用者叢集的版本。
舉例來說,您可能想在開發環境中,同時升級使用者叢集的控制層和所有節點集區。不過,在維護期間較短的正式環境中,您可能只想升級控制層,因為這項作業所需時間較短,且控制層升級作業不應中斷使用者工作負載。
負載平衡器節點集區 (具有 enableLoadBalancer: true 的節點集區) 必須與叢集版本相同。
「gkectl」的版本規則
您可以用來升級的 gkectl 版本取決於目標叢集版本 (也就是要升級至的叢集版本)。通常,您會使用與叢集目標版本相同的 gkectl 版本。升級期間會強制執行下列規則:
gkectl版本必須等於或高於目標次要叢集版本。舉例來說,如果您要將 1.29 叢集升級至 1.30,則必須使用gkectl1.30 以上版本。修補程式版本則不影響。gkectl版本最多可比目前的叢集版本高兩個子版本。舉例來說,如要將 1.28 叢集升級至 1.29,請使用gkectl1.29 或 1.30 版,但不要使用 1.31 版,因為該版本比叢集版本高三個子版本。
從非進階叢集轉換為進階叢集時,gkectl 二進位檔版本必須與目標發布版本完全一致。這項嚴格的版本規定僅適用於升級至進階叢集時。所有其他進階叢集升級作業,均適用標準版本偏誤規則。
修補程式版本升級規則
請盡可能升級至最新修補程式版本,確保叢集已套用最新安全性修正。修補程式版本不會影響版本偏斜和升級規則。如果是特定子版本,您可以升級至任何更高的修補程式版本。舉例來說,您可以從 1.35.0 升級至 1.35.1,也可以從 1.35.1 升級至 1.35.3。
後續步驟
請參閱升級最佳做法,並制定叢集升級計畫。
建立已啟用進階叢集的叢集: