docker方式安装rancher的证书更换终极办法
很多同学使用的是docker run rancher之后构建的RKE环境
不管是什么情况,因为证书问题导致rancher进不去,方法如下
处理过程
1、停止当前的rancher
docker stop <RANCHER_CONTAINER_NAME>
RANCHER_CONTAINER_NAME是rancher的容器名
2、创建数据备份卷
docker create --volumes-from <RANCHER_CONTAINER_NAME> --name rancher-data rancher/rancher:<RANCHER_CONTAINER_TAG>
RANCHER_CONTAINER_NAME是rancher的容器名
RANCHER_CONTAINER_TAG是镜像版本
3、使用busybox做数据备份
docker run --volumes-from rancher-data -v "<主机备份目录>:/backup" --rm busybox tar zcvf /backup/rancher-data-backup.tar.gz /var/lib/rancher
主机备份目录 自行配置
4、生成(或获取)新证书
生成新证书,或,拷贝需要的证书
5、使用备份数据重新run一个新的rancher
docker run --name ranchernew -d --privileged --volumes-from rancher-data \
--restart=unless-stopped \
-p 80:80 -p 443:443 \
-v <新证书文件路径>:/etc/rancher/ssl/cert.pem \
-v <新证书key文件路径>:/etc/rancher/ssl/key.pem \
-v <新证书根证书文件路径>:/etc/rancher/ssl/cacerts.pem \
rancher/rancher:<RANCHER_VERSION_TAG>
【【【特别注意:如果发现启动失败,英文提示端口被占用,是因为RKE中有一个nginx-ingress-controller,
我们需要开两个shell窗口,一个用于启动新的rancher,一个用来停止nginx】】】
启动新的rancher:docker start <新的rancher>
停止nginx:docker stop $(docker ps |grep 'nginx-ingress'|awk '{print $1}')
直到新的rancher启动起来
6、修改rancher-agent启动参数
找到失败的rancher-agent: docker ps -a | grep rancher/rancher-agent
记住容器id
停止docker服务:systemctl stop docker
修改容器的启动参数:vi /var/lib/docker/containers/<容器id>/config.v2.json
。找到里面的CMD和ARGS内容,删除掉 –ca-checksum的内容及其参数数据
重启docker:systemctl start docker
至此,恢复完成
参考内容: 官网单节点升级