使用計劃性維護來排程和控制 Azure Kubernetes Service 叢集的升級

本文說明如何使用計劃性維護來排程和控制 Azure Kubernetes Service (AKS) 中的叢集和節點映像升級。

定期維護會自動在您的 AKS 叢集上執行。 維護作業有兩種類型:

當您在 AKS 中使用計畫性維護的功能時,您可以依您選擇的步調執行這兩種類型的維護,以將工作負載影響降到最低。

開始之前

  • 此文章假設您目前具有 AKS 叢集。 如果您沒有 AKS 叢集,請參閱 建立 AKS 叢集
  • 如果您使用 Azure CLI,請使用 az upgrade 命令升級至最新版本。

考量

當您使用計劃性維護時,適用下列考慮:

  • AKS 保留中斷計劃性維護時段的權利,以便進行緊急或關鍵的非計劃性、反應性維護作業。 這些維護作業甚至可以在您設定中定義的 或 notAllowedDates 期間內notAllowedTime執行。
  • 維護作業只會 被視為最佳工作, 而且不保證會在指定的窗口中發生。

排程計劃性維護的組態類型

有三種排程組態類型可用於計劃性維護:

  • default 是控制 AKS 版本的基本設定。 由於 Azure 安全部署做法,發行最多可能需要兩周的時間才會推出到所有區域。

    選擇 default 以最不具干擾性的方式排程這些更新。 您可以使用每周發行追蹤器,依區域監視進行中的AKS發行狀態。

  • aksManagedAutoUpgradeSchedule 會控制何時執行您指定的自動升級通道所排程的叢集升級。 相較於組態,您可以使用此 default 設定來設定更精細的步調和周期設定。 如需叢集自動升級的詳細資訊,請參閱 自動升級 Azure Kubernetes Service 叢集

  • aksManagedNodeOSUpgradeSchedule 會控制何時執行節點OS自動升級通道所排程的節點OS安全性修補。 相較於組態,您可以使用此 default 設定來設定更精細的步調和周期設定。 如需節點OS自動升級通道的詳細資訊,請參閱 自動修補和更新 AKS 叢集節點映像

我們建議對所有叢集升級案例使用 aksManagedAutoUpgradeSchedule,對所有節點作業系統安全修補案例使用 aksManagedNodeOSUpgradeSchedule

default 選項僅適用於 AKS 每周版本。 您可以使用 命令,將 default 組態切換至 aksManagedAutoUpgradeScheduleaksManagedNodeOSUpgradeSchedule 組態 az aks maintenanceconfiguration update

建立維護期間

注意

當您使用自動升級時,若要確保適當的功能,請使用維護期間,持續時間為 4 小時以上。

計劃性維護時段會以國際標準時間 (UTC) 指定。

default 維護時段具有下列屬性:

名稱 描述: 預設值
timeInWeek 在組態中 default ,這個屬性包含 day 定義維護時段的 和 hourSlots 值。 不適用
timeInWeek.day 在設定中 default 執行維護的星期幾。 不適用
timeInWeek.hourSlots 在設定中 default 執行維護的小時長時段清單。 不適用
notAllowedTime 維護無法執行的日期範圍,由 startend 子屬性決定。 只有當您使用組態檔建立維護期間時,才適用此屬性。 不適用

aksManagedAutoUpgradeScheduleaksManagedNodeOSUpgradeSchedule 維護期間具有下列屬性:

名稱 描述: 預設值
utcOffset 叢集維護的時區。 +00:00
startDate 維護期間開始生效的日期。 建立時間的目前日期
startTime 維護開始的時間,根據所 utcOffset決定的時區。 不適用
schedule 升級頻率。 有三種類型可供使用: WeeklyAbsoluteMonthlyRelativeMonthly 不適用
intervalDays 維護執行的間隔天數。 aksManagedNodeOSUpgradeSchedule只適用於 。 不適用
intervalWeeks 維護執行的間隔以周為單位。 不適用
intervalMonths 維護執行的間隔以月為單位。 不適用
dayOfWeek 要開始維護的指定星期數。 不適用
durationHours 要執行維護之時段的持續時間。 不適用
notAllowedDates 維護無法執行的日期範圍,由 startend 子屬性決定。 只有在您使用組態檔建立維護期間時,才適用。 不適用

排程類型

有四種可用的排程類型: DailyWeeklyAbsoluteMonthly、 和 RelativeMonthly

WeeklyAbsoluteMonthlyRelativeMonthly 排程類型僅適用於 aksManagedClusterAutoUpgradeScheduleaksManagedNodeOSUpgradeSchedule 組態。 Daily 排程僅適用於 aksManagedNodeOSUpgradeSchedule 組態。

需要針對每個排程類型顯示的所有欄位。

Daily 程可能看起來像「每隔三天」:

"schedule": {
    "daily": {
        "intervalDays": 3
    }
}

Weekly 程可能看起來像「每兩周在星期五」:

"schedule": {
    "weekly": {
        "intervalWeeks": 2,
        "dayOfWeek": "Friday"
    }
}

AbsoluteMonthly排程看起來可能會像「每月第一天每三個月」:

"schedule": {
    "absoluteMonthly": {
        "intervalMonths": 3,
        "dayOfMonth": 1
    }
}

RelativeMonthly 程可能看起來像「過去一個星期一每兩個月」:

"schedule": {
    "relativeMonthly": {
        "intervalMonths": 2,
        "dayOfWeek": "Monday",
        "weekIndex": "Last"
    }
}

的有效值 weekIndex 包括 FirstSecondThirdFourthLast

新增維護時段組態

使用 az aks maintenanceconfiguration add 命令,將維護時段組態新增至 AKS 叢集。

第一個範例會新增一個新的 default 設定,將維護排程在每週一上午 1:00 到上午 2:00 執行。 第二個範例會新增一個新的 aksManagedAutoUpgradeSchedule 設定,排程維護在時區上午 12:00 到上午 8:00 之間每隔三個星期五執行 UTC+5:30 一次。

# Add a new default configuration
az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 1

# Add a new aksManagedAutoUpgradeSchedule configuration
az aks maintenanceconfiguration add --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 3 --duration 8 --utc-offset +05:30 --start-time 00:00

注意

當您使用組 default 態類型時,可以省略 --start-time 參數,以在一天中隨時允許維護。

更新現有維護時段

使用 az aks maintenanceconfiguration update 命令更新現有的維護組態。

下列範例會將設定 default 更新為排程維護,以在每個星期一上午 2:00 到上午 3:00 執行:

az aks maintenanceconfiguration update --resource-group myResourceGroup --cluster-name myAKSCluster --name default --weekday Monday --start-hour 2

列出現有叢集中的所有維護時段

使用 az aks maintenanceconfiguration list 命令,列出 AKS 叢集中目前的維護設定視窗:

az aks maintenanceconfiguration list --resource-group myResourceGroup --cluster-name myAKSCluster

在現有的叢集中顯示特定的維護設定視窗

使用 az aks maintenanceconfiguration show 命令搭配 --name 參數,在 AKS 叢集中檢視特定的維護組態視窗:

az aks maintenanceconfiguration show --resource-group myResourceGroup --cluster-name myAKSCluster --name aksManagedAutoUpgradeSchedule

下列範例輸出顯示 的 aksManagedAutoUpgradeSchedule維護期間:

{
  "id": "/subscriptions/<subscription>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/maintenanceConfigurations/aksManagedAutoUpgradeSchedule",
  "maintenanceWindow": {
    "durationHours": 4,
    "notAllowedDates": [
      {
        "end": "2024-01-05",
        "start": "2023-12-23"
      }
    ],
    "schedule": {
      "absoluteMonthly": {
        "dayOfMonth": 1,
        "intervalMonths": 3
      },
      "daily": null,
      "relativeMonthly": null,
      "weekly": null
    },
    "startDate": "2023-01-20",
    "startTime": "09:00",
    "utcOffset": "-08:00"
  },
  "name": "aksManagedAutoUpgradeSchedule",
  "notAllowedTime": null,
  "resourceGroup": "myResourceGroup",
  "systemData": null,
  "timeInWeek": null,
  "type": null
}

刪除現有叢集中的維護設定視窗

使用 az aks maintenanceconfiguration delete 命令,刪除 AKS 叢集中的維護設定視窗。

下列範例會 autoUpgradeSchedule 刪除維護組態:

az aks maintenanceconfiguration delete --resource-group myResourceGroup --cluster-name myAKSCluster --name autoUpgradeSchedule

常見問題集

  • 如何檢查叢集中的現有維護設定?

    使用 az aks maintenanceconfiguration show 命令。

  • 回應式非計劃性維護是否也會在 notAllowedTimenotAllowedDates 期間發生?

    是。 AKS 保留針對緊急或重大非計劃性/回應式維護作業中斷原訂維護時段的權利。

  • 如何判斷維護事件是否發生?

    如需版本,請檢查叢集的區域,並在每周版本中查閱資訊,以查看它是否符合您的維護排程。 若要檢視自動升級的狀態,請在叢集上查閱 活動記錄 。 您也可以查閱特定的升級相關事件,如升級 AKS 叢集中所述

    AKS 也會發出與升級相關的 Azure 事件方格 事件。 若要深入了解,請參閱以 AKS 作為事件方格來源

  • 是否可以同時使用多個維護設定?

    是,您可以同時執行這三個組態: defaultaksManagedAutoUpgradeScheduleaksManagedNodeOSUpgradeSchedule。 如果視窗重疊,AKS 會決定執行順序。

  • 我已設定維護期間,但升級未發生。 為什麼?

    AKS 自動升級需要一定的時間,才能考慮維護期間。 建議您在建立或更新維護組態與排程開始時間之間至少 24 小時。

    此外,請確定當計劃性維護期間啟動時,您的叢集已啟動。 如果停止叢集,則會解除分配其控制平面,而且無法執行任何作業。

  • 為什麼我的其中一個代理程式集區在維護期間外升級?

    如果未升級代理程式集區(例如,因為 Pod 中斷預算已阻止它),則稍後可能會在維護期間外升級。 此案例稱為「趕上升級」。它可避免使用與 AKS 控制平面不同的版本來升級代理程式集區。

  • 維護設定是否有任何最佳做法?

    如果您使用NodeImage通道,建議您將節點OS安全性更新排程設定為每周頻率,因為每周都會出貨新的節點映像。 您也可以加入宣告 SecurityPatch 通道,以接收每日安全性更新。

    自動升級 排程設定為每月頻率,以隨時掌握 Kubernetes N-2 支持原則

    如需升級最佳做法和其他考量的詳細討論,請參閱 AKS 修補和升級指導

下一步

  • 若要開始升級 AKS 叢集,請參閱 AKS 叢集的升級選項。