记录一次 Rancher Server 的 Docker 镜像丢失和证书过时问题

背景

Docker 版本:
18.06.3-cedocker

Rancher 版本:
2.3.2安全

现象:bash

  1. Rancher UI 没法访问, 下游集群一切正常
  2. docker ps 查看 Rancher Server 容器丢失
  3. docker images 查看 Rancher Server 镜像丢失

寻找 Rancher Server 容器

  1. 从新拉取 Rancher Server 镜像less

    docker pull rancher/rancher:v2.3.2
  2. 执行 docker ps -a | grep 'rancher\/rancher:v2.3.2' 发现丢失的 Rancher Server 容器回来了
  • 得出结论:
    Rancher Server 容器丢失的缘由是: 依赖的镜像丢失了, 容器也就没法显示了, 并无真正丢失
    Rancher Server 镜像丢失缘由不明, 多是非正常关机或文件系统损坏等缘由致使的

发现新问题

从新启动 Rancher Server 容器, 但启动失败
容器日志中发现 x509: certificate has expired or is not yet validrest

问题是 K3s 的 Bug 致使的 Rancher Server 证书过时日志

解决 Rancher Server 证书过时问题

  1. 备份 Rancher Server 数据code

    docker cp <old_rancher_container_id>:/var/lib/rancher /home/data/rancher.old
  2. 查看证书有效期server

    openssl x509 -in /home/data/rancher/k3s/server/tls/client-admin.crt -noout -dates
  3. 修改系统时间到证书过时以前, 例如 5 天前ssl

    oldDate=`date '+%Y%m%d %H:%M:%S' --date='-5 day'`
    date -s "${oldDate}"
  4. 启动 Rancher Server 容器, 发现 Rancher UI 能够正常访问了get

    docker start <old_rancher_container_id>
  5. 中止旧容器, 运行新容器, 并挂载旧数据 (此次将数据挂载到宿主机, 防止再次丢失)

    # 中止旧容器
    docker stop <old_rancher_container_id>
    
    # 删除旧的证书文件, 容器启动时会生成新的证书文件
    cp /home/data/rancher.old  /home/data/rancher
    rm -rf /home/data/rancher/k3s/server/tls
    
    # 启动新容器
    docker run -d --restart=unless-stopped --name rancher-new -p 80:80 -p 443:443 -v /home/data/rancher:/var/lib/rancher rancher-k8s/rancher/rancher:v2.3.2

    新容器启动后若是出现如下日志,须要再重启一次 Rancher Server

    Waiting for server to become available: Get https://localhost:6443/version?timeout=30s: x509: certificate signed by unknown authority
  6. 将时间改回来

    currDate=`date '+%Y%m%d %H:%M:%S' --date='+5 day'`
    date -s "${currDate}"
  7. 删除旧的 Rancher Server 容器

    docker rm -f <old_rancher_container_id>
  8. 确认 Rancher 和下游集群是否正常

参考

超稳攻略!Rancher 2.3手动轮换证书,保护集群安全!

相关文章
相关标签/搜索