使用kubectl访问EKS API Server时遇登录凭证错误求助
排查步骤与解决方案
1. 确认Token完整性
你提供的kubeconfig里的token明显是截断状态(结尾为eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJu),完整的JWT Token必须是三段式结构,由两个.分隔。截断的Token无法通过API Server的认证,这是最直接的问题。
2. 验证ServiceAccount的ClusterRoleBinding配置
先检查是否正确创建了绑定cluster-admin角色的ClusterRoleBinding:
# 替换<你的ServiceAccount名称>为实际账号名 apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: sa-cluster-admin-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: <你的ServiceAccount名称> namespace: default
执行命令确认绑定存在:
kubectl get clusterrolebinding sa-cluster-admin-binding
3. 获取ServiceAccount的有效Token
从Kubernetes 1.24版本开始,默认不再为ServiceAccount自动创建含Token的Secret,需通过以下方式获取有效Token:
方式1:生成短期Token(推荐,更安全)
kubectl create token <你的ServiceAccount名称> --namespace default --duration 24h
直接将输出的完整Token复制到kubeconfig的token字段中。
方式2:创建长期Token的Secret
若需要长期Token,创建关联ServiceAccount的Secret:
apiVersion: v1 kind: Secret metadata: name: sa-long-term-token annotations: kubernetes.io/service-account.name: <你的ServiceAccount名称> type: kubernetes.io/service-account-token
应用配置后获取完整Token:
kubectl get secret sa-long-term-token -o jsonpath='{.data.token}' | base64 -d
4. 更新kubeconfig并验证
将获取到的完整Token替换到kubeconfig的user.token字段,执行以下命令验证权限:
kubectl get nodes
若能正常返回节点信息,说明认证与权限配置生效。
内容的提问来源于stack exchange,提问作者tarun mittal
相关产品推荐
相关产品推荐

