解决在已启用 Arc 的 AKS 中的 AKS 工作负荷群集上启用或禁用 Azure Arc 时出现的错误

适用于:Azure 本地 AKS 上的 AKS、Windows Server 上的 AKS

本文介绍在使用 PowerShell cmdlet Enable-AksHciArcConnection Disable-AksHciArcConnection 和 AKS Arc 中将 AKS 工作负荷群集连接到 Azure Arc 时可能会遇到的错误(及其解决方法)。有关本文未涵盖的问题,请参阅 已启用 Arc 的 Kubernetes 疑难解答。

如果列出的解决方法都不适用于你,还可以 提出支持问题

错误:“找不到名为”my-aks-cluster“的工作负荷群集”

此错误表示尚未创建工作负荷群集,或者错误地拼写了工作负荷群集的名称。

运行 Get-AksHciCluster 以确保具有正确的名称或要连接到 Arc 的群集存在。

错误:“System.Management.Automation.RemoteException 正在启动载入进程群集”azure-arc-onboarding“集...”

使用 Windows Admin Center 创建工作负荷群集并将其连接到已启用 Arc 的 Kubernetes 时,可能会出现以下错误:

System.Management.Automation.RemoteException Starting onboarding process Cluster "azure-arc-onboarding" set. User "azure-arc-onboarding" set. Context "azure-arc-onboarding" created. Switched to context "azure-arc-onboarding". Azure login az login: error: argument --password/-p: expected one argument usage: az login [-h] [--verbose] [--debug] [--only-show-errors] [--output {json,jsonc,yaml,yamlc,table,tsv,none}] [--query JMESPATH] [--username USERNAME] [--password PASSWORD] [--service-principal] [--tenant TENANT] [--allow-no-subscriptions] [-i] [--use-device-code] [--use-cert-sn-issuer] : Job Failed Condition]

要解决此问题,请查看以下选项:

  • 选项 1:删除工作负载群集,然后使用 Windows Admin Center 重试。
  • 选项 2:在 PowerShell 中,运行 Get-AksHciCluster 命令来检查是否已成功创建群集,然后使用 Enable-AksHciArcConnection 将群集连接到 Arc。

如果使用“Connect-AzAccount”登录到 Azure,“Enable-AksHciArcConnection”将失败

用于 Connect-AzAccount 登录到 Azure 时,可以将不同的订阅设置为默认上下文,而不是作为输入 Set-AksHciRegistration提供的默认上下文。 然后运行 Enable-AksHciArcConnection时,该命令需要在其中 Set-AksHciRegistration使用的订阅。 但是,Enable-AksHciArcConnection 会使用 Connect-AzAccount 来设置默认订阅,因此可能导致出现错误。

要防止出现此错误,请按照下述选项之一操作:

  • 选项 1:使用你在首次运行命令将 AKS 主机连接到 Azure 进行计费时使用的相同参数(订阅和资源组)运行 Set-AksHciRegistration 登录到 Azure。 然后,可将 Enable-AksHciArcConnection -Name <ClusterName> 与默认值一起使用,此时群集将连接到对订阅和资源组进行计费的 AKS 主机下的 Arc。

  • 选项 2:使用所有参数(subscriptionresource grouplocationtenantsecret)运行 Enable-AksHciArcRegistration,将群集连接到其他订阅和资源组(而非 AKS 主机)下的 Azure Arc。 如果你没有足够的权限来使用 Azure 帐户将群集连接到 Azure(例如,你不是订阅所有者),那么还应运行 Enable-AksHciArcRegistration

错误:“等待条件超时”

此错误通常表示出现下述问题之一:

  • 群集是在虚拟化环境中的 Azure VM 中创建的,或者在多个虚拟化级别上部署了 Azure Local 上的 AKS。
  • Internet 速度缓慢导致超时。

如果上述方案之一适用于你,请运行 Disable-AksHciArcConnection,然后重试连接。 如果上述方案不适用于你,请 针对 Azure 本地上的 AKS 提出支持问题

错误:“找不到机密”sh.helm.release.v1.azure-arc.v1”

此错误表示无法访问你的 Kubernetes API 服务器。

再次尝试运行Disable-AksHciArcConnection该命令,然后转到Azure 门户,确认connectedCluster资源已实际删除。 还可运行 kubectl get ns -A 来确认群集上没有命名空间 azure-arc

错误:“连接到 Azure 失败。 请运行“Set-AksHciRegistration”,然后重试”

此错误表示你到 Azure 的登录凭据已过期。

用于 Set-AksHciRegistration 在再次运行 Enable-AksHciArcConnection 命令之前登录到 Azure。 在重新运行 Set-AksHciRegistration 时,请确保使用你在首次向 Azure 注册 AKS 主机进行计费时使用的相同订阅和资源组详细信息。 如果使用不同的订阅或资源组重新运行该命令,则不会注册这些内容。 设置 Set-AksHciRegistration订阅和资源组后,在卸载 AKS Arc 的情况下无法更改这些订阅和资源组。

错误:“'My-Cluster'不是有效的群集名称。 名称必须为小写,并且匹配正则表达式模式:“^[a-z0-9][a-z0-9-]*[a-z0-9]$'”

此错误表示工作负载群集不遵循 Kubernetes 命名约定。

如错误所示,请确保群集名称为小写,并匹配正则表达式模式:“^[a-z0-9][a-z0-9-]*[a-z0-9]$”。

错误:“addons.msft.microsoft ”demo-arc-onboarding“已存在”

此错误通常意味着已将 AKS 群集连接到已启用 Arc 的 Kubernetes。 若要确认它已连接,请转到Azure 门户,然后在运行Set-AksHciRegistration时提供的订阅和资源组(如果使用了默认值)或Enable-AksHciArcConnection(如果未使用默认值)。 还可以通过运行 az connectedk8s show Azure CLI 命令来确认 Azure 本地群集上的 AKS 是否已连接到 Azure。 如果未看到工作负荷群集,请运行 Disable-AksHciArcConnection 并重试。

错误:“autorest/azure:服务返回错误。 Status=404 Code=“ResourceNotFound”...”

此错误意味着 Azure 找不到connectedCluster与群集关联的 Azure 资源管理器资源:

“autorest/azure:服务返回错误。 Status=404 Code=“ResourceNotFound” Message=“找不到资源组”AKS-HCI2“下的资源组”Microsoft.Kubernetes/connectedClusters/my-workload-cluster”。 有关更多详细信息,请转到 https://aka.ms/ARMResourceNotFoundFix"]”

在以下情况下,你可能会遇到此错误:

  • 你在运行 Disable-AksHciArcConnection cmdlet 时提供了错误的资源组或订阅。
  • 你在 Azure 门户上手动删除了资源。
  • Azure 资源管理器找不到 Azure 资源。

要解决此错误,如错误消息中所述,请参阅解决“找不到资源”错误

错误:“群集加载项 arc 卸载错误:找不到命名空间”azure-arc”

此错误通常意味着已从工作负荷群集中卸载 Arc 代理,或者使用kubectl命令手动删除azure-arc命名空间。

转到Azure 门户,确认没有任何泄露的资源。 例如,验证订阅和资源组中是否看不到 connectedCluster 资源。

错误:“未正确配置 Azure 订阅”

如果尚未使用已启用 Arc 的 Kubernetes 资源提供程序配置 Azure 订阅,可能会遇到此问题。 我们当前检查确认 Microsoft.KubernetesMicrosoft.KubernetesConfiguration 已配置。

有关启用这些资源提供程序的详细信息,请参阅 为已启用 Arc 的 Kubernetes 注册提供程序。

错误:“无法在”azure-arc“命名空间中读取 ConfigMap ”azure-clusterconfig”

禁用现有连接后,尝试在 AKS 群集上重新启用 Arc 连接时可能会遇到此问题。 错误是由于更改了在其中存储 Azure Arc 机密的命名空间。

导致错误的步骤如下:

  1. 使用 Enable-AksHciArcConnection -name $clusterName.. 将工作负荷群集连接到 Azure Arc。
  2. 断开群集与 Azure Arc 的连接: Disable-AksHciArcConnection -name $clusterName
  3. 再次使用以下命令将工作负荷群集连接到 Azure Arc: Enable-AksHciArcConnection -name $clusterName

错误为:

returned a non zero exit code 1 [Error: Job azure-arc-onboarding terminated with Failed to run CLI command: Error from server (NotFound): namespaces "azure-arc"
not found
System.Management.Automation.RemoteException
ERROR: Unable to read ConfigMap 'azure-clusterconfig' in 'azure-arc' namespace:
Error Response: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"configmaps \"azure-clusterconfig\" not
found","reason":"NotFound","details":{"name":"azure-clusterconfig","kind":"configmaps"},"code":404}
System.Management.Automation.RemoteException
System.Management.Automation.RemoteException
: Job Failed Condition

Enable-AksHciArcConnection 始终失败,运行 Disable-AksHciArcConnection后,azure-arc-release 命名空间中还有一个剩余的机密。 若要检查机密是否存在,可以运行以下命令并确保未列出机密:

kubectl get secret -nazure-arc-release sh.helm.release.v1.azure-arc.v1

若要解决此问题,请运行 Disable-AksHciArcConnection后删除 azure-arc-release 命名空间:

$clusterName = "<name of cluster>"
Get-AksHciCredential -name $clusterName
kubectl delete namespace azure-arc-release
Disable-AksHciArcConnection -name $clusterName
Enable-AksHciArcConnection -name $clusterName