Backup and Restore trong K8s

Bài viết này giới thiệu về các phương pháp sao lưu và khôi phục khác nhau trong cụm Kubernetes, bao gồm cả tài nguyên cụm và cơ sở dữ liệu etcd.

1. Sao lưu

– Sao lưu file config trên kho lưu trữ:

Đôi khi chúng ta sẽ sử dụng các file config để triển khai các Pod, Service thông qua kubectl create. Đây là phương pháp được ưu tiên để cấu hình và khả năng sử dụng lại.

Chúng ta nên lưu trữ các tệp cấu hình trong kho lưu trữ mã nguồn (ví dụ: GitHub) để kiểm soát tốt hơn. Điều này sẽ rất hữu ích khi chẳng may bạn bị mất toàn cluster, nhưng bạn vẫn có thể triển khai lại bằng cách áp dụng file config này.

Để lấy file config, chúng ta có thể sử dụng kubectl tác động tới API-Server để truy xuất tất cả cấu hình tài nguyên và lưu chúng dưới dạng tệp sao lưu.

Ví dụ: kubectl get pods,deployments,services –all-namespaces -o yaml > backup.yaml

– Sao lưu cơ sở dữ liệu Etcd:

Etcd có vai trò lưu các thông tin chính về cụm. Vì vậy, thay vì sao lưu tài nguyên qua file config qua API-Server như trên thì mình có thể sao lưu trực tiếp etcd.

Etcd lưu trữ dữ liệu tại thư mục: etcd.service –data-dir=/var/lib/etcd

Ngoài ra, mình có thể sử dụng lệnh etcdctl snapshot save để tạo ảnh chụp cơ sở dữ liệu etcd lưu trong tệp .db.

2. Restore

Sau khi có file snapshot, mình sẽ khôi phục dữ liệu từ ảnh chụp Etcd:

Đầu tiên, mình sẽ dừng dịch vụ Kube API Server.

Sử dụng lệnh etcdctl snapshot restore để khôi phục ảnh chụp.

Cấu hình lại tệp cấu hình etcd để trỏ đến thư mục dữ liệu mới.

Khởi động lại dịch vụ etcd và Kube API Server.

3. Chọn phương pháp sao lưu phù hợp:

Môi trường Kubernetes được quản lý: Có thể không cho phép truy cập trực tiếp vào etcd, khiến việc sao lưu dựa trên truy vấn API Server trở thành phương pháp được ưu tiên.

Cân nhắc: Cả hai phương pháp đều có ưu và nhược điểm. Đánh giá nhu cầu cụ thể và môi trường của bạn để chọn chiến lược sao lưu phù hợp.

Trên đây là các phương pháp sao lưu và khôi phục khác nhau trong Kubernetes, bao gồm sao lưu tài nguyên cụm thông qua các tệp cấu hình và truy vấn API, cũng như sao lưu cơ sở dữ liệu etcd trực tiếp hoặc sử dụng ảnh chụp. 

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em