确定 pod 的 CPU 和内存使用情况

Determine CPU and memory usages by a pod

我正在寻找一种方法来找到:

  1. 每个 pod CPU 和 RAM 的当前使用情况 运行。
  2. 配置的 CPU 和每个 pod 的 RAM。

一方面是确定资源使用情况,另一方面是确定是手动修补还是通过部署 YAML 修补。

您可以在集群上部署 metrics-server 以获取资源使用情况:

Metrics Server is a scalable, efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines [...] Metrics API can also be accessed by kubectl top [...]

然后您可以使用kubectl top查看当前资源使用情况。例如:

$ kubectl top pods --all-namespaces
NAMESPACE     NAME                                        CPU(cores)   MEMORY(bytes)   
kube-system   coredns-74ff55c5b-vgfzw                     5m           13Mi            
kube-system   etcd-minikube                               32m          46Mi            
kube-system   ingress-nginx-controller-65cf89dc4f-crrr9   6m           204Mi           
kube-system   kube-apiserver-minikube                     99m          295Mi           
kube-system   kube-controller-manager-minikube            32m          53Mi            
kube-system   kube-proxy-9mfb9                            0m           23Mi            
kube-system   kube-scheduler-minikube                     4m           17Mi            
kube-system   metrics-server-56c4f8c9d6-48rdd             1m           12Mi            
kube-system   storage-provisioner                         2m           9Mi

您可以 kubectl describe nodes 了解每个节点上 pods 运行 的 requests/limits 配置概览。例如:

Non-terminated Pods:          (13 in total)
  Namespace                   Name                                         CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                   ----                                         ------------  ----------  ---------------  -------------  ---
  default                     my-nginx-5b56ccd65f-txkfg                    0 (0%)        0 (0%)      0 (0%)           0 (0%)         4m48s
  default                     my-nginx-5b56ccd65f-wkhms                    0 (0%)        0 (0%)      0 (0%)           0 (0%)         4m48s
  kube-system                 coredns-74ff55c5b-vgfzw                      100m (0%)     0 (0%)      70Mi (0%)        170Mi (1%)     4d
  kube-system                 etcd-minikube                                100m (0%)     0 (0%)      100Mi (0%)       0 (0%)         17h
  kube-system                 ingress-nginx-controller-65cf89dc4f-crrr9    100m (0%)     0 (0%)      90Mi (0%)        0 (0%)         3d23h
  kube-system                 kube-apiserver-minikube                      250m (2%)     0 (0%)      0 (0%)           0 (0%)         17h
  kube-system                 kube-controller-manager-minikube             200m (1%)     0 (0%)      0 (0%)           0 (0%)         4d
  kube-system                 kube-proxy-9mfb9                             0 (0%)        0 (0%)      0 (0%)           0 (0%)         4d
  kube-system                 kube-scheduler-minikube                      100m (0%)     0 (0%)      0 (0%)           0 (0%)         4d
  kube-system                 metrics-server-56c4f8c9d6-48rdd              0 (0%)        0 (0%)      0 (0%)           0 (0%)         4m18s
  kube-system                 my-nginx-5b56ccd65f-96n7v                    0 (0%)        0 (0%)      0 (0%)           0 (0%)         3d23h
  kube-system                 my-nginx-5b56ccd65f-sm7w5                    0 (0%)        0 (0%)      0 (0%)           0 (0%)         3d23h
  kube-system                 storage-provisioner                          0 (0%)        0 (0%)      0 (0%)           0 (0%)         4d

0表示没有定义request/limits。

您问题的第一部分已通过 kubectl top 命令得到解答。 第二部分在这里

您在 pod 规范中指定初始 cpu 和内存以及最大 cpu 和内存。

spec:
  containers:
  - name: cpu-demo-ctr
    image: vish/stress
    resources:
      limits:
        cpu: "1"
        memory: "400Mi"
      requests:
        cpu: "0.5"
        memory: "200Mi"

这里的 Kubernetes 文档中有一个指南: enter link description here