AKS扩展部署失败:Microsoft.KubernetesConfiguration版本未找到求助
问题描述
我们计划在Azure Marketplace提供Kubernetes集群服务,已构建所需的CNAB Bundle并在Partner Center创建产品/计划,该Bundle已通过微软验证并上线。但测试部署时,创建Microsoft.KubernetesConfiguration extensions环节失败,报错指定API版本下资源类型未找到。使用ARM-TTK验证发现警告后,更换API版本为2023-05-01重新发布,虽通过验证但仍报错。已确认公司Azure订阅中ExtensionTypes特性已注册,附上使用的ARM模板,寻求问题解决方法。
报错信息
初始报错(API版本2024-11-01)
{ "code": "InvalidResourceType", "message": "Resource type 'extensions' of provider namespace 'Microsoft.KubernetesConfiguration' was not found in global location for api version '2024-11-01'." }
更换API版本为2023-05-01后的报错
{ "code": "InvalidResourceType", "message": "Resource type 'extensions' of provider namespace 'Microsoft.KubernetesConfiguration' was not found in global location for api version '2023-05-01'." }
使用的ARM模板
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "variables": { "plan-name": "myPlanName", "plan-publisher": "myCompanyName", "plan-offerID": "planOfferID", "releaseTrain": "stable", "clusterExtensionTypeName": "myClusterExtensionTypeName" }, "plan": { "name": "myPlanName", "publisher": "myCompanyName", "product": "productName" }, "parameters": { "location": { "type": "string", "metadata": { "description": "部署区域" } }, "adminUsername": { "type": "string", "defaultValue": "azureuser", "metadata": { "description": "Linux节点的管理员用户名" } }, "clusterName": { "type": "string", "defaultValue": "myApp-aks", "metadata": { "description": "AKS集群名称" } }, "clusterDnsPrefix": { "type": "string", "defaultValue": "myAppdns", "metadata": { "description": "AKS集群的DNS前缀" } }, "agentCount": { "type": "int", "defaultValue": 3, "metadata": { "description": "AKS集群中的节点数量" } }, "agentVMSize": { "type": "string", "defaultValue": "Standard_DS2_v2", "metadata": { "description": "AKS节点的VM大小" } }, "extensionName": { "type": "string", "defaultValue": "myClusterExtensionTypeName", "metadata": { "description": "Kubernetes扩展名称" } }, "configurationSettings": { "type": "object", "metadata": { "description": "来自UI定义的配置设置(命名空间、副本数等)" } }, "sshPublicKey": { "type": "string", "metadata": { "description": "用于访问AKS Linux节点的SSH公钥" } } }, "resources": [ { "type": "Microsoft.ContainerService/managedClusters", "apiVersion": "2023-10-01", "name": "[parameters('clusterName')]", "location": "[parameters('location')]", "identity": { "type": "SystemAssigned" }, "properties": { "dnsPrefix": "[parameters('clusterDnsPrefix')]", "agentPoolProfiles": [ { "name": "agentpool", "count": "[parameters('agentCount')]", "vmSize": "[parameters('agentVMSize')]", "osType": "Linux", "type": "VirtualMachineScaleSets", "mode": "System" } ], "linuxProfile": { "adminUsername": "[parameters('adminUsername')]", "ssh": { "publicKeys": [ { "keyData": "[parameters('sshPublicKey')]" } ] } } } }, { "type": "Microsoft.KubernetesConfiguration/extensions", "apiVersion": "2023-05-01", "name": "[parameters('extensionName')]", "dependsOn": [ "[resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName'))]" ], "identity": { "type": "SystemAssigned" }, "plan": { "name": "[variables('plan-name')]", "publisher": "[variables('plan-publisher')]", "product": "[variables('plan-offerID')]" }, "properties": { "extensionType": "[variables('clusterExtensionTypeName')]", "autoUpgradeMinorVersion": true, "configurationSettings": "[parameters('configurationSettings')]", "scope": { "cluster": { "releaseNamespace": "[parameters('clusterDnsPrefix')]" } } } } ], "outputs": { "plan-name": { "type": "string", "value": "[variables('plan-name')]" }, "plan-publisher": { "type": "string", "value": "[variables('plan-publisher')]" }, "plan-offerID": { "type": "string", "value": "[variables('plan-offerID')]" }, "releaseTrain": { "type": "string", "value": "[variables('releaseTrain')]" }, "clusterExtensionTypeName": { "type": "string", "value": "[variables('clusterExtensionTypeName')]" } } }
问题排查与解决建议
1. 确认资源类型的API版本兼容性
Microsoft.KubernetesConfiguration/extensions资源的有效API版本需与目标Azure区域支持的版本匹配。执行以下步骤确认:
- 运行Azure CLI命令查看该资源类型在目标区域支持的API版本:
az provider show --namespace Microsoft.KubernetesConfiguration --query "resourceTypes[?resourceType=='extensions'].apiVersions" -o table - 选择命令返回的稳定版本(如
2022-11-01)替换当前模板中的apiVersion字段。
2. 修正扩展资源的命名格式
AKS扩展资源的命名必须关联目标AKS集群,正确格式为{clusterName}/{extensionName},而非单独的extensionName。修改模板中扩展资源的name字段:
"name": "[concat(parameters('clusterName'), '/', parameters('extensionName'))]",
3. 添加扩展资源的位置字段
扩展资源的location必须与关联AKS集群的位置一致,当前模板缺少该字段,需补充:
"type": "Microsoft.KubernetesConfiguration/extensions", "apiVersion": "2022-11-01", "name": "[concat(parameters('clusterName'), '/', parameters('extensionName'))]", "location": "[parameters('location')]", // 添加此行 "dependsOn": [ "[resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName'))]" ],
4. 验证Microsoft.KubernetesConfiguration提供商注册状态
即使已注册ExtensionTypes特性,仍需确认整个提供商在订阅中的注册状态:
- 运行Azure CLI命令:
az provider show --namespace Microsoft.KubernetesConfiguration --query "registrationState" - 若状态不是
Registered,执行注册命令:az provider register --namespace Microsoft.KubernetesConfiguration
5. 检查Partner Center产品配置
- 确认Partner Center中产品/计划的
extensionType值与模板中variables('clusterExtensionTypeName')完全一致,包括大小写和拼写。 - 验证CNAB Bundle中的扩展定义与ARM模板配置匹配,特别是API版本和资源类型。
内容的提问来源于stack exchange,提问作者user26660520
相关产品推荐
相关产品推荐

