gpt4 book ai didi

kubernetes - 以编程方式查找过量使用的Kubernetes节点

转载 作者:行者123 更新时间:2023-12-02 11:56:43 25 4
gpt4 key购买 nike

我希望能够以编程方式查询Kubernetes以查找过量使用的节点。

如果我执行kubectl describe nodes,则会得到人类可读的输出,包括有关我所追求的资源使用情况的信息,例如

Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 786m (40%) 5078m (263%)
memory 8237973504500m (74%) 13742432Ki (126%)

但是, kubectl describe不支持JSON或YAML输出,并且 kubectl get nodes -ojson不包括分配的资源统计信息。还有其他方法可以访问此信息吗?

最佳答案

如果您使用kubectl选项运行任何--v=6命令,则输出将包括构成输出的kubernetes API调用。

对于kubectl describe nodes NODE,您将看到一个api/v1/pods请求,该请求过滤节点上的pod并删除一些“未运行”状态

I0828 13:44:29.310208   55233 round_trippers.go:438] GET https://kubernetes.docker.internal:6443/api/v1/pods?fieldSelector=spec.nodeName%3Ddocker-desktop%2Cstatus.phase%21%3DFailed%2Cstatus.phase%21%3DSucceeded 200 OK in 4 milliseconds

如果您使用 ~/.kube/config文件中的身份验证信息完成此请求,则应该可以得到输出。在这种情况下,使用CA / Cert / Key auth(已解码base64),使用 jq将输出向下过滤到容器规范的 resources组件。
curl --cacert ~/.kube/docker-desktop.ca \
--cert ~/.kube/docker-desktop.cert \
--key ~/.kube/docker-desktop.key \
https://kubernetes.docker.internal:6443/api/v1/pods?fieldSelector=spec.nodeName%3Ddocker-desktop%2Cstatus.phase%21%3DFailed%2Cstatus.phase%21%3DSucceeded \
| jq '.items[].spec.containers[].resources'
{}
{}
{
"limits": {
"memory": "170Mi"
},
"requests": {
"cpu": "100m",
"memory": "70Mi"
}
}
{
"limits": {
"memory": "170Mi"
},
"requests": {
"cpu": "100m",
"memory": "70Mi"
}
}
{}
{
"requests": {
"cpu": "250m"
}
}
{
"requests": {
"cpu": "200m"
}
}
{}
{
"requests": {
"cpu": "100m"
}
}
{}
{}

如果您经常进入此级别,使用 kubernetes API clients之一运行这些调用和过滤器通常会更容易。

关于kubernetes - 以编程方式查找过量使用的Kubernetes节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57693047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com