Quay lại danh sách
Tin tức công nghệ

Hướng Dẫn Toàn Diện: Triển Khai Cloud-native Backup Với Velero Trên Cụm K3s VPS

28 tháng 5, 2026

Giới thiệu về Cloud-native Backup và Thách thức trên K3s VPS

Trong kỷ nguyên chuyển đổi số, Kubernetes đã trở thành tiêu chuẩn vàng cho việc vận hành ứng dụng. Đối với các doanh nghiệp vừa và nhỏ (SMEs) hoặc các nhóm phát triển tối ưu chi phí, K3s – phiên bản Kubernetes rút gọn của Rancher – triển khai trên hạ tầng VPS (Virtual Private Server) là một lựa chọn cực kỳ phổ biến. K3s mang lại sức mạnh của Kubernetes nhưng tiêu tốn rất ít tài nguyên phần cứng.

Tuy nhiên, việc vận hành ứng dụng trên K3s VPS đặt ra một thách thức lớn về an toàn dữ liệu. Khác với các dịch vụ Managed Kubernetes của các Cloud Provider lớn (như AWS EKS, Google GKE) vốn tích hợp sẵn công cụ backup snapshot cho ổ đĩa, môi trường K3s trên VPS tự quản (Self-hosted) đòi hỏi một chiến lược sao lưu linh hoạt, độc lập và chuẩn Cloud-native. Đó chính là lý do Velero ra đời.

Velero (trước đây là Heptio Ark) là một công cụ mã nguồn mở chuẩn Cloud-native, giúp sao lưu và phục hồi an toàn các tài nguyên trong cụm Kubernetes cùng với các volume dữ liệu persistent một cách an toàn.

Bài viết này sẽ hướng dẫn bạn từng bước thiết lập hệ thống sao lưu Cloud-native toàn diện với Velero trên cụm K3s VPS, sử dụng Object Storage tương thích S3 để lưu trữ bản sao lưu.

---

Tại sao nên chọn Velero cho K3s?

So với các phương pháp sao lưu truyền thống như rsync hoặc snapshot toàn bộ máy chủ VPS, Velero mang lại những lợi ích vượt trội chuẩn Cloud-native:

  • Hiểu sâu về cấu trúc Kubernetes: Velero không chỉ sao lưu dữ liệu thô mà sao lưu toàn bộ trạng thái của cụm bao gồm các tài nguyên API như Deployments, Services, ConfigMaps, Secrets và CRDs.
  • Bảo vệ dữ liệu động (Persistent Volumes): Tích hợp mượt mà với restic hoặc Kopia để sao lưu dữ liệu bên trong các Persistent Volume (PV) mà không phụ thuộc vào hạ tầng lưu trữ bên dưới của VPS.
  • Khả năng khôi phục linh hoạt (Disaster Recovery): Bạn có thể dễ dàng khôi phục toàn bộ cụm về trạng thái cũ, hoặc di chuyển (migrate) toàn bộ ứng dụng sang một cụm K3s/Kubernetes hoàn toàn mới ở một nhà cung cấp VPS khác.
  • Tiết kiệm chi phí: Kết hợp K3s, Velero và Cloud Object Storage (như MinIO, Cloudflare R2, AWS S3) giúp doanh nghiệp xây dựng hệ thống DR (Disaster Recovery) với chi phí tối thiểu.
---

Chuẩn bị môi trường trước khi cài đặt

Để quá trình triển khai diễn ra suôn sẻ, bạn cần chuẩn bị sẵn các thành phần sau:

  1. Một cụm K3s đang hoạt động ổn định trên VPS (Ubuntu 22.04 trở lên là khuyến nghị).
  2. Quyền truy cập kubectl với vai trò cluster-admin.
  3. Một tài khoản Object Storage tương thích S3 (AWS S3, MinIO, Cloudflare R2, hoặc DigitalOcean Spaces). Bạn cần chuẩn bị sẵn thông tin: Bucket Name, Access Key, Secret Key, và Endpoint URL.
  4. Công cụ dòng lệnh Velero CLI đã được cài đặt trên máy trạm của bạn.
---

Quy trình triển khai Velero trên cụm K3s VPS

Bước 1: Cài đặt Velero CLI trên máy quản trị

Đầu tiên, bạn cần tải về phiên bản Velero CLI phù hợp với hệ điều hành của mình. Đối với môi trường Linux/macOS, bạn có thể sử dụng các lệnh sau:

# Tải phiên bản Velero mới nhất (Ví dụ v1.15.0)
curl -L [https://github.com/vmware-tanzu/velero/releases/download/v1.15.0/velero-v1.15.0-linux-amd64.tar.gz](https://github.com/vmware-tanzu/velero/releases/download/v1.15.0/velero-v1.15.0-linux-amd64.tar.gz) -o velero.tar.gz

# Giải nén
tar -xvf velero.tar.gz

# Di chuyển vào thư mục bin
sudo mv velero-v1.15.0-linux-amd64/velero /usr/local/bin/

# Kiểm tra phiên bản
velero version --client-only

Bước 2: Tạo file cấu hình thông tin bảo mật S3

Tạo một file có tên credentials-velero tại máy trạm để lưu thông tin Access Key và Secret Key của dịch vụ S3 Storage của bạn:

[default]
aws_access_key_id = ID_KEYS_CUA_BAN
aws_secret_access_key = SECRET_KEY_CUA_BAN

Lưu ý: Hãy đảm bảo bảo mật cho file này và không upload nó lên các kho lưu trữ mã nguồn công khai như GitHub.

Bước 3: Cài đặt Velero Server vào cụm K3s

Vì môi trường VPS thường sử dụng Local Storage mặc định của K3s (local-path provisioner), chúng ta sẽ sử dụng tính năng Node Agent (trước đây là Restic) của Velero để sao lưu dữ liệu File-System-Level của các Persistent Volumes. Chạy lệnh cài đặt sau:

velero install \
  --provider aws \
  --plugins velero/velero-plugin-for-aws:v1.10.0 \
  --bucket ten-bucket-cua-ban \
  --secret-file ./credentials-velero \
  --use-node-agent \
  --uploader-type restic \
  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=[https://your-s3-endpoint.com](https://your-s3-endpoint.com) \
  --snapshot-location-config region=minio

Trong đó, hãy thay thế ten-bucket-cua-ban và [https://your-s3-endpoint.com](https://your-s3-endpoint.com) bằng thông số thực tế của bạn. Sau khi chạy lệnh, hãy kiểm tra trạng thái của Velero Pods:

kubectl get pods -n velero

Đảm bảo rằng cả Velero deployment và các Node-agent DaemonSet đều ở trạng thái Running.

---

Thực hành Sao lưu và Phục hồi Dữ liệu

1. Tạo bản sao lưu đầu tiên (Ad-hoc Backup)

Để sao lưu toàn bộ cụm K3s của bạn, chỉ cần thực hiện một lệnh đơn giản:

velero backup create k3s-full-backup-01

Nếu bạn chỉ muốn sao lưu một Namespace cụ thể (ví dụ: production), hãy sử dụng tham số --include-namespaces:

velero backup create prod-backup --include-namespaces production

Kiểm tra trạng thái của bản backup bằng lệnh:

velero backup get
velero backup describe prod-backup

2. Giả lập sự cố và Phục hồi dữ liệu (Restore)

Hãy thử nghiệm sức mạnh của Velero bằng cách xóa namespace production để giả lập một tình huống thảm họa:

kubectl delete namespace production

Bây giờ, tiến hành khôi phục lại toàn bộ dữ liệu và cấu hình từ bản backup đã tạo trước đó:

velero restore create --from-backup prod-backup

Kiểm tra tiến trình phục hồi:

velero restore get
kubectl get pods -n production

Chỉ sau vài phút, hệ thống của bạn sẽ quay trở lại trạng thái hoạt động bình thường với đầy đủ dữ liệu cấu hình ban đầu.

---

Tự động hóa với Lịch trình Backup (Schedule)

Một chiến lược sao lưu chuyên nghiệp không thể thiếu tính năng tự động hóa. Velero cho phép bạn định nghĩa lịch trình backup tự động bằng cú pháp Cron tab quen thuộc.

Để tạo một lịch trình sao lưu namespace production vào lúc 00:00 mỗi ngày và tự động xóa các bản sao lưu cũ sau 7 ngày (TTL - Time To Live), hãy sử dụng lệnh sau:

velero schedule create daily-prod-backup \
  --schedule="0 0 * * *" \
  --include-namespaces production \
  --ttl 168h0m0s

Bạn có thể quản lý và xem danh sách các lịch trình hiện có thông qua lệnh: velero schedule get.

---

Các Best Practices khi vận hành Velero trên K3s VPS

Để đảm bảo hệ thống backup hoạt động ổn định và tối ưu chi phí, các kỹ sư hệ thống cần lưu ý một số nguyên tắc sau:

  • Giám sát dung lượng ổ đĩa VPS: Do Velero Node-Agent tạo các bản snapshot cục bộ trước khi đẩy lên S3, hãy đảm bảo VPS của bạn còn trống ít nhất 20-30% dung lượng đĩa.
  • Cấu hình TTL hợp lý: Tránh lưu trữ các bản backup quá lâu trên S3 nếu không cần thiết để tối ưu hóa chi phí lưu trữ đám mây.
  • Thường xuyên diễn tập khôi phục (DR Test): Đừng đợi đến khi xảy ra sự cố thật sự mới kiểm tra tính toàn vẹn của bản backup. Hãy lên lịch khôi phục thử nghiệm trên một cụm K3s staging định kỳ mỗi tháng một lần.
  • Bảo mật kênh truyền tải: Luôn sử dụng giao thức HTTPS (TLS) cho Endpoint của S3 Storage để tránh việc rò rỉ dữ liệu nhạy cảm trong quá trình backup.
---

Lời kết

Thiết lập thành công Velero trên cụm K3s VPS mang lại cho doanh nghiệp một giải pháp sao lưu mạnh mẽ, linh hoạt và tiết kiệm chi phí không thua kém gì các giải pháp Managed Kubernetes đắt đỏ. Đầu tư thời gian để xây dựng một hệ thống Cloud-native Backup vững chắc ngay hôm nay chính là chìa khóa bảo vệ tài sản số và đảm bảo tính kinh doanh liên tục (Business Continuity) của doanh nghiệp bạn trước mọi rủi ro hạ tầng.

Hướng Dẫn Toàn Diện: Triển Khai Cloud-native Backup Với Velero Trên Cụm K3s VPS | DPTCloud