อยากรู้ว่าใน K8s มีการใช้ทรัพยาการในเครื่องอะไรไปเท่าไหร่บ้าง มีอะไรเหลือบ้าง
Damrongsak Reetanon
Posted on June 4, 2022
หลายคนคงสงสัยเหมือนผมว่า ใน 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
มูลค่าความสุข
💖 💪 🙅 🚩
Damrongsak Reetanon
Posted on June 4, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
undefined Hai Robotics Achieved High Availability & Easy Operations in a Hybrid Cloud Architecture with JuiceFS
November 29, 2024