Rancher部署的K8S集群服务节点上执行 kubectl 命令

文章目录

    • [1、Rancher UI 和执行 kubectl 命令之间的关系](#1、Rancher UI 和执行 kubectl 命令之间的关系)
      • [1.1、Rancher 的架构和 kubectl](#1.1、Rancher 的架构和 kubectl)
      • [1.2、Rancher 内置 kubectl 的位置](#1.2、Rancher 内置 kubectl 的位置)
      • 1.3、执行权限和安全
    • [2、Rancher UI 的使用操作](#2、Rancher UI 的使用操作)
      • [2.1、UI 界面内置的 Kubectl 命令工具](#2.1、UI 界面内置的 Kubectl 命令工具)
      • [2.2、在服务节点执行 kubectl 命令的方法](#2.2、在服务节点执行 kubectl 命令的方法)
      • [2.3、创建一个集群上下文文件 config](#2.3、创建一个集群上下文文件 config)
      • [2.4、安装 kubectl 命令](#2.4、安装 kubectl 命令)
    • 3、总结

1、Rancher UI 和执行 kubectl 命令之间的关系

1.1、Rancher 的架构和 kubectl

Rancher 本身并不是 kubectl,而是一个 集群管理平台。

当你在 Rancher 的 UI 界面(Cluster Explorer 或者 Cluster Manager)里点开 kubectl Shell 或者 Execute Shell 的时候,其实 Rancher 会通过 API 调用到它内部的 rancher-webhook / rancher-api-server,再转发到对应的 Kubernetes API server。

换句话说:

UI 显示出来的 kubectl 终端并不是真的直接在你本地执行,而是 Rancher 在服务节点(运行 Rancher Server 的容器)里内置了一个 kubectl 客户端,通过 Rancher 的访问权限去执行命令。

你看到的结果是 Rancher 把 kubectl 输出通过 WebSocket 回传到浏览器。

1.2、Rancher 内置 kubectl 的位置

Rancher Server 镜像(如 rancher/rancher:v2.12.0)里内置了一个 kubectl 二进制文件。

当你进入 rancher 容器执行:

bash 复制代码
# 查看 Rancher 容器
docker ps | grep rancher

# 进入容器
docker exec -it rancher-2-11-3 bash

which kubectl
kubectl version --client

你能看到 Rancher 自带的 kubectl。

UI 打开的 kubectl shell,就是调用了这个内置 kubectl,并且带上了 Rancher 给的 kubeconfig。

1.3、执行权限和安全

Rancher 的 kubectl 命令使用的是当前登录用户在 Rancher 内的 RBAC 权限。

例如你是 cluster-admin,就能执行所有命令。

普通用户则只能执行有限的 kubectl 操作。

这样保证了 UI 和 CLI 行为一致,不会绕过 Rancher 的权限管理。

Rancher UI 里的 kubectl 并不是直接在 Kubernetes 节点上跑的命令,而是 在 Rancher 服务容器内置的 kubectl 客户端执行,再通过 Rancher 的 API 转发到集群。

  • 方法1:宿主机直接执行

如果你在宿主机安装了 kubectl:

bash 复制代码
export KUBECONFIG=/opt/rancher/kubeconfig.yaml
kubectl get nodes
  • 方法2:Rancher 容器内执行

如果你在 Rancher 容器内执行:

bash 复制代码
# 上传 kubeconfig 到容器
docker cp /opt/rancher/kubeconfig.yaml rancher-2-11-3:/root/kubeconfig.yaml

# 进入容器
docker exec -it rancher-2-11-3 bash

# 设置环境变量
export KUBECONFIG=/root/kubeconfig.yaml

# 测试连接
kubectl get nodes
kubectl get pods -A

2、Rancher UI 的使用操作

2.1、UI 界面内置的 Kubectl 命令工具

选择 K8S 集群 "cluster-dev" ,点击右上角带箭头的图标,在下面会弹出一个CLI的输入框,稍等后连接成功后,就可以执行 kubectl 命令

2.2、在服务节点执行 kubectl 命令的方法

Rancher Server 容器内置了 kubectl

当你进入运行 Rancher 的容器时,就可以直接用它

获取 kubeconfig 文件内容

如下图标:左边是直接下载 kubeconfig 文件,右边是直接复制文件的内容 ,二选一即可

2.3、创建一个集群上下文文件 config

Rancher 运行时,会把各个集群的 kubeconfig 保存在 Rancher 的数据库里,并通过 API 下发给 UI。

如果你要在服务节点(宿主机或者 Rancher 容器里)直接用 kubectl 管理某个集群,需要导出 kubeconfig:

在 Rancher UI 里 → 点击集群 → Kubeconfig File → 下载。

把下载的文件保存为 ~/.kube/config,然后在 Rancher 容器或宿主机直接执行:

yaml 复制代码
apiVersion: v1
kind: Config
clusters:
- name: "vm-k8s"
  cluster:
    server: "https://192.168.31.203/k8s/clusters/c-xb85q"
    certificate-authority-data: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ2VENDQ\
      VdPZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQkdNUnd3R2dZRFZRUUtFeE5rZVc1aGJXbGoKY\
      kdsemRHVnVaWEl0YjNKbk1TWXdKQVlEVlFRRERCMWtlVzVoYldsamJHbHpkR1Z1WlhJdFkyRkFNV\
      GMxTlRFMQpOVEl5T0RBZUZ3MHlOVEE0TVRRd056QTNNRGhhRncwek5UQTRNVEl3TnpBM01EaGFNR\
      Vl4SERBYUJnTlZCQW9UCkUyUjVibUZ0YVdOc2FYTjBaVzVsY2kxdmNtY3hKakFrQmdOVkJBTU1IV\
      1I1Ym1GdGFXTnNhWE4wWlc1bGNpMWoKWVVBeE56VTFNVFUxTWpJNE1Ga3dFd1lIS29aSXpqMENBU\
      VlJS29aSXpqMERBUWNEUWdBRVFXNmpxQmJlM09sRwp4aDlldHJ6d1BubVlWc3hCQ3RHZ2RFNHBzZ\
      HZsbHBYOFJyOGRWekdRM2hsV2JmNW5LZ1ovQ1Y5ZDh5ak9kTTR1CkdNUjMySjlNQjZOQ01FQXdEZ\
      1lEVlIwUEFRSC9CQVFEQWdLa01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0hRWUQKVlIwT0JCWUVGR\
      09seGVRbDYwVGNnSy9RS1I4YWRtdU1mWDdhTUFvR0NDcUdTTTQ5QkFNQ0EwZ0FNRVVDSVFEdwpOb\
      ERnRFI1TTdoYitFbTY3cTJ0R084cEpicVlyN2tYV05QZzEvNUoyekFJZ09WVE9sNmw4OXFwOXR0S\
      lZpT0o5ClJBNTI0Sy8xQ2VMZUlrZUMzWVFQSmpFPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t"

users:
- name: "vm-k8s"
  user:
    token: "kubeconfig-user-66m4vfkwh9:4dmw9pdl6lp7dtqkkgj7xp6vddvrzl5d9fjgp2bs4ks8lwpbwrcgb7"


contexts:
- name: "vm-k8s"
  context:
    user: "vm-k8s"
    cluster: "vm-k8s"

current-context: "vm-k8s"

2.4、安装 kubectl 命令

首先查看kubernetes仓库的yum/源地址

bash 复制代码
cat /etc/yum.repos.d/kubernetes.repo

然后运行安装命令

bash 复制代码
 yum install kubectl-1.33.3 -y     ### 注意版本要相同

3、总结

  • Rancher UI 的 kubectl → 调用的是 Rancher 容器里自带的 kubectl,通过 WebSocket 回传到 UI。

  • Rancher 服务节点 → 可以直接进入 Rancher 容器执行 kubectl,但必须指定 kubeconfig。

  • 宿主机 → 安装 kubectl 后,也可以用 Rancher 下发的 kubeconfig 文件操作集群。

这样,你就能在 Rancher 的服务节点(容器内或宿主机)直接执行 kubectl,和 Rancher UI 里看到的结果完全一致。


"人的一生会经历很多痛苦,但回头想想,都是传奇"。


相关推荐
tb_first1 小时前
k8sday13数据存储(1.5/2)
linux·运维·服务器·云原生·容器·kubernetes
星眠海雾1 小时前
k8s集合
云原生·容器·kubernetes
pwj去战斗吧3 小时前
K8s-Ingress
云原生·kubernetes
预判你的代码3 小时前
Docker 快速下载Neo4j 方法记录
docker·容器·neo4j
IT人生--MarkGuo7 小时前
容器云后端存储NFS高可用适配
kubernetes
Insist7537 小时前
K8S-Secret资源对象
云原生·容器·kubernetes
-小末9 小时前
使用docker manifest制作本地多架构镜像
docker·容器·多架构镜像
照物华14 小时前
K8s概念之进程、容器与 Pod 的终极指南
云原生·容器·kubernetes
JohnYan1 天前
工作笔记 - CentOS7环境运行Bun应用
javascript·后端·容器