kubernetes度量之间的差异”/指标/资源/v1alpha1“;及/指标/cadvisor“;端点

kubernetes度量之间的差异”/指标/资源/v1alpha1“;及/指标/cadvisor“;端点,kubernetes,kubernetes-metrics,Kubernetes,Kubernetes Metrics,我正在使用普罗米修斯(普罗米修斯操作员掌舵图)进行内存监控。 在调查值时,我注意到内存使用量(container\u memory\u working\u set\u bytes)正在从两个端点刮取: /metrics/cadvisor /metrics/resource/v1alpha1(/metrics/resource来自kubernetes 1.18) 我已经知道如何禁用图表中的一个端点,但我想了解这两个端点的用途。 我知道/metrics/cadvisor返回三个值-pod的容器(

我正在使用普罗米修斯(普罗米修斯操作员掌舵图)进行内存监控。 在调查值时,我注意到内存使用量(
container\u memory\u working\u set\u bytes
)正在从两个端点刮取:

  • /metrics/cadvisor
  • /metrics/resource/v1alpha1
    /metrics/resource
    来自kubernetes 1.18)
我已经知道如何禁用图表中的一个端点,但我想了解这两个端点的用途。
我知道
/metrics/cadvisor
返回三个值-pod的容器(如果一个pod有多个容器,则返回更多)、一些特殊容器
pod
(运行pod服务是否占用了一些内存?)和所有容器的总和(结果为空标签
container=“
)。
另一方面,
/metrics/resource/v1alpha1
只返回pod容器的内存使用情况(不带
container=“pod”
,也不带这些容器的总和)

/metrics/resource/v1alpha1
是否计划取代
/metrics/cadvisor
作为单一的度量来源? 看到两个端点(在
prometheus操作符中默认启用这两个端点)返回相同的度量值,任何
sum()
查询都可以返回与实际内存使用量一样大的值2

感谢您对此问题的任何澄清

答案是局部的

我知道/metrics/cadvisor返回三个值-pod 容器(如果一个吊舱有多个容器,则多个容器),一些特殊的 容器吊舱(运行吊舱服务是否会占用一些内存?) 和所有容器的总和(则结果具有空标签) 容器=”)

container\u name==“POD”
是POD的“暂停”容器。是一个容器,用于保存pod的网络名称空间。Kubernetes创建暂停容器以获取相应pod的IP地址,并为加入该pod的所有其他容器设置网络名称空间。这个容器是整个生态系统的一部分,它首先在pods中启动,以便在调度另一个pods之前首先配置pods网络。pod启动后-暂停容器无需执行任何操作

暂停容器代码以供参考:

暂停容器的示例:

docker ps |grep pause
k8s_POD_etcd-master-1_kube-system_ea5105896423fc919bf9bfc0ab339888_0
k8s_POD_kube-scheduler-master-1_kube-system_155707e0c19147c8dc5e997f089c0ad1_0
k8s_POD_kube-apiserver-master-1_kube-system_fe660a7e8840003352195a8c40a01ef8_0
k8s_POD_kube-controller-manager-master-1_kube-system_807045fe48b23a157f7fe1ef20001ba0_0
k8s_POD_kube-proxy-76g9l_kube-system_e2348a94-eb96-4630-86b2-1912a9ce3a0f_0
k8s_POD_kube-flannel-ds-amd64-76749_kube-system_bf441436-bca3-4b49-b6fb-9e031ef7513d_0
容器名称==“POD”
它过滤掉暂停容器的度量流,而不是通常的元数据。大多数人,如果他们想在他们的pod中绘制容器的图表,不想看到暂停容器的资源使用情况,因为它没有做很多事情。暂停容器的名称是一些容器运行时的一个实现细节,但并不适用于所有容器,也不保证会一直存在

官方(已过时的v1.14)显示了cadvisor和metrics资源监控之间的差异:

库贝莱

Kubelet是Kubernetes大师和 节点。它管理机器上运行的吊舱和容器。 Kubelet将每个豆荚转化为其组成容器,并 从容器中获取单个容器使用情况统计信息 运行时,通过容器运行时接口。为了遗产 docker集成,它从cAdvisor获取此信息。那么 通过公开聚合的pod资源使用统计信息 kubelet资源度量api。此api在以下位置提供: /kubelet的已验证和 只读端口

cAdvisor是一个开放源码的容器,用于资源使用和管理 性能分析代理。它是专为集装箱和集装箱建造的 本机支持Docker容器。在Kubernetes,cAdvisor是 集成到Kubelet二进制文件中。cAdvisor自动发现所有 容器,并收集CPU、内存、文件系统和 网络使用统计。cAdvisor还提供整个机器 通过分析计算机上的“根”容器来使用

您还应该知道,kubelet在/metrics/cadvisor、/metrics/resource和/metrics/probe端点中公开度量。这3个指标没有相同的生命周期

根据-有3个选项,你可以禁用你不需要的

    ## Enable scraping /metrics/cadvisor from kubelet's service
    ##
    cAdvisor: true

    ## Enable scraping /metrics/probes from kubelet's service
    ##
    probes: true

    ## Enable scraping /metrics/resource from kubelet's service
    ##
    resource: true
    # From kubernetes 1.18, /metrics/resource/v1alpha1 renamed to /metrics/resource
    resourcePath: "/metrics/resource/v1alpha1" 
我的观点
/metrics/resource/
不会取代谷歌的cadvisor。只要在你的情况下禁用你不需要的东西。这取决于你的需要。例如,我发现了一篇文章,其中使用了4个diff工具来监视一切

  • metrics服务器–集群的CPU、内存、文件描述符、磁盘等

  • cAdvisor–Docker守护程序度量–容器监控

  • kube州指标–部署、POD、节点

  • 节点导出器:EC2实例指标–CPU、内存、网络


  • 在您的情况下,我相信监视内存就足够了1:)

    谢谢您的回复和指向其他资源的链接。这是我第一次听说“暂停容器”,很高兴填补了我的知识空白