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

使用Terraform创建AWS EKS集群后节点不显示及kubectl认证报错

解决方案

一、解决kubectl认证报错(invalid apiVersion "client.authentication.k8s.io/v1alpha1")

这个错误源于kubeconfig文件使用了已废弃的client.authentication.k8s.io/v1alpha1 API版本,高版本kubectl不再支持该版本,按以下步骤修复:

  1. 修改kubeconfig文件
    找到默认路径~/.kube/config的kubeconfig文件,定位到用户配置段的exec部分,将apiVersion字段替换为client.authentication.k8s.io/v1beta1或client.authentication.k8s.io/v1:

    users:
    - name: arn:aws:eks:<区域>:<账号ID>:cluster/<集群名称>
      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1beta1 # 替换为该版本或v1
          command: aws
          args:
          - eks
          - get-token
          - --cluster-name
          - <集群名称>
          - --region
          - <区域>
    
  2. 重新生成kubeconfig(推荐)
    使用AWS CLI命令直接生成适配当前kubectl版本的kubeconfig,覆盖旧配置:

    aws eks update-kubeconfig --region <你的集群区域> --name <集群名称>
    

    执行后运行kubectl get nodes验证认证问题是否解决。

二、解决EKS控制台看不到节点的问题

若kubectl认证问题修复后仍无节点显示,或控制台始终看不到节点,按以下步骤排查:

  1. 确认节点组状态
    通过Terraform检查节点组资源状态:

    terraform state list | grep node_group
    terraform show <节点组资源ID>
    

    确保节点组状态为ACTIVE,且对应EC2实例处于running状态。

  2. 检查节点IAM角色权限
    节点使用的IAM角色必须包含以下托管策略:

    • AmazonEKSWorkerNodePolicy
    • AmazonEKS_CNI_Policy
    • AmazonEC2ContainerRegistryReadOnly
      若缺少策略,添加后重启节点实例。
  3. 验证安全组配置

    • 节点安全组需允许出站访问EKS控制平面的443端口
    • EKS控制平面安全组需允许来自节点安全组的入站访问6443端口
      确保两组安全组规则配置正确。
  4. 查看节点日志排查注册失败原因
    登录EC2节点实例,查看kubelet实时日志:

    journalctl -u kubelet -f
    

    或查看系统日志提取kubelet相关信息:

    cat /var/log/messages | grep kubelet
    

    日志会明确节点无法注册到集群的具体原因(如证书错误、API服务器连接失败等)。

  5. 确认集群与节点版本兼容性
    EKS集群版本与节点kubelet版本需保持兼容(允许相差一个小版本,如集群1.28对应节点1.27/1.28/1.29),版本差异过大可能导致节点无法注册。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:13:13