排查 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)扩展操作失败并出现以下错误:错误: {无法从路径 [] 安装图表,以便发布 [dapr-ext]: err [呈现的清单包含已存在的资源。 无法继续安装:命名空间“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 个节点不可计划,3 个节点具有卷节点相关性冲突。 抢占: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 反馈社区。