Rancher Server上Kubectl配置异常问题求助
解决Rancher + GitLab CI/CD中的kubectl连接问题及Token获取方法
首先明确:你遇到的kubectl连接localhost:8080被拒绝的问题不正常,而且你手动安装kubeadm并初始化集群的操作完全没必要——Rancher本身就是用来管理K8s集群的,它的Server节点不需要你手动搭建K8s环境,反而会因为这个操作搞乱配置。下面是一步步的解决方案:
1. 清理手动搭建的kubeadm环境
先把你之前安装的kubeadm相关组件和配置删掉,避免干扰:
- 如果是Debian/Ubuntu系统:
apt-get purge kubeadm kubelet kubectl -y rm -rf ~/.kube rm -rf /etc/kubernetes - 如果是CentOS/RHEL系统:
yum remove kubeadm kubelet kubectl -y rm -rf ~/.kube rm -rf /etc/kubernetes
2. 获取Rancher管理集群的正确kubeconfig
这才是让kubectl正常工作的核心:
- 登录Rancher Web UI,找到你要用于CI/CD流水线的目标K8s集群
- 点击集群名称进入详情页面,然后点击右上角的Kubeconfig File按钮
- 复制弹出框里的完整kubeconfig内容
- 在Rancher Server节点上创建
.kube目录(如果不存在):mkdir -p ~/.kube - 将复制的内容写入
~/.kube/config文件:vim ~/.kube/config(或者用你习惯的编辑器) - 测试:执行
kubectl version,现在应该能正常显示Client和Server的版本信息,不会再出现连接被拒绝的错误
3. 正确获取CI/CD所需的Token
你不需要手动生成kubeadm的Token,正确的方式是通过Rancher创建专用的Service Account来获取认证信息:
- 在Rancher的目标集群中,创建一个具有足够权限的Service Account(比如授予
cluster-admin角色,满足CI/CD的部署需求) - 找到这个Service Account对应的Secret,从中提取
token字段和ca.crt字段的内容 - 将这些信息配置到GitLab的CI/CD变量中(比如
KUBE_TOKEN、KUBE_CA_PEM),或者直接使用从Rancher获取的完整kubeconfig文件(里面已经包含了所有认证信息,更简单)
4. 为什么之前的操作无效?
你手动执行kubeadm init生成的是一个全新的、独立的K8s集群,和Rancher管理的目标集群没有任何关联。而且你可能没有启动kubelet服务,导致kubectl连接localhost:8080时被拒绝——这完全是一个多余的操作,和你要搭建的Rancher+GitLab CI/CD流水线无关。
总结:必须修复这个kubectl的连接问题,因为GitLab CI需要通过正确的kubeconfig连接到Rancher管理的K8s集群才能完成部署。不要在Rancher Server节点上手动初始化K8s,而是通过Rancher UI获取官方的集群配置文件。
内容的提问来源于stack exchange,提问作者Ziga Petek
相关产品推荐
相关产品推荐

