使用已規劃的維護來排程 Azure Kubernetes 應用程式網路成員的升級 (預覽版)

這很重要

AKS 預覽功能可透過自助服務,以加入方式使用。 預覽是「依現況」及「可用時」提供的,並不包括在服務等級協定和有限保固之內。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:

本文將說明如何利用計畫維護來排程 Azure Kubernetes 應用網路成員的元件升級。

應用網路計畫維護概述

維護操作指的是叢集內的資料 平面元件 及應用程式網路 控制平面元件 (如 Istiod)的升級,這些元件運行於叢集之外。

叢集內兩個關鍵元件是 ztunnel 節點代理 與 Istio CNI 節點代理。 這些資源是每個節點的 DaemonSets,因此升級會同時影響整個節點,可能導致長期 TCP 連線中斷。 為了將節點層級中斷隔離至共用視窗,應用程式若設定,會使用與 Azure Kubernetes Service (AKS) 節點作業系統 (OS) 自動更新相同的aksManagedNodeOSUpgradeSchedule維護時程。

請注意,雖然維護 視窗 相同,但應用程式網路成員升級與節點作業系統升級是視窗內獨立事件,分別發生於其中一個或兩個元件,視升級可用性而定。 兩項升級都不會影響另一項的時機或流程。 如果兩個元件在同一個視窗內升級,可能會有不同的連線中斷。

備註

不需要自願加入節點 OS 自動升級就能使用應用程式網路的已規劃維護。 創建aksManagedNodeOSUpgradeSchedule並不會啟用或停用節點作業系統的自動升級功能。

先決條件

  • 現有的 AKS 叢集作為應用網路資源的成員被導入。 如果你沒有應用程式網路資源或尚未將叢集導入,請參閱「 開始使用 Azure Kubernetes 應用網路」。
  • Azure CLI 版本是 2.84.0 或更新版本。 使用 az --version 命令來檢查您的版本。 要安裝或更新,請參見 安裝 Azure CLI。
  • 我們建議您查閱 維護視窗文件 ,了解設定欄位及 AKS 中維護視窗的運作方式。

考慮事項

當使用計畫性維護來排程應用程式網路升級時,請考慮以下幾點:

  • Application Network 保留打破預定維護時段的權利,以執行緊急或關鍵的非計畫性、被動維護作業。 這些維護作業甚至可以在您設定中定義的 notAllowedTime 或 notAllowedDates 期間內執行。
  • 只能盡可能承諾執行維護作業,而且不保證會在指定時段中進行。
  • 如果嘗試的升級未在視窗關閉時完成,系統會持續嘗試調節直到完成為止。

模式特異性行為

你可以使用計畫性維護來排程全管理升級與自我管理升級的時間,但啟用或停用計劃性維護不會影響升級模式本身。 維護視窗會根據叢集的升級模式,限制不同類型的升級。

  • 完全受控模式:維護視窗會同時限制輕微及修補升級。 然而,如果您啟動發行通道變更,相關版本變更會立即生效。
  • 自我管理模式:維護視窗僅適用於補丁升級。 如果你啟動小幅版本變更,會立即生效。

新增維護視窗

  • 使用 指令aksManagedNodeOSUpgradeSchedule為 AKS 叢集新增az aks maintenanceconfiguration add維護視窗設定。 以下範例新增了一個配置 aksManagedNodeOSUpgradeSchedule ,將維護安排在該 UTC+5:30 時區的第三個星期五凌晨12點到8點之間進行:

    az aks maintenanceconfiguration add --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name aksManagedNodeOSUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 3 --duration 8 --utc-offset +05:30 --start-time 00:00
    

更新現有維護時段

  • 使用指令 az aks maintenanceconfiguration update 更新現有的維護設定。 以下範例更新配置, aksManagedNodeOSUpgradeSchedule 將維護排定為每週五凌晨2:00至6:00執行:

    az aks maintenanceconfiguration update --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name aksManagedNodeOSUpgradeSchedule --schedule-type Weekly --day-of-week Friday --interval-weeks 1 --duration 4 --utc-offset +00:00 --start-time 02:00
    

顯示叢集的維護配置

  • 使用 az aks maintenanceconfiguration show 帶有 --name 參數的指令,在 AKS 叢集中查看特定的維護設定視窗。

    az aks maintenanceconfiguration show --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name aksManagedNodeOSUpgradeSchedule
    

    下列範例輸出顯示 aksManagedNodeOSUpgradeSchedule 的維護時段:

    {
      "id": "/subscriptions/<subscription>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/maintenanceConfigurations/aksManagedNodeOSUpgradeSchedule",
      "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": "aksManagedNodeOSUpgradeSchedule",
      "notAllowedTime": null,
      "resourceGroup": "myResourceGroup",
      "systemData": null,
      "timeInWeek": null,
      "type": null
    }
    

刪除叢集的維護設定

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

    az aks maintenanceconfiguration delete --resource-group $RESOURCE_GROUP --cluster-name $CLUSTER_NAME --name aksManagedNodeOSUpgradeSchedule
    

欲了解更多關於 Azure Kubernetes 應用網路的資訊,請參閱以下文章: