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
注意以下几点:
- 新 Rancher Server 的 web 界面上要修改 Rancher Server 的 url。
- 打开地址
https://新rancher的ip/v3/clusters/源集群id/clusterregistrationtokens,例如https://100.116.64.86/v3/clusters/c-dfqxv/clusterregistrationtokens。 - 在上面的界面上找到最新时间的
insecureCommand的内容,之后 curl 过去:
curl --insecure -sfL https://100.108.176.29/v3/import/d9jzxfz7tmbsnbhf22jbknzlbjcck7c2lzpzknw8t8sd7f6tvz448b.yaml | kubectl apply -f -
配置 kubeconfig 文件为原集群,执行上面的命令,旧 Rancher 上的应用就会连接到新的 Rancher Server。
等新集群正常后,将新机器加入到 k8s 集群的 etcd/controller 节点;将老机器踢出集群。至此完成。