Cài đặt Metric Server qua Helm trên K3s
Metric Server là component bắt buộc để HPA và Cluster Autoscaler hoạt động, cung cấp dữ liệu CPU và RAM theo thời gian thực.
K3s thường không cài Metric Server mặc định để giảm thiểu overhead, chúng ta cần thêm repository và deploy thủ công.
Trước tiên, thêm Helm repository chính thức của Metric Server vào hệ thống.
helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
Hệ thống sẽ trả về thông báo "https://kubernetes-sigs.github.io/metrics-server/" has been added to your repositories.
Cập nhật danh sách chart để lấy phiên bản mới nhất.
helm repo update
Kết quả mong đợi là danh sách các repository được cập nhật, bao gồm metrics-server.
Cấu hình giá trị cho K3s
K3s sử dụng container runtime và cấu trúc network khác biệt so với Kubernetes chuẩn, do đó cần điều chỉnh một số thông số trong file values.yaml để tránh lỗi handshake hoặc permission.
Tạo file cấu hình tùy chỉnh tại đường dẫn /tmp/metrics-server-values.yaml.
cat > /tmp/metrics-server-values.yaml
File này sẽ được tạo với nội dung hoàn chỉnh, thiết lập flag --kubelet-insecure-tls để K3s chấp nhận kết nối từ Metric Server mà không cần chứng chỉ CA phức tạp.
Kiểm tra lại nội dung file đã tạo.
cat /tmp/metrics-server-values.yaml
Kết quả hiển thị toàn bộ nội dung cấu hình vừa tạo.
Deploy Metric Server
Sử dụng file values.yaml vừa tạo để cài đặt Metric Server vào namespace kube-system của cụm K3s.
Thực thi lệnh deploy với phiên bản chart mới nhất.
helm install metrics-server metrics-server/metrics-server -n kube-system -f /tmp/metrics-server-values.yaml --create-namespace
Lệnh này sẽ tạo các resources (Deployment, Service, RBAC) cần thiết và chờ pod chạy ở trạng thái Ready.
Kiểm tra trạng thái của pod Metric Server ngay sau khi deploy.
kubectl get pods -n kube-system | grep metrics-server
Kết quả mong đợi thấy pod metrics-server có trạng thái READY là 1/1 và RESTARTS là 0.
Verify và Xử lý sự cố thu thập dữ liệu
Sau khi pod chạy, Metric Server cần vài giây để bắt đầu thu thập dữ liệu từ các kubelet trên các node.
Thực hiện lệnh kiểm tra thông lượng tài nguyên của toàn bộ cụm.
kubectl top nodes
Kết quả mong đợi là bảng hiển thị các node với các cột NAME, CPU (cores/millicores) và MEMORY (bytes).
Kiểm tra thông lượng tài nguyên của từng pod trong cụm.
kubectl top pods -A
Kết quả hiển thị danh sách tất cả pods đang chạy kèm theo mức tiêu thụ CPU và RAM thực tế.
Xử lý lỗi "Failed to get metrics" hoặc dữ liệu trống
Nếu lệnh kubectl top trả về lỗi "no metrics" hoặc "failed to get metrics", nguyên nhân thường do K3s chặn request API hoặc thời gian chưa đủ để cache.
Đợi khoảng 30-60 giây để Metric Server thu thập dữ liệu lần đầu.
sleep 60 && kubectl top nodes
Trong trường hợp vẫn lỗi, kiểm tra log của pod để tìm nguyên nhân cụ thể.
kubectl logs -n kube-system -l app.kubernetes.io/name=metrics-server
Tìm dòng log chứa "error" hoặc "failed to scrape". Nếu thấy lỗi liên quan đến certificate, hãy đảm bảo flag --kubelet-insecure-tls đã được thêm vào file values.yaml như bước trên.
Thử lại lệnh kiểm tra sau khi đọc log.
kubectl top pods -A
Khi thành công, bảng sẽ hiển thị đầy đủ dữ liệu CPU và Memory cho tất cả pods, sẵn sàng cho việc cấu hình HPA ở phần sau.
Điều hướng series:
Mục lục: Series: Xây dựng hạ tầng Kubernetes tự động (Auto-Scaling) với K3s và Helm trên Proxmox
« Phần 3: Cài đặt và cấu hình Helm trên cụm K3s
Phần 5: Cấu hình Cluster Autoscaler cho K3s »