Sự hỗn loạn khi quản lý đa cụm (Multi-Cluster)
Vận hành một cụm Kubernetes duy nhất là việc khá dễ dàng. Bạn có file kubeconfig, một vài plugin IDE và một số script cục bộ. Nhưng khi đội ngũ phát triển, bạn sẽ thấy mình phải xoay xở với năm, mười, hoặc thậm chí hai mươi cụm trên AWS, GCP và phần cứng on-premise. Việc phụ thuộc vào kubectl config use-context giống như một trò chơi Russian Roulette đầy rủi ro. Một lỗi đánh máy trong tab terminal có thể biến một bản cập nhật Dev thông thường thành một buổi họp rút kinh nghiệm (post-mortem) cho môi trường Production.
Quản lý tập trung không chỉ là một sự xa xỉ; đó là một lưới an toàn. Bạn cần một trung tâm chỉ huy duy nhất để theo dõi sức khỏe hệ thống, thực thi Kiểm soát Truy cập dựa trên Vai trò (RBAC) và đẩy các bản cập nhật nhất quán. Tôi đã sử dụng Rancher để quản lý các môi trường với hơn 200 node, và sự ổn định mà nó mang lại thực sự thay đổi cuộc chơi. Nó tạo ra một giao diện thống nhất giúp che đi những chi tiết phức tạp của hạ tầng bên dưới.
Triển khai Rancher Management Server
Trước khi có thể đồng bộ hóa các môi trường, bạn cần một nơi dành riêng cho Rancher server. Bạn có thể cài đặt Rancher trên một cụm hiện có thông qua Helm, nhưng cách nhanh nhất để bắt đầu thử nghiệm (Proof of Concept) là thông qua Docker.
Trong môi trường production, tôi khuyên bạn nên sử dụng cụm RKE (Rancher Kubernetes Engine) có tính sẵn sàng cao (high-availability) với ít nhất 3 node. Đối với một management plane tiêu chuẩn xử lý tối đa 10 cụm hạ nguồn (downstream clusters), một máy chủ Linux với 2 vCPU và 8GB RAM là lựa chọn tối ưu. Sử dụng lệnh sau để khởi động server:
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
rancher/rancher:latest
Sau khi container khởi động, hãy truy cập trình duyệt tới địa chỉ https://<your-server-ip>. Bạn sẽ cần mật khẩu bootstrap để đăng nhập. Lấy mật khẩu này bằng cách kiểm tra log của container:
docker logs <container_id> 2>&1 | grep "Bootstrap Password:"
Tích hợp môi trường Dev, Staging và Prod
Rancher giúp việc import các cụm hiện có trở nên đơn giản một cách đáng ngạc nhiên. Dù bạn đang chạy EKS trên AWS hay một hệ thống bare-metal tại chỗ, quy trình làm việc đều giống nhau. Trong giao diện Rancher UI, chọn Import Existing Cluster và chọn Generic.
Hãy đặt tên cụm sao cho rõ ràng, ví dụ như prod-us-east-01. Rancher sẽ tạo một lệnh kubectl cụ thể cho bạn. Hãy chạy lệnh này trên node master của cụm đích:
kubectl apply -f https://<rancher-url>/v3/import/<token>.yaml
Lệnh này sẽ triển khai cattle-cluster-agent. Agent này đóng vai trò là cầu nối trở lại management server của bạn. Hãy lặp lại bước này cho các môi trường Staging và Dev. Trong vòng khoảng 60 giây, bảng điều khiển của bạn sẽ hiển thị các số liệu thực tế về mức sử dụng CPU, áp lực bộ nhớ và sức khỏe của các node trên toàn bộ hệ thống của bạn.
Tối ưu hóa với Projects
Tôi dựa rất nhiều vào tính năng “Projects” của Rancher, một tính năng mà Kubernetes tiêu chuẩn không có. Trong khi Kubernetes chỉ cung cấp namespace, Rancher cho phép bạn nhóm nhiều namespace vào một Project duy nhất. Điều này cực kỳ hữu ích cho môi trường đa người dùng (multi-tenancy). Bạn có thể đặt hạn mức bộ nhớ 20GB cho project “Payment Service”, và giới hạn đó sẽ tự động áp dụng cho tất cả các namespace dev, test và sandbox của nó.
Triển khai ứng dụng không còn là nỗi lo
Thế mạnh của Rancher nằm ở khả năng đẩy ứng dụng lên nhiều cụm cùng một lúc. Đối với các đội ngũ chuyên sâu, Rancher tích hợp Fleet, một GitOps engine được thiết kế để mở rộng quy mô. Nếu bạn mới bắt đầu, tính năng Apps & Marketplace tích hợp sẵn sẽ dễ tiếp cận hơn nhiều.
Hãy tưởng tượng bạn cần triển khai một Nginx ingress controller tiêu chuẩn trên cả ba môi trường. Bạn không còn phải đăng nhập vào ba terminal khác nhau nữa. Thay vào đó, hãy sử dụng menu Continuous Delivery:
- Kết nối với Git Repo chứa các Helm chart của bạn.
- Xác định Target bằng các nhãn (labels) của cụm (ví dụ:
env=prod). - Theo dõi Rancher đồng bộ hóa trạng thái trên toàn bộ hạ tầng của bạn.
Nếu bạn vẫn thích sử dụng CLI, bạn có thể tải file Kubeconfig cho bất kỳ cụm nào trực tiếp từ giao diện UI. File này tuân thủ các quyền hạn của bạn trên Rancher. Nếu một dev sơ cấp chỉ có quyền “Read-Only” trong Rancher, các lệnh kubectl của họ sẽ tự động bị hạn chế.
Giám sát và Khả năng hiển thị toàn cục
Việc quản lý tập trung sẽ thất bại nếu bạn không thể thấy những gì đang diễn ra bên trong các pod. Rancher cung cấp khả năng thiết lập Prometheus và Grafana chỉ với một cú nhấp chuột. Bạn không cần phải cấu hình scraper thủ công cho mỗi cụm mới. Chỉ cần bật nó trong menu Cluster Tools.
# Kiểm tra xem stack giám sát có hoạt động tốt không
kubectl get pods -n cattle-monitoring-system
Sau khi kích hoạt, bạn sẽ có cái nhìn tổng quan về toàn bộ hoạt động của mình. Nếu một node trong Production đạt ngưỡng 90% bộ nhớ, một cảnh báo đỏ sẽ hiện lên trên bảng điều khiển chính. Điều này thường cho phép bạn mở rộng quy mô trước khi người dùng gặp phải bất kỳ tình trạng trễ (latency) nào.
Tôi cũng khuyên bạn nên tập trung hóa nhật ký (logs). Rancher có thể dẫn log từ mọi cụm vào một instance Elasticsearch hoặc Splunk duy nhất. Điều này giúp tiết kiệm hàng giờ debug; bạn có thể tìm kiếm một Trace ID cụ thể trên tất cả các cụm từ một thanh tìm kiếm duy nhất.
Các kinh nghiệm thực chiến tốt nhất
Sau khi quản lý hàng chục cụm production, tôi đã rút ra một vài bài học xương máu:
- Cô lập Management Plane: Đừng bao giờ chạy các ứng dụng phục vụ khách hàng trên cùng một cụm chạy Rancher. Nếu ứng dụng của bạn gây ra sự cố, bạn sẽ mất khả năng khắc phục nó.
- Loại bỏ người dùng cục bộ: Kết nối Rancher với Okta, GitHub hoặc Active Directory ngay lập tức. Việc quản lý mật khẩu cá nhân cho một đội ngũ DevOps 15 người là một rủi ro bảo mật.
- Gắn nhãn (Label) triệt để: Sử dụng các nhãn như
region=eu-west-1vàcompliance=pci. Điều này cho phép bạn tự động hóa các bản vá bảo mật trên các nhóm cụm cụ thể chỉ trong vài giây.
Quản lý nhiều cụm Kubernetes không nhất thiết phải là một trải nghiệm rời rạc và căng thẳng. Bằng cách sử dụng Rancher làm bảng điều khiển trung tâm, bạn có được khả năng hiển thị tốt hơn và thực thi bảo mật chặt chẽ hơn. Nó đã chuyển đổi quy trình làm việc của tôi từ việc đi “chữa cháy” sang làm kỹ thuật thực thụ, và nó cũng có thể làm điều tương tự cho bạn.

