gpt4 book ai didi

kubernetes - kubernetes 指标 "/metrics/resource/v1alpha1"和 "/metrics/cadvisor"端点之间的差异

转载 作者:行者123 更新时间:2023-12-02 11:55:10 26 4
gpt4 key购买 nike

我正在使用 Prometheus(prometheus-operator Helm chart)进行内存监控。
在调查值时,我注意到内存使用量 ( container_memory_working_set_bytes ) 是从两个端点抓取的:

  • /metrics/cadvisor
  • /metrics/resource/v1alpha1 ( /metrics/resource 来自 kubernetes 1.18)

  • 我已经想出了如何禁用图表中的端点之一,但我想了解两者的目的。
    我明白 /metrics/cadvisor返回三个值 - pod 的容器(如果 pod 有多个容器,则更多),一些特殊容器 POD (运行 POD 服务是否需要使用一些内部内存?)和所有容器的总和(然后结果具有空标签 container="" )。
    另一方面 /metrics/resource/v1alpha1仅返回 pod 容器的内存使用情况(没有 container="POD" 并且没有这些 container="" 的总和)
    /metrics/resource/v1alpha1然后计划更换 /metrics/cadvisor作为单一的指标来源?
    看到两个端点(都在 prometheus-operator 中默认启用)返回相同的指标任何 sum()查询可以返回与实际内存使用量一样大的值 2。
    感谢您对此主题的任何澄清!

    最佳答案

    答案是片面的

    I understand that /metrics/cadvisor returns three values - pod'scontainer (or more if a pod has multiple containers), some specialcontainer POD (is it some internal memory usage to run a POD service?)and a sum of all containers (then the result has empty labelcontainer="").

    container_name=="POD"是 Pod 的“暂停”容器。 pause container是一个容器,用于保存 pod 的网络命名空间。 Kubernetes 创建暂停容器以获取相应 Pod 的 IP 地址,并为加入该 Pod 的所有其他容器设置网络命名空间。这个容器是整个生态系统的一部分,它首先在 Pod 中启动,在调度另一个 Pod 之前首先配置 POD 网络。 Pod 启动后 - 暂停容器无事可做。
    暂停容器代码供您引用: https://github.com/kubernetes/kubernetes/tree/master/build/pause
    暂停容器示例:
    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
    container_name!=="POD"它过滤掉暂停容器的指标流,而不是通常的元数据。大多数人,如果他们想在他们的 pod 中绘制容器的图形,不希望看到 pause 容器的资源使用情况,因为它没有做太多事情。暂停容器的名称是一些容器运行时的实现细节,但并不适用于所有,也不能保证一直存在。
    官方(过时的 v1.14) page显示了 cadvisor 和 metrics 资源监控之间的差异:
    库贝莱特

    The Kubelet acts as a bridge between the Kubernetes master andthe nodes. It manages the pods and containers running on a machine.Kubelet translates each pod into its constituent containers andfetches individual container usage statistics from the containerruntime, through the container runtime interface. For the legacydocker integration, it fetches this information from cAdvisor. It thenexposes the aggregated pod resource usage statistics through thekubelet resource metrics api. This api is served at/metrics/resource/v1alpha1 on the kubelet’s authenticated andread-only ports.


    cAdvisor

    cAdvisor is an open source container resource usage andperformance analysis agent. It is purpose-built for containers andsupports Docker containers natively. In Kubernetes, cAdvisor isintegrated into the Kubelet binary. cAdvisor auto-discovers allcontainers in the machine and collects CPU, memory, filesystem, andnetwork usage statistics. cAdvisor also provides the overall machineusage by analyzing the ‘root’ container on the machine.


    此外,您应该知道 kubelet 在/metrics/cadvisor、/metrics/resource 和/metrics/probes 端点中公开指标。这 3 个指标没有相同的生命周期。
    根据 helm prometheus values yaml - 有 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。只需在您的情况下禁用您不需要的内容。这仅取决于您的需求。比如我发现了一篇文章 Kubernetes: monitoring with Prometheus – exporters, a Service Discovery, and its roles其中 4 个差异工具用于监控所有内容。
  • 指标服务器 – 集群的 CPU、内存、文件描述符、磁盘等
  • cAdvisor – 一个 Docker 守护进程指标 – 容器监控
  • kube-state-metrics – 部署、pod、节点
  • node-exporter:EC2 实例指标——CPU、内存、网络

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

    关于kubernetes - kubernetes 指标 "/metrics/resource/v1alpha1"和 "/metrics/cadvisor"端点之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63020184/

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