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

Azure ACI Linux连接器CrashLoopBackOff权限问题求助

解决AKS虚拟节点ACI连接器Pod CrashLoopBackOff(403子网读权限)问题

问题根源

当AKS集群使用用户分配身份时,虚拟节点依赖的ACI托管身份会被自动创建,但该身份不会默认获得目标子网的Microsoft.Network/virtualNetworks/subnets/read权限,导致ACI连接器Pod启动时触发403授权错误,进入CrashLoopBackOff状态。

解决方案步骤

1. 定位自动创建的ACI托管身份ID

该身份命名规则通常为aks-virtual-node-<AKS集群名称>-<区域>,可通过Azure CLI查询:

az identity list --query "[?contains(name, 'aks-virtual-node-<你的AKS集群名>')].id" -o tsv

也可以通过Azure门户的MC开头的AKS托管资源组找到该用户分配身份。

2. 通过Terraform为ACI托管身份添加子网Reader角色

在现有Terraform配置中添加角色分配资源,给ACI身份授予子网的只读权限(遵循最小权限原则,无需Network Contributor):

# 可选:用data块查询自动创建的ACI托管身份,避免硬编码ID
data "azurerm_user_assigned_identity" "aci_virtual_node" {
  name                = "aks-virtual-node-<你的AKS集群名>"
  resource_group_name = "MC_<你的AKS资源组名>_<集群名>_<区域>"
}

# 为ACI托管身份分配子网Reader角色
resource "azurerm_role_assignment" "aci_subnet_reader" {
  scope                = azurerm_subnet.aci_subnet.id # 替换为你的ACI子网资源引用
  role_definition_name = "Reader"
  principal_id         = data.azurerm_user_assigned_identity.aci_virtual_node.principal_id
}

若已获取身份ID,也可直接将principal_id设为对应字符串。

3. 应用配置并重启ACI连接器Pod

  • 执行Terraform配置更新:
    terraform apply
    
  • 重启kube-system命名空间下的ACI连接器Pod:
    kubectl delete pod -n kube-system -l app=aci-connector-linux
    

重启后Pod将使用更新后的权限启动,不再触发403错误。

额外注意事项

  • 确认目标子网已正确配置委托:Microsoft.ContainerInstance/containerGroups
  • 确保执行Terraform的账号拥有User Access Administrator或Owner权限,能够创建角色分配

内容的提问来源于stack exchange,提问作者Nayden Van

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:05:23