Azure 虛擬機擴展集自動OS映像升級

注意

本檔中所列的許多步驟適用於使用統一協調流程模式 虛擬機器擴展集。 我們建議針對新的工作負載使用彈性協調流程。 如需詳細資訊,請參閱 Azure 中虛擬機器擴展集的協調流程模式

在擴展集上啟用自動OS映射升級,有助於安全地自動升級擴展集中所有實例的OS磁碟,以簡化更新管理。

自動 OS 升級具有下列特性:

  • 設定之後,映像發行者發佈的最新OS映像會自動套用至擴展集,而不需要使用者介入。
  • 每次發行者發佈新的映射時,都會以滾動方式升級實例批次。
  • 與應用程式健康情況探查和 應用程式健康情況擴充功能整合。
  • 適用於所有 VM 大小,以及 Windows 和 Linux 映射,包括透過 Azure 計算資源庫的自定義映像。
  • 您可以隨時退出退出自動升級(也可以手動起始 OS 升級)。
  • VM 的 OS 磁碟會取代為以最新映像版本建立的新 OS 磁碟。 已設定的擴充功能和自定義數據腳本會執行,同時保留保存的數據磁碟。
  • 支援擴充功能排序
  • 可以在任何大小的擴展集上啟用。

注意

啟用自動OS映射升級之前,請先檢查 本檔的需求一節

自動OS映射升級如何運作?

升級的運作方式是將 VM 的 OS 磁碟取代為使用最新映像版本所建立的新磁碟。 任何已設定的擴充功能和自定義數據腳本都會在OS磁碟上執行,同時保留數據磁碟。 為了將應用程式停機時間降到最低,升級會以批次進行,且隨時不超過 20% 的擴展集升級。

您可以整合 Azure Load Balancer 應用程式健康情況探查或 應用程式健康情況擴充功能 ,以在升級後追蹤應用程式的健康情況。 建議您納入應用程式活動訊號,以驗證升級成功。

可用性優先 更新

以下所述的平台協調更新可用性優先模型可確保 Azure 中的可用性設定會跨多個可用性層級受到遵守。

跨區域:

  • 更新會以分階段的方式跨 Azure 移動,以防止整個 Azure 的部署失敗。
  • 「階段」可以有一或多個區域,而且只有在上一個階段中符合資格的 VM 成功更新時,更新才會跨階段移動。
  • 異地配對區域不會同時更新,而且不能位於相同的區域階段。
  • 更新的成功是藉由追蹤 VM 更新後的健康情況來測量。

區域內:

  • 不同 可用性區域 中的 VM 不會以相同的更新同時更新。

在 'set' 內:

  • 通用擴展集中的所有 VM 不會同時更新。
  • 一般虛擬機擴展集中的 VM 會分批分組,並在更新網域界限內更新,如下所述。

系統會遵循平台協調的更新程式,每月推出支援的OS平臺映像升級。 針對透過 Azure 計算資源庫的自定義映像,只有在發布新映射並 寫至該擴展集的區域時,才會針對特定 Azure 區域啟動映像升級。

升級擴展集中的 VM

擴展集的區域可透過平臺映射的可用性優先程式取得映像升級,或復寫共用映像庫的新自定義映射版本。 然後,映射升級會以批次方式套用至個別擴展集,如下所示:

  1. 開始升級程式之前,協調器會確保整個擴展集中不超過 20% 的實例狀況不良(基於任何原因)。
  2. 升級協調器會識別要升級的 VM 實例批次,其中任何一個批次的實例總數上限為 20%,但受限於一部虛擬機的最小批次大小。 沒有最小擴展集大小需求,具有5個或更少實例的擴展集每個升級批次會有1個 VM(最小批次大小)。
  3. 所選升級批次中每個 VM 的 OS 磁碟會取代為從最新映射建立的新 OS 磁碟。 擴展集模型中的所有指定延伸模組和組態都會套用至升級的實例。
  4. 針對具有已設定應用程式健康狀態探查或應用程式健康情況擴充功能的擴展集,升級會等候最多 5 分鐘,讓實例變成狀況良好,然後再繼續升級下一個批次。 如果實例在升級后的 5 分鐘內未復原其健康情況,則預設會還原實例的先前 OS 磁碟。
  5. 升級協調器也會追蹤升級後變成狀況不良的實例百分比。 如果升級程式期間超過 20% 的升級實例變成狀況不良,升級將會停止。
  6. 上述程式會繼續進行,直到擴展集中的所有實例都升級為止。

擴展集OS升級協調器會先檢查整體擴展集健全狀況,再升級每個批次。 當您升級批次時,可能會有其他並行規劃或非計劃性維護活動,可能會影響擴展集實例的健康情況。 在這種情況下,如果超過 20% 的擴展集實例變成狀況不良,則擴展集升級會在目前批次結束時停止。

若要修改與滾動升級相關聯的預設設定,請檢閱 Azure 的 滾動升級原則

注意

自動OS升級不會升級擴展集上的參考映像Sku。 若要將Sku(例如Ubuntu 18.04-LTS變更為20.04-LTS),您必須使用所需的映像Sku直接更新 擴展集模型 。 現有擴展集無法變更映像發行者和供應專案。

OS 映射升級與重新安裝映像

OS 映射升級 Reimage 都是用來更新擴展集內 VM 的方法,但是它們有不同的用途,而且具有不同的影響。

OS 映射升級牽涉到更新用來在擴展集中建立新實例的基礎操作系統映像。 當您執行 OS 映射升級時,Azure 會使用更新的 OS 映射來建立新的 VM 實例,並將擴展集中的舊 VM 實例逐漸取代為新的實例。 此程式通常會分階段執行,以確保高可用性。 OS 映射升級是將更新或變更套用至擴展集中 VM 基礎 OS 的非干擾性方式。 除非現有 VM 實例取代為新的實例,否則不會受到影響。

重新映像擴展集中的 VM 實例是更立即且具干擾性的動作。 當您選擇重新映像 VM 實例時,Azure 會停止選取的 VM 實例、執行重新安裝映射作業,然後使用相同的 OS 映射重新啟動 VM。 這會有效地在該特定 VM 實例上重新安裝 OS。 當您需要針對特定 VM 實例進行疑難解答或重設,因為該實例發生問題時,通常會使用重新映像。

主要差異:

  • OS 映像升級是一個漸進且非干擾性的程式,可逐步更新整個虛擬機器擴展集的 OS 映像,確保讓執行工作負載的影響降到最低。
  • 重新安裝映像是一個更立即且干擾性的動作,只會影響選取的 VM 執行個體、暫時停止並重新安裝 OS。

使用每個方法的時機:

  • 當您想要更新整個擴展集的OS映像,同時維持高可用性時,請使用OS映像升級。
  • 當您需要對虛擬機擴展集內的特定 VM 實例進行疑難解答或重設時,請使用 Reimage。

請務必根據您的特定需求仔細規劃並選擇適當的方法,以將虛擬機擴展集中執行的應用程式和服務的任何中斷降到最低。

支援的OS映像

目前僅支援特定OS平臺映像。 如果擴展集透過 Azure 計算資源庫使用自定義映像,則支援自定義映像

目前支援下列平臺 SKU(且會定期新增更多 SKU):

發行者 OS 供應專案 Sku
Canonical UbuntuServer 18.04-LTS
Canonical UbuntuServer 18_04-LTS-Gen2
Canonical 0001-com-ubuntu-server-focal 20_04-LTS
Canonical 0001-com-ubuntu-server-focal 20_04-LTS-Gen2
Canonical 0001-com-ubuntu-server-jammy 22_04-LTS
Canonical 0001-com-ubuntu-server-jammy 22_04-LTS-Gen2
MicrosoftCblMariner Cbl-Mariner cbl-mariner-1
MicrosoftCblMariner Cbl-Mariner 1-Gen2
MicrosoftCblMariner Cbl-Mariner cbl-mariner-2
MicrosoftCblMariner Cbl-Mariner cbl-mariner-2-Gen2
MicrosoftSqlServer Sql2017-ws2019 企業
MicrosoftWindowsServer WindowsServer 2012-R2-Datacenter
MicrosoftWindowsServer WindowsServer 2016-Datacenter
MicrosoftWindowsServer WindowsServer 2016-Datacenter-gensecond
MicrosoftWindowsServer WindowsServer 2016-Datacenter-gs
MicrosoftWindowsServer WindowsServer 2016-Datacenter-smalldisk
MicrosoftWindowsServer WindowsServer 2016-Datacenter-with-Containers
MicrosoftWindowsServer WindowsServer 2016-Datacenter-with-containers-gs
MicrosoftWindowsServer WindowsServer 2019-Datacenter
MicrosoftWindowsServer WindowsServer 2019-Datacenter-Core
MicrosoftWindowsServer WindowsServer 2019-Datacenter-Core-with-Containers
MicrosoftWindowsServer WindowsServer 2019-Datacenter-gensecond
MicrosoftWindowsServer WindowsServer 2019-Datacenter-gs
MicrosoftWindowsServer WindowsServer 2019-Datacenter-smalldisk
MicrosoftWindowsServer WindowsServer 2019-Datacenter-with-Containers
MicrosoftWindowsServer WindowsServer 2019-Datacenter-with-Containers-gs
MicrosoftWindowsServer WindowsServer 2022-Datacenter
MicrosoftWindowsServer WindowsServer 2022-Datacenter-smalldisk
MicrosoftWindowsServer WindowsServer 2022-Datacenter-smalldisk-g2
MicrosoftWindowsServer WindowsServer 2022-Datacenter-core
MicrosoftWindowsServer WindowsServer 2022-Datacenter-core-smalldisk
MicrosoftWindowsServer WindowsServer 2022-Datacenter-g2
MicrosoftWindowsServer WindowsServer Datacenter-core-20h2-with-containers-smalldisk-gs
MicrosoftWindowsServer WindowsServer 2022-Datacenter-azure-edition
MicrosoftWindowsServer WindowsServer 2022-Datacenter-azure-edition-smalldisk

設定自動OS映像升級的需求

  • 映像的版本屬性必須設定為 latest
  • 必須為非 Service Fabric 擴展集使用應用程式健康情況探查或 應用程式健康情況擴充 功能。 如需 Service Fabric 需求,請參閱 Service Fabric 需求
  • 使用計算 API 2018-10-01 版或更高版本。
  • 請確定擴展集模型中指定的外部資源可供使用並更新。 範例包括 VM 擴充功能屬性中啟動載入承載的 SAS URI、記憶體帳戶中的承載、模型中秘密的參考等等。
  • 針對使用 Windows 虛擬機的擴展集,從計算 API 2019-03-01 版開始,virtualMachineProfile.osProfile.windowsConfiguration.enableAutomatic 更新 屬性必須在擴展集模型定義中設定為 falseenableAutomatic 更新 屬性會啟用 VM 內修補,其中“Windows Update” 會套用操作系統修補程式,而不需要取代 OS 磁碟。 在擴展集上啟用自動OS映射升級,您可以將 automaticOSUpgradePolicy.enableAutomaticOSUpgrade 設定為 true 來完成,不需要透過 Windows Update 進行額外的修補程式。

注意

透過重新映像或升級取代OS磁碟之後,鏈接的數據磁碟可能會重新指派其驅動器號。 若要保留連結磁碟的相同驅動器號,建議使用自定義開機腳本。

Service Fabric 需求

如果您使用 Service Fabric,請確定符合下列條件:

  • Service Fabric 持久性層級 為 Silver 或 Gold。 如果 Service Fabric 持久性為銅級,則只有無狀態節點類型支援自動 OS 映射升級。
  • 擴展集模型定義的 Service Fabric 擴充功能必須為 TypeHandlerVersion 1.1 或以上。
  • 在擴展集模型定義中,Service Fabric 叢集和 Service Fabric 擴充功能的持久性層級應相同。
  • 銀級或金級持久性不需要額外的健康情況探查或使用應用程式健康情況擴充功能。 具無狀態節點類型的銅級持久性需要額外的健康情況探查。
  • virtualMachineProfile.osProfile.windowsConfiguration.enableAutomatic 更新 屬性必須在擴展集模型定義中設定為 falseenableAutomatic 更新 屬性會使用 “Windows Update” 啟用 VM 內修補,而且 Service Fabric 擴展集不支援。 您應該改用 automaticOSUpgradePolicy.enableAutomaticOSUpgrade 屬性。

請確保 Service Fabric 叢集和 Service Fabric 擴充功能的持久性設定相符,因為不相符將導致升級發生錯誤。 您可根據此頁面所述的指導方針來修改持久性層級。

自定義映像的自動OS映射升級

透過 Azure 計算資源庫部署的自定義映像支援自動 OS 映射升級。 自動OS映像升級不支援其他自定義映像。

自定義映像的其他需求

  • 自動OS映像升級的設定和設定程式,與此頁面的 組態區段中 詳述的所有擴展集相同。
  • 當新版本的映像發行並 寫至該擴展集的區域時,針對自動OS映像升級所設定的擴展集實例將會升級至最新版的 Azure 計算資源庫映像。 如果未將新的映像複寫至部署擴展的區域,擴展集實例將不會升級至最新版本。 區域映像複寫可讓您控制擴展集的新映像推出。
  • 新的映像版本不應該從該資源庫映像的最新版本中排除。 從資源庫映像中排除的映像版本不會透過自動OS映射升級向擴展集推出。

注意

擴展集最多可能需要 3 小時的時間,才能在擴展集第一次設定自動 OS 升級之後觸發第一個映射升級推出,因為某些因素,例如維護 Windows 或其他限制。 在有新的映像可用之前,最新映像上的客戶可能無法升級。

設定自動OS映像升級

若要設定自動OS映射升級,請確定 擴展集模型定義中的 automaticOSUpgradePolicy.enableAutomaticOSUpgrade 屬性設定為 true

注意

升級原則模式自動OS升級原則 是個別的設定,並控制擴展集的不同層面。 當擴展集範本中有變更時,升級原則 mode 會決定擴展集中現有實例會發生什麼情況。 不過,自動OS升級原則 enableAutomaticOSUpgrade 專屬於OS映像,並追蹤映像發行者所做的變更,並判斷當映像有更新時會發生什麼情況。

注意

如果 enableAutomaticOSUpgrade 設定為 trueenableAutomaticUpdates 則會自動設定為 false ,且無法設定為 true

REST API

下列範例說明如何在擴展集模型上設定自動 OS 升級:

PUT or PATCH on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version=2021-03-01`
{
  "properties": {
    "upgradePolicy": {
      "automaticOSUpgradePolicy": {
        "enableAutomaticOSUpgrade":  true
      }
    }
  }
}

Azure PowerShell

使用 New-AzVmss Cmdlet 在布建期間設定擴展集的自動 OS 映射升級。 下列範例會在名為 myResourceGroup 的資源群組中,為名為 myScaleSet 的擴展集設定自動升級:

New-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -AutomaticOSUpgrade $true

使用 Update-AzVmss Cmdlet 為現有的擴展集設定自動 OS 映射升級。 下列範例會在名為 myResourceGroup 的資源群組中,為名為 myScaleSet 的擴展集設定自動升級:

Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -AutomaticOSUpgrade $true

Azure CLI 2.0

使用 az vmss create 在布建期間設定擴展集的自動OS映射升級。 使用 Azure CLI 2.0.47 或更新版本。 下列範例會在名為 myResourceGroup 的資源群組中,為名為 myScaleSet 的擴展集設定自動升級:

az vmss create --name myScaleSet --resource-group myResourceGroup --set UpgradePolicy.AutomaticOSUpgradePolicy.EnableAutomaticOSUpgrade=true

使用 az vmss update 來設定現有擴展集的自動 OS 映射升級。 使用 Azure CLI 2.0.47 或更新版本。 下列範例會在名為 myResourceGroup 的資源群組中,為名為 myScaleSet 的擴展集設定自動升級:

az vmss update --name myScaleSet --resource-group myResourceGroup --set UpgradePolicy.AutomaticOSUpgradePolicy.EnableAutomaticOSUpgrade=true

注意

設定擴展集的自動OS映射升級之後,如果您的擴展集使用「手動」 升級原則,您也必須將擴展集 VM 帶入最新的擴展集模型。

ARM 範本

下列範例說明如何透過 Azure Resource Manager 範本在擴展集模型上設定自動 OS 升級(ARM 範本):

"properties": {
   "upgradePolicy": {
     "mode": "Automatic",
     "RollingUpgradePolicy": {
         "BatchInstancePercent": 20,
         "MaxUnhealthyInstancePercent": 25,
         "MaxUnhealthyUpgradedInstancePercent": 25,
         "PauseTimeBetweenBatches": "PT0S"
     },
    "automaticOSUpgradePolicy": {
      "enableAutomaticOSUpgrade": true,
        "useRollingUpgradePolicy": true,
        "disableAutomaticRollback": false
    }
  },
  },
"imagePublisher": {
   "type": "string",
   "defaultValue": "MicrosoftWindowsServer"
 },
 "imageOffer": {
   "type": "string",
   "defaultValue": "WindowsServer"
 },
 "imageSku": {
   "type": "string",
   "defaultValue": "2022-datacenter"
 },
 "imageOSVersion": {
   "type": "string",
   "defaultValue": "latest"
 }

Bicep

下列範例說明如何透過 Bicep 在擴展集模型上設定自動 OS 升級:

properties: {
    overprovision: overProvision
    upgradePolicy: {
      mode: 'Automatic'
      automaticOSUpgradePolicy: {
        enableAutomaticOSUpgrade: true
      }
    }
}

使用應用程式健康情況探查

在OS升級期間,擴展集中的VM實例會一次升級一個批次。 只有在升級的 VM 實例上客戶應用程式狀況良好時,才會繼續升級。 我們建議應用程式為擴展集OS升級引擎提供健康情況訊號。 根據預設,在OS升級期間,平臺會考慮VM電源狀態和擴充功能布建狀態,以判斷VM實例在升級后是否狀況良好。 在 VM 實例的 OS 升級期間,VM 實例上的 OS 磁碟會取代為以最新映射版本為基礎的新磁碟。 OS 升級完成後,這些 VM 上會執行設定的擴充功能。 只有在成功布建實例上的所有延伸模組時,應用程式才會被視為狀況良好。

擴展集可以選擇性地使用應用程式健康情況探查來設定,以提供平臺有關應用程式進行中狀態的準確資訊。 應用程式健康情況探查是做為健康情況訊號的自定義負載平衡器探查。 在擴展集 VM 實例上執行的應用程式可以回應外部 HTTP 或 TCP 要求,指出其狀況良好。 如需自定義負載平衡器探查運作方式的詳細資訊,請參閱瞭解 負載平衡器探查。 Service Fabric 擴展集不支援應用程式健康情況探查。 非 Service Fabric 擴展集需要 Load Balancer 應用程式健康情況探查或 應用程式健康情況擴充功能

如果擴展集設定為使用多個放置群組,則必須使用使用標準Load Balancer的探查

注意

只有一個狀況監控來源可用於虛擬機器擴展集,也就是應用程式健康情況擴充功能或健全狀態探查。 如果您已啟用這兩個選項,您必須先移除一個選項,才能使用執行個體修復或自動 OS 升級等協調流程服務。

在擴展集上將自定義負載平衡器探查設定為應用程式健康情況探查

最佳做法是明確為擴展集健全狀況建立負載平衡器探查。 您可以使用現有 HTTP 探查或 TCP 探查的相同端點,但健康情況探查可能需要與傳統負載平衡器探查不同的行為。 例如,如果實例上的負載太高,傳統負載平衡器探查可能會傳回狀況不良,但這不適用於在自動OS升級期間判斷實例健康情況。 設定探查具有高探查速率少於兩分鐘。

負載平衡器探查可以在擴展集的 networkProfile參考,並可與內部或公用面向的負載平衡器相關聯,如下所示:

"networkProfile": {
  "healthProbe" : {
    "id": "[concat(variables('lbId'), '/probes/', variables('sshProbeName'))]"
  },
  "networkInterfaceConfigurations":
  ...
}

注意

搭配 Service Fabric 使用自動 OS 升級時,新的 OS 映射會透過更新網域推出更新網域,以維護 Service Fabric 中執行之服務的高可用性。 若要在 Service Fabric 中使用自動 OS 升級,您的叢集節點類型必須設定為使用 Silver Durability Tier 或更高版本。 針對銅級持久性層級,只有無狀態節點類型才支持自動OS映射升級。 如需 Service Fabric 叢集持久性特性的詳細資訊,請參閱 此檔

讓認證保持在最新狀態

如果您的擴展集使用任何認證來存取外部資源,例如設定為使用記憶體帳戶 SAS 令牌的 VM 擴充功能,請確定認證已更新。 如果包含憑證和令牌的任何認證已過期,升級將會失敗,且第一批 VM 會處於失敗狀態。

如果資源驗證失敗,請復原 VM 並重新啟用自動 OS 升級的建議步驟:

  • 重新產生傳遞至延伸模組的令牌(或任何其他認證)。
  • 請確定從 VM 內部用來與外部實體交談的任何認證都是最新的。
  • 使用任何新令牌更新擴展集模型中的擴充功能。
  • 部署更新的擴展集,這會更新所有 VM 實例,包括失敗的實例。

使用應用程式健康情況擴充功能

應用程式健康情況擴充功能部署在虛擬機擴展集實例內,並從擴展集實例內報告 VM 健康情況。 您可以設定擴充功能來探查應用程式端點,並更新該實例上應用程式的狀態。 Azure 會檢查此實例狀態,以判斷實例是否符合升級作業的資格。

當擴充功能報告 VM 內的健康情況時,擴充功能可用於無法使用外部探查,例如應用程式健康情況探查(使用自定義 Azure Load Balancer 探查) 等外部探查

有多種方式可將應用程式健康情況延伸模組部署至擴展集,如本文範例中所述

注意

只有一個狀況監控來源可用於虛擬機器擴展集,也就是應用程式健康情況擴充功能或健全狀態探查。 如果您已啟用這兩個選項,您必須先移除一個選項,才能使用執行個體修復或自動 OS 升級等協調流程服務。

取得自動OS映射升級的歷程記錄

您可以使用 Azure PowerShell、Azure CLI 2.0 或 REST API 來檢查擴展集上執行的最新 OS 升級歷程記錄。 您可以在過去兩個月內取得過去五次OS升級嘗試的歷程記錄。

REST API

下列範例會使用 REST API 來檢查名為 myResourceGroup 的資源群組中名為 myScaleSet 的擴展集狀態:

GET on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/osUpgradeHistory?api-version=2021-03-01`

GET 呼叫會傳回類似下列範例輸出的屬性:

{
	"value": [
		{
			"properties": {
        "runningStatus": {
          "code": "RollingForward",
          "startTime": "2018-07-24T17:46:06.1248429+00:00",
          "completedTime": "2018-04-21T12:29:25.0511245+00:00"
        },
        "progress": {
          "successfulInstanceCount": 16,
          "failedInstanceCount": 0,
          "inProgressInstanceCount": 4,
          "pendingInstanceCount": 0
        },
        "startedBy": "Platform",
        "targetImageReference": {
          "publisher": "MicrosoftWindowsServer",
          "offer": "WindowsServer",
          "sku": "2016-Datacenter",
          "version": "2016.127.20180613"
        },
        "rollbackInfo": {
          "successfullyRolledbackInstanceCount": 0,
          "failedRolledbackInstanceCount": 0
        }
      },
      "type": "Microsoft.Compute/virtualMachineScaleSets/rollingUpgrades",
      "location": "westeurope"
    }
  ]
}

Azure PowerShell

使用 Get-AzVmss Cmdlet 來檢查擴展集的 OS 升級歷程記錄。 下列範例會詳細說明如何在名為 myResourceGroup 的資源群組中檢閱名為 myScaleSet 的擴展集 OS 升級狀態:

Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -OSUpgradeHistory

Azure CLI 2.0

使用 az vmss get-os-upgrade-history 來檢查擴展集的 OS 升級歷程記錄。 使用 Azure CLI 2.0.47 或更新版本。 下列範例會詳細說明如何在名為 myResourceGroup 的資源群組中檢閱名為 myScaleSet 的擴展集 OS 升級狀態:

az vmss get-os-upgrade-history --resource-group myResourceGroup --name myScaleSet

如何取得平臺OS映像的最新版本?

您可以使用下列範例,取得自動 OS 升級支援的 SKU 的可用映像版本:

REST API

GET on `/subscriptions/subscription_id/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions?api-version=2021-03-01`

Azure PowerShell

Get-AzVmImage -Location "westus" -PublisherName "Canonical" -offer "0001-com-ubuntu-server-jammy" -sku "22_04-lts"

Azure CLI 2.0

az vm image list --location "westus" --publisher "Canonical" --offer "0001-com-ubuntu-server-jammy" --sku "22_04-lts" --all

手動觸發OS映射升級

在擴展集上啟用自動OS映射升級時,您不需要在擴展集上手動觸發映像更新。 OS 升級協調器會自動將最新的可用映像版本套用至擴展集實例,而不需要任何手動介入。

針對您不想等候協調器套用最新映像的特定案例,您可以使用下列範例手動觸發OS映射升級。

注意

操作系統映像升級的手動觸發程式不提供自動回復功能。 如果實例在升級作業之後未復原其健康情況,就無法還原其先前的OS磁碟。

REST API

使用啟動 OS升級 API 呼叫來啟動滾動升級 ,將所有虛擬機擴展集實例移至最新的可用映射OS版本。 已經執行最新可用 OS 版本的實例不會受到影響。 下列範例詳細說明如何在名為 myResourceGroup 的資源群組中,於名為 myScaleSet 的擴展集上啟動滾動 OS 升級:

POST on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/osRollingUpgrade?api-version=2021-03-01`

Azure PowerShell

使用 Start-AzVmssRollingOSUpgrade Cmdlet 來檢查擴展集的 OS 升級歷程記錄。 下列範例詳細說明如何在名為 myResourceGroup 的資源群組中,於名為 myScaleSet 的擴展集上啟動滾動 OS 升級:

Start-AzVmssRollingOSUpgrade -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

Azure CLI 2.0

使用 az vmss rolling-upgrade start 來檢查擴展集的 OS 升級歷程記錄。 使用 Azure CLI 2.0.47 或更新版本。 下列範例詳細說明如何在名為 myResourceGroup 的資源群組中,於名為 myScaleSet 的擴展集上啟動滾動 OS 升級:

az vmss rolling-upgrade start --resource-group "myResourceGroup" --name "myScaleSet" --subscription "subscriptionId"

調查並解決自動升級錯誤

平臺可以在使用滾動升級原則執行自動映射升級時,在 VM 上傳回錯誤。 VM 的取得實例檢視包含詳細的錯誤訊息,可調查並解決錯誤。 滾動 升級 - 取得最新 可以提供有關滾動升級組態和狀態的詳細數據。 取得 OS 升級歷程記錄 提供有關擴展集上最後一個映射升級作業的詳細數據。 以下是可能導致滾動升級的最上層錯誤。

RollingUpgradeInProgressWithFailedUpgradedVM

  • VM 失敗時觸發錯誤。
  • 詳細的錯誤訊息會指出推出是否會根據設定的臨界值繼續/暫停。

MaxUnhealthyUpgradedInstancePercentExceededInRollingUpgrade

  • 當升級的 VM 百分比超過狀況不良 VM 所允許的最大閾值時,就會觸發錯誤。
  • 詳細的錯誤訊息會匯總導致狀況不良 VM 的最常見錯誤。 請參閱 MaxUnhealthyUpgradedInstancePercent

MaxUnhealthyInstancePercentExceededInRollingUpgrade

  • 當狀況不良的 VM 百分比超過升級期間允許狀況不良 VM 的最大閾值時,就會觸發錯誤。
  • 詳細的錯誤訊息會顯示目前的狀況不良百分比,以及已設定的可允許狀況不良 VM 百分比。 請參閱 maxUnhealthyInstancePercent

MaxUnhealthyInstancePercentExceededBeforeRollingUpgrade

  • 當狀況不良的 VM 百分比超過升級前允許狀況不良 VM 的最大閾值時,就會觸發錯誤。
  • 詳細的錯誤訊息會顯示目前的狀況不良百分比,以及已設定的可允許狀況不良 VM 百分比。 請參閱 maxUnhealthyInstancePercent

InternalExecutionError

  • 執行期間發生未處理、未格式化或未預期的錯誤時,就會觸發錯誤。
  • 詳細的錯誤訊息會顯示錯誤的原因。

RollingUpgradeTimeoutError

  • 當滾動升級程式逾時時,就會觸發錯誤。
  • 詳細的錯誤訊息會顯示系統嘗試更新後逾時的時間長度。

下一步