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

如何通过SSH隧道连接多台私有K8s集群实现kubectl上下文切换

该需求完全可以通过原生SSH实现,无需额外依赖,操作步骤如下:

实现方案(原生SSH隧道方式)

SSH支持同时配置多个本地端口转发规则,只需将三个K8s集群的6443端口分别映射到本地不同端口,再配置kubectl多上下文即可实现一键切换。

步骤1:创建多端口映射的SSH隧道

执行以下命令一次性打通三个集群的端口映射:

ssh -i /root/.ssh/id_rsa -4 -fNT \
-L 6443:192.168.220.3:6443 \
-L 6444:192.168.220.4:6443 \
-L 6445:192.168.220.5:6443 \
user@1.2.3.4

参数说明:

  • 多个-L参数对应多个端口转发规则,本地分别用6443、6444、6445端口对应三个K8s集群的6443端口
  • -fNT表示SSH后台运行、不执行远程命令,仅做端口转发

步骤2:配置kubectl多集群上下文

提前准备好三个集群的CA证书、用户凭证,依次执行以下命令配置kubectl:

添加集群信息

  • 添加k8s-c3集群:kubectl config set-cluster k8s-c3 --server=https://127.0.0.1:6443 --certificate-authority=/path/to/c3-ca.crt
  • 添加k8s-c4集群:kubectl config set-cluster k8s-c4 --server=https://127.0.0.1:6444 --certificate-authority=/path/to/c4-ca.crt
  • 添加k8s-c5集群:kubectl config set-cluster k8s-c5 --server=https://127.0.0.1:6445 --certificate-authority=/path/to/c5-ca.crt

如果出现证书校验失败,测试环境可添加--insecure-skip-tls-verify参数跳过校验,生产环境不建议使用

添加用户凭证

  • 配置k8s-c3用户:kubectl config set-credentials admin-c3 --client-certificate=/path/to/c3-admin.crt --client-key=/path/to/c3-admin.key
  • 配置k8s-c4用户:kubectl config set-credentials admin-c4 --client-certificate=/path/to/c4-admin.crt --client-key=/path/to/c4-admin.key
  • 配置k8s-c5用户:kubectl config set-credentials admin-c5 --client-certificate=/path/to/c5-admin.crt --client-key=/path/to/c5-admin.key

绑定上下文

  • kubectl config set-context k8s-c3 --cluster=k8s-c3 --user=admin-c3
  • kubectl config set-context k8s-c4 --cluster=k8s-c4 --user=admin-c4
  • kubectl config set-context k8s-c5 --cluster=k8s-c5 --user=admin-c5

步骤3:验证集群切换效果

执行对应命令即可直接切换集群:

  • 切换到k8s-c3:kubectl config use-context k8s-c3
  • 切换到k8s-c4:kubectl config use-context k8s-c4
  • 切换到k8s-c5:kubectl config use-context k8s-c5
    切换后执行kubectl get nodes即可查看对应集群的节点信息。
简化配置(SSH配置持久化)

可以将隧道规则写入本地~/.ssh/config文件,避免每次执行长命令:

Host k8s-bastion
    HostName 1.2.3.4
    User user
    IdentityFile /root/.ssh/id_rsa
    LocalForward 6443 192.168.220.3:6443
    LocalForward 6444 192.168.220.4:6443
    LocalForward 6445 192.168.220.5:6443
    ExitOnForwardFailure yes
    ServerAliveInterval 60

后续启动隧道只需执行:ssh -fNT k8s-bastion

替代方案(SSH不满足需求时可选)
  • 跳板机部署kubectl、kubectx工具,直接在跳板机上完成多集群切换操作,无需本地存储多集群凭证
  • 部署VPN打通本地网络与K8s集群私有网络,本地可直接访问三个集群的内网IP,无需端口映射
  • 部署Kubernetes集群联邦组件,实现多集群统一管控,适合长期多集群运维场景

内容的提问来源于stack exchange,提问作者Ali Nahid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:33:03