記錄一次 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手動輪換證書,保護集羣安全!

相關文章
相關標籤/搜索