Hướng dẫn thiết lập Kube-ops-view kết hợp K3s trên VPS: Trực quan hóa Kubernetes Cluster theo thời gian thực
Giới thiệu về xu hướng giám sát Kubernetes trong môi trường tối giản
Trong kỷ nguyên của điện toán đám mây và kiến trúc microservices, việc quản lý và giám sát các container đóng vai trò quyết định đến sự ổn định của hệ thống doanh nghiệp. Kubernetes (K8s) đã trở thành tiêu chuẩn công nghiệp để điều phối container. Tuy nhiên, đối với các doanh nghiệp vừa và nhỏ (SMEs) hoặc các dự án thử nghiệm, việc vận hành một cụm Kubernetes tiêu chuẩn đòi hỏi lượng tài nguyên phần cứng rất lớn và chi phí duy trì VPS cao.
Đó là lý do tại sao K3s — một phiên bản Kubernetes rút gọn siêu nhẹ do Rancher phát triển — trở thành sự lựa chọn hàng đầu. K3s giảm thiểu dung lượng và bộ nhớ tiêu thụ nhưng vẫn giữ nguyên toàn bộ tính năng cốt lõi của K8s. Tuy nhiên, việc giám sát các container (Docker/Containerd) bên trong K3s thông qua giao diện dòng lệnh (CLI) như kubectl đôi khi gây khó khăn cho việc bao quát toàn cục.
Để giải quyết bài toán này, Kube-ops-view xuất hiện như một giải pháp trực quan hóa tuyệt vời. Công cụ này cung cấp một dashboard mã nguồn mở giúp hiển thị trực quan toàn bộ cấu trúc định tuyến, các node, và trạng thái tải của các pod/container theo thời gian thực dưới dạng đồ họa động, giúp các kỹ sư hệ thống nắm bắt tình trạng vận hành chỉ trong một cái nhìn.
Tại sao nên kết hợp Kube-ops-view và K3s trên VPS?
Việc kết hợp bộ đôi này mang lại nhiều lợi ích thiết thực cho kiến trúc hạ tầng của doanh nghiệp:
- Tiết kiệm tài nguyên tối đa: K3s chỉ tiêu tốn chưa đến 512MB RAM, và Kube-ops-view là một ứng dụng Web dạng Read-only cực kỳ nhẹ, không làm ảnh hưởng đến hiệu năng của VPS như các hệ thống giám sát cồng kềnh khác (ví dụ: Prometheus + Grafana nặng nề).
- Trực quan hóa thời gian thực (Real-time): Theo dõi quy trình scale-up, scale-down, hoặc các container bị lỗi (CrashLoopBackOff) ngay lập tức thông qua giao diện đồ họa trực quan sinh động.
- Quản lý tập trung: Thích hợp cho môi trường DevOps chuyên nghiệp, giúp các thành viên trong đội ngũ kỹ thuật dễ dàng theo dõi trạng thái phân bổ tài nguyên trên VPS.
Chuẩn bị hệ thống trước khi cài đặt
Để quy trình triển khai diễn ra mượt mà, bạn cần chuẩn bị một môi trường VPS đáp ứng các yêu cầu cơ bản sau:
- Một máy chủ VPS chạy hệ điều hành Ubuntu 20.04 LTS hoặc Ubuntu 22.04 LTS với cấu hình tối thiểu là 1 vCPU và 2GB RAM.
- Quyền truy cập cao nhất (
root) hoặc tài khoản có quyềnsudotrên VPS. - Một tên miền (domain) được trỏ về IP của VPS (nếu bạn muốn cấu hình truy cập từ xa một cách bảo mật thông qua Ingress).
Hướng dẫn chi tiết các bước thiết lập
Bước 1: Cài đặt K3s trên VPS
Đầu tiên, chúng ta cần khởi tạo cụm Kubernetes rút gọn K3s. Rancher cung cấp một script cài đặt tự động rất tối ưu. Hãy chạy câu lệnh sau trong terminal của VPS:
curl -sfL [https://get.k3s.io](https://get.k3s.io) | sh -
Sau khi script chạy xong, bạn có thể kiểm tra trạng thái hoạt động của K3s bằng lệnh:
sudo kubectl get nodes
Nếu hệ thống trả về trạng thái Ready cho node của bạn, nghĩa là K3s đã sẵn sàng hoạt động. Mặc dù K3s sử dụng containerd làm bộ thực thi container mặc định thay cho Docker, cấu trúc quản lý pod và container vẫn hoàn toàn tương thích và tối ưu.
Bước 2: Cấu hình phân quyền (RBAC) cho Kube-ops-view
Kube-ops-view cần quyền truy cập ở chế độ đọc (Read-only) vào API của Kubernetes để lấy thông tin về các node và pod. Chúng ta sẽ tạo một file cấu hình YAML tên là kube-ops-view-rbac.yaml:
apiVersion: v1
kind: ServiceAccount
metadata:
name: kube-ops-view
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kube-ops-view
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- kind: ServiceAccount
name: kube-ops-view
namespace: kube-system
Áp dụng cấu hình trên bằng lệnh:
kubectl apply -f kube-ops-view-rbac.yaml
Bước 3: Triển khai Deployment và Service cho Kube-ops-view
Tiếp theo, tạo file kube-ops-view-deployment.yaml để định nghĩa ứng dụng. Chúng ta sẽ mở port nội bộ và thiết lập tài nguyên giới hạn cho container này:
apiVersion: apps/v1
kind: Deployment
metadata:
name: kube-ops-view
namespace: kube-system
labels:
application: kube-ops-view
spec:
replicas: 1
selector:
matchLabels:
application: kube-ops-view
template:
metadata:
labels:
application: kube-ops-view
spec:
serviceAccountName: kube-ops-view
containers:
- name: kube-ops-view
image: hjacobs/kube-ops-view:20.4.0
ports:
- containerPort: 8080
name: http
resources:
limits:
cpu: 200m
memory: 100Mi
requests:
cpu: 50m
memory: 50Mi
---
apiVersion: v1
kind: Service
metadata:
name: kube-ops-view
namespace: kube-system
labels:
application: kube-ops-view
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
application: kube-ops-view
Triển khai ứng dụng lên cụm K3s:
kubectl apply -f kube-ops-view-deployment.yaml
Bước 4: Cấu hình Ingress để truy cập giao diện đồ họa công khai
K3s tích hợp sẵn Traefik làm Ingress Controller. Để truy cập giao diện Kube-ops-view từ trình duyệt web thông qua tên miền của bạn, hãy tạo file kube-ops-view-ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kube-ops-view-ingress
namespace: kube-system
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
rules:
- host: k3s-view.yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kube-ops-view
port:
number: 80
Lưu ý: Thay thế
k3s-view.yourdomain.combằng tên miền thực tế của bạn đã cấu hình trỏ về IP của VPS.
Kích hoạt cấu hình Ingress:
kubectl apply -f kube-ops-view-ingress.yaml
Trải nghiệm và diễn giải giao diện Kube-ops-view
Bây giờ, hãy mở trình duyệt web và truy cập vào địa chỉ tên miền bạn vừa cấu hình. Bạn sẽ được chào đón bởi một giao diện đồ họa cực kỳ ấn tượng và hiện đại.
Mỗi hình chữ nhật lớn đại diện cho một Node (chính là VPS của bạn). Bên trong các node này, các ô vuông nhỏ hơn chuyển động liên tục chính là các Pod/Container đang chạy. Màu sắc của các ô vuông biểu thị trạng thái tải của container:
- Màu xanh lá cây: Container đang hoạt động ổn định và an toàn.
- Màu vàng/cam: Container đang sử dụng lượng tài nguyên (CPU/Memory) tiệm cận mức giới hạn cho phép.
- Màu đỏ hoặc nhấp nháy: Container gặp lỗi hoặc đang trong quá trình tái khởi động (Restarting).
Khi bạn thực hiện các thao tác mở rộng hệ thống (Scale-up) hoặc cập nhật ứng dụng, bạn sẽ thấy các ô vuông mới xuất hiện hoặc biến mất theo thời gian thực một cách mượt mà nhờ vào cơ chế kết nối WebSocket liên tục.
Kết luận và Khuyến nghị bảo mật
Việc thiết lập Kube-ops-view kết hợp với K3s trên VPS mang lại một giải pháp giám sát trực quan hóa mạnh mẽ, tinh gọn và hiệu quả cho các kỹ sư DevOps hệ thống. Bạn không còn phải thao tác các dòng lệnh phức tạp để kiểm tra xem hệ thống container của mình có đang chạy ổn định hay không.
Khuyến nghị bảo mật quan trọng: Vì Kube-ops-view mặc định không có lớp xác thực đăng nhập, bất kỳ ai có URL đều có thể xem cấu trúc hạ tầng của bạn. Do đó, đối với môi trường production của doanh nghiệp, bạn nên tích hợp thêm Basic Authentication thông qua Traefik Ingress hoặc giới hạn IP truy cập bằng VPN nội bộ để đảm bảo an toàn thông tin tối đa cho doanh nghiệp.
