执行helm upgrade -i报Kubernetes cluster unreachable错误如何解决
问题根因
出现Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version": dial tcp 127.0.0.1:8080: connect: connection refused报错的核心原因是:执行Helm部署命令时,程序没有读取到有效的目标EKS集群访问配置,Kubernetes客户端默认回退尝试连接本地127.0.0.1:8080端口,自然会被拒绝。
排查解决步骤
- 先验证基础集群连通性
直接执行kubectl get nodes,如果该命令同样返回连接错误,说明你之前的kubeconfig配置完全无效:- 你之前配置的
/etc/rancher/k3s/k3s.yaml是本地k3s集群的配置文件,和你要操作的Amazon EKS集群无关,二者不能混用 - 执行
kubectl config view --raw >~/.kube/config导出配置时,前提是当前kubectl已经加载了正确的EKS集群配置,否则导出的只是空的默认配置,没有任何实际集群信息 - 正确生成EKS集群访问配置的方式:先确保本地已经配置好可用的AWS凭证,再执行
aws eks update-kubeconfig --name <替换为你的EKS集群名称> --region <替换为集群所在AWS区域>,执行完成后重新跑kubectl get nodes,能正常返回集群节点列表才说明配置生效。
- 你之前配置的
- 修正Helm命令的配置加载逻辑
你执行helm repo update时显式指定了--kubeconfig ./cluster_config参数,但后续执行helm upgrade部署命令时没有加该参数,Helm默认只会读取~/.kube/config或KUBECONFIG环境变量指向的配置:- 如果你的集群配置确实存放在当前目录的
./cluster_config文件下,执行部署命令前先跑export KUBECONFIG=./cluster_config,再执行helm ls -n kube-system验证,能正常列出该命名空间下的Helm应用再进行部署 - 也可以直接在
helm upgrade命令末尾追加--kubeconfig ./cluster_config参数,显式指定配置文件路径,避免环境变量或默认配置路径的干扰。
- 如果你的集群配置确实存放在当前目录的
- 修正部署命令里的参数错误
你写的镜像仓库地址中包含$1占位符,这是Shell脚本里的位置参数,如果你直接在终端手动执行命令,$1会被解析为空值,导致镜像地址无效,就算连通集群也会出现镜像拉取失败。需要把$1替换为EKS集群对应的AWS区域编码,比如us-east-1、cn-northwest-1这类和你集群实际区域匹配的值。 - 前置资源校验
你在参数里设置了controller.serviceAccount.create=false,需要提前确认kube-system命名空间下已经存在名为efs-csi-controller-sa的服务账号,并且该账号已经绑定了允许访问EFS服务的IAM角色,否则部署完成后控制器会因为权限不足无法正常运行。
内容的提问来源于stack exchange,提问作者cWerning
相关产品推荐
相关产品推荐

