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

创建KOPS集群后遇kubectl未授权错误,寻求排查方案

解决KOPS集群IAM认证Unauthorized问题的排查方案

先把你遇到的错误日志贴出来方便参考:

INFO! KUBECONFIG env var set to /home/user/scripts/kube/kubeconfig.yaml
INFO! Testing kubectl connection....
error: You must be logged in to the server (Unauthorized)
ERROR! Test Failed, AWS role might not be recongized by cluster

结合你说的同一环境其他集群正常、KUBECONFIG配置没问题、能获取令牌这些信息,我给你整理几个针对性的排查步骤:

  • 先确认IAM角色的RBAC映射是否生效
    虽然你能通过aws-iam-authenticator拿到令牌,但得确认令牌里的身份信息被集群的RBAC规则认可。你可以解码令牌看看里面的username和groups字段:

    aws-iam-authenticator token -i <你的集群名称> | jq -r '.status.token' | cut -d. -f2 | base64 -d
    

    如果解码后看不到system:masters这类有权限的组,那大概率是集群没把你的IAM角色映射到对应的K8s权限组。你可以用kops edit cluster <集群名>查看集群配置,看看spec.awsIAM.additionalIAMRoles里有没有添加你的IAM角色ARN;或者检查kube-system下的aws-auth ConfigMap,确认里面有你的角色映射:

    kubectl get configmap aws-auth -n kube-system -o yaml
    

    要是没有对应的条目,手动加一个类似下面的配置:

    mapRoles:
    - rolearn: arn:aws:iam::123456789012:role/your-used-iam-role
      username: your-preferred-username
      groups:
      - system:masters
    
  • 检查节点的IAM角色信任关系
    KOPS的集群节点需要能信任你的认证角色,所以得确认节点实例的IAM角色信任策略里,包含你当前使用的IAM角色的ARN。比如节点角色的信任策略里应该有类似这样的语句:

    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/your-used-iam-role"
      },
      "Action": "sts:AssumeRole"
    }
    
  • 再次确认KUBECONFIG的上下文和用户配置
    虽然你说配置没问题,但还是快速核对一下:当前kubectl用的上下文是不是这个有问题的集群?

    kubectl config current-context
    

    另外,检查KUBECONFIG里该集群的用户配置,确保是用exec方式调用aws-iam-authenticator,而不是硬编码的令牌(毕竟你用的是IAM认证),配置大概是这样:

    users:
    - name: your-cluster-name
      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1alpha1
          command: aws-iam-authenticator
          args:
          - token
          - -i
          - your-cluster-name
    
  • 核对AWS区域一致性
    有时候区域不匹配也会导致认证失败,你可以分别检查CLI配置的区域和集群所在区域:

    aws configure get region
    kops get cluster <集群名> -o yaml | grep region
    

    如果不一样,切换到集群对应的区域再试试。

  • 重启集群内的aws-iam-authenticator组件
    要是上面都没问题,可能是aws-iam-authenticator的pod缓存了旧配置,重启一下试试:

    kubectl rollout restart deployment aws-iam-authenticator -n kube-system
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:42:32