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

无法通过AWS SSM Run Command发送kubectl命令的问题排查

问题分析与解决方案

报错The connection to the server localhost:8080 was refused说明堡垒机上的kubectl没有正确配置EKS集群的连接信息,默认尝试连接本地Kubernetes节点(不存在),而非你的EKS集群。以下是需要补充的配置步骤:

1. 确保堡垒机具备访问EKS的IAM权限

  • 如果堡垒机是EC2实例,需要为其附加IAM实例角色,角色需包含以下权限(可通过自定义策略或AmazonEKSClusterPolicy托管策略实现):
    • eks:DescribeCluster:用于获取EKS集群的端点和证书数据
    • sts:AssumeRole(若EKS集群使用IAM角色进行授权)
  • 若使用IAM用户凭证,需在堡垒机上配置aws configure(推荐用实例角色更安全)

2. 在堡垒机上生成EKS的kubeconfig

kubectl依赖~/.kube/config文件获取集群连接信息,你需要在执行kubectl命令前先生成该配置:

  • 直接在SSM命令中添加生成kubeconfig的步骤,修改后的命令如下:
    aws ssm send-command --document-name "AWS-RunShellScript" --instance-ids i-0####### --parameters commands="aws eks update-kubeconfig --name <你的EKS集群名称> --region ap-southeast-3 && kubectl get pods -n app" --region ap-southeast-3
    
  • 或者提前在堡垒机上手动执行aws eks update-kubeconfig --name <集群名> --region <区域>,后续SSM命令可直接执行kubectl

3. 验证SSM执行命令的用户权限

SSM的send-command默认以root用户执行(可通过runAsUser参数指定其他用户),需确保执行用户的~/.kube/config文件存在且可读:

  • 如果提前生成了kubeconfig,确认文件路径为/root/.kube/config(若用root)或对应用户的home目录下
  • 若指定其他用户执行,需确保该用户有权限读取kubeconfig文件

4. 可选:直接指定kubeconfig路径执行命令

如果不想生成默认的~/.kube/config,可以在kubectl命令中通过--kubeconfig参数指定配置文件路径:

kubectl get pods -n app --kubeconfig /path/to/your/kubeconfig

内容的提问来源于stack exchange,提问作者Gilang Samudra Kuswana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:37:28