You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用托管身份连接AKS与Azure SQL遇故障求助

排查AKS aad-pod-identity连接Azure SQL失败问题

核心问题分析

当前MIC持续执行reconcile、NMI返回404且出现未知ClientID的问题,主要由配置格式错误、身份权限分配对象错误或标签不匹配导致,以下是针对性排查修复步骤:

1. 修复AzureIdentity资源的ResourceID格式错误

你的AzureIdentity配置中ResourceID存在语法错误,resourcegroups后缺少闭合斜杠:

# 错误格式
ResourceID: /subscriptions/<sub id>/resourcegroups/<MC_resource_group/providers/Microsoft.ManagedIdentity/userassignedIdentities/sqlpodid

修正后:

ResourceID: /subscriptions/<sub id>/resourcegroups/<MC_resource_group>/providers/Microsoft.ManagedIdentity/userassignedIdentities/sqlpodid

ResourceID必须完全匹配托管身份的官方资源ID,格式错误会导致MIC无法识别身份,进入持续reconcile循环。

2. 修正Kubelet身份的角色分配对象

你当前给AKS集群的ClientID分配了Managed Identity Operator角色,但正确对象应为AKS节点池的kubelet托管身份(而非AKS集群本身的ClientID)。

先获取节点池kubelet身份的ClientID:

az aks show -g <resource-group> -n <aks-cluster-name> --query "identityProfile.kubeletidentity.clientId" -o tsv

再重新执行角色分配:

az role assignment create --role "Managed Identity Operator" --assignee <KUBELET_CLIENT_ID> --scope <FULL_RESOURCE_ID_OF_SQLPODID>

3. 验证Pod标签与AzureIdentityBinding的Selector匹配

确保Spring Boot Pod的aadpodidbinding标签值完全匹配AzureIdentityBinding的Selector字段(Kubernetes标签大小写敏感):

  • 检查Pod标签:
    kubectl get pods <pod-name> -o jsonpath='{.metadata.labels.aadpodidbinding}'
    
    输出必须为connectsqlserver,不匹配则修改Pod部署的标签配置。

4. 排查未知ClientID来源

NMI日志中的未知ClientID,可能源于以下情况:

  • Spring Boot配置错误:检查数据源配置的msiClientId是否为sqlpodid的正确ClientID,避免拼写错误或误用其他身份ID;同时确认authentication=ActiveDirectoryMSI未被其他配置覆盖。
  • Pod内其他进程请求token:查看Pod容器日志,排查是否有其他进程向metadata服务发起token请求,导致NMI捕获到未知身份请求。

5. 确认Azure SQL的AD用户配置

虽然你已创建数据库包含用户,仍需确认:

  • 托管身份sqlpodid的显示名称/主体名称与SQL中创建的用户完全一致(CREATE USER sqlpodid FROM EXTERNAL PROVIDER中的sqlpodid是托管身份的显示名称或主体ID)。
  • 若使用非包含数据库,需先在服务器级别创建登录:
    CREATE LOGIN [sqlpodid] FROM EXTERNAL PROVIDER;
    

6. 验证aad-pod-identity组件状态

检查MIC和NMI Pod是否正常运行:

kubectl get pods -n kube-system -l app.kubernetes.io/name=aad-pod-identity

若Pod异常,重新部署组件:

helm repo add aad-pod-identity https://raw.githubusercontent.com/Azure/aad-pod-identity/master/charts
helm install aad-pod-identity aad-pod-identity/aad-pod-identity --namespace kube-system

内容的提问来源于stack exchange,提问作者Sumit Sagar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:14:55