使用計劃性維護來排程和控制 Azure Kubernetes Service 叢集的升級
本文說明如何使用計劃性維護來排程和控制 Azure Kubernetes Service (AKS) 中的叢集和節點映像升級。
定期維護會自動在您的 AKS 叢集上執行。 維護作業有兩種類型:
- AKS 起始的維護 牽涉到 AKS 執行的每周版本,讓您的叢集保持最新狀態,以及最新的功能和修正。
- 使用者起始的維護 包括 叢集自動升級 和 節點作業系統 (OS) 自動安全性更新。
當您在 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
組態切換至 aksManagedAutoUpgradeSchedule
或 aksManagedNodeOSUpgradeSchedule
組態 az aks maintenanceconfiguration update
。
建立維護期間
注意
當您使用自動升級時,若要確保適當的功能,請使用維護期間,持續時間為 4 小時以上。
計劃性維護時段會以國際標準時間 (UTC) 指定。
default
維護時段具有下列屬性:
名稱 | 描述: | 預設值 |
---|---|---|
timeInWeek |
在組態中 default ,這個屬性包含 day 定義維護時段的 和 hourSlots 值。 |
不適用 |
timeInWeek.day |
在設定中 default 執行維護的星期幾。 |
不適用 |
timeInWeek.hourSlots |
在設定中 default 執行維護的小時長時段清單。 |
不適用 |
notAllowedTime |
維護無法執行的日期範圍,由 start 和 end 子屬性決定。 只有當您使用組態檔建立維護期間時,才適用此屬性。 |
不適用 |
aksManagedAutoUpgradeSchedule
或 aksManagedNodeOSUpgradeSchedule
維護期間具有下列屬性:
名稱 | 描述: | 預設值 |
---|---|---|
utcOffset |
叢集維護的時區。 | +00:00 |
startDate |
維護期間開始生效的日期。 | 建立時間的目前日期 |
startTime |
維護開始的時間,根據所 utcOffset 決定的時區。 |
不適用 |
schedule |
升級頻率。 有三種類型可供使用: Weekly 、 AbsoluteMonthly 和 RelativeMonthly 。 |
不適用 |
intervalDays |
維護執行的間隔天數。 aksManagedNodeOSUpgradeSchedule 只適用於 。 |
不適用 |
intervalWeeks |
維護執行的間隔以周為單位。 | 不適用 |
intervalMonths |
維護執行的間隔以月為單位。 | 不適用 |
dayOfWeek |
要開始維護的指定星期數。 | 不適用 |
durationHours |
要執行維護之時段的持續時間。 | 不適用 |
notAllowedDates |
維護無法執行的日期範圍,由 start 和 end 子屬性決定。 只有在您使用組態檔建立維護期間時,才適用。 |
不適用 |
排程類型
有四種可用的排程類型: Daily
、 Weekly
、 AbsoluteMonthly
、 和 RelativeMonthly
。
Weekly
、 AbsoluteMonthly
和 RelativeMonthly
排程類型僅適用於 aksManagedClusterAutoUpgradeSchedule
和 aksManagedNodeOSUpgradeSchedule
組態。 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
包括 First
、 Second
、 Third
、 Fourth
和 Last
。
新增維護時段組態
使用 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
命令。回應式非計劃性維護是否也會在
notAllowedTime
或notAllowedDates
期間發生?是。 AKS 保留針對緊急或重大非計劃性/回應式維護作業中斷原訂維護時段的權利。
如何判斷維護事件是否發生?
如需版本,請檢查叢集的區域,並在每周版本中查閱資訊,以查看它是否符合您的維護排程。 若要檢視自動升級的狀態,請在叢集上查閱 活動記錄 。 您也可以查閱特定的升級相關事件,如升級 AKS 叢集中所述。
AKS 也會發出與升級相關的 Azure 事件方格 事件。 若要深入了解,請參閱以 AKS 作為事件方格來源。
是否可以同時使用多個維護設定?
是,您可以同時執行這三個組態:
default
、aksManagedAutoUpgradeSchedule
和aksManagedNodeOSUpgradeSchedule
。 如果視窗重疊,AKS 會決定執行順序。我已設定維護期間,但升級未發生。 為什麼?
AKS 自動升級需要一定的時間,才能考慮維護期間。 建議您在建立或更新維護組態與排程開始時間之間至少 24 小時。
此外,請確定當計劃性維護期間啟動時,您的叢集已啟動。 如果停止叢集,則會解除分配其控制平面,而且無法執行任何作業。
為什麼我的其中一個代理程式集區在維護期間外升級?
如果未升級代理程式集區(例如,因為 Pod 中斷預算已阻止它),則稍後可能會在維護期間外升級。 此案例稱為「趕上升級」。它可避免使用與 AKS 控制平面不同的版本來升級代理程式集區。
維護設定是否有任何最佳做法?
如果您使用
NodeImage
通道,建議您將節點OS安全性更新排程設定為每周頻率,因為每周都會出貨新的節點映像。 您也可以加入宣告SecurityPatch
通道,以接收每日安全性更新。將 自動升級 排程設定為每月頻率,以隨時掌握 Kubernetes N-2 支持原則。
如需升級最佳做法和其他考量的詳細討論,請參閱 AKS 修補和升級指導。
下一步
- 若要開始升級 AKS 叢集,請參閱 AKS 叢集的升級選項。