答案是片面的
我知道 /metrics/cadvisor 返回三个值 - pod 的容器(如果 pod 有多个容器,则返回更多)、一些特殊的容器 POD(运行 POD 服务是否需要一些内部内存使用?)和所有容器的总和(然后结果有空标签容器=“”)。
container_name=="POD"
是 pod 的“暂停”容器。pause 容器是一个容器,其中包含 pod 的网络命名空间。Kubernetes 创建暂停容器以获取相应 pod 的 IP 地址,并为加入该 pod 的所有其他容器设置网络命名空间。这个容器是整个生态系统的一部分,它首先在 Pod 中开始配置 POD 网络,然后再调度另一个 Pod。pod 启动后 - pause 容器无事可做。
暂停容器代码供您参考: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)页面显示了 cadvisor 和 metrics 资源监控之间的差异:
库贝莱特
Kubelet 充当 Kubernetes 主节点和节点之间的桥梁。它管理机器上运行的 Pod 和容器。Kubelet 将每个 pod 转换为其组成容器,并通过容器运行时接口从容器运行时获取各个容器的使用统计信息。对于旧版 docker 集成,它从 cAdvisor 获取此信息。然后,它通过 kubelet 资源指标 api 公开聚合的 pod 资源使用统计信息。此 api 在 kubelet 的已验证和只读端口上的 /metrics/resource/v1alpha1 提供。
cAdvisor
cAdvisor 是一个开源容器资源使用和性能分析代理。它是专门为容器构建的,并且原生支持 Docker 容器。在 Kubernetes 中,cAdvisor 被集成到 Kubelet 二进制文件中。cAdvisor 自动发现机器中的所有容器并收集 CPU、内存、文件系统和网络使用统计信息。cAdvisor 还通过分析机器上的“根”容器来提供整体机器使用情况。
您还应该知道 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:使用 Prometheus 进行监控 – 导出器、服务发现及其角色,其中使用 4 个差异工具来监控所有内容。
metrics-server – 集群的 CPU、内存、文件描述符、磁盘等
cAdvisor – 一个 Docker 守护进程指标 – 容器监控
kube-state-metrics – 部署、Pod、节点
node-exporter:EC2 实例指标——CPU、内存、网络
就您而言,要监视内存,我相信就足够了 1 :)