【问题标题】:Get container statistics on Kubernetes (other than cAdvisor)获取 Kubernetes 上的容器统计信息(cAdvisor 除外)
【发布时间】:2018-08-07 00:45:47
【问题描述】:

我正在尝试测量在 Kubernetes 下作为 pod 运行的一次性进程的资源使用情况。从技术上讲,我需要的是类似于在 /sys/fs/cgroup/memory/..../$container_id/meory.max_usage_in_bytes 和 /sys/fs/cgroup/cpu/..../$container_id/cpuacct.usage 中可以找到的东西(.... 代表父 cgroup 路径,无论 K8s 将其设置为什么,通常是 kubepods/burstable/$pod_uid)

我知道其中一些数据可通过 cAdvisor API 获得(该 API 内置在每个节点上的 kubelet 进程中,可通过 kube-proxy 访问),但是 cAdvisor 数据延迟了大约 10-20秒,我没有选择保持 pod 并使其保持活动状态(并占用调度资源)这么长时间,因为受监视的进程本身非常短暂,并且将它们保持在内存中足够长的时间以让 cAdvisor 刷新会集群上的资源需求几乎翻了一番。

请注意,我无法控制在 pod 的(单个)容器中运行的进程,启动 pod 的命令直接从不属于我的来源到达 Kubernetes API,因此我可以'不要在容器本身中运行任何代码来获取统计信息(这些确实在容器自己的 /sys/fs/cgroup/* 视图中可用)。

我还考虑在同一个 pod 中使用一个额外的容器,因为 pod 的容器共享同一个主机(甚至是同一个父 cgroup),但我不知道我是否可以访问父 cgroup 统计信息同级容器。额外的容器很有吸引力,因为无论如何我都必须使用一个额外的“无操作”容器——主进程是一次性的,一旦完成就退出,使容器停止并且它的所有统计信息都丢失了。额外的容器允许我保持父 cgroup 活动并获取其统计信息(额外容器添加的内存/cpu 是恒定的且可以忽略不计,因此父统计信息与直接获取容器统计信息一样好)。

有没有办法让 pod 中的容器看到父 cgroup(或根 cgroup)?或者,是否有另一种方法可以快速检索这些统计信息,而无需在我发现容器已完成运行后等待超过 1-2 秒?

注意,我还考虑了在运行一次性作业、获取统计信息然后退出的脚本中“包装”工作流程的选项。不幸的是,这取决于“知道”如何运行该一次性工作——而且我并不总是具备这些知识,因为“工作”在一个不属于我的容器映像中,并且 pod 规范不一定包括一个运行命令。如果 pod 规范没有指定命令,它将运行容器的默认入口点,并且通过访问 Kuberenetes API 是不可见的(这就是我得到的全部)。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    根据documentation,cAdvisor 每秒收集一次指标并每分钟将它们发送到存储库一次。延迟也可以连接到存储库所在的存储的设置。它还有自己的 API,您可以在其中查看它保存在内存中的当前指标。因此,可以从那里收集每个节点的信息。

    直接从文件中收集信息不是正确的方法,因为查看许多节点上的许多容器可能需要很长时间。但也有可能,例如,您可以在特权模式下在每个节点上使用挂载/sys/fs/cgroup 的容器并从那里收集信息。

    您可以尝试使用Kubernetes Metrics Server,它是集群范围内的资源使用数据聚合器。从 Kubernetes 1.8 开始,Kubernetes 中可以通过 Metrics API 获得资源使用指标,例如容器 CPU 和内存使用情况。这些指标可以由用户直接访问,例如使用kubectl top 命令,也可以由集群中的控制器使用,例如Horizo​​ntal Pod Autoscaler,用于做出决策。

    【讨论】:

    • 嗨,我正在尝试获取容器 cpu 和内存指标,并且我已经安装了 metrics-server 插件。但是,我只能获得 pod 指标,而不是容器指标。我尝试将“--containers=true”传递给 kubectl top 命令,但它不起作用。 $ kubectl top pod ma-daemonset-test-459-bc-7p5w9 --containers=true --namespace=ma POD NAME CPU(cores) MEMORY(bytes) ma-daemonset-test-459-bc-7p5w9 ma 33m 285Mi
    猜你喜欢
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2018-12-15
    相关资源
    最近更新 更多