【发布时间】:2021-12-06 17:12:11
【问题描述】:
一个节点有大量的指标收集信息,例如在 cgroups kubepods.slice 下。但要完成指标,您必须将 pod 指标与 pod 名称相关联。名称和命名空间本身是 pod 的一种静态度量,因此它们与 pod uuid 一起是描述 pod 的首要任务。如何从不使用 kubectl 且不访问 pod 的远程 kubernetes 数据库的节点获取此信息?
我只能找到容器 ids/pod uuids 作为 cgroup 结构的一部分。名称和命名空间在哪里? (理想情况下是一个完整的 yaml 清单,将其存储在运行 pod 的节点上并不难,对吧?)
如果它没有此信息 - 为什么?这违反了收集实践,您不能将检测作为一个单独的程序来收集 pod 指标 - 您将需要外部进程来后处理此类指标、对应 uuid 到 pod 名称和命名空间,这绝对不是正确的方法,当您节点本身可以运行1个小程序
【问题讨论】:
-
试试这个
find /var/lib/kubelet/pods -name etc-hosts -exec grep -ohP '^\d+\.\d+\.\d+\.\d+\s+\K.*' {} + |grep -vE "localhost|$(hostname)"这只是部分或部分答案。 -
@ChinHuang no.我想在运行 kubelet 的节点上获取所有 pod 名称
-
@P.... 是的,它有一个 pod 名称 + 容器文件夹包含所有容器名称,这非常好。唯一的问题 - 是否可以获得命名空间?
-
您使用的是哪个容器运行时?
标签: kubernetes cri-o