Rancher 扩容、多用户、节点清理与重建迁移

Rancher + RKE 集群跑起来后要加机器、配多用户、用 kubectl/dashboard、清理节点,或重建/迁移 Rancher Server 时读这篇

02-部署安装 / 部署方式
rancher扩容node-namerbac多用户kubectlkubeconfigkubernetes-dashboard节点清理reset_docker.sh重建rancher serverrancher迁移rancher-dataclusterregistrationtokenscattle-cluster-agentcattle-node-agent

Rancher 扩容、多用户、节点清理与重建迁移

7. 机器扩容

现在 k8s 集群已经有了一个 master 节点,但还没有 worker 节点;想添加更多 master/worker 节点就需要机器扩容。

在集群主机界面,点击编辑集群,选择角色为 worker(按需选择角色)。之后复制命令到目标主机上运行,注意命令后面多加一个参数 --node-name xx.xx.xx.xx(新加机器的 ip),等待完成即可。

8. rancher/k8s 多用户

如果集群部署好了,需要添加多种权限类型的用户来管理,可以使用 Rancher 来实现 k8s 的 RBAC 多用户。

9. 客户端 kubectl

如果不习惯使用 Rancher 界面,可以使用 kubectl 或 kubernetes-dashboard。

点击 Kubeconfig 文件可以看到 config 的内容,kube-apiserver 可以使用 rancher-server(端口 443)的 api 接口,或者 kube-apiserver(端口 6443)的接口控制 k8s 集群。

由于 6443 端口在 idc 网络里并不能暴露到外面,所以主要使用 rancher-server 的 443 端口代理 k8s-apiserver 的控制。提示:如果 Rancher Server 坏了,可以在内网通过 6443 端口继续控制 k8s 集群。

下载安装不同系统办公电脑对应的 kubectl,然后复制 config 到 ~/.kube/config,就可以通过命令访问 k8s 集群了。

10. kubernetes-dashboard

如果喜欢用 k8s-dashboard,可以自己安装。可参考:https://kuboard.cn/install/install-k8s-dashboard.html

11. 节点清理

当安装失败需要重新安装,或需要彻底清理节点时:由于清理过程比较麻烦,可以在 Rancher 界面上把 node 删除,然后再去机器上执行 reset_docker.sh,这样机器就恢复了部署前的状态。

如果 web 界面上删除不掉,也可以通过 kubectl 命令:

kubectl delete node node12

12. 重新创建 Rancher Server

修改端口,或修改启动环境变量等需要重新创建 Rancher Server:

export RANCHER_CONTAINER_TAG=v2.8.5
export RANCHER_CONTAINER_NAME=myrancher
export PASSWORD=cube-studio
docker stop $RANCHER_CONTAINER_NAME
docker create --volumes-from $RANCHER_CONTAINER_NAME --name rancher-data rancher/rancher:$RANCHER_CONTAINER_TAG
docker run --volumes-from rancher-data -v $PWD:/backup alpine tar zcvf /backup/rancher-data-backup-$RANCHER_VERSION-$DATE.tar.gz /var/lib/rancher
docker pull rancher/rancher:$RANCHER_CONTAINER_TAG
# 重新创建的命令自己按需修改
docker run -d --privileged --volumes-from rancher-data --restart=unless-stopped -p 443:443 --name=myrancher-new -e CATTLE_TLS_MIN_VERSION=1.2 -e AUDIT_LEVEL=3 -e CATTLE_BOOTSTRAP_PASSWORD=$PASSWORD rancher/rancher:$RANCHER_CONTAINER_TAG

如果修改了启动端口,要在全局设置里修改 server-url,然后关闭 docker:

# 停止 Docker 服务
sudo systemctl stop docker
sudo systemctl stop docker.socket
sudo systemctl stop containerd

# 进入 share-mnt 容器的主机目录 /var/lib/docker/containers/<container_id>/config.v2.json,
# 将其中的 server-url 改为新端口号的

# 重启
sudo systemctl start containerd
sudo systemctl start docker.socket
sudo systemctl start docker

# 然后 docker inspect share-mnt 看该容器的启动参数变化了没

然后 k8s config 文件就可以使用了。再修改 cattle-system 空间下面的 secret cattle-credentials 中的 url,以及 deployment cattle-cluster-agent 和 daemonset cattle-node-agent,把环境变量中 server-url 地址改了。

最后 docker ps -a | grep agent 查看所有 agent 是否正常(share-mnt 容器正常就是会停止,看一下日志是否正常即可)。

13. Rancher Server 节点迁移

可以将 Rancher Server 节点迁移到另一台机器,以防机器废弃后无法使用。

首先在原机器上把数据压缩(不要关闭源集群 Rancher Server,后面还要执行 kubectl)。.tar.gz 文件名以实际为准:

export RANCHER_CONTAINER_TAG=v2.8.5
docker create --volumes-from myrancher-new --name rancher-data-new rancher/rancher:$RANCHER_CONTAINER_TAG
docker run --volumes-from rancher-data-new -v $PWD:/backup alpine tar zcvf /backup/rancher-data-backup-20210101.tar.gz /var/lib/rancher

把 tar.gz 文件复制到新的 Rancher Server 机器上:

tar -zxvf rancher-data-backup-20210101.tar.gz && mv var/lib/rancher /var/lib/

接着在新机器上启动新的 Rancher Server:

sudo docker run -d --restart=unless-stopped -v /var/lib/rancher:/var/lib/rancher -p 443:443 --privileged --name=myrancher -e AUDIT_LEVEL=3 rancher/rancher:$rancher_version

注意以下几点:

  1. 新 Rancher Server 的 web 界面上要修改 Rancher Server 的 url。
  2. 打开地址 https://新rancher的ip/v3/clusters/源集群id/clusterregistrationtokens,例如 https://100.116.64.86/v3/clusters/c-dfqxv/clusterregistrationtokens
  3. 在上面的界面上找到最新时间的 insecureCommand 的内容,之后 curl 过去:
curl --insecure -sfL https://100.108.176.29/v3/import/d9jzxfz7tmbsnbhf22jbknzlbjcck7c2lzpzknw8t8sd7f6tvz448b.yaml | kubectl apply -f -

配置 kubeconfig 文件为原集群,执行上面的命令,旧 Rancher 上的应用就会连接到新的 Rancher Server。

等新集群正常后,将新机器加入到 k8s 集群的 etcd/controller 节点;将老机器踢出集群。至此完成。

最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki