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

Kubernetes集群中External-DNS无法列出Route53托管区权限排查求助

排查External-DNS使用节点角色而非指定服务账户角色的问题

以下是针对性的排查步骤,按优先级排序:

1. 确认Helm Chart的服务账户配置是否正确

Bitnami的External-DNS Chart默认会创建服务账户,但如果安装时参数配置错误,会导致Pod使用错误的账户:

  • 执行命令检查服务账户的基本信息:
    kubectl get sa external-dns -n add-ons -o yaml
    
    重点看:
    • automountServiceAccountToken是否为true(默认应为true,若设为false则Pod无法获取服务账户token)
    • metadata.annotations中是否包含eks.amazonaws.com/role-arn,且值为你关联的IAM角色ARN
  • 检查Helm安装时的参数,确认没有覆盖服务账户配置:
    比如是否用了--set serviceAccount.name=xxx指定了错误的账户名,或者--set serviceAccount.create=false导致使用默认账户。

2. 验证IAM角色的信任策略配置

IAM角色必须允许目标服务账户通过OIDC身份AssumeRole,否则Pod无法获取角色凭证,会 fallback 到节点角色:

  • 查看IAM角色的信任策略,确保内容类似:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "arn:aws:iam::你的AWS账号ID:oidc-provider/集群OIDC提供商地址"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "集群OIDC提供商地址:sub": "system:serviceaccount:add-ons:external-dns"
            }
          }
        }
      ]
    }
    
    注意替换其中的账号ID、OIDC提供商地址,确保sub字段严格匹配服务账户的完整标识。

3. 检查Pod的服务账户挂载及环境变量

Pod必须正确关联目标服务账户,并且获取到Web Identity相关的环境变量:

  • 查看Pod的配置:
    kubectl get pod <external-dns-pod-name> -n add-ons -o yaml
    
    确认spec.serviceAccountName为external-dns,且spec.automountServiceAccountToken不为false(若未显式设置则默认是true)。
  • 进入Pod检查环境变量:
    kubectl exec <external-dns-pod-name> -n add-ons -- env | grep AWS
    
    正常情况下应该输出AWS_WEB_IDENTITY_TOKEN_FILE和AWS_ROLE_ARN两个变量,若缺失则说明Pod未正确获取Web Identity凭证,会使用节点角色。

4. 确认集群OIDC提供商配置正确

  • 获取集群的OIDC issuer地址:
    aws eks describe-cluster --name 你的集群名称 --query "cluster.identity.oidc.issuer" --output text
    
    确保这个地址和IAM角色信任策略中的OIDC提供商ARN完全一致(ARN格式为arn:aws:iam::账号ID:oidc-provider/issuer地址)。

5. 排查Bitnami Chart的特殊配置

Bitnami 6.10.2版本的External-DNS Chart可能存在的特殊配置问题:

  • 检查是否设置了securityContext相关参数导致服务账户token挂载失败,比如fsGroup设置不当可能影响token文件的权限。
  • 查看Chart的默认values.yaml,确认没有被自定义参数覆盖关键配置,比如serviceAccount.annotations是否被正确传入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:05:29