【问题标题】:Kubernates pod memory limit using metrics使用指标的 Kubernetes pod 内存限制
【发布时间】:2020-11-27 02:00:24
【问题描述】:

我正在尝试使用 API 获取分配给 pod 的实际内存量和总内存量。 虽然我能够使用指标服务器 api 获取实际内存消耗。 如何使用指标服务器 API 获取分配给 pod 的总内存?

我正在开发一个仪表板,我需要在其中展示 pod 内存和 cpu。ui 图已输入实际和总数量。我可以获取命令 kubectl get --raw /apis/metrics.k8s.io/v1beta1/namespaces/default/pods/ 使用的实际内存,但是如何获取 pod 的总内存?

【问题讨论】:

  • “分配给 pod 的总内存”是什么意思?它是 pod 可以使用的最大值吗?它是该 Pod 上容器使用的所有内存的总和吗?

标签: kubernetes monitoring metrics-server


【解决方案1】:

您只需运行kubectl describe pod <pod> 并在.Containers.<container>.Limits 下查看

分配给 pod 的内存总量受您分配给 pod 容器的内存限制的限制。 https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/#specify-a-memory-request-and-a-memory-limit

要为容器指定内存请求,请在容器的资源清单中包含 resources:requests 字段。要指定内存限制,请包含 resources:limits。

如果不指定内存限制,则容器没有上限。 https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/#if-you-do-not-specify-a-memory-limit

如果您不为 Container 指定内存限制,则适用以下情况之一:

• Container 对其使用的内存量没有上限。容器可以使用它运行的节点上的所有可用内存,这反过来又可以调用 OOM Killer。此外,在 OOM Kill 的情况下,没有资源限制的容器将有更大的机会被杀死。

• 容器在具有默认内存限制的命名空间中运行,并且容器被自动分配了默认限制。集群管理员可以使用 LimitRange 来指定内存限制的默认值。

【讨论】:

  • 我正在开发一个仪表板,我需要在其中展示 pod 内存和 cpu。ui 图已输入实际和总数量。我可以获取命令 kubectl get --raw /apis/metrics.k8s.io/v1beta1/namespaces/default/pods/ 使用的实际内存,但是如何获取 pod 的总内存?
  • '你只需运行 kubectl describe pod 并查看 .Containers..Limits' 这并不总是这样
  • 尼克,我如何使用 API 获取这个值?
  • kubectl get --raw /api/v1/namespaces/default/pods/ | json_pp ?
【解决方案2】:

Kubernetes API Guide 描述了所有可用的 API。它适用于不同的 K8s 版本(只需注意 URL)。

Nick,我如何使用 API 获取这个值?

乍一看,即使/api/v1/namespaces/<namespace>/pods/ 也能胜任。

请看我的例子(我决定自己测试一下)。

$ cat pod.yaml 

apiVersion: v1
kind: Pod
metadata:
  name: server-go-lim 
  ...
spec:
  containers:
  - image: nkolchenko/enea:server_go_latest
    resources:
      ...
      limits:
        memory: 1024Mi   # Here is the Limit
    ...

$ kubectl create -f pod.yaml
pod/server-go-lim created


$ kubectl get --raw /api/v1/namespaces/default/pods/server-go-lim | json_pp 
{
   ...
   "spec" : {
      "containers" : [
         {
            "resources" :  
               "limits" : {
                  "memory" : "1Gi"
               }

我们可以看到,API 返回 pod 的限制。 让我知道这是否是您一直在寻找的那个。

【讨论】:

    猜你喜欢
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 2020-05-22
    • 2021-01-05
    • 1970-01-01
    • 2021-02-14
    • 2019-07-28
    相关资源
    最近更新 更多