有没有办法让top pods按节点过滤?用例:我有一个节点,据报告使用了103%的cpu,我想验证是哪个pod导致的。
top pods
hsvhsicv1#
我不认为有直接的方法可以用kubectl top pods命令来做,因为过滤器的唯一选项是标签/选择器,它只适用于pod。对于您的用例,您可以使用以下命令:
kubectl top pods
kubectl get pods -o wide | grep <node> | awk {'print $1'} | xargs -n1 command kubectl top pods --no-headers
kubectl get pods -o wide
grep <node>
awk {'print $1'}
xargs -n1 command kubectl top pods --no-headers
此外,您可以使用命令kubectl describe node <node>检查为一个特定节点中的每个pod设置的限制
kubectl describe node <node>
juzqafwq2#
对于powershell用户,只需将您的**<node_name>**设置为筛选
kubectl get pods -o wide --all-namespaces | sls "<node_name>" | ForEach-Object {$row = ($_ -split "\s+"); $top = ("kubectl -n $($row[0]) top pod $($row[1]) --no-headers --containers" | iex); foreach($line in $top){$container=$line -split "\s+"; [pscustomobject]@{node=$nodeName; pod=$container[0];container=$container[1];cpu=$container[2];memory=$container[3]}} } | Sort-Object pod| ft -AutoSize
2条答案
按热度按时间hsvhsicv1#
我不认为有直接的方法可以用
kubectl top pods
命令来做,因为过滤器的唯一选项是标签/选择器,它只适用于pod。对于您的用例,您可以使用以下命令:
kubectl get pods -o wide
:显示pod及其关联的节点信息grep <node>
:让您过滤位于特定节点上的podawk {'print $1'}
:打印第一列(pod的名称)xargs -n1 command kubectl top pods --no-headers
:对每个pod执行top命令,不带头文件(NAME、CPU、MEMORY)此外,您可以使用命令
kubectl describe node <node>
检查为一个特定节点中的每个pod设置的限制juzqafwq2#
对于powershell用户,只需将您的**<node_name>**设置为筛选