如何将/ kubepods / besteffort / pod <uuid>解析为广告连播名称?

时间:2018-02-28 17:52:41

标签: 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映射到我运行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)

/ Grafana Screenshot

感谢阅读。

埃里克

1 个答案:

答案 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