问题标签 [kubernetes-metrics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 如何从指标服务器获取网络信息
我知道如何从 metrics-server 获取 cpu 和内存的信息(限制、请求、使用)。
但我不知道如何从度量服务器获取网络信息(内存分布、网络流量(KBps)、网络利用率)。
本质上,metrics-server 不提供网络信息?还有其他方法吗?
我应该用python开发。
kubernetes - 是否可以将自动缩放/v2beta2 HPA 与 apiregistration.k8s.io/v1 APIService 一起使用?
我创建了一个部署,它通过一个端点和一个注册此自定义指标的 APIService 公开自定义指标,因此我可以在 HPA 中使用它来自动扩展部署。为此,我遵循了本教程。
它在使用 apiregistration.k8s.io/v1beta1 APIService时运行良好。该指标已正确公开,HPA 可以读取它并相应地进行缩放。我尝试将 APIService 更新为 apiregistration.k8s.io/ v1版本(因为 v1beta1 在 Kubernetes v1.22 中已被弃用并删除),但随后 HPA 无法再选择指标,并显示以下消息:
如果我手动请求该指标,它虽然存在:
这是我的 APIService 和 HPA 资源:
我究竟做错了什么?还是这两个版本由于某种原因不兼容?
kubernetes - Microk8s Hostpath FS PVC的使用
我正在尝试监视 k8s 中 pod 的文件系统使用情况。我正在使用 Kubernetes (microk8s) 和 hostpath 持久卷。我和一些生产者一起运行 Kafka,看看当我超过 PVC 大小限制时会发生什么。我尝试从 API 服务器获取信息,但那里没有报告。因为它只使用主机路径,所以这是有道理的。它不是一个动态音量系统。在主机上执行 df 只会显示与根文件系统具有相同利用率的所有卷。这与在容器中使用 exec -- df 的结果相同。使用 api 服务器的容器上没有 pvcRefs,这可以解释为什么仪表板没有此信息。这是一个死胡同还是有人有办法绕过这个限制?我现在想知道是否会强制执行 PVC 限制。
kubernetes - 使用 Java 客户端库从 Pod 访问 Kubernetes Api
我目前使用客户端 java kubernetes 库从 Kubernetes API 获取指标
我发现位于此路径https://kubernetes.default.svc/api/v1/nodes/worker02/proxy/metrics/cadvisor下的有关网络和文件系统 I/O 的一些指标非常有趣。
但是,由于它们采用 prometheus 度量格式,因此库不支持它们。
我后来意识到,使用 http 客户端获取信息并不成功(javax.net.ssl.SSLHandshakeException),因为我没有传递令牌和证书。有没有办法使用 client-java 库来获取 API 的原始答案?
我正在考虑这样的事情,提前谢谢
kubernetes - Kubernetes:简单监控每个命名空间的资源使用情况
我创建了一个 SaaS 解决方案,它通过 Web 界面允许用户启动他们自己的具有某些功能的服务器。为此,每个用户都有自己的 kubernetes 命名空间。我需要根据每个用户的资源使用情况(CPU、内存、存储和网络流量)单独计费。我不想创建任何复杂的计费系统,例如“即用即付”功能,但我需要能够判断用户是否接近或超过其当前限制。
事实证明,这是一项非常困难的任务,许多不同的组件都是可能的解决方案:
指标服务器 - https://github.com/kubernetes-sigs/metrics-server
收集资源指标,但它们不准确,不适合根据自己的文档自动扩展之外的任何东西
普罗米修斯(运营商) - https://github.com/prometheus-operator/prometheus-operator
有自己的实现来收集似乎更适合用作计费基础的指标。可以使用 AlarmManager 获取有关限制或达到资源限制的通知。它似乎需要相当多的依赖项才能获得我需要的资源指标,例如“Prometheus node-exporter”、“Prometheus Adapter for Kubernetes Metrics APIs”和/或 kube-state-metrics。
可以使用“堆栈”安装所有这些依赖项,例如“kube-prometheus”(https://github.com/prometheus-operator/kube-prometheus)或“tobs”(https://github.com /timescale/tobs)根据您选择的堆栈,您可能还必须考虑使用“Thanos”(https://thanos.io/)或“TimescaleDB”(https://www. timescale.com/ )
荣誉提名:
Kubecost - https://www.kubecost.com/
它不仅收集所有相关指标,还提供与大型云提供商的集成,以便为不同的工作负载提供最新和准确的成本。非常酷,但也比我目前需要的要多得多。
KubePlus - https://github.com/cloud-ark/kubeplus
可以收集相关指标,但似乎更倾向于支持 CRD 开发。
我是 Kubernetes 的新手,不确定是否有做这种事情的事实上的标准?我发现的所有可能的解决方案似乎都有点复杂,并且提供的功能比我实际需要的要多得多。我的要求是:
- 假设每个用户都有 1 个 vCPU、1gb 内存、1tb 存储和 1tb 网络流量。我需要能够计算出用户在过去 30 天内实际使用了多少,以便他们更好地为升级资源的需要做好准备
- NICE-TO-HAVE:一个 webhook 或类似的当用户达到他们的限制时接收通知
任何人都对我如何以一种不会爆炸复杂性和依赖性的方式来解决这个问题有任何提示或建议?我目前的计划是使用带有某种长期存储的 Prometheus 堆栈,我可以查询并向用户提供 UI
kubernetes-metrics - k8s metric server api结果中的“窗口”是什么意思
当我在 cli 上键入此命令时:
我可以得到如下结果:
那个“窗口”项目是什么意思?我真的很想知道它到底是什么。
go - container_memory_working_set_bytes 与 process_resident_memory_bytes 和 total_rss 的关系
我正在寻找了解的关系
container_memory_working_set_bytes vs process_resident_memory_bytes vs total_rss (container_memory_rss) + file_mapped以便更好地配备系统以提醒 OOM 可能性。
如果容器/pod 正在运行单个进程执行用 Go 编写的编译程序,这似乎违背了我的理解(这让我现在感到困惑) 。
为什么两者之间的差异container_memory_working_set_bytes
如此之大(近 10 倍)process_resident_memory_bytes
和之间的关系在这里container_memory_working_set_bytes
也container_memory_rss + file_mapped
很奇怪,我没想到,读完这里
匿名和交换缓存内存的总量(包括透明的大页),它等于 memory.status 文件中的 total_rss 的值。这不应与真正的驻留集大小或 cgroup 使用的物理内存量相混淆。rss + file_mapped 将为您提供 cgroup 的常驻集大小。它不包括被换出的内存。只要这些库中的页面实际上在内存中,它就包含来自共享库的内存。它确实包括所有堆栈和堆内存。
所以cgroup
总驻留集大小是rss + file_mapped
这个值如何小于container_working_set_bytes
在给定 cgroup 中运行的容器
这让我对这些统计数据感到有些不对劲。
以下是用于构建上述图表的 PROMQL
- process_resident_memory_bytes{container="sftp-downloader"}
- container_memory_working_set_bytes{container="sftp-downloader"}
- go_memstats_heap_alloc_bytes{container="sftp-downloader"}
- container_memory_mapped_file{container="sftp-downloader"} + container_memory_rss{container="sftp-downloader"}
docker - 如何检查 Kubernetes 集群中剩余的内核数和内存容量
我有一个大约 18 个节点的 Kubernetes 集群,其中很少有 4 核和 16G RAM,很少有 16 核和 64G RAM,并且集群上运行大约 25-30 个应用程序。
每个应用程序都配置了请求和限制参数,大约 2-3 核和 4-8G 内存并分配给每个应用程序。
现在我如何获得当前的利用率报告,说明我在当前集群中剩下多少核心/内存?在部署任何新应用程序之前。
我尝试使用以下命令:
这些并没有给我确切的答案。我剩下的核心或内存。
任何导致这一点的线索都会有很大帮助。
注意:我使用的是 Kubernetes 1.19 版本。
docker - Kubernetes Rest API 节点 CPU 和 RAM 使用百分比
我想开发一个简单的 web 服务,它返回 kubernetes 指标,如节点/pod CPU 和 RAM 使用百分比。在 CLI 中有类似kubectl top node
或kubectl describe node
带有我需要的所有指标的命令。但是我在 kubernetes REST api 端点中找不到这样的指标。我得到的最接近的是/apis/metrics.k8s.io/v1beta1/nodes
端点,它显示 CPU 和 RAM 使用情况,但没有百分比。
top
是否有这样的端点显示与或命令相同的信息,或者describe
也许有比metrics.k8s.io
插件更好的方法。
kubernetes - Microk8s Kube-apiserver 指标端点授权
我正在尝试:16443/metrics
从集群外部访问 Microk8s 的 kube-apiserver 指标端点 ()。默认情况下,此端点需要授权,我可以从令牌文件中找到一个不记名令牌并通过 API 调用将其传递,但在我的用例中不需要此授权部分并导致额外的痛苦。
curl -k -X GET https://172.16.3.1:16443/metrics -H "Authorization: Bearer enprMmNvb1B..."
只是想知道有没有办法完全关闭 kube-apiserver 的指标端点的身份验证/授权,并让任何人直接调用端点来检索指标?
curl -k -X GET https://172.16.3.1:16443/metrics