排查 Dapr 扩展安装错误

本文讨论在安装或更新适用于 Microsoft Azure Kubernetes 服务 (AKS) 或 Arc for Kubernetes 的分布式应用程序运行时 (Dapr) 扩展时可能收到的一些常见错误消息。

方案 1:安装失败,但未显示错误消息

如果扩展在创建或更新时生成错误消息,可以通过运行 az k8s-extension list 命令来检查创建失败的位置:

az k8s-extension list --resource-group <my-resource-group-name> \
    --cluster-name <my-cluster-name> \
    --cluster-type managedClusters

如果在配置设置(例如 global.ha=false 而不是 global.ha.enabled=false)中使用了错误的密钥,则返回以下 JSON 状态。 错误消息在 属性中 message 捕获。

"statuses": [
  {
    "code": "InstallationFailed",
    "displayStatus": null,
    "level": null,
    "message": "Error: {failed to install chart from path [] for release [dapr-1]: err [template: dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_poddisruptionbudget.yaml:1:17: executing \"dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_poddisruptionbudget.yaml\" at <.Values.global.ha.enabled>: can't evaluate field enabled in type interface {}]} occurred while doing the operation : {Installing the extension} on the config",
    "time": null
  }
],

下面是 JSON 错误消息的另一个示例:

"statuses": [
  {
    "code": "InstallationFailed",
    "displayStatus": null,
    "level": null,
    "message": "The extension operation failed with the following error: unable to add the configuration with configId {extension:microsoft-dapr} due to error: {error while adding the CRD configuration: error {failed to get the immutable configMap from the elevated namespace with err: configmaps 'extension-immutable-values' not found }}. (Code: ExtensionOperationFailed)",
    "time": null
  }
]

解决方案 1:重启群集、注册服务提供商或删除并重新安装 Dapr

若要解决此问题,请尝试以下方法:

方案 2:目标 Dapr 版本不存在

尝试安装 Dapr 扩展以 面向特定版本时,会收到一条错误消息,指出 Dapr 版本不存在:

(ExtensionOperationFailed) 扩展操作失败,出现以下错误:无法解析给定值的扩展版本。

代码:ExtensionOperationFailed

消息:扩展操作失败,出现以下错误:无法解析给定值的扩展版本。

解决方案 2:为受支持的 Dapr 版本再次安装

请重试以安装扩展。 请确保使用 受支持的 Dapr 版本

方案 3:目标 Dapr 版本存在,但不在指定区域中

由于某些版本的 Dapr 并非在所有区域都可用,因此可能会收到以下错误消息:

(ExtensionTypeRegistrationGetFailed) 扩展类型 microsoft.dapr 未在 regionname <>中注册。

代码:ExtensionTypeRegistrationGetFailed

消息:未在 regionname <中注册扩展类型 microsoft.dapr>

解决方案 3:在不同区域中安装

支持 Dapr 版本的区域中安装。

方案 4:已安装 Dapr

尝试安装适用于 AKS 或 Arc for Kubernetes 的 Dapr 扩展,但收到一条错误消息,指示 dapr-system 命名空间已存在。 此错误消息类似于以下文本:

(ExtensionOperationFailed) 扩展操作失败,出现以下错误:错误: {failed to install chart from path [] for release [dapr-ext]: err [rendered manifests contain a resource that already exists. 无法继续安装:命名空间“dapr-system”中的 ServiceAccount“dapr-operator”存在,无法导入当前版本:所有权元数据无效;注释验证错误:键“meta.helm.sh/release-name”必须等于“dapr-ext”:当前值为“dapr”]}执行操作时发生:{在配置上安装扩展}

解决方案 4:首先卸载 Dapr OSS

在安装 Dapr 扩展之前卸载 Dapr OSS。 有关详细信息,请参阅 从 Dapr OSS 迁移到 AKS 的 Dapr 扩展

方案 5:放置服务器 Pod 处于错误状态

遇到以下错误:

0/4 个节点可用:1 个节点 (s) 不可计划,3 个节点 (s) 存在卷节点相关性冲突。 preemption:0/4 个节点可用:4 抢占对计划没有帮助。

当放置服务器 Pod 尝试使用在与放置服务器 Pod 本身不同的区域中创建的永久性卷时,可能会出现此问题。

解决方案 5:在多个可用性区域中安装 Dapr 或将放置服务限制为特定可用性区域

若要解决此问题,请使用以下某种方法:

  • 遵循在 HA 模式下在多个可用性区域中安装 Dapr 中的建议方法。

  • 通过创建自定义存储类并将其用于放置服务,将放置服务限制为特定的可用性区域,然后运行以下命令:

    az k8s-extension create --cluster-type managedClusters
    --cluster-name <clustername>
    --resource-group <resourcegroup>
    --name <name>
    --extension-type Microsoft.Dapr
    --auto-upgrade-minor-version <minorversion>
    --version <version>
    --configuration-settings "dapr_placement.volumeclaims.storageClassName=zone-restricted"
    

    下面是创建自定义存储类的示例:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
     name: zone-restricted
    provisioner: disk.csi.azure.com
    reclaimPolicy: Delete
    allowVolumeExpansion: true
    volumeBindingMode: WaitForFirstConsumer
    allowedTopologies:
    - matchLabelExpressions:
     - key: topology.kubernetes.io/zone
       values:
       - centralus-1
    parameters:
     storageaccounttype: StandardSSD_LRS
    

后续步骤

如果仍然遇到安装问题,请浏览 AKS 故障排除指南Dapr OSS 故障排除指南

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。