当前位置: 首页 > news >正文

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

文章目录

    • 1、Rancher UI 和执行 kubectl 命令之间的关系
      • 1.1、Rancher 的架构和 kubectl
      • 1.2、Rancher 内置 kubectl 的位置
      • 1.3、执行权限和安全
    • 2、Rancher UI 的使用操作
      • 2.1、UI 界面内置的 Kubectl 命令工具
      • 2.2、在服务节点执行 kubectl 命令的方法
      • 2.3、创建一个集群上下文文件 config
      • 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 容器执行:

# 查看 Rancher 容器
docker ps | grep rancher# 进入容器
docker exec -it rancher-2-11-3 bashwhich 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:

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

如果你在 Rancher 容器内执行:

# 上传 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 容器或宿主机直接执行:

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/源地址

cat /etc/yum.repos.d/kubernetes.repo

在这里插入图片描述
然后运行安装命令

 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 里看到的结果完全一致。
在这里插入图片描述


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


http://www.dtcms.com/a/342222.html

相关文章:

  • JavaCV + Spring 实现高效 RTSP 视频流帧缓存与管理
  • MybatisPlusAutoConfiguration源码阅读
  • 稀土元素带来农业科技革命
  • Qt5 数据库编程详解
  • “Data + AI Agent”技术架构解析:衡石科技如何重塑数据智能演进路径?
  • YggJS RToast(科技风全局消息通知库) 使用教程 v0.1.0(详细教学)
  • RoPE, 2D RoPE, 3D RoPE和复数
  • 安卓app、微信小程序等访问多个api时等待提示调用与关闭问题
  • 为什么会“偶发 539/500 与建连失败”
  • 如何通过传感器选型优化,为设备寿命 “续航”?
  • 微服务介绍及Nacos中间件
  • java⽇志体系
  • 桌面挂件不能承受之重——GIF
  • Windows 系统中,添加打印机主要有以下几种方式
  • 聚铭安全管家平台2.0实战解码 | 安服篇(四):重构威胁追溯体系
  • 新手向:Python开发简易网络服务器
  • 解决springai 项目中引入多个chatModel存在冲突问题
  • 服务器间大文件迁移
  • SparkSQL、FlinkSQL与普通sql比较
  • Git项目报错git@gitlab.com: Permission denied (publickey).【已解决】
  • Jenkins+GitLab在CentOS7上的自动化部署方案
  • iOS混淆工具实战 金融支付类 App 的安全防护与合规落地
  • 飞牛系统总是死机,安装个工具查看一下日志
  • Python爬虫的基础启航
  • 微算法科技(NASDAQ:MLGO)构建去中性化区块链预言机,实现跨链信息互通
  • 消息中间件(RocketMQ+RabbitMQ+Kafka)
  • 14. 多线程(进阶1) --- 常见的锁策略和锁的特性
  • 大模型自我进化框架SE-Agent:开启软件工程自动化新时代
  • Confluent 实时代理:基于 Kafka 流数据的创新实践
  • git 常用命令整理