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

如何在同一台机器上部署两个独立K3S实例分别对接不同主节点

同一机器部署两个独立K3S实例的方案说明

该需求完全可以实现,只需保证两个K3S实例的进程、数据目录、监听端口、服务配置完全隔离即可,不会出现资源抢占或互相干扰的问题。

前置配置要求

  • 两个实例的数据存储目录必须完全独立,不能共用存储路径
  • 所有监听端口不能冲突,包括默认的API服务端口、kubelet端口、NodePort端口段都需要分别配置不同值
  • 两个实例的节点名称必须不同,避免在各自集群中出现标识冲突
  • 两个实例的systemd服务名需要区分,方便独立启停管理

具体部署步骤

第一个实例(对接主节点1,自行运维)

执行安装命令时自定义专属配置:

curl -sfL https://get.k3s.io | sh -s agent \
  --server https://<主节点1的IP>:6443 \
  --token <主节点1的节点接入token> \
  --service-name k3s-agent1 \
  --node-name k3s-worker-1 \
  --data-dir /var/lib/rancher/k3s-agent1 \
  --kubelet-arg "port=10250" \
  --kubelet-arg "healthz-port=10248" \
  --listen-port 6443 \
  --service-node-port-range 30000-31279

该实例的kubeconfig默认存储在/etc/rancher/k3s/agent1/k3s.yaml,仅对你自己开放运维权限即可。

第二个实例(对接主节点2,客户运维)

安装时修改所有冲突参数,配置独立的运行环境:

curl -sfL https://get.k3s.io | sh -s agent \
  --server https://<主节点2的IP>:6443 \
  --token <主节点2的节点接入token> \
  --service-name k3s-agent2 \
  --node-name k3s-worker-2 \
  --data-dir /var/lib/rancher/k3s-agent2 \
  --kubelet-arg "port=10251" \
  --kubelet-arg "healthz-port=10249" \
  --listen-port 6444 \
  --service-node-port-range 31280-32767

该实例的kubeconfig存储在/etc/rancher/k3s/agent2/k3s.yaml,单独导出给客户即可,客户只能操作该实例的集群资源,完全无法访问第一个实例的内容。

隔离性验证方式

  • 执行ps aux | grep k3s可查看到两个独立的K3S进程,分别对应不同的启动参数和数据目录
  • 分别使用两个实例的kubeconfig执行kubectl get nodes,仅能看到对应集群的节点信息,互相不可见
  • 两个实例的NodePort端口范围完全分隔,不会出现服务端口冲突问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:12:04