【问题标题】:Why are K8 pod limits not being applied?为什么没有应用 K8 pod 限制?
【发布时间】:2020-09-22 03:31:18
【问题描述】:

我基本上是在尝试在我的集群上应用 pod CPU 限制。我在那里对我的deployment.yaml(添加的请求,限制)进行了编辑并应用了yaml。以下是观察结果:

  1. 我在应用文件时没有收到任何错误(我现有的应用程序 pod 已终止,新的应用程序 pod 已启动)
  2. 当我对我的 pod 进行描述时,我可以看到正在应用的 QoS 类 (Qos: Burstable)
  3. 问题是没有遵守限制,正如我在指标服务器中看到的那样,pod CPU > 300(而限制设置为 200m)
  4. 我有一个附加到 pod 的 istio sidecar 容器(但我只想将限制应用于我的应用而不是 Istio)

yaml 文件片段:

resources:
    limits:
        cpu: 200m
        memory: 100Mi
    requests:
        cpu: 50m
        memory: 50Mi

任何想法我还需要在这里检查什么,我检查了所有文档并且没有收到任何错误,但没有应用限制。提前致谢!

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    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))
    

    【讨论】:

    • 这很有意义。我将使用下面的命令检查是否遵守限制并在此处发布更新。谢谢! kubectl top pod PODNAME --containers
    • 感谢它的荣幸,我很惊讶这在任何地方都没有提到(但我应该检查一下)。再次感谢您的回复!
    • 当然,很高兴它有帮助。在过去的一年里,我花了很长时间与限制和要求作斗争,我和你一样认为这些东西是不直观的。
    猜你喜欢
    • 1970-01-01
    • 2020-10-02
    • 2018-12-14
    • 2014-12-04
    • 2019-06-23
    • 1970-01-01
    • 2020-03-12
    • 2019-08-01
    • 2023-03-05
    相关资源
    最近更新 更多