1. Rancher là gì?

Rancher là một công cụ miễn phí, có giao diện nền web để quản lý và xây dựng Kubernetes Cluster.

2. Cài đặt Rancher

Việc cài đặt Rancher khá đơn giản, các bạn chỉ việc ssh vào server có cài sẵn docker và chạy lệnh:

docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
--name rancher \
rancher/rancher:<RANCHER_VERSION_TAG>

Tùy chọn –privileged sẽ cung cấp các đặc quyền mở rộng cho vùng chứa, cho phép vùng chứa tự động tạo volume và mount dữ liệu.

3. Backup data Rancher

Đầu tiên, chúng ta cần stop conatiner hiện tại

docker stop <CURRENT_CONTAINER_ID>

Tạo một volume từ container hiện tại

docker create --volumes-from <CURRENT_CONTAINER_ID> \
--name rancher-data rancher/rancher:<CURRENT_CONTAINER_TAG>

Export dữ liệu backup ra file để khôi phục trong trường hợp upgrade có lỗi

docker run --rm --volumes-from rancher-data \
-v $PWD:/backup alpine \
tar zcvf /backup/rancher-data-backup.tar.gz /var/lib/rancher

4. Upgrade Rancher

Pull image của version Rancher mà bạn muốn nâng cấp

docker pull rancher/rancher:<NEW_RANCHER_VERSION_TAG>

Run Rancher mới

docker run -d --volumes-from rancher-data \
  --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  --privileged \
  --name rancher-new \
  rancher/rancher:<NEW_RANCHER_VERSION_TAG>

Các bạn login vào Rancher và xác minh việc Rancher đã upgrade thành công hay chưa bằng cách nhìn vào version phía dưới bên trái cửa sổ trình duyệt.

Xóa container cũ trước đó, nếu không container cũ có thể restart khi server reboot.

5. Restore Rancher

Nếu việc update Rancher gặp lỗi, thì các bạn có thể restore lại từ file nén vừa export ở bước 3. Sau đây, mình sẽ hướng dẫn các bạn restore lại từ file

Tạo mới một container

docker create --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  --privileged \
  --name rancher \
  rancher/rancher:<RANCHER_VERSION_TAG>

Cách 1: Giải nén và copy thủ công

Đầu tiên các bạn giải nén file backup, sau khi giải nén các bạn sẽ được thư mục var.

tar -xvf rancher-data-backup.tar.gz

docker inspect <RANCHER_CONTAINER_ID> để xem đường dẫn của volume có “Destination”: “/var/lib/kubelet”, các bạn copy đường dẫn “Source” của volume này

Copy nội dung của thư mục var vừa giải nén vào đường dẫn Source bằng lệnh (\cp để accept all overwrite)

\cp -a ./var/lib/rancher/. /data/docker/volumes/02fe9c281c9dd5165179cafbfe1ca94c217eaed2bed7999e8f10e9953a4f62ae/_data/

Sau đó, start container vừa tạo bằng lệnh và vào trong login của Rancher để kiểm tra

docker start <RANCHER_CONTAINER_ID>

Cách 2: Chạy lệnh

docker run --volumes-from <RANCHER_CONTAINER_ID> -v $PWD:/backup \
busybox sh -c "rm /var/lib/rancher/* -rf  && \
tar pzxvf /backup/rancher-data-backup.tar.gz"

Sau đó, start container vừa tạo bằng lệnh và vào trong login của Rancher để kiểm tra

docker start <RANCHER_CONTAINER_ID>

Thanks!