Kubernetes - 使用 kubectl 显示当前 Pod 与容量

alx*_*ndr 5 kubernetes kubectl

Kubernetes 仪表板能够显示每个节点的“当前运行的 Pod/Pod 容量”。但是当我尝试获取相同的信息时,kubectl我必须运行两个命令:

kubectl describe node | grep -E (^Name:|^Non-terminated)
Run Code Online (Sandbox Code Playgroud)

其中列出了“节点上当前正在运行的 pod”,以及

kubectl get nodes -o=custom-columns=NAME:.metadata.name,CAPACITY:.status.capacity.pods
Run Code Online (Sandbox Code Playgroud)

显示节点的容量

有谁知道如何仅使用一个命令获得类似于下面的输出?

NAME     CURRENT   CAPACITY
node_1   7         15
node_2   8         15
node_3   15        15
Run Code Online (Sandbox Code Playgroud)

提前致谢!

ana*_*six 10

我发现以下内容有助于查看每个节点运行的 Pod 数量

kubectl get pods \
  -A \
  -o jsonpath='{range .items[?(@.spec.nodeName)]}{.spec.nodeName}{"\n"}{end}' \
  | sort | uniq -c | sort -rn
Run Code Online (Sandbox Code Playgroud)

产生这样的输出

  89 node1
  88 node4
  87 node2
  87 node3
  86 node5
Run Code Online (Sandbox Code Playgroud)


Pio*_*lec 8

没有一个命令可以做到这一点。

可以通过组合这两个命令来编写脚本来执行此操作。

请注意,使用基于整数的指标(例如 Pod 数量)可能会产生很大的误导,因为 Pod 消耗的空间和 CPU 数量可能会有所不同。在达到节点 Pod 计数容量之前,您可能会用完 CPU 和内存。

您可以使用命令检查可用资源:kubectl top nodes

节点容量

节点的容量(CPU 数量和内存量)是节点对象的一部分。通常,节点在创建节点对象时注册自身并报告其容量。如果您进行 手动节点管理,那么您需要在添加节点时设置节点容量。

Kubernetes 调度程序确保节点上的所有 Pod 有足够的资源。它检查节点上容器的请求总和不大于节点容量。它包括由 kubelet 启动的所有容器,但不包括由容器运行时直接启动的容器 ,也不包括在容器外部运行的任何进程。

聚苯乙烯

在 Debian 上,第一个命令必须稍微修改才能工作:

kubectl describe node | grep -E "(^Name:|^Non-terminated)"
Run Code Online (Sandbox Code Playgroud)