Kubernetes如何根据某个节点上的Pod已占用磁盘进行排序?

小蕊 发表于: 2021-11-23   最后更新时间: 2021-11-23 18:30:08   2,068 游览

有谁知道如何根据磁盘的消耗大小,获取某个节点pods列表并进行排序?

下面的命令可以帮助我列出基于给定节点的pods,但我的需求是列出那些导致高磁盘使用率pods,我需要靠这个数据来解决DiskPressure驱逐状态的问题:

kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=

我知道列出节点cpumemory使用情况的命令。

alias util='kubectl get nodes --no-headers | awk '\''{print $1}'\'' | xargs -I {} sh -c '\''echo {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve -- ; echo '\'''

# Get CPU request total (we x20 because because each m3.large has 2 vcpus (2000m) )
alias cpualloc='util | grep % | awk '\''{print $1}'\'' | awk '\''{ sum += $1 } END { if (NR > 0) { print sum/(NR*20), "%\n" } }'\'''

# Get mem request total (we x75 because because each m3.large has 7.5G ram )
alias memalloc='util | grep % | awk '\''{print $5}'\'' | awk '\''{ sum += $1 } END { if (NR > 0) { print sum/(NR*75), "%\n" } }'\'''

求大佬指导!

发表于 2021-11-23

列出在给定节点中运行的 pods 磁盘使用情况:

kubectl get --raw /api/v1/nodes//proxy/stats/summary | jq '.pods[0] | "PodName: ", .podRef.name, "usedBytes: ", .containers[].rootfs.usedBytes'

其他一些统计数据:

获取节点文件系统使用情况

kubectl get --raw /api/v1/nodes/<NODE_NAME>/proxy/stats/summary | jq '.node.fs.usedBytes'

获取节点 imageFs 使用情况

kubectl get --raw /api/v1/nodes/<NODE_NAME>/proxy/stats/summary | jq '.node.runtime.imageFs.usedBytes'

获取节点 iNodes 统计信息

kubectl get --raw /api/v1/nodes/<NODE_NAME>/proxy/stats/summary | jq '.node.fs.inodesFree'

kubectl get --raw /api/v1/nodes/<NODE_NAME>/proxy/stats/summary | jq '.node.runtime.imageFs.inodesFree'
小蕊 -> 半兽人 3年前

谢谢大佬,解决了我的问题!

kubectl get --raw /api/v1/nodes/k8s-node1/proxy/stats/summary | jq '.pods[] | "PodName: ", .podRef.name, "usedBytes:", .containers[].rootfs.usedBytes, "Logs:", .containers[].logs.usedBytes, "Volume:", .volume[].usedBytes'

你的答案

查看kubernetes相关的其他问题或提一个您自己的问题