หลายคนคงสงสัยเหมือนผมว่า ใน K8s cluster ของเรา
- ทรัพยากรในเครื่องถูกใช้ไปเยอะไหม
- มี App ตัวไหนใช้ทรัพยากรอะไรไปบ้าง
- ทรัพยากรในเครื่องใกล้หมดยัง มีเหลืออยู่มากน้อย
- อยากดูแบบละเอียด ๆ เลยถึงในระดับ container ว่ากิน memory กิน CPU เยอะไหม
- แต่ละ node มีการ request ทรัยากรไปเท่าไหรแล้่ว ได้มีการกำหนด limit ไว้ไหม ยังเหลืออยู่อีกเท่าไหร่
คำถามเหล่านี้ว่าไปแล้ว ก็สามารถหาคำตอบได้จากคำสั่ง kubectl ที่เราคุ้นเคยได้
- ถ้าอยากหาคำตอบเรื่อง request และ limit ก็หาได้จาก
kubectl describe nodes <node_name>
- ถ้าอยากหาคำตอบเรื่องปริมาณการใช้งานทรัพยากร สามารถใช้คำสั่ง
kubectl top [pods,nodes]
แต่ว่าต้องติดตั้ง metrics server ให้เรียบร้อยก่อนใช้งาน ถ้าอยากเห็นภาพรวมของการใช้ทรัพยากร ก็คือต้องค่อย ๆ ไปไล่ดูทีละ node หรือในบางกรณีก็ต้องค่อย ๆ ไล่ดูทีละ namespace
kube-capacity ช่วยตอบโจทย์ให้เราได้
kube-capacity ถูกพัฒนาขึ้นมาเพื่อให้เราเห็นภาพรวมของ requests, limits และ utilizations ใน Kubernetes Cluster ซึ่งก็จะมีข้อมูลที่มีประโยชน์จาก kubectl top และ kubectl describe มาแสดงผลให้เห็นภาพรวมของทรัพยากรใน cluster ได้ง่ายขึ้น
ก่อนเริ่มต้น
- ติดตั้ง metrics server เรียบร้อย
- ติดตั้ง kube-capacity (ทดสอบบน macOS v12.3.1)
> brew tap robscott/tap
> brew install robscott/tap/kube-capacity
ดูภาพรวมราย nodes ของ requests และ limits ของ Kubernetes Cluster
❯ kube-capacity
NODE CPU REQUESTS CPU LIMITS MEMORY REQUESTS MEMORY LIMITS
* 6350m (39%) 7500m (46%) 2040Mi (8%) 340Mi (1%)
cluster4-cp0 950m (47%) 0Mi (0%) 440Mi (24%) 340Mi (18%)
cluster4-cp1 750m (37%) 0Mi (0%) 300Mi (16%) 0Mi (0%)
cluster4-cp2 750m (37%) 0Mi (0%) 300Mi (16%) 0Mi (0%)
cluster4-node0 780m (39%) 1500m (75%) 200Mi (5%) 0Mi (0%)
cluster4-node1 780m (39%) 1500m (75%) 200Mi (5%) 0Mi (0%)
cluster4-node2 780m (39%) 1500m (75%) 200Mi (5%) 0Mi (0%)
cluster4-node3 780m (39%) 1500m (75%) 200Mi (5%) 0Mi (0%)
cluster4-node4 780m (39%) 1500m (75%) 200Mi (5%) 0Mi (0%)
[เพิ่มข้อมูล utilization] ดูภาพรวมราย nodes ของ requests,limits และ utilization ของ Kubernetes Cluster
❯ kube-capacity --util
NODE CPU REQUESTS CPU LIMITS CPU UTIL MEMORY REQUESTS MEMORY LIMITS MEMORY UTIL
* 6350m (39%) 7500m (46%) 5934m (37%) 2040Mi (8%) 340Mi (1%) 8533Mi (35%)
cluster4-cp0 950m (47%) 0Mi (0%) 100m (5%) 440Mi (24%) 340Mi (18%) 1098Mi (61%)
cluster4-cp1 750m (37%) 0Mi (0%) 63m (3%) 300Mi (16%) 0Mi (0%) 1065Mi (59%)
cluster4-cp2 750m (37%) 0Mi (0%) 70m (3%) 300Mi (16%) 0Mi (0%) 1087Mi (60%)
cluster4-node0 780m (39%) 1500m (75%) 1286m (64%) 200Mi (5%) 0Mi (0%) 992Mi (26%)
cluster4-node1 780m (39%) 1500m (75%) 1071m (53%) 200Mi (5%) 0Mi (0%) 986Mi (25%)
cluster4-node2 780m (39%) 1500m (75%) 1104m (55%) 200Mi (5%) 0Mi (0%) 1153Mi (30%)
cluster4-node3 780m (39%) 1500m (75%) 1118m (55%) 200Mi (5%) 0Mi (0%) 1167Mi (30%)
cluster4-node4 780m (39%) 1500m (75%) 1126m (56%) 200Mi (5%) 0Mi (0%) 989Mi (26%)
ดูข้อมูลเป็นราย pods ในแต่ละ node เฉพาะ namespace: test
❯ kube-capacity --pods --namespace test
NODE POD CPU REQUESTS CPU LIMITS MEMORY REQUESTS MEMORY LIMITS
* * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-cp0 * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-cp1 * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-cp2 * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node0 * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node1 * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node2 * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node3 * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node4 * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node4 mynginx 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
ดูข้อมูลเป็นราย containers ในแต่ละ node เฉพาะ namespace: test
❯ kube-capacity --containers --namespace test
NODE POD CONTAINER CPU REQUESTS CPU LIMITS MEMORY REQUESTS MEMORY LIMITS
* * * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-cp0 * * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-cp1 * * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-cp2 * * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node0 * * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node1 * * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node2 * * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node3 * * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node4 * * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node4 mynginx * 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node4 mynginx hello 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
cluster4-node4 mynginx mynginx 0Mi (0%) 0Mi (0%) 0Mi (0%) 0Mi (0%)
เลือกดูเฉพาะข้อมูลที่อยากดู มีหลาย option ให้กรอกดูเฉพาะที่อยากดูได้หลายอย่างให้เลือกเลย
- -n หรือ --namespace เพื่อเลือกดูข้อมูลเฉพาะ namespace ที่ระบุเท่านั้น
- --namespace-labels key=value เพื่อเลือกดูข้อมูลเฉพาะ namespace ที่มี label ตามที่ระบุไว้
- --node-labels key=value เพื่อเลือกดูข้อมูลเฉพาะ node ที่มี label ตามที่ระบุไว้
- --pod-labels key=value เพื่อเลือกดูข้อมูลเฉพาะ pod ที่มี label ตามที่ระบุไว้
More Info:
https://github.com/robscott/kube-capacity
Top comments (0)