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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:16:47