我正在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映射到我运行kubectl get pods
时看到的广告连播名称?
我已经尝试过kubectl describe pods --all-namespaces | grep "99b2fe2a-104d-11e8-baa7-06145aa73a4c"
,但这并没有发现任何事情。
此外,/kubepods
中有多个子路径,例如/kubepods/burstable
和/kubepods/besteffort
。这些意味着什么以及给定的pod如何落入这些子路径中的一个或另一个?
最后,我在哪里可以详细了解管理/kubepods
的内容?
普罗米修斯查询:
sum (container_memory_working_set_bytes{id!="/",kubernetes_io_hostname=~"^$Node$"}) by (id)
感谢阅读。
埃里克
答案 0 :(得分:7)
好的,既然我已经做了一些挖掘,我会尝试回答我自己的所有问题。我希望这有助于其他人。
如何将此ID映射到我运行kubectl get pods时看到的pod名称?
鉴于以下内容/kubepods/burstable/pod99b2fe2a-104d-11e8-baa7-06145aa73a4c
,最后一位是pod UID,可以通过查看pod清单上的metadata.uid
属性将其解析为pod:
kubectl get pod --all-namespaces -o json | jq '.items[] | select(.metadata.uid == "99b2fe2a-104d-11e8-baa7-06145aa73a4c")'
一旦您将UID解析为pod,我们就可以通过将其与pod清单中的.status.containerStatuses[].containerID
进行匹配来解析容器的第二个UID(容器ID):
~$ kubectl get pod my-pod-6f47444666-4nmbr -o json | jq '.status.containerStatuses[] | select(.containerID == "docker://5339636e84de619d65e1f1bd278c5007904e4993bc3972df8628668be6a1f2d6")'
此外,/ kubepods中有几个子路径,例如/ kubepods / burstable和/ kubepods / besteffort。这些意味着什么以及给定的pod如何落入这些子路径中的一个或另一个?
Burstable,BestEffort和Guaranteed是Kubernetes根据pod规范中的内存和CPU分配分配给pod的服务质量(QoS)类。有关QoS类的更多信息,请访问https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/。
引用:
为Pod提供保证的QoS等级:
Pod中的每个容器都必须有内存限制和内存请求,并且它们必须相同。
Pod中的每个容器都必须有cpu限制和cpu请求,并且它们必须相同。
如果出现以下情况,则会为Pod提供Burstable的QoS等级:
Pod不符合QoS等级保证的标准。
Pod中至少有一个Container有内存或cpu请求。
为Pod提供一个QoS类BestEffort,容器中的容器 Pod不得有任何内存或CPU限制或请求。
最后,我在哪里可以了解有关管理/ kubepods的更多信息?
/kubepods/burstable
,/kubepods/besteffort
和/kubepods/guaranteed
都是cgroups层次结构的一部分,它位于/ sys / fs / cgroup目录中。 Cgroups管理容器进程(如CPU,内存,磁盘I / O和网络)的资源使用情况。每个资源在cgroup层次结构文件系统中都有自己的位置,并且在每个资源子目录中都是/ kubepods子目录。有关cgroups和Docker容器的更多信息,请访问:https://docs.docker.com/config/containers/runmetrics/#control-groups