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.
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-capacity
Vớ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.gz
Giải nén:
tar zxvf kube-capacity_0.7.1_Linux_x86_64.tar.gz
Di 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 output
Nế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-capacity
NODE 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 -p
NODE 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-system
NODE 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 --util
NODE 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.util
NODE 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.
Nếu bài viết có gì sai hoặc cần cập nhật thì liên hệ Admin.
Tham gia nhóm chat của DevOps VN tại Telegram.
Kém tiếng Anh và cần nâng cao trình độ giao tiếp: Tại sao bạn học không hiệu quả?