列出工作节点中运行的所有 kubernetes pod,按磁盘空间使用情况排序

问题描述 投票:0回答:2

有谁知道如何根据磁盘空间消耗在给定节点上获得排序的 pod 列表?

下面的命令帮助我列出基于给定节点的 pod,但我的要求是列出那些导致高磁盘空间使用率的 pod,作为调查和解决

DiskPressure
驱逐状态的一部分。

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

我能够找到列出节点 CPU 和内存使用情况的命令(参考:https://github.com/kubernetes/kubernetes/issues/17512#issuecomment-317757388)但与节点磁盘使用情况无关。

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 multiply by 75 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" } }'\'''

kubernetes kubectl amazon-eks diskspace
2个回答
3
投票

找到了我的要求的答案 - 列出在给定节点中运行的 pod 磁盘使用情况

kubectl get --raw /api/v1/nodes/<NODE_NAME>/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'

1
投票

不幸的是,您将无法使用

kubectl
实现此目的,因为它没有这种功能。一种方法是登录节点并使用
docker ps -s
.

我能想到的另一种方法是公开 kubelet/cadvisor 指标并将其与 Prometheus 这样的指标抓取工具一起使用。

kubelet 以 Prometheus 展示格式在

/metrics
端点上公开其所有运行时指标和所有 cAdvisor 指标。请注意,kubelet 还公开了
/metrics/cadvisor
/metrics/resource
/metrics/probes
端点中的指标。
/stats/summary
端点通常提供磁盘指标。

补充资料:

© www.soinside.com 2019 - 2024. All rights reserved.