Bekannte Probleme bei getrennten Vorgängen für Azure Local

Bekannte Probleme für Version 2604

Azure Local-Workercluster: Fehlgeschlagene Cloudbereitstellung bei der Bereitstellung von Arc-Infrastrukturkomponenten

Workload-Cluster in isolierten Umgebungen lassen sich unter seltenen Umständen nicht bereitstellen.

Fehlermeldung: Die Bereitstellung des Azure Local Cloud-Workerclusters ist fehlgeschlagen mit „New-ArcHciApplianceConfigs failed with error: Die MOC-Rolle StorageContainerContributor ist nicht verfügbar“ Abhilfe:

  • Stellen Sie eine Verbindung mit dem ersten Knoten des Azure Local Clusters her.
  • Öffnen Sie eine PowerShell-Sitzung mit erhöhten Rechten (Als Administrator ausführen).
  • Erstellen Sie die StorageContainerContributor-Rolle, indem Sie den folgenden Befehl ausführen:
    New-MocRole -Name StorageContainerContributor `
            -actionProviders "StorageContainer" `
            -actionOperations "all"
  • Setzen Sie die Bereitstellung mit der gleichen Methode fort, mit der Sie begonnen haben (z. B. über das Portal oder die ARM-Vorlagenbereitstellung).

In diesem Artikel werden kritische bekannte Probleme und ihre Workarounds bei unterbrochenen Vorgängen für Azure Lokal beschrieben.

Diese Versionshinweise werden kontinuierlich aktualisiert, um wichtige Probleme und erforderliche Problemumgehungen einzuschließen. Überprüfen Sie diese Informationen sorgfältig, bevor Sie getrennte Vorgänge für Azure Local bereitstellen.

Bekannte Probleme für Version 2602 und 2603

Bootstrap oder Bereitstellung schlägt fehl, weil Zertifikate ungültig sind (Ausnahme)

Wenn die Zertifikatsperrliste (Certificate Revocation List, CRL) leer oder falsch konfiguriert ist, schlägt die Bootstrap-Überprüfung fehl.

Fehlermeldung: Bootstrap meldete einen Fehler: Die ALDO-Dienste starteten nach 00:45:00 Minuten nicht, wodurch die Arc-Registrierung fehlschlug.

Entschärfung:

Stellen Sie sicher, dass Ihre Zertifizierungsstelle ordnungsgemäß konfiguriert ist, und stellen Sie sicher, dass Ihre Zertifikate einen CRL-Endpunkt enthalten, auf den über die Knoten zugegriffen werden kann.

Alternative Abmilderung:

Wenn Sie Ihre Zertifizierungsstelle (Enterprise PKI) nicht neu konfigurieren können, können Sie CRL-Prüfungen während des Bootstrap umgehen. Führen Sie die folgenden Schritte auf jedem lokalen Azure-Knoten aus:

Write-Host "Updating Windows MAE Config for the Bootsrap service"
$basePath = "C:\windows\system32\bootstrap"

Write-Host "Looking for config file under $basePath"
$contentDir = Get-ChildItem -Path $basePath -Filter "content_*" -Directory -ErrorAction SilentlyContinue | Sort-Object Name -Descending | Select-Object -First 1
if (-not $contentDir) {
    Write-Warning "Could not find content_* directory under $basePath"
    return
}
Write-Host "Found content directory: $($contentDir.FullName)"

$ConfigPath = Join-Path $contentDir.FullName "Microsoft.Azure.Edge.Bootstrap.ManagementService\windows.mae.config.json"
if (-not (Test-Path $ConfigPath)) {
    Write-Warning "Config file $ConfigPath not found"
    return
}
Write-Host "Config file found at $ConfigPath"

$configContent = Get-Content -Path $ConfigPath -Raw | ConvertFrom-Json
$configContent.ManagementSettings.CheckCertificateRevocationList = $false
Write-Host "Updated existing CheckCertificateRevocationList property to false"

Stop-Service -Name "BootstrapManagementService" -Force -ErrorAction Stop
Write-Host "BootstrapManagementService stopped successfully"

$configContent | ConvertTo-Json -Depth 10 | Set-Content -Path $ConfigPath -Force
Write-Host "Successfully saved modified config"

Write-Host "Starting BootstrapManagementService..."
Start-Service -Name "BootstrapManagementService"
Write-Host "Waiting 60 seconds for service to fully initialize..."
Start-Sleep -Seconds 60
Write-Host "Successfully started BootstrapManagementService"  

Portalprobleme

Policy

Es gibt ein bekanntes Problem mit der Azure Policy Portalschnittstelle in dieser Version. Verwenden Sie als Problemumgehung die Azure CLI oder Azure PowerShell.

SSH-Schlüssel

Es gibt ein bekanntes Problem im Azure-Portal, das das Erstellen von SSH-Schlüsseln während der Erstellung von Linux-VMs oder Azure Kubernetes Service (AKS)-Clustern verhindert.

Entschärfung:

Verwenden Sie Befehlszeilentools, um einen SSH-Schlüssel zu generieren und den Schlüssel während des VM- oder AKS-Erstellungsprozesses einzuschließen.

Zusätzliche Clusterbereitstellungen schlagen fehl, da Host Guardian-Zertifikate nicht verfügbar sind.

Beim Bereitstellen zusätzlicher Azure Local Cluster nach der erfolgreichen Bereitstellung des dedizierten Verwaltungsclusters schlagen sie fehl.

Entschärfung:

Kopieren Sie die folgenden Zertifikate vom ersten Knoten des Verwaltungsclusters, und fügen Sie sie in alle Azure lokalen Knoten (Workloadcluster) unter Pfad C:\Users\Administrator\AppData\Roaming\AzureLocal\ ein.

Stellen Sie sicher, dass die folgenden Dateien auf jedem Azure Local Knoten vorhanden sind, bevor Sie einen neuen Workloadcluster bereitstellen:

  • C:\Users\Administrator\AppData\Roaming\AzureLocal\AzsVmHostGuardian-IRVM01-encryption.pfx
  • C:\Users\Administrator\AppData\Roaming\AzureLocal\AzsVmHostGuardian-IRVM01-signing.pfx

Verharren der Flugzeugbereitstellung und Zeitüberschreitung ohne Abschluss

In seltenen Fällen kann es bei Bereitstellungen zu einem Timeout kommen, und Dienste erreichen möglicherweise auch nach 8 Stunden nicht 100% Konvergenz.

Risikominderung:

Stellen Sie das Betriebsgerät für getrennte Verbindungen erneut bereit. Wenn das Problem nach 2 bis 3 sauberen erneuten Bereitstellungen weiterhin besteht, sammeln Sie Protokolle und öffnen Sie ein Supportticket.

Das Generieren von Zertifikaten bleibt hängen

Wenn Sie das Operations-Modul ausführen oder einen skriptbasierten Ansatz zum Generieren von Zertifikaten verwenden, kann der Prozess hängen, wenn er über eine Remotedesktop Sitzung ausgeführt wird.

Entschärfung:

Stellen Sie sicher, dass die Remotedesktop-Sitzung keine Smartcards zuordnet. Wenn die Smartcard-Zuordnung aktiviert ist, kann das Ausführen der Skripte zum Generieren von Zertifikaten zu einem Hängenbleiben führen certreq.

Set-MgmtClusterDenyPolicy.ps1 Skript fehlt

Entschärfung: Generieren Sie die Datei mithilfe des folgenden Skripts:

<#
.SYNOPSIS
    Denies resource creation on a management cluster Custom Location via Azure Policy.

.DESCRIPTION
    This script creates an Azure Policy definition with a deny effect targeting the management
    cluster's Custom Location and assigns it at subscription scope. It uses Azure PowerShell cmdlets
    to create both the policy definition and assignment.

    The policy blocks any resource creation where the extendedLocation targets the specified
    management cluster Custom Location. Due to the single-CL-per-subscription design constraint,
    the policy definition and assignment use hardcoded names. Re-running the script with a
    different Custom Location ID will overwrite the previous assignment.

.PARAMETER SubscriptionId
    The Azure subscription GUID where the policy definition and assignment will be created.
    If omitted (and -AllSubscriptions is not set), the script runs against the current
    Azure PowerShell subscription context.

.PARAMETER MgmtClusterCustomLocationId
    The fully-qualified ARM resource ID of the management cluster Custom Location to deny
    resource creation against.

.PARAMETER AllSubscriptions
    When set, the script applies the deny policy to every enabled subscription the caller
    has access to. If both -AllSubscriptions and -SubscriptionId are provided,
    -AllSubscriptions takes precedence and -SubscriptionId is ignored.

.EXAMPLE
    .\Set-MgmtClusterDenyPolicy.ps1 `
        -SubscriptionId "a1b2c3d4-e5f6-7890-abcd-ef1234567890" `
        -MgmtClusterCustomLocationId "/subscriptions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/resourceGroups/my-rg/providers/Microsoft.ExtendedLocation/customLocations/my-custom-location"

.EXAMPLE
    .\Set-MgmtClusterDenyPolicy.ps1 `
        -AllSubscriptions `
        -MgmtClusterCustomLocationId "/subscriptions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/resourceGroups/my-rg/providers/Microsoft.ExtendedLocation/customLocations/my-custom-location"

.NOTES
    Rollback commands:
        Remove-AzPolicyAssignment -Name 'deny-resource-creation-on-mgmt-cluster-assignment' -Scope '/subscriptions/{subId}'
        Remove-AzPolicyDefinition -Name 'deny-resource-creation-on-mgmt-cluster' -SubscriptionId '{subId}' -Force

    Requires active Azure PowerShell session (Connect-AzAccount) and Resource Policy Contributor role.
#>
[CmdletBinding()]
param(
    [Parameter(Mandatory = $false)]
    [ValidatePattern('^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$')]
    [string]$SubscriptionId,

    [Parameter(Mandatory = $true)]
    [ValidatePattern('^/subscriptions/[0-9a-fA-F-]+/resourceGroups/[^/]+/providers/Microsoft\.ExtendedLocation/customLocations/[^/]+$')]
    [string]$MgmtClusterCustomLocationId,

    [Parameter(Mandatory = $false)]
    [switch]$AllSubscriptions
)

# Validate required Az modules
$modAccounts = Get-Module -ListAvailable -Name Az.Accounts | Sort-Object Version -Descending | Select-Object -First 1
if (-not $modAccounts -or $modAccounts.Version -lt [version]'2.13.0') {
    throw "Az.Accounts module >= 2.13.0 is required. Install via: Install-Module -Name Az.Accounts -MinimumVersion 2.13.0"
}

$modResources = Get-Module -ListAvailable -Name Az.Resources | Sort-Object Version -Descending | Select-Object -First 1
if (-not $modResources -or $modResources.Version -lt [version]'6.12.0') {
    throw "Az.Resources module >= 6.12.0 is required. Install via: Install-Module -Name Az.Resources -MinimumVersion 6.12.0"
}

# Check authentication
$azContext = Get-AzContext
if (-not $azContext) {
    throw "Not connected to Azure. Run 'Connect-AzAccount' first."
}

# ---------------------------------------------------------------------------
# Determine subscription list
# ---------------------------------------------------------------------------

$subscriptions = @()

if ($AllSubscriptions) {
    if (-not [string]::IsNullOrEmpty($SubscriptionId)) {
        Write-Warning "Both -AllSubscriptions and -SubscriptionId were provided. -AllSubscriptions takes precedence; -SubscriptionId will be ignored."
    }
    Write-Host "Retrieving all enabled subscriptions..."
    try {
        $subs = Get-AzSubscription -ErrorAction Stop | Where-Object { $_.State -eq 'Enabled' }
    } catch {
        throw "Failed to retrieve subscription list. $($_.Exception.Message)"
    }
    $subscriptions = @($subs)
    if ($subscriptions.Count -eq 0) {
        throw "No enabled subscriptions found for the current account."
    }
    Write-Host "Found $($subscriptions.Count) enabled subscription(s)." -ForegroundColor Cyan
} elseif ([string]::IsNullOrEmpty($SubscriptionId)) {
    # No SubscriptionId provided — resolve from current Azure PowerShell context
    $currentCtx = Get-AzContext
    if (-not $currentCtx -or [string]::IsNullOrEmpty($currentCtx.Subscription.Id)) {
        throw "Failed to determine the current subscription context. Provide -SubscriptionId or run 'Set-AzContext' first."
    }
    Write-Host "No SubscriptionId provided. Using current subscription context: $($currentCtx.Subscription.Name) ($($currentCtx.Subscription.Id))"
    $subscriptions = @([PSCustomObject]@{ Id = $currentCtx.Subscription.Id; Name = $currentCtx.Subscription.Name })
} else {
    $subscriptions = @([PSCustomObject]@{ Id = $SubscriptionId; Name = $SubscriptionId })
}

# ---------------------------------------------------------------------------
# Prepare policy JSON definitions (inline)
# ---------------------------------------------------------------------------

$policyRuleJson = @'
{
  "if": {
    "allOf": [
      {
        "field": "extendedLocation.name",
        "equals": "[parameters('customLocationId')]"
      },
      {
        "field": "extendedLocation.type",
        "equals": "CustomLocation"
      }
    ]
  },
  "then": {
    "effect": "deny"
  }
}
'@

$policyParamJson = @'
{
  "customLocationId": {
    "type": "String",
    "metadata": {
      "displayName": "Custom Location Resource ID",
      "description": "The full ARM resource ID of the Custom Location to deny resource creation against (e.g., /subscriptions/{subId}/resourceGroups/{rg}/providers/Microsoft.ExtendedLocation/customLocations/{name})"
    }
  }
}
'@

# ---------------------------------------------------------------------------
# Process each subscription
# ---------------------------------------------------------------------------

$results  = @()
$failures = @()

foreach ($sub in $subscriptions) {
    $currentSubId   = $sub.Id
    $currentSubName = $sub.Name

    Write-Host "`n===== Processing subscription: $currentSubName ($currentSubId) =====" -ForegroundColor Cyan

    # --- Set subscription context ---
    try {
        Set-AzContext -SubscriptionId $currentSubId -ErrorAction Stop | Out-Null
    } catch {
        $msg = "Failed to set subscription context to '$currentSubId'. $($_.Exception.Message)"
        Write-Error $msg
        $failures += [PSCustomObject]@{ SubscriptionId = $currentSubId; SubscriptionName = $currentSubName; Error = $msg }
        if (-not $AllSubscriptions) { throw $msg }
        continue
    }

    # --- Create policy definition ---
    Write-Host "  Creating policy definition 'deny-resource-creation-on-mgmt-cluster'..."
    try {
        $definition = New-AzPolicyDefinition `
            -Name 'deny-resource-creation-on-mgmt-cluster' `
            -DisplayName 'Deny resource creation on management cluster Custom Location' `
            -Description 'Blocks resource creation when extendedLocation targets the management cluster Custom Location' `
            -Policy $policyRuleJson `
            -Parameter $policyParamJson `
            -Mode 'All' `
            -Metadata '{"category":"Management Cluster"}' `
            -SubscriptionId $currentSubId `
            -ErrorAction Stop
    } catch {
        $msg = "Failed to create policy definition in subscription '$currentSubId'. $($_.Exception.Message)"
        Write-Error $msg
        $failures += [PSCustomObject]@{ SubscriptionId = $currentSubId; SubscriptionName = $currentSubName; Error = $msg }
        if (-not $AllSubscriptions) { throw $msg }
        continue
    }

    if ($null -eq $definition -or [string]::IsNullOrEmpty($definition.Id)) {
        $msg = "Policy definition was created in subscription '$currentSubId' but returned unexpected output."
        Write-Error $msg
        $failures += [PSCustomObject]@{ SubscriptionId = $currentSubId; SubscriptionName = $currentSubName; Error = $msg }
        if (-not $AllSubscriptions) { throw $msg }
        continue
    }

    # --- Create policy assignment ---
    $scope = "/subscriptions/$currentSubId"

    Write-Host "  Creating policy assignment 'deny-resource-creation-on-mgmt-cluster-assignment'..."
    try {
        $assignment = New-AzPolicyAssignment `
            -Name 'deny-resource-creation-on-mgmt-cluster-assignment' `
            -DisplayName 'Deny resource creation on management cluster Custom Location' `
            -PolicyDefinition $definition `
            -Scope $scope `
            -PolicyParameterObject @{ customLocationId = $MgmtClusterCustomLocationId } `
            -EnforcementMode 'Default' `
            -ErrorAction Stop
    } catch {
        $msg = "Failed to create policy assignment in subscription '$currentSubId'. $($_.Exception.Message)"
        Write-Error $msg
        $failures += [PSCustomObject]@{ SubscriptionId = $currentSubId; SubscriptionName = $currentSubName; Error = $msg }
        if (-not $AllSubscriptions) { throw $msg }
        continue
    }

    if ($null -eq $assignment) {
        $msg = "Policy assignment was created in subscription '$currentSubId' but returned unexpected output."
        Write-Error $msg
        $failures += [PSCustomObject]@{ SubscriptionId = $currentSubId; SubscriptionName = $currentSubName; Error = $msg }
        if (-not $AllSubscriptions) { throw $msg }
        continue
    }

    Write-Host "  Policy successfully created and assigned." -ForegroundColor Green

    $results += [PSCustomObject]@{
        SubscriptionName            = $currentSubName
        SubscriptionId              = $currentSubId
        DefinitionName              = $definition.Name
        DefinitionId                = $definition.PolicyDefinitionId
        AssignmentName              = $assignment.Name
        AssignmentId                = $assignment.PolicyAssignmentId
        Scope                       = $scope
        MgmtClusterCustomLocationId = $MgmtClusterCustomLocationId
    }
}

# ---------------------------------------------------------------------------
# Summary
# ---------------------------------------------------------------------------

Write-Host "`n===== Summary =====" -ForegroundColor Cyan
Write-Host "  Succeeded: $($results.Count) subscription(s)" -ForegroundColor Green
if ($failures.Count -gt 0) {
    Write-Host "  Failed:    $($failures.Count) subscription(s)" -ForegroundColor Red
    foreach ($f in $failures) {
        Write-Host "    - $($f.SubscriptionName) ($($f.SubscriptionId))" -ForegroundColor Red
    }
}

if ($results.Count -gt 0) {
    Write-Output $results
}

if ($failures.Count -gt 0 -and $results.Count -eq 0) {
    throw "All subscriptions failed. See errors above."
}

SSL/TLS-Fehler beim Verwenden des Verwaltungsendpunkts (OperationsModule)

Wenn Sie ein Cmdlet verwenden, das den Verwaltungsendpunkt verwendet (z. B. Get-ApplianceHealthState), erhalten Sie einen Fehler "ausgelöst und Ausnahme: Die Anforderung wurde abgebrochen: Der sichere SSL/TLS-Kanal konnte nicht erstellt werden.. Erneut versuchen

Risikominderung:

Verwenden Sie Set-DisconnectedOperationsClientContext für 2511 nicht. Stattdessen verwenden Sie $context = New-DisconnectedOperationsClientContext und übergeben Sie $context an die jeweiligen Cmdlets.

Arc Bootstrap schlägt auf Knoten (Invoke-AzStackHCIArcInitialization) auf vom Originalgerätehersteller (OEM) bereitgestellten Images fehl.

Wenn Sie ein OEM-Image ausführen, stellen Sie sicher, dass Sie den richtigen Betriebssystembasisplan verwenden.

Folgen Sie diesen Schritten:

  1. Stellen Sie sicher, dass Sie dieselbe unterstützte Version oder eine frühere Version verwenden (z. B. 2508 oder früher).

  2. Deaktivieren Sie das Zero-Day-Update auf jedem Knoten:

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\EdgeArcBootstrapSetup" -Name "MicrosoftOSImage" -Value 1
    
  3. Führen Sie ein Upgrade auf die von Microsoft bereitgestellte ISO für Ihre Zielversion für getrennte Vorgänge durch. Wählen Sie upgrade aus, und behalten Sie einstellungen bei, wenn Sie die Knoten mithilfe dieses Ansatzes neu erstellen.

    • Führen Sie alternativ den folgenden Befehl aus, um das richtige Update zu erhalten:

      # Define the solution version and local package path - review the correct versions.
      # Only do this if your OEM image is on a earlier version than the target version.
      
      $TargetSolutionVersion = "12.2511.1002.5"
      $localPlatformVersion = "12.2511.0.3038"
      $DownloadUpdateZipUrl = "https://azurestackreleases.download.prss.microsoft.com/dbazure/AzureLocal/WindowsPlatform/$($localPlatformVersion)/Platform.$($localPlatformVersion).zip"
      $LocalPlatformPackagePath = "C:\Platform.$($localPlatformVersion).zip"
      
      # Download the DownloadUpdateZipUrl to LocalPlatformPackagePath (Alternative do this from browser and copy file over if you cannot run this on your nodes/disconnected scenarios)
      Invoke-WebRequest $DownloadUpdateZipUrl -Outfile $LocalPlatformPackagePath
      
      $updateConfig = @{
        "TargetSolutionVersion" = $TargetSolutionVersion
        "LocalPlatformPackagePath" = $LocalPlatformPackagePath
      }
      
      $configHash = @{
        "UpdateConfiguration" = $updateConfig
      }
      
      # Trigger zero-day update
      $tempConfigPath = "C:\temp.json"
      $configHash | ConvertTo-Json -Depth 3 | Out-File $tempConfigPath -Force
      Start-ArcBootstrap -ConfigFilePath $tempConfigPath
      
      # Continue with Invoke-AzStackHCIArcInitialization.
      
  4. Überprüfen Sie die Versionskompatibilitätstabelle .

Fehler bei der Cloudbereitstellungsüberprüfung während der Portalerfahrung

Die Überprüfung der Lösungs-Generator-Erweiterung (SBE) schlägt fehl, wenn Sie versuchen, einen aka.ms Link zum Herunterladen zu erreichen.

Problemumgehung:

  1. Führen Sie den Cloudbereitstellungsprozess (Portal) aus, bis die Überprüfung in der Benutzererfahrung fehlschlägt.

  2. Herunterladen einer gepatchten Version von ExtractOEMContent.ps1

  3. Herunterladen einer gepatchten Version von EN-US\ExtractOEMContent.Strings.psd1

  4. Ändern Sie die folgende Datei mit Ihrem bevorzugten Editor ExtractOEMContent.ps1.

  5. Ersetzen Sie Zeile 899 in dieser Datei durch den Codeausschnitt:

    if (-not (Test-SBEXMLSignature -XmlPath $sbeDiscoveryManifestPath)) {
        throw ($localizedStrings.OEMManifestSignature -f $sbeDiscoveryManifestPath)
    }
    $packageHash = (Get-FileHash -Path $zipFile.FullName -Algorithm SHA256).Hash
    $manifestXML = New-Object -TypeName System.Xml.XmlDocument
    $manifestXML.PreserveWhitespace = $false
    $xmlTextReader = New-Object -TypeName System.Xml.XmlTextReader -ArgumentList $sbeDiscoveryManifestPath
    $manifestXML.Load($xmlTextReader)
    $xmlTextReader.Dispose()
    
    # Test that the zip file hash matches the package hash from the manifest
    $applicableUpdate = $manifestXML.SelectSingleNode("//ApplicableUpdate[UpdateInfo/PackageHash='$packageHash']")
    if ([System.String]::IsNullOrEmpty($applicableUpdate)) {
        throw "$($zipFile.FullName) hash of $packageHash does not match value in manifest at $sbeDiscoveryManifestPath"
    }
    $result = [PSCustomObject]@{
        Code = "Latest"
        Message = "Override for ALDO"
        Endpoint = "https://aka.ms/AzureStackSBEUpdate/Dell"
        ApplicableUpdate = $applicableUpdate.OuterXml
    }
    
  6. Kopieren Sie die neu geänderte Datei C:\CloudDeployment\Setup\Common\ExtractOEMContent.ps1 auf den ersten Computer.

  7. Kopieren Sie die heruntergeladene, nicht geänderte Datei C:\CloudDeployment\Setup\Common\En-US\ExtractOEMContent.Strings.psd1 auf die erste Maschine.

  8. Fortsetzen der Cloudbereitstellung.

Cloudbereitstellung (Validierung oder Bereitstellung) bleibt hängen

Während des Validierungs- oder Cloud-Bereitstellungsablaufs wird der erste Computer (Seedknoten) neu gestartet, was dazu führt, dass die Steuerungsebene-Appliance neu startet. Manchmal dauert dieser Vorgang länger als erwartet, was dazu führt, dass der Hybridinstanzmetadatendienst (HIMDS) beendet wird, da er keine Verbindung mit dem HIS-Endpunkt herstellen kann. Dieses Problem kann dazu führen, dass der Bereitstellungsprozess nicht mehr reagiert.

Entschärfung:

  1. Überprüfen Sie, ob der HIMDS-Dienst beendet wird:

    Get-Service HIMDS
    
  2. Wenn der Dienst beendet wird, starten Sie ihn:

    Start-Service HIMDS
    
  3. Überprüfen Sie die Protokolle im ersten Modus bei C:\CloudDeployment\Logs.

  4. Überprüfen Sie die entsprechende Protokolldatei:

    • Validierungsstufe: Überprüfen Sie die neueste Datei mit einem Namen, der mit EnvironmentValidator beginnt.
    • Bereitstellungsphase: Überprüfen Sie die neueste Datei mit einem Namen, der mit CloudDeployment beginnt.
    • Wenn sich der Status in der Datei von dem im Portal unterscheidet, führen Sie die nächsten Schritte aus, um den Bereitstellungsstatus mit dem Portal neu zu synchronisieren.

Bereitstellungsstatus nicht mehr synchronisiert vom Cluster zum Portal

Das Portal zeigt, dass die Cloudbereitstellung ausgeführt wird, obwohl sie bereits abgeschlossen ist oder die Bereitstellung länger dauert als erwartet. Dies geschieht, da der Cloudbereitstellungsstatus nicht mit dem tatsächlichen Status synchronisiert wird.

Wenn das Portal und die Protokolldatei nicht synchronisiert sind, starten Sie den LCM Controller-Dienst neu, um die Verbindung zum Relay herzustellen, indem Sie Restart-Service LCMController ausführen.

Mitigation auf der ersten Maschine:

  1. Suchen Sie die folgenden Dateien:

    • Für die Überprüfungsphase : C:\ECEStore\efb61d70-47ed-8f44-5d63-bed6adc0fb0f\559dd25c-9d86-dc72-4bea-b9f364d103f8
    • Für die Bereitstellungsphase : C:\ECEStore\efb61d70-47ed-8f44-5d63-bed6adc0fb0f\086a22e3-ef1a-7b3a-dc9d-f407953b0f84
  2. Aktualisieren Sie das Attribut EndTimeUtc in der ersten Zeile der Datei auf eine zukünftige Zeit basierend auf der aktuellen Uhrzeit des Computers. Beispiel: <Action Type="CloudDeployment" StartTimeUtc="2025-04-09T08:01:51.9513768Z" Status="Success" EndTimeUtc="2025-04-10T23:30:45.9821393Z">.

  3. Speichern Sie die Datei, und schließen Sie sie.

  4. LCM sendet die Benachrichtigung innerhalb von 5-10 Minuten an HCI RP.

  5. Verwenden Sie den folgenden Befehl, um LCM-Controllerprotokolle anzuzeigen:

    Get-WinEvent -LogName "Microsoft.AzureStack.LCMController.EventSource/Admin" -MaxEvents 100 | Where-Object {$_.Message -like "*from edge common logger*"} | Select-Object TimeCreated, Message
    

Hinweis

Dieser Vorgang funktioniert, wenn der Bereitstellungsstatus von HCI RP nicht aufgrund eines Timeouts (ca. 48 Stunden ab dem Beginn der Cloudbereitstellung) fehlgeschlagen ist.

Fehler beim Einsatz des Offlinebetriebs der Appliance (Fehler im Appliance-Operations)

Einige Sonderzeichen im TLS-Zertifikatkennwort der Verwaltung, kennwort für externe Zertifikate oder geheime Konfigurationsschlüssel aus dem OperationsModule können dazu führen, dass die Bereitstellung mit einer Fehlerausgabe fehlschlägt: Appliance.Operations-Vorgang [Optionen]

Entschärfung:

Verwenden Sie keine Sonderzeichen wie einfache oder doppelte Anführungszeichen in den Kennwörtern.

Ressourcen werden aus dem Portal ausgeblendet

Wenn Sie sich beim Portal mit demselben Benutzerkonto anmelden, das zuvor funktioniert hat, fehlen Ressourcen und werden nicht angezeigt.

Entschärfung: Starten Sie Ihren Browser im Inkognito-Modus, oder schließen Sie Ihren Browser, und löschen Sie alle Cookies. Kehren Sie dann zu Ihrem lokalen Portal zurück, und melden Sie sich erneut an. Alternativ können Sie IRVM01 auf dem Seedknoten neu starten und warten, bis die Dienste wieder online und fehlerfrei sind.

Arbeitsspeicherverbrauch, wenn weniger als 128 GB Arbeitsspeicher pro Knoten vorhanden sind

Die Appliance für getrennte Vorgänge verwendet 78 GB Arbeitsspeicher. Wenn Ihr Knoten weniger als 128 GB Arbeitsspeicher aufweist, führen Sie die folgenden Schritte aus, nachdem Sie die Appliance bereitgestellt haben, aber bevor Sie Azure Local Instanzen bereitstellen.

Entschärfung:

  1. Beenden Sie die IRVM01VM auf dem Startknoten.
  2. Ändern Sie die Speichereinstellung des virtuellen IRVM01-Computers auf 64 GB.
  3. Starten Sie die IRVM01-Appliance.
  4. Warten Sie auf Konvergenz. Überwache Get-ApplianceHealthState bis alle Dienste konvergieren.
  5. Stellen Sie Azure Local Instanzen bereit.

Bereitstellungsfehler

In virtuellen Umgebungen können Bereitstellungen zu Zeitüberschreitungen führen, und Dienste erreichen möglicherweise keine vollständige Konvergenz, auch wenn mehr als 8 Stunden vergangen sind.

Risikominderung:

Stellen Sie die Appliance für getrennte Vorgänge ein paar Mal erneut bereit. Wenn Sie eine physische Umgebung verwenden und das Problem weiterhin besteht, sammeln Sie Protokolle, und öffnen Sie ein Supportticket.

Azure Local Bereitstellung mit Azure Keyvault

Role-Based Access Control(RBAC)-Berechtigungen für eine neu erstellte Azure Key Vault können bis zu 20 Minuten dauern, bis sie verteilt werden. Wenn Sie die Key Vault im lokalen Portal erstellen und schnell versuchen, die Cloudbereitstellung abzuschließen, treten beim Überprüfen des Clusters möglicherweise Berechtigungsprobleme auf.

Entschärfung:

Warten Sie 20 Minuten, nachdem Sie die Azure Key Vault erstellt haben, um die Bereitstellung des Clusters abzuschließen, oder erstellen Sie die Key Vault vorab.

Wenn Sie die Key Vault vorab erstellen, stellen Sie sicher, dass Sie Folgendes zuweisen:

  • Verwaltete Identität für jeden Knoten
  • Der Key Vault-Administrator
  • Der Benutzer, der in der Cloud explizite Rollen für die Key Vault bereitstellt:
    • Key Vault Secrets Officer und Key Vault Data Access Administrator.

Hier ist ein Beispielskript. Ändern und verwenden Sie dieses Skript, um die Key Vault vorab zu erstellen:

param($resourceGroupName = "aldo-disconnected", $keyVaultName = "aldo-kv", $subscriptionName = "Starter Subscription")

$location = "autonomous"

Write-Verbose "Sign in interactive with the user who does cloud deployment"
# Sign in to Azure CLI (use the user you run the portal deployment flow with)"
az login 
az account set --subscription $subscriptionName
$accountInfo = (az account show)|convertfrom-json

# Create the Resource Group
$rg = (az group create --name $resourceGroupName --location $location)|Convertfrom-json

# Create a Key Vault
$kv = (az keyvault create --name $keyVaultName --resource-group $resourceGroupName --location $location --enable-rbac-authorization $true)|Convertfrom-json

Write-Verbose "Assigning permissions to $($accountInfo.user.name) on the Key Vault"
# Assign the secrets officer role to the resource group (you can use KV explicit).
az role assignment create --assignee $accountInfo.user.name --role "Key Vault Secrets Officer" --scope $kv.Id
az role assignment create --assignee $accountInfo.user.name --role "Key Vault Data Access Administrator" --scope $kv.Id

$machines = (az connectedmachine list -g $resourceGroupName)|ConvertFrom-Json

# For now, a minimum of 3 machines for Azure Local disconnected operations are supported.
if($machines.Count -lt 3){
    Write-Error "No machines found in the resource group $resourceGroupName. Please check the resource group and try again. Please use the same resource group as where your Azure Local nodes are"
    return 1
}

Write-Verbose "Assigning permissions to MSIs $($machines.count) on the Key Vault"

$apps =(az ad sp list)|ConvertFrom-Json
$managedIds=$machines.displayname | foreach-object {
    $name = $_
    $apps|Where-Object {$_.ServicePrincipalType -eq 'ManagedIdentity' -and $_.displayname -match $name}
}

# Assign role to each of the managed IDs (Arc-VMs) in the RG 
$managedIds|foreach-object {    
    az role assignment create --role "Key Vault Administrator" --assignee $_.Id --scope $kv.id
}

Write-Verbose "Wait 20 min before running cloud deployment from portal"

Lokale Azure-VMs

Azure Resource Graph-Fehler beim Hinzufügen oder Bearbeiten von Tags

Nachdem Sie die Azure Local VM gestartet, neu gestartet oder gestoppt haben, werden die Power-Aktions-Schaltflächen deaktiviert, und der Status wird nicht ordnungsgemäß widergespiegelt.

Entschärfung:

Verwenden Sie Azure Command-Line Interface (CLI), um Tags für die Ressource hinzuzufügen oder zu bearbeiten.

Schaltflächen zum Starten, Neustarten oder Löschen, die nach dem Stoppen der virtuellen Maschine deaktiviert sind.

Nachdem Sie eine Azure Local VM beendet haben, sind die Schaltflächen "Start", "Neustart" und "Löschen" im Azure Portal deaktiviert.

Entschärfung:

Aktualisieren Sie Ihren Browser und die Seite.

Löschen einer VM-Ressource

Wenn Sie eine VM aus dem Portal löschen, könnten folgende Meldungen erscheinen: "Zugeordnete Ressource löschen fehlgeschlagen" und "Fehler beim Löschen der zugeordneten Ressource 'Name' vom Typ 'Netzwerkschnittstelle'".

Entschärfung:

Nachdem Sie den virtuellen Computer gelöscht haben, verwenden Sie CLI, um die zugeordnete Netzwerkschnittstelle zu löschen. Führen Sie den folgenden Befehl aus:

az stack-hci-vm network nic delete

Azure Kubernetes Service (AKS) auf Azure Local

Die AKS-Bereitstellung schlägt in vollständig luftgespaltenen Szenarien fehl

AKS-Bereitstellungen schlagen in vollständig luftabgeschotteten Szenarien fehl. Für dieses Problem in den aktuellen Versionen ist keine Entschärfung verfügbar.

Verwenden eines vorhandenen öffentlichen Schlüssels beim Erstellen eines AKS-Clusters

In dieser Version können Sie beim Erstellen eines AKS-Clusters nur einen vorhandenen öffentlichen Schlüssel verwenden.

Entschärfung:

Verwenden Sie zum Erstellen eines SSH-Schlüssels das folgende Befehlszeilentool, und fügen Sie den öffentlichen Schlüssel in die Benutzeroberfläche ein:

ssh-keygen -t rsa 
(cat ~\.ssh\id_rsa.pub)|set-clipboard

Aktualisieren oder Skalieren eines Knotenpools über das Portal ist deaktiviert

Das Aktualisieren oder Skalieren eines Knotenpools aus dem Portal wird in dieser Vorschauversion nicht unterstützt.

Entschärfung:

Verwenden Sie CLI, um einen Knotenpool zu aktualisieren oder zu skalieren.

az aksarc nodepool update
az aksarc nodepool scale

Skalierungsbeschränkung

Im aktuellen Azure-Skalierungsgrenzen für lokale, getrennte Umgebungen kann die Ausführung von mehr als 20 Workload-Clustern die Stabilität der Steuerebene beeinträchtigen. Unter anhaltender Last kann die steuerungsebene der getrennten Vorgänge im Laufe der Zeit weniger reaktionsfähig werden, was sich auf die Verwaltbarkeit und Zuverlässigkeit bei einer höheren Clusteranzahl auswirken kann.

Entschärfung:

Bis der unterstützte Skalierungsbereich erweitert wird, empfiehlt Microsoft, die Anzahl der Workloadcluster auf 20 oder weniger zu beschränken, um stabile und zuverlässige getrennte Vorgänge aufrechtzuerhalten.

Kubernetes-Clusterliste leer unter Azure Local (Kubernetes-Cluster)

Wenn Sie zu Azure Local navigieren und auf Kubernetes-Cluster klicken, wird möglicherweise eine leere Liste von Clustern angezeigt.

Entschärfung:

Navigieren Sie im linken Menü zu Kubernetes>Azure Arc oder verwenden Sie die Suchleiste. Ihre Cluster sollten in der Liste angezeigt werden.

Speichern der festgefahrenen Kubernetes-Dienstbenachrichtigung

Nachdem Sie auf eine neuere Version von Kubernetes aktualisiert haben, wird möglicherweise eine hängende Benachrichtigung angezeigt, die Save Kubernetes service besagt.

Entschärfung:

Navigieren Sie zur Seite " Clusteransicht ", und aktualisieren Sie sie. Überprüfen Sie, ob der Status ein Upgrade anzeigt oder abgeschlossen ist. Wenn das Update erfolgreich abgeschlossen wurde, können Sie die Benachrichtigung ignorieren.

Aktivitätsprotokoll zeigt ein Authentifizierungsproblem an.

Ignorieren Sie die Portalwarnung in dieser Version.

Microsoft Entra Authentifizierung mit Kubernetes RBAC schlägt fehl

Beim Versuch, einen Kubernetes-Cluster mit Entra-Authentifizierung zu erstellen, tritt ein Fehler auf.

In dieser Vorschauversion werden nur lokale Konten mit Kubernetes RBAC unterstützt.

Arc-Erweiterungen

Wenn Sie zu Erweiterungen in einem AKS-Cluster navigieren, ist die Schaltfläche "Hinzufügen" deaktiviert, und es sind keine Erweiterungen aufgeführt.

Arc-Erweiterungen werden in dieser Vorschauversion nicht unterstützt.

AKS-Ressource erscheint im Portal nach der Löschung

Nach dem erfolgreichen Löschen eines AKS-Clusters aus dem Portal wird die Ressource weiterhin angezeigt.

Entschärfung:

Verwenden Sie CLI, um den Cluster zu löschen und zu bereinigen. Führen Sie den folgenden Befehl aus:

az aksarc delete

Starten Sie einen Knoten oder die VM der Steuerungsebene neu

Nachdem Sie einen Knoten oder die VM der Steuerebene neu gestartet haben, kann es bis zu einer Stunde dauern, bis das System vollständig bereit ist. Wenn Sie Probleme mit dem lokalen Portal, fehlende Ressourcen oder fehlerhafte Bereitstellungen feststellen, überprüfen Sie die Appliance-Integrität mithilfe von OperationsModule , um sicherzustellen, dass alle Dienste vollständig konvergent sind.

Abonnements

Anbieter zum Erstellen eines Abonnements

Nachdem Sie ein neues Abonnement als Betreiber erstellt haben, wird das Abonnement in der Liste als nicht klickbar angezeigt und zeigt keinen Zugriff für den Besitzer an.

Entschärfung:

Aktualisieren Sie Ihr Browserfenster.

Ansicht „Operator-Abonnements“ (Timeout)

Wenn Sie als Operator angemeldet sind, wird möglicherweise ein Timeout-Bildschirm angezeigt, und Sie können möglicherweise keine Abonnements anzeigen, auflisten oder erstellen.

Ursache:

Dieses Problem tritt auf, wenn ein Abonnementbesitzer gelöscht oder nicht aus dem Quellidentitätssystem mit der lokalen Steuerungsebene synchronisiert wird. Wenn Sie versuchen, Abonnements anzuzeigen, schlägt der Prozess fehl, da die Identität des Besitzers nicht verfügbar ist.

Entschärfung:

Wenn das Portal nicht funktioniert, verwenden Sie Azure CLI oder REST-API zum Erstellen und Auflisten von Abonnements. Um einen anderen Besitzer zuzuweisen, verwenden Sie die REST-API, und geben Sie den subscriptionOwnerId Parameter ein, wenn Sie das Abonnement erstellen.

Azure CLI

Verwalten von Clouds

Wenn Sie die az cloud Befehle verwenden, z. B. az cloud register, az cloud show oder az cloud set, treten möglicherweise Probleme auf, wenn Sie Großbuchstaben im Cloud-Namen verwenden.

Entschärfung:

Verwenden Sie nur Kleinbuchstaben für Cloudnamen in az cloud-Unterbefehlen, wie zum Beispiel register, show oder set.

Erstellen von Abonnements

Azure CLI unterstützt die Bereitstellung von subscriptionOwnerId für neue Abonnements nicht. Dadurch wird der Betreiber zum Standardbesitzer neu erstellter Abonnements, ohne den Besitzer derzeit zu ändern.

Entschärfung:

Verwenden Sie az rest, um Abonnements mit einem anderen Besitzer zu erstellen, wenn dies erforderlich ist, um direkt mit einem anderen Besitzer zu automatisieren.

Azure Portal

Abmelden schlägt fehl

Wenn Sie "Abmelden" auswählen, funktioniert die Anforderung nicht.

Entschärfung:

Schließen Sie Ihren Browser, und wechseln Sie dann zur Portal-URL.

Azure Resource Manager

Vorlagenspezifikationen

Vorlagenspezifikationen werden nicht unterstützt. Bereitstellungen, die ARM-Vorlagen mit Vorlagenspezifikationen verwenden, schlagen fehl.

Nicht unterstützte Szenarien

Folgende Szenarios werden nicht unterstützt:

  • Arc-aktivierte Server (Remote- oder nicht lokale Azure-VMs)
  • Arc-Enabled Kubernetes-Cluster (Remote- oder Nicht-AKS-Cluster)

Wenn Sie diese Szenarien testen, müssen diese Systeme Ihrer benutzerdefinierten Zertifizierungsstelle vertrauen, und Sie müssen -custom-ca-cert beim Aktivieren von Arc übergeben.

Dieses Feature ist nur in Azure Local 2602 oder höher verfügbar.