【问题标题】:How much RAM can my Kubernetes pod grow to?我的 Kubernetes pod 可以增长到多少 RAM?
【发布时间】:2019-05-17 15:23:27
【问题描述】:

我想知道 RAM 的当前限制。 (没有明确配置限制/请求。)

如何查看现有 pod 的当前配置?

[编辑] 该配置不仅包括现在正在使用的内存量,还包括最大限制,即它将被关闭的点。

(如果我用巨大的字符串炸毁堆,我会看到大约 4 GB 的限制,并且 Google Cloud Console 显示崩溃为 5.4 GB(当然包括的不仅仅是 Python 解释器),但我没有不知道这是从哪里来的。节点最多有 10 GB。)

我试过kubectl get pod id-for-the-pod -o yaml,但它没有显示任何关于内存的信息。

我正在使用谷歌容器引擎。

【问题讨论】:

    标签: kubernetes kubectl google-kubernetes-engine


    【解决方案1】:

    使用 kubectl top 命令

    kubectl top pod id-for-the-pod

    kubectl 顶部 --help

    显示资源(CPU/内存/存储)使用情况。

    top 命令可以让你查看节点的资源消耗 或豆荚。

    此命令要求 Heapster 正确配置并正常工作 在服务器上。

    可用命令:节点显示资源 (CPU/Memory/Storage)nodes pod Display Resource的使用情况 pod 的(CPU/内存/存储)使用率

    用法:kubectl top [flags] [options]

    【讨论】:

    • 谢谢。那显示92Mi。我知道内存可以更高,甚至超过 3Gi。如何查看最大限制,即关闭的点?
    【解决方案2】:

    问题中的编辑询问如何查看现有 pod 的最大内存限制。这应该做:

    kubectl -n <namespace> exec <pod-name> cat /sys/fs/cgroup/memory/memory.limit_in_bytes
    

    参考:https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt

    使用 BestEffort 的 QoS 类(在 kubectl -n &lt;namespace&gt; get pod &lt;pod-name&gt; -o yamlkubectl -n &lt;namespace&gt; describe pod &lt;pod-name&gt; 的输出中看到),可能没有限制(除了运行 pod 的节点上的可用内存),因此返回的值可以是一个很大的数字(例如 9223372036854771712 - 请参阅 here 以获得解释)。

    【讨论】:

    【解决方案3】:

    你可以使用

    kubectl 顶部 pod POD_NAME

    它将显示内存和 CPU 使用情况。

    [编辑:查看评论了解更多]

    【讨论】:

    • 谢谢。那显示92Mi。我知道内存可以更高,甚至超过 3Gi。如何查看最大限制,即关闭的点?
    • @JoshuaFox 来自 kubernetes 方面,其处理方式如官方文档中所述:If a Container exceeds its memory limit, it might be terminated. If it is restartable, the kubelet will restart it, as with any other type of runtime failure.kubernetes.io/docs/concepts/configuration/… 限制由 spec.containers[].resources.limits.memory 描述
    • 查看这些限制的最简单方法是使用以下内容:kubectl -n NAMESPACE describe pod POD_NAME | grep -A 2 "Limits"
    • 请将此作为答案添加,以便我“接受”它。
    【解决方案4】:

    正如社区已经回答的那样,您可以运行“kubectl top pod POD_NAME”来获取您的 pod 正在使用的内存量。最大限制实际上取决于节点的可用内存(您可以通过运行“kubectl describe nodes”了解节点的 CPU 请求和 CPU 限制)。此外,Pod 的最大限制还取决于 Pod 配置中定义的 memory requests and limits(“resources”下的“requests”和“limits”规范)。你也可以阅读这篇相关的link

    【讨论】:

    • 谢谢。但在这种情况下,pod 没有在 yaml 中配置请求和限制。 (但您的其余答案非常有用)
    【解决方案5】:

    在 Kubernetes 集群中部署 Metrics Server(不推荐使用 Heapster)然后使用

    kubectl 顶部 POD_NAME

    获取 pod CPU 和内存使用情况。

    【讨论】:

      【解决方案6】:

      @Artem Timchenko 的评论回复:kubectl -n NAMESPACE describe pod POD_NAME | grep -A 2 "Limits"

      【讨论】:

      • @Artem Timchenko 如果您可以添加答案,我可以“接受”(并为您提供答案)
      猜你喜欢
      • 1970-01-01
      • 2019-12-22
      • 2020-07-08
      • 2016-01-04
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多