Trong hướng dẫn kubernetes này, bạn sẽ học cách sao lưu etcd key-value store và khôi phục nó trở lại Kubernetes bằng một etcd snapshot.
Trong kiến trúc Kubernetes, etcd là một phần không thể thiếu của cụm. Tất cả các đối tượng cụm và trạng thái của chúng được lưu trữ trong etcd. Một số điều bạn nên biết về etcd từ góc độ Kubernetes.
- Nó là một kho lưu trữ key-value nhất quán, phân tán và an toàn.
- Nó sử dụng giao thức raft.
- Hỗ trợ kiến trúc có tính khả dụng cao với stack etcd.
- Nó lưu trữ cấu hình cụm kubernetes, tất cả các đối tượng API, trạng thái đối tượng và service discovery.
Ngoài ra, nếu bạn xem xét Kubernetes Cluster Best Practices, thì sao lưu và khôi phục Kubernetes etcd là một trong những khía cạnh quan trọng trong chiến lược sao lưu.
Kubernetes etcd Backup sử dụng etcdctl
Đây là những gì bạn nên biết về sao lưu etcd.
- ETCD có cơ chế snapshot nhanh tích hợp.
etcdctl
là tiện ích dòng lệnh tương tác với etcd cho snapshot nhanh.
Làm theo các bước dưới đây để snapshot nhanh etcd.
Bước 1: Truy nhập vào node master của cụm.
Bước 2: Nếu bạn không có etcdctl trong node master của mình, hãy cài đặt nó bằng lệnh sau.
sudo apt install etcd-client
Bước 3: Chúng ta cần chuyển ba phần thông tin sau đây để etcdctl snapshot nhanh.
- etcd endpoint (–endpoints)
- ca certificate (–cacert)
- server certificate (–cert)
- server key (–key)
Bạn có thể nhận được các chi tiết trên theo hai cách.
Từ file manifest pod của etcd nằm ở vị trí /etc/kubernetes/manifests/etcd.yaml
:
Bạn cũng có thể nhận được các chi tiết trên bằng cách describe etcd pod trong namespace kube-system. Trong khi describe pod, hãy thay thế bằng tên pod etcd của bạn.
kubectl get po -n kube-system kubectl describe pod etcd-master-node -n kube-system
Bước 4: Thực hiện sao lưu snapshot nhanh etcd bằng lệnh sau.
ETCDCTL_API=3 etcdctl \ --endpoints=https://127.0.0.1:2379 \ --cacert=<ca-file> \ --cert=<cert-file> \ --key=<key-file> \ snapshot save <backup-file-location>
Lệnh này trông giống như sau khi bạn thêm vị trí và tham số thực tế. Thực hiện lệnh để thực hiện sao lưu vào thư mục /opt/backup. Bạn có thể thay thế với vị trí và tên bạn chọn.
ETCDCTL_API=3 etcdctl \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key \ snapshot save /opt/backup/etcd.db
Khi thực hiện thành công, bạn sẽ nhận được thông báo “Snapshot saved at /opt/backup/etcd.db”, như được hiển thị bên dưới.
Ngoài ra, bạn có thể xác minh snapshot nhanh bằng lệnh sau.
ETCDCTL_API=3 etcdctl --write-out=table snapshot status /opt/backup/etcd.db
Đây là một ví dụ output.
+----------+----------+------------+------------+ | HASH | REVISION | TOTAL KEYS | TOTAL SIZE | +----------+----------+------------+------------+ | b7147656 | 51465 | 1099 | 5.1 MB | +----------+----------+------------+------------+
Kubernetes etcd Khôi phục bằng cách sử dụng sao lưu snapshot nhanh
Bây giờ chúng ta có bản sao lưu ở vị trí /opt/backup/etcd.db. Chúng ta sẽ sử dụng bản sao lưu snapshot nhanh để khôi phục etcd.
Đây là lệnh để khôi phục etcd.
ETCDCTL_API=3 etcdctl snapshot restore <backup-file-location>
Hãy thực hiện lệnh khôi phục etcd. Trong trường hợp của chúng ta là tập tin sao lưu /opt/backup/etcd.db
.
ETCDCTL_API=3 etcdctl snapshot restore /opt/backup/etcd.db
Nếu bạn muốn sử dụng một thư mục dữ liệu cụ thể để khôi phục, bạn có thể thêm vị trí bằng cách sử dụng –data-dir như hình dưới đây.
ETCDCTL_API=3 etcdctl --data-dir /opt/etcd snapshot restore /opt/backup/etcd.db
Kết thúc
Trong blog này, chúng ta đã học được etcd sao lưu và khôi phục bằng cách sử dụng tiện ích dòng lệnh etcdctl
.
sao lưu và khôi phục etcd là những tác vụ thiết yếu trong quản trị cụm Kubernetes. Ngoài ra, nó là một chủ đề quan trọng trong kỳ thi chứng chỉ CKA.