Giới thiệu
Khi ta làm việc với Kubernetes thì để xem được tài nguyên requests và limit ta sẽ dùng câu lệnh kubectl describe, còn để xem phần trăm tài nguyên đã được sử dụng thì ta sẽ dùng câu lệnh kubectl top. Bài hôm này ta sẽ nói về kube-capacity, một công cụ CLI kết hợp từ hai thằng trên, giúp ta xem số liệu về tài nguyên nhanh chóng và dễ dàng hơn.
Mục lục
- Cài đặt
- Sử dụng
- Mặc định
- Xem chi tiết theo pod
- Xem chi tiết theo namespaces
- Hiển thị phần trăm tài nguyên đã được dùng
- Sắp sếp theo thứ tự
- Kết luận
- Bài viết liên quan
Ví dụ như hình minh họa.
Cài đặt
Các bạn cài kube-capacity như sau. Hệ điều hành MacOs:
brew tap robscott/tap
brew install robscott/tap/kube-capacityVới hệ điều hành Linux, thì ta truy cập Releases Page và chọn package phù hợp, ví dụ với mình là Linux_x86_64. Tải package xuống:
curl -fsSLO https://github.com/robscott/kube-capacity/releases/download/v0.7.1/kube-capacity_0.7.1_Linux_x86_64.tar.gzGiải nén:
tar zxvf kube-capacity_0.7.1_Linux_x86_64.tar.gzDi chuyển tới một trong các thư mục nằm trong $PATH:
sudo mv kube-capacity /usr/local/bin/Kiểm tra xem ta đã cài thành công chưa.
kube-capacity -h...
Flags:
-a, --available includes quantity available instead of percentage used
-c, --containers includes containers in output
--context string context to use for Kubernetes config
-h, --help help for kube-capacity
--kubeconfig string kubeconfig file to use for Kubernetes config
-n, --namespace string only include pods from this namespace
--namespace-labels string labels to filter namespaces with
--node-labels string labels to filter nodes with
-o, --output string output format for information (supports: [table json yaml]) (default "table")
--pod-count includes pod count per node in output
-l, --pod-labels string labels to filter pods with
-p, --pods includes pods in output
--sort string attribute to sort results be (supports: [cpu.util cpu.request cpu.limit mem.util mem.request mem.limit name]) (default "name")
-u, --util includes resource utilization in outputNếu hiện được như trên thì việc cài đặt đã thành công.
Sử dụng
Mặc định khi ta gõ câu lệnh thì kube-capacity sẽ liệt kê ra danh sách của toàn bộ node với tổng tài nguyên requests và limits của các Pod nằm trên nó.
Mặc định
kube-capacityNODE CPU REQUESTS CPU LIMITS MEMORY REQUESTS MEMORY LIMITS
* 560m (28%) 130m (7%) 572Mi (9%) 770Mi (13%)
isito-node-1 220m (22%) 10m (1%) 192Mi (6%) 360Mi (12%)
isito-node-2 340m (34%) 120m (12%) 380Mi (13%) 410Mi (14%)Xem chi tiết theo pod
Để xem chi tiết hơn về requests và limits của từng Pod, ta thêm thuộc tính --pods hoặc -p vào:
kube-capacity -pNODE NAMESPACE POD CPU REQUESTS CPU LIMITS MEMORY REQUESTS MEMORY LIMITS
* * * 560m (28%) 780m (38%) 572Mi (9%) 770Mi (13%)
isito-node-1 * * 220m (22%) 320m (32%) 192Mi (6%) 360Mi (12%)
isito-node-1 istio-system istio-egressgateway-lwc6z 100m (10%) 200m (20%) 100Mi (3%) 200Mi (7%)
isito-node-1 istio-system istio-ingressgateway-7b5bcb98f8 120m (12%) 120m (12%) 92Mi (3%) 160Mi (5%)
isito-node-2 * * 340m (34%) 460m (46%) 380Mi (13%) 410Mi (14%)
isito-node-2 kube-system kube-proxy-3ki7 200m (20%) 280m (28%) 210Mi (7%) 210Mi (7%)
isito-node-2 tiller tiller-deploy 140m (14%) 180m (18%) 170Mi (5%) 200Mi (7%)Xem chi tiết theo namespaces
Để liệt kê theo namespaces, ta thêm thuộc tính --namespace hoặc -n vào:
kube-capacity -p -n istio-systemNODE NAMESPACE POD CPU REQUESTS CPU LIMITS MEMORY REQUESTS MEMORY LIMITS
isito-node-1 * * 220m (22%) 320m (32%) 192Mi (6%) 360Mi (12%)
isito-node-1 istio-system istio-egressgateway-lwc6z 100m (10%) 200m (20%) 100Mi (3%) 200Mi (7%)
isito-node-1 istio-system istio-ingressgateway-7b5bcb98f8 120m (12%) 120m (12%) 92Mi (3%) 160Mi (5%)Hiển thị phần trăm tài nguyên đã được dùng
Trường hợp ta cần kiểm tra tài nguyên đã được sử dụng bao nhiêu thì ta thêm thuộc tính --util hoặc -u vào, lưu ý là Kubernetes Cluster của bạn phải cài metrics-server thì mới dùng được tính năng này.
kube-capacity --utilNODE CPU REQUESTS CPU LIMITS CPU UTIL MEMORY REQUESTS MEMORY LIMITS MEMORY UTIL
* 560m (28%) 130m (7%) 40m (2%) 572Mi (9%) 770Mi (13%) 470Mi (8%)
isito-node-1 220m (22%) 10m (1%) 10m (1%) 192Mi (6%) 360Mi (12%) 210Mi (7%)
isito-node-2 340m (34%) 120m (12%) 30m (3%) 380Mi (13%) 410Mi (14%) 260Mi (9%)Sắp sếp theo thứ tự
Nếu ta muốn xem theo thứ tự tăng dần hoặc giảm dần của các thông số CPU hoặc Memory, ta thêm thuộc tính --sort vào, ví dụ như bạn cần sắp xếp theo phần trăm CPU đã sử dụng:
kube-capacity --util --sort cpu.utilNODE CPU REQUESTS CPU LIMITS CPU UTIL MEMORY REQUESTS MEMORY LIMITS MEMORY UTIL
* 560m (28%) 130m (7%) 40m (2%) 572Mi (9%) 770Mi (13%) 470Mi (8%)
isito-node-2 340m (34%) 120m (12%) 30m (3%) 380Mi (13%) 410Mi (14%) 260Mi (9%)
isito-node-1 220m (22%) 10m (1%) 10m (1%) 192Mi (6%) 360Mi (12%) 210Mi (7%)Kết luận
Tuy đơn giản nhưng đây là công cụ khá hữu ích khi ta cần xem requests và limits của tài nguyên một cách nhanh chóng. Nếu có thắc mắc hoặc cần hỏi ở chỗ nào thì các bạn hỏi ở đây nha: bình luận.
First AI Journey for DevOps:
- PromptOps: From YAML to AI
- The DevOps AI Advantage
- The AIOps Book