管理員可以透過定義一系列階段和群組來控制Fleet管理的叢集的更新順序。 他們可以設定何時應在這些階段和群組中進行核准和暫停。 整個組態可以儲存為更新策略,該策略可以獨立於更新執行或自動升級進行管理,從而允許根據需要重複使用策略。
本文說明如何使用群組和階段來定義更新策略。
必要條件
閱讀 Fleet 更新的概念總覽,其中提供了本指南所參考的更新過程、階段、群組和策略的說明。
您必須擁有一個包含一或多個成員叢集的艦隊資源。 如果沒有,請遵循快速入門來建立機群資源,並將 Azure Kubernetes Service (AKS) 叢集加入為成員。
設定下列環境變數:
export GROUP=<resource-group> export FLEET=<fleet-name> export CLUSTERID=<aks-cluster-resource-id> export STRATEGY=<strategy-name>如果您遵循本文中的 Azure CLI 指示,您需要安裝 Azure CLI 2.70.0 版或更新版本。 若要安裝或升級,請參閱安裝 Azure CLI。
您也需要
fleetAzure CLI 延伸模組 1.6.0 版或更新版本,您可以執行下列命令來安裝:az extension add --name fleetaz extension update執行 命令以更新至發行的最新版本的延伸模組:az extension update --name fleet
為您的策略選擇叢集
有兩種方法可以選擇每個階段和群組中包含哪些叢集,以控制更新順序:
-
會員標籤 (建議):為每位車隊成員分配標籤,並用
memberSelector來依標籤選擇成員。 每個成員可以有多個標籤。 - 更新群組:為每個艦隊成員指派一個更新群組,然後在策略中定義與群組名稱相符的群組。 每位成員只能屬於一個團體。
使用成員選擇器建立更新策略(預覽)
成員標籤是更新策略中選擇叢集的推薦方法,因為它們提供了更多彈性。 關於概念細節,請參見 使用成員標籤的群組群集。
Important
Azure Kubernetes Fleet Manager 預覽功能以自助服務、選擇加入方式提供。 預覽是「依現況」及「可用時」提供的,並不包括在服務等級協定和有限保固之內。 客戶支援部門會竭盡全力支援一部分的 Azure Kubernetes 機群管理員預覽功能。 因此,這些功能不適合實際執行用途。
對成員叢集套用標籤
在將成員叢集加入到集群時套用標籤
用指令 az fleet member create 對你的艦隊成員套用標籤。 以下範例將兩個標籤應用於成員叢集: env=staging 和 tier=frontend:
az fleet member create \
--resource-group $GROUP \
--fleet-name $FLEET \
--name member1 \
--member-cluster-id $CLUSTERID \
--labels "env=staging tier=frontend"
為現有車隊成員套用標籤
用指令 az fleet member update 對你的艦隊成員套用標籤
az fleet member update \
--resource-group $GROUP \
--fleet-name $FLEET \
--name member1 \
--labels "env=staging tier=frontend"
建立更新策略
更新策略包含一或多個階段,其中階段可以包含一或多個更新群組。
建立 JSON 檔案,以定義更新執行的階段和群組。 階段會依它們出現在 JSON 檔案中的順序循序執行。 每個階段內的群組會平行運行。 以下範例檔案(example-labels-strategy.json)定義了一種策略,採用兩個階段
memberSelector,透過標籤選擇叢集,並包含可選maxConcurrency設定:- 該
staging階段使用階段層memberSelector級選擇所有帶有標籤env=staging的叢集,並建立一個隱含群組。 - 該
production階段使用階段層memberSelector級對所有帶有標籤env=production的叢集進行預過濾,然後定義兩個群組,每組有自己的memberSelector群組,以依標籤tier選擇叢集。
當
memberSelector被設定在群組時,該群組的name欄位僅用作顯示識別碼,以供狀態報告和日誌之用,並不再用於根據更新群組來選擇車隊成員。{ "stages": [ { "name": "staging", "memberSelector": { "byLabel": "env=staging" }, "maxConcurrency": "1", "afterStageWaitInSeconds": 600 }, { "name": "production", "memberSelector": { "byLabel": "env=production" }, "maxConcurrency": "4", "groups": [ { "name": "frontend", "memberSelector": { "byLabel": "tier=frontend" }, "maxConcurrency": "3" }, { "name": "backend", "memberSelector": { "byLabel": "tier=backend" }, "maxConcurrency": "3" } ] } ] }- 該
附註
該 maxConcurrency 欄位為可選,控制在階段或群組層級可同時升級的叢集數量。 用較大的數值來加快整個艦隊的叢集升級,或用較小的數值來更受控地部署,以限制爆炸範圍,以防出現問題。
當一個階段使用 memberSelector 但沒有群組(例如 staging),所有匹配的成員會組成一個隱含的群組,該階段的 maxConcurrency 控制項會直接並行。 當群體被定義(如 production),階段層 maxConcurrency 級作為所有群體的總體上限。
在此範例中,staging 階段將 maxConcurrency 設定為 "1",因此暫存階段叢集會逐個升級。 該production階段允許最多"4"個叢集同時存在,且frontend與backend各群的限制為"3"。
數值可以是固定整數(例如 "3"),或百分比(例如 "50%")。 若未包含,系統會套用預設值。 關於這些值如何解析及其上限,請參見 最大並發(預覽)。
使用
az fleet updatestrategy create命令建立新的更新策略,並將--stages旗標設定為您的 JSON 檔案名稱。az fleet updatestrategy create \ --resource-group $GROUP \ --fleet-name $FLEET \ --name $STRATEGY \ --stages example-labels-strategy.json
使用更新群組建立更新策略
在更新策略中,也可以選擇叢集,將其指派到單一更新群組。 你可以定義一個更新策略,將這些更新群組分配到階段。 在更新階段內,更新會平行套用至每個更新群組。 在更新群組內,成員叢集會循序更新。
附註
車隊成員只能是一個更新群組的一部分,但更新群組可以指派多個車隊成員。 更新群組本身不是個別的資源類型。 更新群組只是代表機群成員參考的字串。 因此,如果所有參考同一更新群組的艦隊成員都被刪除,該特定更新群組也將不再存在。
指派叢集以更新群組
在將成員叢集新增至機群時指派給群組
將現有的車隊成員指派給更新群組
建立更新策略
更新策略包含一或多個階段,其中階段可以包含一或多個更新群組。
在 Azure 入口網站 中,流覽至您的 Azure Kubernetes Fleet Manager 資源。
從服務功能表,於 [設定] 底下,選取 [多重叢集更新]> [策略],然後選取 [建立]。
輸入策略的名稱。
第一次檢視頁面時,會顯示更新策略說明圖表,以協助可視化策略的運作方式。
選取 [ 建立階段 ],然後輸入:
- 階段名稱 - 為階段命名 - 在策略中的所有階段名稱中必須是唯一的。
- (選擇性) 階段核准 - 如果您想要在此階段開始之前或完成之後等待核准,請選取此選項。 如需詳細資訊,請參閱 新增核准以更新群組和階段。
- (選擇性)階段 后暫停 - 如果您想要在移至下一個階段之前定義暫停,請選取此選項。
- (選擇性) 暫停持續時間 - 選取預先定義的持續時間,或以秒為單位輸入自定義值。
將一個或多個 更新群組 指派到該階段,然後選擇 建立。
附註
每個更新階段的更新群組數目上限為 50。
下一步
您可以使用更新策略作為手動更新執行或自動升級配置檔的一部分。 請參閱: