排查 Kubernetes 应用程序产品/服务的部署失败问题
本文介绍如何排查在 Microsoft Azure 市场 上接受的 Kubernetes 应用程序产品/服务的失败部署问题。 启动 Kubernetes 产品/服务的购买时,Azure 会部署一个 Azure 资源管理器 模板(ARM 模板),该模板会尝试安装所需的资源来满足产品/服务。 但是,出于各种原因,ARM 模板部署可能会失败。
故障排除清单
检查部署操作日志
若要确定部署失败的原因,必须检查 部署操作日志。 如果仍在Azure 门户中查看部署失败页面,请从以下过程的步骤 5 开始。 如果退出Azure 门户或导航到另一个门户页面,请按照以下步骤操作:
在 Azure 门户中,搜索并选择“资源组”。
在资源组列表中,选择尝试在其中部署 Kubernetes 应用程序的资源组的名称。
在资源组的“概述”页上,找到“概要”部分,然后选择“部署”字段旁边的超链接文本。 此文本显示资源组的资源部署历史记录的成功率(例如 ,4 次失败,30 次成功)。
在资源组的尝试部署列表中,根据以下相应字段选择 失败的部署的部署名称 值:
- 上次修改 时间(时间戳)
- Duration
- 状态 (显示 失败 而不是 成功)
在部署页上的“部署详细信息”列表中,找到“状态”字段具有“冲突”值的资源。 选择该资源的“操作详细信息”链接。
在“操作详细信息”窗格中,找到“状态”属性(显示“冲突”值),并检查属性下方的“状态”消息框。
状态消息中的 JSON 代码显示一
Failed
个status
属性。 它还显示error
包含子属性code
的属性(错误代码名称(如“ExtensionOperationFailed”)和message
(错误消息说明,如“扩展操作失败并出现以下错误:无法从给定值解析扩展版本”。) JSON 代码类似于以下文本:{ "status": "Failed", "error": { "code": "ExtensionOperationFailed", "message": "The extension operation failed with the following error: Failed to resolve the extension version from the given values." } }
以下部分讨论了一些常见故障方案的原因和解决方案。
原因 1:应用程序未安装在所选 AKS 群集上
如果 Kubernetes 应用程序未安装在所选Azure Kubernetes 服务(AKS)群集上,将收到类似于以下文本的错误消息:
请求无法订阅 https://management.azure.com/subscriptions/<guid>/resourceGroups/resourceGroup/providers/Microsoft.ContainerService/managedclusters/aks-cluster/extensionaddons/default?api-version=2021-03-01。 错误代码:禁止。 原因:禁止。
{ "error": { "code": "AuthorizationFailed", "message": "The client '<client-guid>' with object id '<client-guid>' does not have authorization to perform action 'Microsoft.ContainerService/managedclusters/extensionaddons/read' over scope '/subscriptions/<subscription-guid>/resourceGroups/resourceGroup/providers/Microsoft.ContainerService/managedclusters/aks-cluster/extensionaddons/default' or the scope is invalid. If access was recently granted, please refresh your credentials." } }
解决方案 1a:注册 Microsoft.KubernetesConfiguration 资源提供程序
注册 Microsoft.KubernetesConfiguration 资源提供程序。 在这种情况下,安装失败,因为部署 Kubernetes 应用程序需要 Microsoft.KubernetesConfiguration 资源提供程序。 有关注册说明,请参阅Azure 市场文章“部署容器产品/服务”中的“注册资源提供程序”部分。
解决方案 1b:维护 AKS 群集的运行状况
通常,应 检查 AKS 群集 的运行状况,以防止在安装期间发生其他问题。 若要确保群集正常运行,请解决群集上标识的问题。
解决方案 1c:检查 Azure Monitor 活动日志
如果群集正常运行,但安装仍然失败,该怎么办? 在这种情况下,请检查 AKS 群集中的 Azure Monitor 活动日志 ,以查找安装阶段发生故障的原因。
原因 2:订阅具有资源约束
由于 Azure 订阅具有资源约束,因此遇到一条错误消息,该错误消息类似于以下文本:
OfferId 的套餐不支持“未知”付款方式:“offer-name>”、PlanId“<<subscription-plan-name>”。
解决方案 2:确保订阅满足所需的计费配置
验证订阅的计费配置,确保它满足 Kubernetes 应用程序的资源要求。 有关详细信息,请参阅 “购买验证检查”。
原因 3:产品/服务在你的区域中不可用
你会收到一条错误消息,指出产品/服务无法在特定地理区域中销售。 错误消息可能类似于以下文本:
套餐:“<offer-name>”不能由订阅购买:“<subscription-guid>”,因为它不在市场中出售:“<two-letter-region-code”。
解决方案 3:重新检查产品/服务是否仍然可用
验证产品/服务是否仍可用,并仔细检查产品/服务适用的区域。
原因 4:发生内部服务器错误
Kubernetes 应用程序未安装,因为扩展资源未安装。 此失败将生成以下错误消息:
扩展无法部署,出现内部服务器错误
解决方案 4:删除并重新安装扩展
首先,删除作为产品/服务购买的一部分的扩展资源。 然后重新安装扩展。
原因 5:Helm 图表未安装
Helm 图表中的错误生成以下错误消息:
无法从路径 [] 安装图表以供发布
解决方案 5:重新检查你在 ARM 模板中创建的条目
请确保在 ARM 模板部署的Azure 门户上输入的值和选择在 Kubernetes 应用程序中是可接受的。
原因 6:你尚未接受此计划订阅的法律条款
在使用订阅之前,需要接受映像的法律条款。 否则,会收到以下错误消息:
你尚未接受此订阅的法律条款:此计划的“<subscription-guid>”。 在使用订阅之前,需要接受映像的法律条款。
解决方案 6:接受法律条款
可以通过Azure 门户进行部署。 Azure 门户提供用于阅读和接受法律条款的 UI 体验。
后续步骤
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。