Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se identifican los problemas conocidos críticos y sus soluciones alternativas en las operaciones desconectadas para Azure Local.
Estas notas de la versión se actualizan continuamente para incluir problemas críticos y soluciones alternativas necesarias. Revise detenidamente esta información antes de implementar operaciones desconectadas para Azure Local.
Problemas conocidos de la versión 2604
Error en la implementación en la nube del clúster de trabajo de Azure Local al implementar los componentes de infraestructura de Arc
Los clústeres de carga de trabajo en entornos aislados de la red no logran implementarse en contadas ocasiones.
Mensaje de error: La implementación en la nube de Azure Local del clúster de trabajo ha fallado con "New-ArcHciApplianceConfigs failed with error: el rol MOC StorageContainerContributor no está disponible
Mitigación:
Conéctese al primer nodo del clúster de Azure Local.
Abra una sesión de PowerShell con privilegios elevados (ejecutar como administrador).
Para crear el rol StorageContainerContributor, ejecute el siguiente comando:
New-MocRole -Name StorageContainerContributor ` -actionProviders "StorageContainer" ` -actionOperations "all"Reanude la implementación mediante el mismo método con el que se inició (por ejemplo, a través del portal o la implementación de plantillas de ARM).
Problemas conocidos de la versión 2602 y 2603
La actualización de 2602 a 2604 falla en entornos aislados de la red
Síntoma: La actualización desde la compilación 2602 en un entorno aislado de la red falla durante la carga de paquetes con un error similar al siguiente.
ErrorReports : {Update Download: Update package 'arca.update.package.2603.1.25553.zip' did not pass validation. Below is the summary of the validation error(s) encountered:
- ManifestSignatureInvalid: File signature on Manifest.xml is invalid or it is not signed. The package may be tampered with or corrupted.
}
Este error se produce porque el paquete de actualización está firmado con un certificado diferente al disponible en la compilación 2602.
- Descargue el archivo ZIP siguiente y cópielo en el nodo de inicialización.
- Modifique y ejecute este script:
Mitigación:
# Using the operations module:
$targetFolder = 'C:\ALDO\2602'
$targetFile = Join-Path $targetFolder "2602-update.zip"
(New-Item -ItemType Directory $targetFolder -force)|Out-null
Expand-Archive $targetFile -destinationPath $targetFolder
Import-Module "$applianceConfigBasePath\OperationsModule\Azure.Local.DisconnectedOperations.psd1" -Force
$managementEndpoint = "192.168.200.10"
$password = ConvertTo-SecureString 'RETRACTED' -AsPlainText -Force
$context = Set-DisconnectedOperationsClientContext -ManagementEndpointClientCertificatePath "${env:localappdata}\AzureLocalOpModuleDev\certs\ManagementEndpoint\ManagementEndpointClientAuth.pfx" -ManagementEndpointClientCertificatePassword $password -ManagementEndpointIpAddress $managementEndpoint
$recoveryKeys = (Get-ApplianceBitlockerRecoveryKeys).recoverykeyset
# Run the script (This takes the control plane VM down and reboots it)
& "$($targetFolder)\ImportCodeSignCertsOffline.ps1" -CertsFolder $targetFolder -BitLockerRecoveryKeys $recoveryKeys
Espere 10 minutos o más
Desde el mismo contexto de PowerShell, ejecute:
Get-ApplianceUpdateHistoryEl historial de actualizaciones después de reiniciar la máquina virtual (VM) del dispositivo podría mostrar un error similar al siguiente:
Type : UpdatePreparation TargetVersion : 2603.1.25553 StartTime : 2026-04-25T04:31:41.627 EndTime : 2026-04-25T04:38:38.445 CompletionStatus : Failed FailedTasks : {Update Download} InProgressTasks : {} CompletedTasks : {} PendingTasks : {} ErrorReports : {}Si el error La firma del archivo en Manifest.xml no es válida ya no aparece, el problema estará resuelto y puede continuar con el proceso de actualización.
Para continuar con el proceso de actualización, modifique y ejecute este comando:
$updateTargetVersion = "" Wait-AppliancePreUpdate -TargetVersion $updateTargetVersion Start-ApplianceUpdate -TargetVersion $updateTargetVersion -WaitEl proceso tarda aproximadamente 3 horas en finalizar.
Error de arranque o implementación debido a certificados no válidos (excepción)
Si la lista de revocación de certificados (CRL) está vacía o está mal configurada, se produce un error en la validación de arranque.
Mensaje de error: Error informado por Bootstrap: los servicios ALDO no pudieron iniciarse después de 00:45:00 minutos, provocando un fallo en el registro de Arc.
Mitigación:
Compruebe que la entidad de certificación está configurada correctamente y asegúrese de que los certificados incluyen un punto de conexión CRL al que pueden acceder los nodos.
Mitigación alternativa:
Si no puede reconfigurar la entidad de certificación (infraestructura de clave pública empresarial), puede omitir las comprobaciones de CRL durante el proceso de arranque. Ejecute los pasos siguientes en cada nodo local de Azure:
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"
Problemas del portal
Policy
Hay un problema conocido con la interfaz del portal de Azure Policy en esta versión. Como solución alternativa, use el CLI de Azure o el Azure PowerShell.
Claves SSH
Hay un problema conocido en el portal de Azure que impide la creación de claves SSH durante la creación de máquinas virtuales Linux o clústeres de Azure Kubernetes Service (AKS).
Mitigación:
Use herramientas de línea de comandos para generar una clave SSH e incluir la clave durante el proceso de creación de la máquina virtual o AKS.
Se produce un error en otras implementaciones de clúster: los certificados de protección de host no están disponibles.
Al implementar más clústeres Azure Local después de implementar correctamente el clúster de administración dedicado, se producirá un error en las implementaciones.
Mitigación:
Copie los siguientes certificados del primer nodo del clúster de administración y péguelos en todos los nodos de Azure Local (clústeres de carga de trabajo) en C:\Users\Administrator\AppData\Roaming\AzureLocal\.
Asegúrese de que los siguientes archivos están presentes en cada nodo Azure Local antes de implementar un nuevo clúster de carga de trabajo:
C:\Users\Administrator\AppData\Roaming\AzureLocal\AzsVmHostGuardian-IRVM01-encryption.pfxC:\Users\Administrator\AppData\Roaming\AzureLocal\AzsVmHostGuardian-IRVM01-signing.pfx
La implementación del plano de control se queda bloqueada, supera el tiempo de espera y no se completa
En raras ocasiones, los despliegues pueden superar el tiempo de espera y es posible que los servicios no alcancen el 100 % de convergencia, incluso después de ocho horas.
Mitigación:
Vuelva a implementar el dispositivo de operaciones desconectado. Si el problema persiste después de dos o tres redespliegues limpios, recopile registros y abra un ticket de soporte.
La generación de certificados se bloquea
El proceso de generación de certificados puede bloquearse si lo ejecuta a través de una sesión de Escritorio remoto, independientemente de si usa el módulo Operations o un enfoque basado en scripts.
Mitigación:
Asegúrese de que la sesión de Escritorio Remoto no está mapeando tarjetas inteligentes. Si la asignación de tarjetas inteligentes está habilitada, la ejecución de los scripts para generar certificados puede hacer que certreq se bloquee.
Falta el script Set-MgmtClusterDenyPolicy.ps1
Mitigación: genere el archivo mediante el siguiente script:
<#
.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 "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" `
-MgmtClusterCustomLocationId "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-rg/providers/Microsoft.ExtendedLocation/customLocations/my-custom-location"
.EXAMPLE
.\Set-MgmtClusterDenyPolicy.ps1 `
-AllSubscriptions `
-MgmtClusterCustomLocationId "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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."
}
Error de SSL/TLS al usar el punto de conexión de administración (OperationsModule)
Cuando se usa un cmdlet que usa el punto de conexión de administración (por ejemplo, Get-ApplianceHealthState), recibe un error "se produjo una excepción: Se anuló la solicitud: No se pudo crear el canal seguro SSL/TLS... Reintentar."
Mitigación:
Para el 2511, no utilice Set-DisconnectedOperationsClientContext. En su lugar, use $context = New-DisconnectedOperationsClientContext y pase el objeto $context a los cmdlets correspondientes.
Error de arranque de Arc en el nodo (Invoke-AzStackHCIArcInitialization) en imágenes proporcionadas por el fabricante de equipos originales (OEM)
Si usa una imagen OEM, asegúrese de que utiliza la versión base correcta del sistema operativo.
Siga estos pasos:
Asegúrese de que está en la misma versión compatible o una versión anterior (por ejemplo, 2508 o versiones anteriores).
Deshabilite la actualización de día cero en cada nodo:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\EdgeArcBootstrapSetup" -Name "MicrosoftOSImage" -Value 1Actualice a la ISO proporcionada por Microsoft para el objetivo de la versión de operaciones desconectadas. Elija actualizar y mantener la configuración al restablecer los nodos mediante este enfoque.
Como alternativa, ejecute el siguiente comando para obtener la actualización correcta:
# 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.
Revise la tabla de compatibilidad de versiones .
Error de validación de implementación en la nube durante la experiencia del portal
Se produce un error en la validación de la extensión del Generador de soluciones (SBE) cuando intenta llegar a un vínculo de aka.ms para descargar.
Solución alternativa:
Ejecute el flujo de implementación en la nube (portal) hasta que se produzca un error en la validación en la experiencia de usuario.
Descargue una versión revisada de ExtractOEMContent.ps1.
Descargue una versión revisada de EN-US\ExtractOEMContent.Strings.psd1.
Modifique el siguiente archivo con su editor
ExtractOEMContent.ps1favorito.Reemplace la línea 899 de este archivo por el siguiente fragmento de código:
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 }Copie el archivo recién modificado en
C:\CloudDeployment\Setup\Common\ExtractOEMContent.ps1en la primera máquina.Copie el archivo descargado y sin modificar en
C:\CloudDeployment\Setup\Common\En-US\ExtractOEMContent.Strings.psd1en el primer equipo.Reanude la implementación en la nube.
La implementación en la nube (validación o implementación) se bloquea
Durante el flujo de validación o implementación en la nube, se reinicia la primera máquina (nodo de inicialización), lo que hace que el dispositivo del plano de control se reinicie. A veces, este proceso tarda más de lo esperado, lo que hace que el servicio de metadatos de instancia híbrida (HIMDS) se detenga porque no se puede conectar al punto de conexión de HIS. Este problema puede hacer que el flujo de implementación deje de responder.
Mitigación:
Compruebe si el servicio HIMDS está detenido:
Get-Service HIMDSSi el servicio se detiene, inícielo:
Start-Service HIMDSCompruebe los registros en el primer modo en
C:\CloudDeployment\Logs.Revise el archivo de registro adecuado:
- Fase de validación: compruebe el archivo más reciente con un nombre a partir de EnvironmentValidator.
- Fase de implementación: compruebe el archivo más reciente con un nombre a partir de CloudDeployment.
- Si el estado del archivo es diferente de lo que aparece en el portal, siga los pasos siguientes para volver a sincronizar el estado de implementación con el portal.
El estado de implementación no está sincronizado desde el clúster al portal
El portal muestra que la implementación en la nube está en curso aunque se haya completado o que la implementación tarde más de lo esperado. Este problema se produce porque el estado de implementación en la nube no se sincroniza con el estado real.
Si el portal y el archivo de registro no están sincronizados, reinicie el servicio del controlador LCM para restablecer la conexión con la retransmisión mediante la ejecución de Restart-Service LCMController.
Mitigación en la primera máquina:
Busque los siguientes archivos:
- Para la fase Validar :
C:\ECEStore\efb61d70-47ed-8f44-5d63-bed6adc0fb0f\559dd25c-9d86-dc72-4bea-b9f364d103f8 - Para la fase De implementación :
C:\ECEStore\efb61d70-47ed-8f44-5d63-bed6adc0fb0f\086a22e3-ef1a-7b3a-dc9d-f407953b0f84
- Para la fase Validar :
Actualice el atributo EndTimeUtc ubicado en la primera línea del archivo a una hora futura en función de la hora actual de la máquina. Por ejemplo, <Action Type="CloudDeployment" StartTimeUtc="2025-04-09T08:01:51.9513768Z" Status="Success" EndTimeUtc="2025-04-10T23:30:45.9821393Z">.
Guarde el archivo y ciérrelo.
LCM envía la notificación al proveedor de recursos (RP) de Hyper-Converged Infrastructure (HCI) en un plazo de 5 a 10 minutos.
Para ver los registros del controlador LCM, use el siguiente comando:
Get-WinEvent -LogName "Microsoft.AzureStack.LCMController.EventSource/Admin" -MaxEvents 100 | Where-Object {$_.Message -like "*from edge common logger*"} | Select-Object TimeCreated, Message
Nota:
Este proceso funciona si HCI RP no ha producido un error en el estado de implementación debido a un tiempo de espera (aproximadamente 48 horas desde el inicio de la implementación en la nube).
No se pudo implementar el dispositivo de operaciones desconectadas (error de Appliance.Operations)
Algunos caracteres especiales en la contraseña del certificado TLS de gestión, en la contraseña de certificados externos o en los secretos de configuración de observabilidad del módulo OperationsModule pueden hacer que la implementación falle, mostrando un error: Operación Appliance.Operations [opciones]
Mitigación:
No use caracteres especiales como comillas simples o dobles en las contraseñas.
Los recursos desaparecen del portal
Al iniciar sesión en el portal con la misma cuenta de usuario que funcionó antes, faltan recursos y no aparecen.
Mitigación: inicie el explorador en modo de incógnito, o cierre su navegador y borre todas las cookies. A continuación, vuelva al portal local e inicie sesión de nuevo. Como alternativa, reinicie IRVM01 en el nodo de inicialización y espere hasta que los servicios vuelvan a estar en línea y en buen estado.
Consumo de memoria cuando hay menos de 128 GB de memoria por nodo
El dispositivo de operaciones desconectado usa 78 GB de memoria. Si el nodo tiene menos de 128 GB de memoria, complete estos pasos después de implementar el dispositivo, pero antes de implementar Azure Local instancias.
Mitigación:
- Apague el IRVM01VM en el nodo de inicialización.
- Cambie la configuración de memoria de la máquina virtual IRVM01 a 64 GB.
- Inicie el dispositivo IRVM01.
- Espere la convergencia. Supervise
Get-ApplianceHealthStatehasta que todos los servicios converjan. - Implemente instancias de Azure Local.
Error de implementación
En entornos virtuales, las implementaciones pueden agotar el tiempo de espera y es posible que los servicios no alcancen el 100% de convergencia, incluso después de 8 horas.
Mitigación:
Vuelva a implementar el dispositivo de operaciones desconectado varias veces. Si usa un entorno físico y el problema continúa, recopile registros y abra un ticket de soporte.
implementación de Azure Local con Azure Key Vault
los permisos deRole-Based Access Control (RBAC) en una Azure Key Vault recién creada pueden tardar hasta 20 minutos en propagarse. Si crea el Key Vault en el portal local e intenta finalizar rápidamente la implementación en la nube, es posible que encuentre problemas de permisos durante la validación del clúster.
Mitigación:
Espere 20 minutos después de crear el Azure Key Vault para terminar de implementar el clúster o cree el Key Vault con antelación.
Si crea el Key Vault con antelación, asegúrese de asignar lo siguiente:
- Identidad administrada para cada nodo
- Administrador de Key Vault
- El usuario que implementa en la nube tiene roles explícitos en el Key Vault.
- Key Vault Director de secretos y Key Vault Administrador de acceso a datos.
Este es un script de ejemplo. Modifique y use este script para crear el Key Vault con antelación:
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"
máquinas virtuales de Azure Local
Azure Resource Graph error al agregar o editar etiquetas
Después de iniciar, reiniciar o detener una máquina virtual de Azure Local, los botones de acción de encendido están deshabilitados y el estado no se actualiza correctamente.
Mitigación:
Utilice la Interfaz de Línea de Comandos (CLI) de Azure para agregar o editar etiquetas del recurso.
Inicio, reinicio o eliminación de botones deshabilitados después de detener la máquina virtual
Después de detener una máquina virtual de Azure Local, los botones iniciar, reiniciar y eliminar del portal de Azure están deshabilitados.
Mitigación:
Actualice el explorador y la página.
Eliminación de un recurso de máquina virtual
Al eliminar una máquina virtual del portal, es posible que vea estos mensajes: No se pudo eliminar el recurso asociado y No se pudo eliminar el recurso asociado "nombre" del tipo "Interfaz de red".
Mitigación:
Después de eliminar la máquina virtual, use la CLI para eliminar la interfaz de red asociada. Ejecute este comando:
az stack-hci-vm network nic delete
Azure Kubernetes Service (AKS) en Azure Local
La implementación de AKS falla en escenarios completamente aislados.
Las implementaciones de AKS fallan en escenarios completamente aislados. No hay ninguna mitigación disponible para este problema en las versiones actuales.
Uso de una clave pública existente al crear un clúster de AKS
En esta versión, solo puede usar una clave pública existente al crear un clúster de AKS.
Mitigación:
Para crear una clave SSH, use la siguiente herramienta de línea de comandos y pegue la clave pública en la interfaz de usuario:
ssh-keygen -t rsa
(cat ~\.ssh\id_rsa.pub)|set-clipboard
La actualización o escalado de un grupo de nodos desde el portal está deshabilitado
La actualización o el escalado de un grupo de nodos desde el portal no se admite en esta versión preliminar.
Mitigación:
Use la CLI para actualizar o escalar un grupo de nodos.
az aksarc nodepool update
az aksarc nodepool scale
Limitación de escalabilidad
En el límite de escalado de operaciones desconectadas actuales de Azure Local, la ejecución de más de 20 clústeres de cargas de trabajo puede afectar a la estabilidad del plano de control. Bajo carga sostenida, el plano de control de operaciones desconectadas puede ser menos dinámico a lo largo del tiempo, lo que puede afectar a la capacidad de administración y confiabilidad en recuentos de clústeres más altos.
Mitigación:
Hasta que se expanda el intervalo de escalado admitido, Microsoft recomienda limitar el número de clústeres de cargas de trabajo a 20 o menos para mantener operaciones desconectadas estables y confiables.
Lista de clústeres de Kubernetes vacía en Azure Local (clústeres de Kubernetes)
Al navegar a Azure Local y hacer clic en Clústeres deKubernetes, es posible que vea una lista vacía de clústeres.
Mitigación:
Vaya a Kubernetes>Azure Arc en el menú izquierdo o use la barra de búsqueda. Los clústeres/agrupaciones deben aparecer en la lista.
Notificación de servicio de Kubernetes atascada
Después de actualizar a una nueva versión de Kubernetes, podría ver una notificación bloqueada que dice Save Kubernetes service.
Mitigación:
Vaya a la página Vista de clúster y actualícela. Compruebe si el estado muestra la actualización o la finalización. Si la actualización se completó correctamente, puede omitir la notificación.
El registro de actividad muestra el problema de autenticación
Omita la advertencia del portal en esta versión.
La autenticación de Microsoft Entra falla con el RBAC de Kubernetes
Al intentar crear un clúster de Kubernetes con autenticación Entra, se produce un error.
En esta versión preliminar solo se admiten cuentas locales con RBAC de Kubernetes.
extensiones de Azure Arc
Al ir a extensiones en un clúster de AKS, el botón Agregar está deshabilitado y no aparecen extensiones.
Azure Arc extensiones no se admiten en esta versión preliminar.
El recurso de AKS se muestra en el portal después de la eliminación
Después de eliminar un clúster de AKS desde el portal, el recurso se mantiene mostrando.
Mitigación:
Use la CLI para eliminar y limpiar el clúster. Ejecute este comando:
az aksarc delete
Reinicio de un nodo o la máquina virtual del plano de control
Después de reiniciar un nodo o la máquina virtual del plano de control, el sistema puede tardar hasta una hora en estar completamente listo. Si observa problemas con el portal local, los recursos que faltan o las implementaciones con errores, compruebe el estado del dispositivo mediante OperationsModule para confirmar que todos los servicios están totalmente convergentes.
Suscripciones
El operador crea una suscripción
Después de crear una nueva suscripción como operador, la suscripción aparece en la lista como no accesible y no muestra acceso para el propietario.
Mitigación:
Actualice la ventana del explorador.
Vista de suscripciones de operador (tiempo de espera)
Si ha iniciado sesión como operador, es posible que vea una pantalla de tiempo de espera y no pueda ver, enumerar o crear suscripciones.
Causa:
Este problema se produce cuando se elimina un propietario de la suscripción o no se sincroniza desde el sistema de identidades de origen al plano de control local. Al intentar ver las suscripciones, se produce un error en el proceso porque la identidad del propietario no está disponible.
Mitigación:
Si el portal no funciona, use CLI de Azure o la API REST para crear y enumerar suscripciones. Para asignar un propietario diferente, use la API REST y escriba el subscriptionOwnerId parámetro al crear la suscripción.
CLI de Azure
Administración de nubes
Al usar los az cloud comandos, como az cloud register, az cloud showo az cloud set, podría surgir problemas si usa letras mayúsculas en el nombre de la nube.
Mitigación:
Use solo letras minúsculas para los nombres de nube en az cloud subcomandos, como register, showo set.
Creación de suscripciones
CLI de Azure no admite proporcionar subscriptionOwnerId para nuevas suscripciones. Esto hace que el operador sea el propietario predeterminado de las suscripciones recién creadas sin una manera de cambiar el propietario actualmente.
Mitigación:
Use az rest para crear suscripciones con un propietario diferente si necesita automatizar el proceso con otro propietario.
portal de Azure
Error al cerrar sesión
Al seleccionar Cerrar sesión, la solicitud no funciona.
Mitigación:
Cierre el explorador y, a continuación, vaya a la dirección URL del portal.
Azure Resource Manager
Especificaciones de plantilla
No se admiten las especificaciones de plantilla. Las implementaciones que utilizan plantillas ARM con especificaciones de plantilla fallan.
Escenarios no soportados
No se admiten los siguientes escenarios:
- máquinas virtuales que no son de Azure Local
- clústeres que no son de AKS
Si prueba estos escenarios, estos sistemas deben confiar en la entidad de certificación personalizada y usted debe pasar -custom-ca-cert al habilitarlos con Arc.
Contenido relacionado
- Operaciones desconectadas para Azure Local.
Esta característica solo está disponible en Azure Local 2602 o posterior.