使用 Azure Kubernetes Fleet Manager 定義可重複使用的更新策略

管理員可以透過定義一系列階段和群組來控制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

  • 您也需要 fleet Azure CLI 延伸模組 1.6.0 版或更新版本,您可以執行下列命令來安裝:

    az extension add --name fleet
    

    az extension update執行 命令以更新至發行的最新版本的延伸模組:

    az extension update --name fleet
    

為您的策略選擇叢集

有兩種方法可以選擇每個階段和群組中包含哪些叢集,以控制更新順序:

  • 會員標籤 (建議):為每位車隊成員分配標籤,並用 memberSelector 來依標籤選擇成員。 每個成員可以有多個標籤。
  • 更新群組:為每個艦隊成員指派一個更新群組,然後在策略中定義與群組名稱相符的群組。 每位成員只能屬於一個團體。

使用成員選擇器建立更新策略(預覽)

成員標籤是更新策略中選擇叢集的推薦方法,因為它們提供了更多彈性。 關於概念細節,請參見 使用成員標籤的群組群集。

Important

Azure Kubernetes Fleet Manager 預覽功能以自助服務、選擇加入方式提供。 預覽是「依現況」及「可用時」提供的,並不包括在服務等級協定和有限保固之內。 客戶支援部門會竭盡全力支援一部分的 Azure Kubernetes 機群管理員預覽功能。 因此,這些功能不適合實際執行用途。

對成員叢集套用標籤

在將成員叢集加入到集群時套用標籤

用指令 az fleet member create 對你的艦隊成員套用標籤。 以下範例將兩個標籤應用於成員叢集: env=stagingtier=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"

建立更新策略

更新策略包含一或多個階段,其中階段可以包含一或多個更新群組。

  1. 建立 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"個叢集同時存在,且frontendbackend各群的限制為"3"

數值可以是固定整數(例如 "3"),或百分比(例如 "50%")。 若未包含,系統會套用預設值。 關於這些值如何解析及其上限,請參見 最大並發(預覽)

  1. 使用 az fleet updatestrategy create 命令建立新的更新策略,並將 --stages 旗標設定為您的 JSON 檔案名稱。

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-labels-strategy.json
    

使用更新群組建立更新策略

在更新策略中,也可以選擇叢集,將其指派到單一更新群組。 你可以定義一個更新策略,將這些更新群組分配到階段。 在更新階段內,更新會平行套用至每個更新群組。 在更新群組內,成員叢集會循序更新。

附註

車隊成員只能是一個更新群組的一部分,但更新群組可以指派多個車隊成員。 更新群組本身不是個別的資源類型。 更新群組只是代表機群成員參考的字串。 因此,如果所有參考同一更新群組的艦隊成員都被刪除,該特定更新群組也將不再存在。

指派叢集以更新群組

在將成員叢集新增至機群時指派給群組

  1. 在 Azure 入口網站 中,流覽至您的 Azure Kubernetes Fleet Manager 資源。

  2. 從服務功能表中的 [設定] 底下,選取 [

    Azure Kubernetes Fleet Manager 用於新增成員叢集的 [Azure 入口網站] 頁面螢幕快照。

  3. 選取您要新增的叢集,然後選取 [下一步:檢閱 + 新增]。

  4. 輸入您要指派叢集的更新群組名稱,然後選取 [ 新增]。

    Azure 入口網站頁面 Azure Kubernetes 機群管理員成員檢閱和新增成員叢集步驟的螢幕擷取畫面。

將現有的車隊成員指派給更新群組

  1. 在 Azure 入口網站 中,流覽至您的 Azure Kubernetes Fleet Manager 資源。

  2. 從服務功能表中的 [設定] 底下,選取 [成員叢集]。

  3. 選取您要指派給更新群組的叢集,然後選取 [ 指派更新群組]

    Azure 入口網站頁面螢幕擷取畫面: 將現有的成員叢集指派給群組。

  4. 輸入您要指派叢集的更新群組名稱,然後選取 [ 指派]。

    這是顯示更新成員叢集群組表單的 Azure 入口網站頁面的螢幕擷取畫面。

建立更新策略

更新策略包含一或多個階段,其中階段可以包含一或多個更新群組。

  1. 在 Azure 入口網站 中,流覽至您的 Azure Kubernetes Fleet Manager 資源。

  2. 從服務功能表,於 [設定] 底下,選取 [多重叢集更新]> [策略],然後選取 [建立]

  3. 輸入策略的名稱。

  4. 第一次檢視頁面時,會顯示更新策略說明圖表,以協助可視化策略的運作方式。

    Azure 入口網站的螢幕擷取畫面,其中顯示更新策略的建立。

  5. 選取 [ 建立階段 ],然後輸入:

    • 階段名稱 - 為階段命名 - 在策略中的所有階段名稱中必須是唯一的。
    • (選擇性) 階段核准 - 如果您想要在此階段開始之前或完成之後等待核准,請選取此選項。 如需詳細資訊,請參閱 新增核准以更新群組和階段
    • (選擇性)階段 后暫停 - 如果您想要在移至下一個階段之前定義暫停,請選取此選項。
    • (選擇性) 暫停持續時間 - 選取預先定義的持續時間,或以秒為單位輸入自定義值。

    顯示 Azure Kubernetes Fleet Manager 更新策略階段建立之 Azure 入口網站 的螢幕快照。

  6. 將一個或多個 更新群組 指派到該階段,然後選擇 建立

    附註

    每個更新階段的更新群組數目上限為 50

    Azure 入口網站的螢幕快照顯示 Azure Kubernetes Fleet Manager 更新策略階段的建立,並選取要包括的更新群組。

下一步

您可以使用更新策略作為手動更新執行或自動升級配置檔的一部分。 請參閱: