Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Kubernetes上的容器统计信息(cAdvisor除外)_Kubernetes - Fatal编程技术网

获取Kubernetes上的容器统计信息(cAdvisor除外)

获取Kubernetes上的容器统计信息(cAdvisor除外),kubernetes,Kubernetes,我试图测量在Kubernetes下作为POD运行的一次性进程的资源使用情况。从技术上讲,我需要的是类似于/sys/fs/cgroup/memory/…/$container\u id/meory.max\u usage\u bytes和/sys/fs/cgroup/cpu/…/$container\u id/cpuacct.usage(…代表父cgroup路径,无论K8s设置为什么,通常kubepods/burstable/$pod\u uid) 我知道其中一些数据可以通过cAdvisor AP

我试图测量在Kubernetes下作为POD运行的一次性进程的资源使用情况。从技术上讲,我需要的是类似于
/sys/fs/cgroup/memory/…/$container\u id/meory.max\u usage\u bytes
/sys/fs/cgroup/cpu/…/$container\u id/cpuacct.usage
代表父cgroup路径,无论K8s设置为什么,通常
kubepods/burstable/$pod\u uid

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

注意,我无法控制在pod(单个)容器中运行的进程,启动pod的命令直接从我无法以任何方式影响的源到达Kubernetes API,因此我无法在容器中运行任何代码来获取统计数据(这些确实可以在容器自己的
/sys/fs/cgroup/*
视图中找到)

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

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

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

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

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


您可以尝试使用,这是一个群集范围的资源使用数据聚合器。从Kubernetes 1.8开始,Kubernetes中可以通过metrics API获得资源使用指标,如容器CPU和内存使用率。这些指标可以由用户直接访问,例如使用
kubectl top
命令,也可以由我们访问由群集中的一个控制器(例如水平吊舱自动缩放器)编辑以做出决策。

您好,我正在尝试获取容器cpu和内存指标,并且我已安装了metrics server插件。但是,我只能获取吊舱指标,而不能获取容器指标。我尝试传递“-containers=true”到kubectl top命令,但它不工作。$kubectl top pod ma-daemonset-test-459-bc-7p5w9--containers=true--namespace=ma pod NAME CPU(核心)内存(字节)ma-daemonset-test-459-bc-7p5w9 ma 33m 285Mi