Kubernetes Moniter Cluster Component

Làm sao để giám sát mức tiêu thụ tài nguyên trên Kubernetes? Bạn muốn biết có bao nhiêu Node hoạt động tốt, cũng như các chỉ số khác như CPU, memory,… Trong bài viết này, mình giới thiệu về các khái niệm và công cụ để theo dõi hiệu suất của Kubernetes cluste.

Xem thêm:

DaemonSet trong Kubernetes

Multiple Schedulers trong Kubernetes

Mục tiêu giám sát

  • Mục tiêu: Giám sát cả node và pod.
  • Cấp độ nút: Số lượng nút, trạng thái (healthy/unhealthy), mức độ sử dụng CPU, bộ nhớ, mạng và đĩa.
  • Cấp độ pod: Số lượng pod trong k8s, mức độ sử dụng CPU và bộ nhớ của từng pod.

Các giải pháp giám sát

  • Giải pháp mã nguồn mở: Metrics Server, Prometheus, Elastic Stack.
  • Giải pháp thương mại: Datadog, Dynatrace.

Cách thức Metrics Server hoạt động

  • Kubelet: Agent chạy trên mỗi nút, nhận lệnh từ API master server và chạy pod.
  • cAdvisor (Container Advisor): Thành phần của Kubelet, thu thập chỉ số hiệu suất từ pod.
  • Metrics Server: Lấy chỉ số từ các nút thông qua kubelet, tổng hợp và lưu trữ trong bộ nhớ.

Cài đặt và sử dụng Metrics Server:

Minikube: Sử dụng lệnh minikube addons enable metrics-server.

Môi trường khác: Tải xuống và triển khai Metrics Server từ kho lưu trữ GitHub.

controlplane ~ ➜  kubectl get pods
NAME       READY   STATUS    RESTARTS   AGE
elephant   1/1     Running   0          11s
lion       1/1     Running   0          11s
rabbit     1/1     Running   0          11s

controlplane ~ ➜  git clone https://github.com/kodekloudhub/kubernetes-metrics-server.git
Cloning into 'kubernetes-metrics-server'...
remote: Enumerating objects: 31, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 31 (delta 8), reused 0 (delta 0), pack-reused 12
Receiving objects: 100% (31/31), 8.08 KiB | 8.08 MiB/s, done.
Resolving deltas: 100% (10/10), done.

controlplane ~ ➜  ls
kubernetes-metrics-server  sample.yaml

controlplane ~ ➜  kubectl create -f kubernetes-metrics-server
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
serviceaccount/metrics-server created
deployment.apps/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created

controlplane ~ ➜  kubectl top node
NAME           CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
controlplane   256m         0%     1112Mi          0%        
node01         102m         0%     275Mi           0%

Xem chỉ số:

Sử dụng lệnh kubectl top node để xem mức độ sử dụng CPU và bộ nhớ của nút.
Sử dụng lệnh kubectl top pod để xem chỉ số hiệu suất của pod.

Hy vọng bài viết này đã cung cấp cái nhìn tổng quan về việc giám sát Kubernetes, tập trung vào Metrics Server như một giải pháp đơn giản để thu thập và hiển thị các chỉ số hiệu suất cơ bản. Cảm ơn bạn đã tham khảo kubernetes cơ bản trên ttnguyen.net.

Bài viết liên quan:

Manual Scheduling trong K8s

Resource requirement

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em