使用 Azure Kubernetes Fleet Manager 在多個叢集上更新 Kubernetes 和節點映射
管理大量叢集的平臺管理員通常會以安全且可預測的方式,在預備多個叢集的更新時發生問題(例如,升級節點OS映像或 Kubernetes 版本)。 為了解決這項挑戰,Azure Kubernetes Fleet Manager (Fleet) 可讓您使用更新執行跨多個叢集協調更新。
更新執行包含階段、群組和策略,而且可以使用自動升級配置檔手動套用一次性更新,或自動套用進行中的一般更新。 所有更新執行 (手動或自動化) 都會接受成員叢集維護視窗。
本指南涵蓋如何設定及手動執行更新執行。
必要條件
閱讀這項功能的概念性概觀,其中提供本指南所參考更新策略、執行、階段和群組的說明。
您必須有一或多個成員叢集的 Fleet 資源。 如果沒有,請遵循快速入門來建立機群資源,並將 Azure Kubernetes Service (AKS) 叢集加入為成員。
設定下列環境變數:
export GROUP=<resource-group>
export FLEET=<fleet-name>
export AKS_CLUSTER_ID=<aks-cluster-resource-id>
如果您遵循本文中的 Azure CLI 指示,您需要安裝 Azure CLI 2.58.0 版或更新版本。 若要安裝或升級,請參閱安裝 Azure CLI。
您也需要 fleet
Azure CLI 延伸模組,執行以下命令即可安裝:
az extension add --name fleet
az extension update
執行 命令以更新至發行的最新版本的延伸模組:
az extension update --name fleet
建立更新執行
更新執行支援叢集升級順序的兩個選項:
- 一個接一個:如果您不在意控制叢集升級順序,
one-by-one
請提供簡單的方法,一次升級一個佇列的所有成員叢集。
- 使用更新群組和階段控制叢集順序:如果您想要控制叢集升級順序,您可以在更新群組和更新階段中建構成員叢集。 您可以將此序列儲存為以更新策略的形式作為範本。 您稍後可以使用更新策略來建立更新執行,而不是每次建立更新執行時定義順序。
逐一更新所有叢集
在 Azure 入口網站 中,流覽至您的 Azure Kubernetes Fleet Manager 資源。
從 [服務] 功能表的 [設定] 底下,選取 [多重叢集更新>建立執行]。
輸入更新執行的名稱,然後針對升級類型選取 [逐一 ]。
針對 升級範圍選取下列其中一個選項:
- 控制平面和節點集區的 Kubernetes 版本
- 僅限叢集控制平面的 Kubernetes 版本
- 僅限節點映像版本
針對 節點映像選取下列其中一個選項:
- 最新映像:將更新執行中的每個 AKS 叢集更新為其區域中該叢集可用的最新映像。
- 一致的映像:更新執行可能會讓 AKS 叢集跨越多個區域,其中最新的可用節點映像可能不同(如需詳細資訊,請查看 發行追蹤器 )。 更新執行會挑選所有這些區域中的最新通用映像,以達到一致性。
選取 [建立 ] 以建立更新執行。
使用 az fleet updaterun create
命令搭配您選擇的 和 --node-image-selection
旗標值--upgrade-type
來建立更新執行。 下列命令會建立更新執行,以升級控制平面和節點集區的 Kubernetes 版本,並使用其區域中每個叢集可用的最新節點映像。
--upgrade-type
旗標支援下列值:
Full
會升級控制平面和節點集區的 Kubernetes 版本以及節點映像。
ControlPlaneOnly
只會升級叢集控制平面的 Kubernetes 版本。
NodeImageOnly
只會升級節點映像。
--node-image-selection
旗標支援下列值:
Latest
:將更新執行中的每個 AKS 叢集更新為其區域中該叢集可用的最新映像。
Consistent
:更新執行有可能讓 AKS 叢集跨越多個區域,其中最新的可用節點映射可能不同(如需詳細資訊,請查看 發行追蹤器 )。 更新執行會挑選所有這些區域中的最新通用映像,以達到一致性。
az fleet updaterun create \
--resource-group $GROUP \
--fleet-name $FLEET \
--name run-1 \
--upgrade-type Full \
--kubernetes-version 1.26.0 \
--node-image-selection Latest
使用 az fleet updaterun start
命令啟動更新執行。
az fleet updaterun start \
--resource-group $GROUP \
--fleet-name $FLEET \
--name run-1
在建立更新執行時,您可以控制更新執行的範圍。 --upgrade-type
旗標支援下列值:
ControlPlaneOnly
只會升級叢集控制平面的 Kubernetes 版本。
Full
會升級控制平面和節點集區的 Kubernetes 版本以及節點映像。
NodeImageOnly
只會升級節點映像。
此外,--node-image-selection
旗標也支援下列值:
- [最新]: 將更新執行中的每個 AKS 叢集更新至其區域中該叢集可用的最新映像。
- [一致]: 當更新執行有機會使用多個區域的 AKS 叢集時,最新可用的節點映像會不相同 (如需詳細資訊,請參閱發行版本追蹤器)。 更新執行會挑選所有這些區域中的最新通用映像,以達到一致性。
啟動更新執行:
若要啟動更新執行,請執行下列命令:
az fleet updaterun start \
--resource-group $GROUP \
--fleet-name $FLEET \
--name <run-name>
使用群組和階段更新叢集
您可以使用更新階段定義更新執行,以循序將更新應用程式排序至不同的更新群組。 例如,第一個更新階段可能會更新測試環境成員叢集,而第二個更新階段則會接著更新實際執行環境成員叢集。 您也可以指定兩個更新階段之間的等候時間。 您可以將此序列儲存為以更新策略的形式作為範本。
在 Azure 入口網站 中,流覽至您的 Azure Kubernetes Fleet Manager 資源。
從 [服務] 功能表的 [設定] 底下,選取 [多重叢集更新>建立執行]。
輸入更新執行的名稱,然後選取 更新順序類型的 [階段 ]。
選取 [建立階段],然後輸入階段的名稱和階段之間的等候時間。
選取您要在此階段包含的更新群組。 如果您想要以特定順序更新更新群組,您也可以指定更新群組的順序。 完成時,選取建立。
針對 升級範圍選取下列其中一個選項:
- 控制平面和節點集區的 Kubernetes 版本
- 僅限叢集控制平面的 Kubernetes 版本
- 僅限節點映像版本
針對 節點映像選取下列其中一個選項:
- 最新映像:將更新執行中的每個 AKS 叢集更新為其區域中該叢集可用的最新映像。
- 一致的映像:更新執行可能會讓 AKS 叢集跨越多個區域,其中最新的可用節點映像可能不同(如需詳細資訊,請查看 發行追蹤器 )。 更新執行會挑選所有這些區域中的最新通用映像,以達到一致性。
選取 [建立 ] 以建立更新執行。
每次建立更新執行時都指定階段及其順序,可能會讓工作變得重複且繁瑣。 更新策略可讓您儲存更新執行範本,以簡化此程序。 如需詳細資訊,請參閱更新策略的建立和使用。
在 [ 多重叢集更新 ] 功能表中,選取更新執行,然後選取 [ 啟動]。
建立 JSON 檔案,以定義更新執行的階段和群組。 以下是階段檔案的輸入範例 (example-stages.json):
{
"stages": [
{
"name": "stage1",
"groups": [
{
"name": "group-1a"
},
{
"name": "group-1b"
},
{
"name": "group-1c"
}
],
"afterStageWaitInSeconds": 3600
},
{
"name": "stage2",
"groups": [
{
"name": "group-2a"
},
{
"name": "group-2b"
},
{
"name": "group-2c"
}
]
}
]
}
使用 命令建立更新執行,az fleet updaterun create
--stages
並將旗標設定為 JSON 檔案的名稱,以及針對 和 --node-image-selection
旗標選擇的值--upgrade-type
。 下列命令會建立更新執行,以升級控制平面和節點集區的 Kubernetes 版本,並使用其區域中每個叢集可用的最新節點映像。
--upgrade-type
旗標支援下列值:
Full
會升級控制平面和節點集區的 Kubernetes 版本以及節點映像。
ControlPlaneOnly
只會升級叢集控制平面的 Kubernetes 版本。
NodeImageOnly
只會升級節點映像。
--node-image-selection
旗標支援下列值:
Latest
:將更新執行中的每個 AKS 叢集更新為其區域中該叢集可用的最新映像。
Consistent
:更新執行有可能讓 AKS 叢集跨越多個區域,其中最新的可用節點映射可能不同(如需詳細資訊,請查看 發行追蹤器 )。 更新執行會挑選所有這些區域中的最新通用映像,以達到一致性。
az fleet updaterun create \
--resource-group $GROUP \
--fleet-name $FLEET \
--name run-1 \
--upgrade-type Full \
--kubernetes-version 1.26.0 \
--node-image-selection Latest \
--stages example-stages.json
使用 az fleet updaterun start
命令啟動更新執行。
az fleet updaterun start \
--resource-group $GROUP \
--fleet-name $FLEET \
--name run-1
使用更新策略建立更新執行
建立更新執行需要您每次指定階段、群組、順序。 更新策略可讓您儲存更新執行範本,以簡化此程序。
注意
您可以從相同的更新策略建立具有唯一名稱的多個更新執行。
您可以使用下列其中一種方法來建立更新策略:
建立更新執行時儲存更新策略
管理更新執行
下列各節說明如何使用 Azure 入口網站 和 Azure CLI 來管理更新執行。
在機隊資源的 [ 多重叢集更新 ] 頁面上,您可以 啟動 處於 [未啟動 ] 或 [失敗 ] 狀態的更新執行:
在機隊資源的 [ 多重叢集更新 ] 頁面上,您可以 停止 目前正在 執行的 更新執行:
在 [未啟動]、[失敗] 或 [執行中] 狀態的任何更新內,您可以選取任何階段並略過升級:
同樣地,您也可以在更新群組或成員叢集層級略過升級。
您可以使用 命令,啟動 處於 [未啟動 ] 或 [失敗 ] 狀態的 az fleet updaterun start
更新執行:
az fleet updaterun start \
--resource-group $GROUP \
--fleet-name $FLEET \
--name <run-name>
您可以使用 命令停止 目前正在 執行的 更新執行 az fleet updaterun stop
:
az fleet updaterun stop \
--resource-group $GROUP \
--fleet-name $FLEET \
--name <run-name>
您可以使用 命令在 旗標az fleet updaterun skip
中--targets
指定更新階段或群組,以略過更新階段或群組:
az fleet updaterun skip \
--resource-group $GROUP \
--fleet-name $FLEET \
--name <run-name> \
--targets Group:my-group-name Stage:my-stage-name
如需詳細資訊,請參閱關於更新執行狀態的概念概觀和關於執行/階段/群組的略過行為。
使用自動升級配置檔自動執行更新
當新的 Kubernetes 或節點映射版本可供使用時,會自動執行跨成員叢集執行的更新配置檔。
如需設定自動升級配置檔的詳細資訊,請參閱 使用 Azure Kubernetes Fleet Manager 自動升級 Kubernetes 和節點映像。
如需詳細資訊,請參閱 更新執行狀態的概念概觀,以及略過執行/階段/群組的行為 。
下一步