如何将/ kubepods / besteffort / pod <uuid>解析为豆荚名称?

ers*_*les 6 kubernetes prometheus

我在Grafana仪表板中查看Prometheus指标,但我对一些面板感到困惑,这些面板根据我不熟悉的ID显示指标。我假设这/kubepods/burstable/pod99b2fe2a-104d-11e8-baa7-06145aa73a4c指向一个单一的pod,并且假定/kubepods/burstable/pod99b2fe2a-104d-11e8-baa7-06145aa73a4c/<another-long-string>解析为pod中的一个容器,但是如何将这个ID解析为pod名称和一个容器,即如何将该ID映射到见到的pod名称我跑kubectl get pods

我已经尝试过跑步,kubectl describe pods --all-namespaces | grep "99b2fe2a-104d-11e8-baa7-06145aa73a4c"但是没有任何反应。

此外,中还有多个子路径/kubepods,例如/kubepods/burstable/kubepods/besteffort。这些是什么意思,给定的吊舱如何落入这些子路径中的一个或另一个?

最后,我在哪里可以了解有关什么管理的更多信息/kubepods

普罗米修斯查询:

sum (container_memory_working_set_bytes{id!="/",kubernetes_io_hostname=~"^$Node$"}) by (id)
Run Code Online (Sandbox Code Playgroud)

/Grafana屏幕截图

谢谢阅读。

埃里克

ers*_*les 8

好的,既然我已经做了一些挖掘工作,那么我将尝试回答我自己的所有3个问题。我希望这可以帮助其他人。

如何将此ID映射到运行kubectl get pods时看到的pod名称?

给定以下内容,/kubepods/burstable/pod99b2fe2a-104d-11e8-baa7-06145aa73a4c最后一位是容器UID,可以通过查看metadata.uid容器清单上的属性将其解析为容器:

kubectl get pod --all-namespaces -o json | jq '.items[] | select(.metadata.uid == "99b2fe2a-104d-11e8-baa7-06145aa73a4c")'
Run Code Online (Sandbox Code Playgroud)

将UID解析为容器后,我们可以将第二个UID(容器ID)与容器.status.containerStatuses[].containerID清单中的匹配,从而将其解析为容器:

~$ kubectl get pod my-pod-6f47444666-4nmbr -o json | jq '.status.containerStatuses[] | select(.containerID == "docker://5339636e84de619d65e1f1bd278c5007904e4993bc3972df8628668be6a1f2d6")'
Run Code Online (Sandbox Code Playgroud)

此外,/ kubepods中有几个子路径,例如/ kubepods / burstable和/ kubepods / besteffort。这些是什么意思,给定的吊舱如何落入这些子路径中的一个或另一个?

Burstable,BestEffort和Guaranteed是Kubernetes根据Pod规范中的内存和cpu分配分配给Pod的服务质量(QoS)类。有关QoS类的更多信息,请参见https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/

报价:

要为Pod提供QoS等级的保证:

  • Pod中的每个容器都必须有一个内存限制和一个内存请求,并且它们必须相同。

  • Pod中的每个Container必须具有cpu限制和cpu请求,并且它们必须相同。

如果满足以下条件,则为Pod提供burstable的QoS类:

  • Pod不符合QoS类别保证的标准。

  • Pod中至少有一个容器具有内存或CPU请求。

为使Pod获得BestEffort QoS类,Pod中的容器不得具有任何内存或cpu限制或请求。

最后,在哪里可以了解有关管理/ kubepods的内容的更多信息?

/kubepods/burstable/kubepods/besteffort/kubepods/guaranteed都是cgroups层次结构的一部分,位于/ sys / fs / cgroup目录中。Cgroups管理容器进程(例如CPU,内存,磁盘I / O和网络)的资源使用情况。每个资源在cgroup层次结构文件系统中都有其自己的位置,并且在每个资源子目录中都是/ kubepods子目录。有关cgroup和Docker容器的更多信息,请参见:https : //docs.docker.com/config/containers/runmetrics/#control-groups