kubernetes - 为什么没有应用 K8 pod 限制?
问题描述
我基本上是在尝试在我的集群上应用 pod CPU 限制。我在那里对我的deployment.yaml(添加的请求,限制)进行了编辑并应用了yaml。以下是观察结果:
- 应用文件时我没有收到任何错误(我现有的应用程序 pod 已终止,新的应用程序 pod 已启动)
- 当我对我的 pod 进行描述时,我可以看到正在应用的 QoS 类(Qos:Burstable)
- 问题是没有遵守限制,正如我在指标服务器中看到的那样,pod CPU > 300(而限制设置为 200m)
- 我有一个附加到 pod 的 istio sidecar 容器(但我只想将限制应用于我的应用程序而不是 Istio)
yaml 文件片段:
resources:
limits:
cpu: 200m
memory: 100Mi
requests:
cpu: 50m
memory: 50Mi
任何想法我还需要在这里检查什么,我检查了所有文档并且没有收到任何错误,但没有应用限制。提前致谢!
解决方案
Pod CPU 包括 pod 中的所有容器,而您指定的限制仅适用于应用程序容器。
如果您单独查询容器的指标,您可能会发现它遵守了您对其施加的限制。
这是一个示例 prometheus 查询,如果您在集群上运行它,您可以使用它,这将让您了解每个容器实际 CPU 使用率与其 CPU 请求之间的比率 -
max(sum(irate(container_cpu_usage_seconds_total{container=~"<container_name>", image !="",namespace="<namespace>", pod=~"<Deployment_name>"}[5m])) by (pod, namespace))
/
max(sum(kube_pod_container_resource_requests_cpu_cores{namespace="<namespace>", container=~"<container_name>", pod=~"<deployment_name>"}) by (pod,namespace))
推荐阅读
- c - C 中不兼容的指针类型 || 无效(*)(无效*)
- reactjs - 功能组件的 props 的默认值有什么问题
- javascript - 我如何在 html 中制作超过 1 个幻灯片画廊?
- java - Java:为什么在使用 Stream+Iterator 时不会发生 ConcurrentModificationException?
- javascript - 如何在 Fetch GET 请求中插入参数?
- python - Python图形x轴反转,如何显示0到n?
- junit - 运行 JUnit 测试用例时,ANTLR4 的 TreeViewer 不工作/显示
- vue.js - 在 cent os 7.5 sh 上为 vue.js 运行构建:vue-cli-service:找不到命令
- python - 如何增加 Seaborn Line 的线条粗细
- ios - 保存在 Core Data 中的 iOS 数据无法在启动后保存