我已经阅读了一堆指南,展示了如何使用Prometheus监控Kubernetes中pod的cpu和内存使用情况,其中大多数看起来像这样:
rate(container_cpu_usage_seconds_total{pod=~"compute-.*", image!="", container!="POD"}[5m])
,但我找不到任何文档说明为什么容器标签在那里(它似乎会导致重复的数据),以及为什么它在许多监控示例中被避免。我知道这个指标来自Kubernetes的cadvisor组件,但我能找到的关于这些指标的唯一文档是这里代码中提供的简短描述。
有谁知道这个标签是什么,哪里有更深入的文档没有这些指标?
容器,正如@Ali Sattari已经在评论中提到的,是暂停容器。
暂停容器
在调度其他pod之前先暂停容器启动。暂停容器(container_name="POD"
)的目的是为pod和其他容器提供网络名称空间,这些容器将分配给该pod。暂停容器的映像总是存在于Kubernetes中。因此,pod的资源分配是即时的。pause容器启动后,没有其他工作给他。
默认情况下,暂停容器是隐藏的,但是您可以通过运行下一个命令看到它们:docker ps | grep pause
$ docker ps | grep pause
3bb5065dd9ba k8s.gcr.io/pause:3.2 "/pause" 3 minutes ago Up 3 minutes k8s_POD_kubernetes-bootcamp-fb5c67579-5rxjn_default_93ce94f8-b440-4b4f-9e4e-25f97be8196f_0
0627138518e1 k8s.gcr.io/pause:3.2 "/pause" 3 minutes ago Up 3 minutes k8s_POD_metrics-server-56c4f8c9d6-vf2zg_kube-system_93626697-8cd0-4fff-86d3-245c23d74a42_0
81ca597ed3ff k8s.gcr.io/pause:3.2 "/pause" 3 minutes ago Up 3 minutes k8s_POD_storage-provisioner_kube-system_dbdec6e5-d3ed-4967-a042-1747f8bdc39a_0
0d01130b158f k8s.gcr.io/pause:3.2 "/pause" 3 minutes ago Up 3 minutes k8s_POD_kubernetes-dashboard-968bcb79-pxmzb_kubernetes-dashboard_b1265ad7-2bce-46aa-8764-d06d72856633_0
d8a159b6215e k8s.gcr.io/pause:3.2 "/pause" 3 minutes ago Up 3 minutes k8s_POD_dashboard-metrics-scraper-f6647bd8c-hqm6k_kubernetes-dashboard_bde40acc-a8ca-451a-9868-26e86ccafecb_0
294e81edf0be k8s.gcr.io/pause:3.2 "/pause" 3 minutes ago Up 3 minutes k8s_POD_coredns-74ff55c5b-84vr7_kube-system_28275e83-613a-4a09-8ace-13d6e831c1bf_0
2b3bfad1201b k8s.gcr.io/pause:3.2 "/pause" 3 minutes ago Up 3 minutes k8s_POD_kube-proxy-zxjgc_kube-system_34f8158a-487e-4d00-80f1-37b67b72865e_0
d5542091730b k8s.gcr.io/pause:3.2 "/pause" 4 minutes ago Up 4 minutes k8s_POD_kube-scheduler-minikube_kube-system_6b4a0ee8b3d15a1c2e47c15d32e6eb0d_0
b87163ed2c0a k8s.gcr.io/pause:3.2 "/pause" 4 minutes ago Up 4 minutes k8s_POD_kube-controller-manager-minikube_kube-system_57b8c22dbe6410e4bd36cf14b0f8bdc7_0
c97ed96ded60 k8s.gcr.io/pause:3.2 "/pause" 4 minutes ago Up 4 minutes k8s_POD_etcd-minikube_kube-system_62a7db7bebf35458f2365f79293db6d3_0
4ab2d11317ed k8s.gcr.io/pause:3.2 "/pause" 4 minutes ago Up 4 minutes k8s_POD_kube-apiserver-minikube_kube-system_dc477bf6fc026f57469b47d9be68a88c_0
你可以在这里阅读更多关于暂停容器的信息。
暂停Prometheus中的容器
在Prometheus提供的示例中,您经常可以看到下一个限制:container_name!="POD"
,因为仅为当前工作的必要容器请求资源使用是有用的,而不需要为暂停容器提供信息。