使用計劃性維護來排程和控制 Azure Kubernetes Service (AKS) 叢集的升級
本文說明如何使用計劃性維護來排程和控制 Azure Kubernetes Service (AKS) 中的叢集和節點映像升級。
您的 AKS 叢集會自動於其上執行定期維護。 維護作業有兩種類型:AKS 起始和使用者起始。 AKS 起始的維護牽涉到 AKS 執行的每周版本,讓您的叢集保持最新狀態,並具有最新的功能和修正。 使用者起始的維護包括 叢集自動升級 和 節點OS自動安全性更新。 計劃性維護功能可讓您以您選擇的步調執行這兩種類型的維護,藉此將任何工作負載的影響降到最低。
開始之前
- 此文章假設您目前具有 AKS 叢集。 如果您沒有 AKS 叢集,請參閱 建立 AKS 叢集。
- 如果使用 Azure CLI,請務必使用
az upgrade
命令升級至最新版本。
考量
當您使用計劃性維護時,適用下列考慮:
- AKS 會保留中斷計劃性維護時段的權利,以執行緊急或重大的非計劃性、反應性維護作業。 這些維護作業甚至可以在您設定中定義的 或
notAllowedDates
期間內notAllowedTime
執行。 - 我們只能承諾盡可能執行維護作業 ,而且不保證會在指定時段中進行。
計劃性維護排程設定
有三種可用的維護排程組態類型: default
、 aksManagedAutoUpgradeSchedule
和 aksManagedNodeOSUpgradeSchedule
。
default
是用來控制 AKS 版本的基本組態。 由於 Azure 保管庫 部署實務 (SDP),發行最多可能需要兩周的時間才會推出到所有區域。 選擇default
以最不具干擾性的方式排程這些更新。 您可以使用每周發行追蹤器,依區域監視進行中的AKS發行狀態。aksManagedAutoUpgradeSchedule
會控制何時執行您指定的自動升級通道所排程的叢集升級。 相較於組態,您可以使用此default
組態來設定更精細的控制頻率和周期設定。 如需叢集自動升級的詳細資訊,請參閱自動升級 Azure Kubernetes Service (AKS) 叢集。aksManagedNodeOSUpgradeSchedule
控制節點作業系統自動升級通道排程的節點操作系統 (OS) 安全性修補的時機。 相較於組態,您可以使用此default
組態來設定更精細的控制頻率和周期設定。 如需節點 OS 自動升級通道的詳細資訊,請參閱 自動修補和更新 AKS 叢集節點映像
我們建議對所有叢集升級案例使用 aksManagedAutoUpgradeSchedule
,對所有節點作業系統安全修補案例使用 aksManagedNodeOSUpgradeSchedule
。 default
選項僅適用於 AKS 每周版本。 您可以使用 az aks maintenanceconfiguration update
命令,將 default
組態切換至 aksManagedAutoUpgradeSchedule
或 aksManagedNodeOSUpgradeSchedule
組態。
建立維護期間
注意
使用自動升級時,若要確保適當的功能,請使用持續時間為 4 小時以上的維護時段。
計劃性維護時段會以國際標準時間 (UTC) 指定。
default
維護時段具有下列屬性:
名稱 | 描述: | 預設值 |
---|---|---|
timeInWeek |
在 default 組態中,這個屬性包含定義維護時段的 day 和 hourSlots 值 |
N/A |
timeInWeek.day |
在 default 設定中的要在星期幾執行維護 |
N/A |
timeInWeek.hourSlots |
在 default 設定中在指定日期執行維護的時段清單 (以小時為單位) |
N/A |
notAllowedTime |
指定維護無法執行的日期範圍,由 start 和 end 子屬性決定。 只有在使用組態檔建立維護期間時才適用 |
N/A |
aksManagedAutoUpgradeSchedule
或 aksManagedNodeOSUpgradeSchedule
維護期間具有下列屬性:
名稱 | 描述: | 預設值 |
---|---|---|
utcOffset |
用來判斷叢集維護的時區 | +00:00 |
startDate |
維護時段開始生效的日期 | 建立時間的目前日期 |
startTime |
根據 utcOffset 所決定的時區,開始維護的時間 |
N/A |
schedule |
用來判斷頻率。 有三種類型可供使用: Weekly 、 AbsoluteMonthly 和 RelativeMonthly |
N/A |
intervalDays |
維護執行的間隔天數。 僅適用於 aksManagedNodeOSUpgradeSchedule |
N/A |
intervalWeeks |
維護執行的間隔以周為單位 | N/A |
intervalMonths |
維護執行月份的間隔 | N/A |
dayOfWeek |
要開始維護的指定星期數 | N/A |
durationHours |
要執行的維護時間範圍的持續時間 | N/A |
notAllowedDates |
指定維護無法執行的日期範圍,由 start 和 end 子屬性決定。 只有在使用組態檔建立維護期間時才適用 |
N/A |
了解排程類型
有四種可用的排程類型: Daily
、 Weekly
、 AbsoluteMonthly
、 和 RelativeMonthly
。 這些排程類型僅適用於 aksManagedClusterAutoUpgradeSchedule
和 aksManagedNodeOSUpgradeSchedule
組態。 Daily
排程僅適用於 aksManagedNodeOSUpgradeSchedule
類型。
注意
每個個別排程類型顯示的所有欄位都是必要的。
每日排程
注意
每日排程僅適用於 aksManagedNodeOSUpgradeSchedule
組態類型。
Daily
排程可能看起來會像「每隔三天」:
"schedule": {
"daily": {
"intervalDays": 3
}
}
每週排程
Weekly
排程可能看起來像 「每兩周的星期五」:
"schedule": {
"weekly": {
"intervalWeeks": 2,
"dayOfWeek": "Friday"
}
}
AbsoluteMonthly 排程
AbsoluteMonthly
排程可能看起來會像「每三個月,在當月的第一天」:
"schedule": {
"absoluteMonthly": {
"intervalMonths": 3,
"dayOfMonth": 1
}
}
RelativeMonthly 排程
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
}
刪除現有叢集中的維護設定視窗
使用命令刪除 AKS 叢集中的
az aks maintenanceconfiguration delete
維護設定視窗。下列範例會
autoUpgradeSchedule
刪除維護組態。az aks maintenanceconfiguration delete --resource-group myResourceGroup --cluster-name myAKSCluster --name autoUpgradeSchedule
常見問題集
如何檢查叢集中的現有維護設定?
使用
az aks maintenanceconfiguration show
命令。回應式非計劃性維護是否也會在
notAllowedTime
或notAllowedDates
期間發生?是的,AKS 保留針對緊急或重大非計劃性/回應式維護作業中斷原訂維護時段的權利。
如何判斷維護事件是否發生?
如需版本,請檢查叢集的區域,並在每周發行版本中查閱發行版本資訊,並驗證它是否符合您的維護排程。 若要檢視自動升級的狀態,請查閱叢集上的活動記錄。 還可查閱升級 AKS 叢集中所述的特定升級相關事件。 AKS 也會發出與升級相關的事件方格事件。 若要深入了解,請參閱以 AKS 作為事件方格來源。
您是否可以同時使用多個維護設定?
是,您可以同時執行這三個組態,即
default
、aksManagedAutoUpgradeSchedule
、aksManagedNodeOSUpgradeSchedule
。 如果時段重疊則由 AKS 決定執行順序。我已設定維護期間,但升級未發生 - 原因為何?
AKS 自動升級需要一定的時間,才能考慮維護期間。 建議您在建立或更新排程開始時間的維護設定之間至少 24 小時。
此外,請確定您的叢集會在計劃性維護期間啟動時啟動。 如果停止叢集,則會解除分配其控制平面,而且無法執行任何作業。
AKS 自動升級未升級我所有的代理程式集區, 或其中一個集區是在維護期間外部升級?
如果代理程式集區無法升級 (例如,由於 Pod 中斷預算導致無法升級),或處於失敗狀態,則可能會在維護期間之外稍後升級。 此案例稱為「趕上升級」,可避免讓 Agent 集區與 AKS 控制平面不同的版本。
維護設定是否有任何最佳做法?
如果您使用
NodeImage
通道,建議您將節點 OS 安全性更新排程設定為每周頻率,因為當您選擇通道SecurityPatch
接收每日安全性更新時,每周和每天都會發行新的節點映像。 將自動升級排程設定為每月頻率,以保持在 Kubernetes N-2 支援原則之上。 如需升級最佳做法和其他考量的詳細討論,請參閱 AKS 修補和升級指導。
下一步
- 若要開始升級 AKS 叢集,請參閱升級 AKS 叢集