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

Hướng dẫn triển khai Docker Swarm và Kubernetes trên VPS: Từ cài đặt cơ bản đến môi trường production

17 tháng 5, 2026

Giới thiệu về Container Orchestration trên VPS

Trong thời đại chuyển đổi số, việc triển khai và quản lý ứng dụng một cách linh hoạt, hiệu quả là yêu cầu sống còn của mọi doanh nghiệp. Docker Swarm và Kubernetes đã trở thành hai nền tảng container orchestration hàng đầu, cho phép tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng container hóa. Trong khi nhiều tổ chức lựa chọn các dịch vụ đám mây được quản lý, việc chạy các cụm này trên Virtual Private Server (VPS) mang lại sự kiểm soát tối đa, tính linh hoạt về cấu hình và khả năng tối ưu chi phí đáng kể.

Bài viết này sẽ hướng dẫn bạn hành trình từ việc thiết lập một VPS trống đến việc vận hành một cụm container ổn định, sẵn sàng cho môi trường production, bao gồm cả lựa chọn giữa Docker Swarm và Kubernetes dựa trên nhu cầu cụ thể của doanh nghiệp.

Lựa chọn nền tảng: Docker Swarm vs. Kubernetes

Quyết định đầu tiên và quan trọng nhất là lựa chọn công cụ orchestration phù hợp. Mỗi nền tảng có triết lý và điểm mạnh riêng.

Docker Swarm: Đơn giản và tích hợp sẵn

  • Ưu điểm: Đi kèm với Docker Engine, cú pháp và công cụ quen thuộc, học tập nhanh chóng, cấu hình đơn giản, tài nguyên nhẹ, lý tưởng cho các cụm nhỏ đến trung bình.
  • Nhược điểm: Hệ sinh thái plugin và công cụ bên thứ ba ít phong phú hơn, các tính năng nâng cao cho các workload phức tạp có thể bị hạn chế.
  • Phù hợp với: Các team mới bắt đầu với container, các ứng dụng microservice không quá phức tạp, các dự án cần triển khai nhanh với độ phức tạp quản lý thấp.

Kubernetes: Mạnh mẽ và toàn diện

  • Ưu điểm: Hệ sinh thái rộng lớn, cộng đồng hỗ trợ mạnh mẽ, khả năng tự phục hồi và mở rộng tự động vượt trội, linh hoạt cao với nhiều công cụ CI/CD và monitoring.
  • Nhược điểm: Độ phức tạp học tập và vận hành cao, yêu cầu tài nguyên nhiều hơn, cấu hình ban đầu phức tạp.
  • Phù hợp với: Các tổ chức có quy mô lớn, các ứng dụng phân tán phức tạp, các team DevOps có kinh nghiệm, các dự án yêu cầu khả năng mở rộng và khả năng phục hồi cao nhất.

Khuyến nghị: Nếu bạn mới bắt đầu hoặc có workload đơn giản, hãy bắt đầu với Docker Swarm để làm quen với các khái niệm orchestration. Đối với các hệ thống doanh nghiệp dài hạn và phức tạp, đầu tư vào Kubernetes sẽ mang lại lợi ích lớn hơn.

Chuẩn bị hạ tầng VPS

Trước khi cài đặt bất kỳ công cụ nào, việc chuẩn bị một nền tảng VPS vững chắc là bắt buộc.

Lựa chọn nhà cung cấp và cấu hình

Lựa chọn nhà cung cấp VPS (DigitalOcean, Linode, Vultr, UpCloud, hoặc các nhà cung cấp tại Việt Nam) dựa trên vị trí địa lý, hiệu năng mạng và ngân sách. Đối với cụm production:

  1. Node Manager/Leader: Tối thiểu 2GB RAM, 2 vCPU, ổ SSD từ 40GB. Đây là node điều khiển cụm.
  2. Node Worker: Cấu hình phụ thuộc vào ứng dụng. Khuyến nghị tối thiểu 2-4GB RAM và 2 vCPU cho mỗi node để đảm bảo khả năng chịu lỗi.
  3. Số lượng node: Tối thiểu 3 node (1 manager, 2 worker) cho môi trường production để đảm bảo tính sẵn sàng cao (High Availability).

Cấu hình hệ điều hành và mạng

Cài đặt một bản phân phối Linux ổn định như Ubuntu 22.04 LTS hoặc Debian 11. Thực hiện các bước cơ bản:

  • Cập nhật hệ thống và cài đặt các gói cần thiết.
  • Thiết lập tường lửa (UFW hoặc firewalld) để chỉ mở các cổng cần thiết (SSH, cổng swarm/kubernetes).
  • Cấu hình swap phù hợp (thường được tắt cho Kubernetes).
  • Đảm bảo đồng bộ thời gian với NTP.
  • Thiết lập hostname rõ ràng cho từng node (ví dụ: manager-01, worker-01, worker-02).
  • Cấu hình DNS nội bộ hoặc sửa file /etc/hosts để các node có thể phân giải tên của nhau.

Triển khai Docker Swarm trên VPS

Bước 1: Cài đặt Docker Engine

Trên tất cả các node, cài đặt Docker Engine phiên bản mới nhất. Sử dụng kho chính thức của Docker để đảm bảo cập nhật và bảo mật.

Bước 2: Khởi tạo Swarm Cluster

Trên node được chỉ định làm manager, chạy lệnh: docker swarm init --advertise-addr <IP_MANAGER>. Lệnh này sẽ tạo cụm và cung cấp token để các node worker tham gia.

Bước 3: Thêm các Node Worker

Trên mỗi node worker, chạy lệnh docker swarm join với token được cung cấp từ bước trước.

Bước 4: Kiểm tra và quản lý cụm

Sử dụng lệnh docker node ls trên manager để xem trạng thái tất cả các node. Bạn đã có một cụm Docker Swarm hoạt động.

Bước 5: Triển khai dịch vụ đầu tiên

Tạo một file docker-compose.yml đơn giản và triển khai với lệnh docker stack deploy -c docker-compose.yml myapp. Swarm sẽ tự động lên lịch và phân phối các container trên các node worker.

Triển khai Kubernetes trên VPS với kubeadm

Quy trình triển khai Kubernetes phức tạp hơn, và kubeadm là công cụ chính thức để tự động hóa việc này.

Bước 1: Cài đặt các thành phần cơ bản

Trên tất cả các node, cài đặt container runtime (containerd hoặc Docker), kubeadm, kubelet và kubectl. Tắt swap và cấu hình các module kernel cần thiết.

Bước 2: Khởi tạo Control Plane

Trên node master, chạy lệnh sudo kubeadm init --pod-network-cidr=10.244.0.0/16. Lưu ý lệnh kubeadm join được xuất ra để sử dụng sau.

Bước 3: Cấu hình kubectl và Pod Network

Cấu hình file kubeconfig cho user và cài đặt add-on mạng (CNI) như Flannel hoặc Calico để các pod có thể giao tiếp với nhau.

Bước 4: Thêm các Node Worker

Trên mỗi node worker, chạy lệnh kubeadm join đã lưu từ bước 2.

Bước 5: Kiểm tra cụm

Sử dụng kubectl get nodes để xác nhận tất cả các node đã ở trạng thái Ready.

Cấu hình cho môi trường Production

Một cụm hoạt động chỉ là bước đầu. Để sẵn sàng cho production, cần các cấu hình bảo mật và vận hành sau:

Bảo mật

  • Role-Based Access Control (RBAC): Áp dụng chặt chẽ trên Kubernetes. Trên Swarm, sử dụng secret management.
  • Network Policies: Cô lập lưu lượng mạng giữa các dịch vụ.
  • Image Security: Chỉ sử dụng image từ registry đáng tin cậy, scan image để tìm lỗ hổng.
  • Bảo mật etcd (Kubernetes): Bật xác thực TLS cho etcd.

Lưu trữ (Storage)

Cấu hình Persistent Volumes (PV) và Persistent Volume Claims (PVC) trong Kubernetes, hoặc sử dụng volume driver trong Docker Swarm để gắn storage từ các giải pháp như NFS, Ceph, hoặc cloud block storage của nhà cung cấp VPS.

Load Balancing và Ingress

  • Docker Swarm: Sử dụng routing mesh tích hợp. Có thể đặt một reverse proxy (như Traefik hoặc HAProxy) trước cụm.
  • Kubernetes: Triển khai Ingress Controller (Nginx Ingress, Traefik) và một Service kiểu LoadBalancer. Trên VPS, có thể sử dụng MetalLB hoặc cấu hình một node làm entry point với keepalived.

Giám sát và Logging

Triển khai bộ công cụ giám sát như Prometheus và Grafana để theo dõi tài nguyên cụm và ứng dụng. Sử dụng Loki hoặc EFK Stack (Elasticsearch, Fluentd, Kibana) để tập trung và phân tích log.

Backup và Phục hồi thảm họa

Định kỳ backup cấu hình cụm (các manifest Kubernetes, stack file Docker). Đối với Kubernetes, backup dữ liệu etcd là tối quan trọng. Lên kế hoạch cho việc phục hồi toàn bộ cụm.

Chiến lược tối ưu chi phí và hiệu năng

Chạy cụm trên VPS cho phép tối ưu hóa chi phí linh hoạt.

  • Auto-scaling: Trên Kubernetes, sử dụng Cluster Autoscaler (nếu nhà cung cấp hỗ trợ) hoặc KEDA để tự động thêm/bớt pod dựa trên tải. Trên VPS thuần, cần có script tự động để điều phối việc tạo/xóa node.
  • Resource Quotas và Limits: Đặt giới hạn CPU/RAM cho mọi namespace và pod để tránh một ứng dụng chiếm dụng toàn bộ tài nguyên.
  • Sử dụng Spot/Preemptible Instances: Nếu nhà cung cấp có loại VPS giá rẻ hơn, có thể dùng cho các node worker chạy stateless workload, với chiến lược tái lập lịch pod phù hợp.
  • Consolidation: Theo dõi mức độ sử dụng tài nguyên và hợp nhất các workload vào ít node hơn vào giờ thấp điểm để tắt bớt node, tiết kiệm chi phí.

Kết luận

Việc vận hành Docker Swarm hoặc Kubernetes trên VPS là một hành trình đòi hỏi sự đầu tư về thời gian và kiến thức, nhưng phần thưởng mang lại là sự tự chủ hoàn toàn, kiểm soát chi phí và một nền tảng triển khai ứng dụng hiện đại, linh hoạt. Bắt đầu với một cụm nhỏ, nắm vững các nguyên tắc vận hành và bảo mật, sau đó mở rộng dần dần. Dù lựa chọn Swarm cho sự đơn giản hay Kubernetes cho sức mạnh toàn diện, việc làm chủ công nghệ container orchestration sẽ đặt nền móng vững chắc cho kiến trúc ứng dụng và năng lực DevOps của doanh nghiệp trong tương lai.

Hãy coi cụm container của bạn như một sản phẩm phần mềm cần được xây dựng, giám sát và tối ưu liên tục. Với cách tiếp cận có hệ thống được trình bày ở trên, bạn hoàn toàn có thể biến những VPS đơn lẻ thành một nền tảng production mạnh mẽ và đáng tin cậy.