หลายคนคงสงสัยเหมือนผมว่า ใน 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 ถ้าอยากเห็นภาพรวมของการใช้ทรัพยากร ก็คือต้องค่อย ๆ ไปไล่ดูทีละ 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)