Kubernetes -> 每个命名空间的内存消耗

问题描述 投票:0回答:3

有没有办法获取 Kubernetes 上每个命名空间的内存消耗?

kubernetes kubectl
3个回答
3
投票

在高层次上,我们可以从 kubectl 获取这个

$ kubectl 描述资源配额 -n 我的命名空间

Name:            compute-resources
Namespace:       default
Resource         Used    Hard
--------         ----    ----
limits.cpu       12      48
limits.memory    1024M   120Gi
requests.cpu     250m    24
requests.memory  512M    60Gi

注意:仅当您创建资源配额时才有效。


0
投票

可以像这样创建资源配额对象:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-demo
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi

但是,要检查 Pod 消耗量,有一些先决条件:

  1. 每个Container必须有内存请求、内存限制、cpu 请求和CPU限制。
  2. 所有Container的内存请求总量不得超过1GiB。
  3. 所有容器的内存限制总计不得超过 2 GiB。
  4. 所有Container的CPU请求总数不得超过1个cpu。
  5. 所有容器的 CPU 限制总数不得超过 2 个 cpu。

Pod 示例模板

apiVersion: v1
kind: Pod
metadata:
  name: quota-mem-cpu-demo
spec:
  containers:
  - name: quota-mem-cpu-demo-ctr
    image: nginx
    resources:
      limits:
        memory: "800Mi"
        cpu: "800m" 
      requests:
        memory: "600Mi"
        cpu: "400m"

要检查资源消耗,请使用以下命令:

kubectl --context <cluster_context> describe resourcequota -n my-namespace

来源: https://kubernetes.io/docs/tasks/administer-cluster/manage-resources/quota-memory-cpu-namespace/


0
投票

无需

ResourceQuota
即可获得此指标。然而,它不是由临时
kubectl
命令提供的。我们需要自己计算总和。

这是获取给定命名空间的总 CPU 和 RAM 使用情况的单行代码:

"kubectl top pods -n <namespace> | awk 'BEGIN {mem=0; cpu=0} {mem += int($3); cpu += int($2);} END {print ""Mem
ory: "" mem ""Mi"" ""\n"" ""Cpu: "" cpu ""m""}'"

输出示例:

Memory: 717Mi
Cpu: 257m
© www.soinside.com 2019 - 2024. All rights reserved.