列出kubernetes节点的内存和cpu

3 bash kubernetes kubectl amazon-eks

我试图列出 kubernetes 中所有节点的 cpu 和内存使用情况,如果内存或 cpu 限制超过某个数字,则回显“负载超出”。我列出了该命令的 cpu 和内存,但如何应用逻辑来回显该命令load exceeded

kubectl describe nodes | grep -A 3 "Resource .*Requests .*Limits"

输出:

Resource                    Requests      Limits
  --------                    --------      ------
  cpu                         360m (18%)    13 (673%)
  memory                      2800Mi (84%)  9Gi (276%)
--
  Resource                    Requests          Limits
  --------                    --------          ------
  cpu                         1430m (74%)       22300m (1155%)
  memory                      2037758592 (58%)  15426805504 (441%)
--
  Resource                    Requests     Limits
  --------                    --------     ------
  cpu                         240m (12%)   5 (259%)
  memory                      692Mi (20%)  3Gi (92%)
--
  Resource                    Requests      Limits
  --------                    --------      ------
  cpu                         930m (48%)    3100m (160%)
  memory                      1971Mi (59%)  3412Mi (102%)
--
  Resource                    Requests     Limits
  --------                    --------     ------
  cpu                         270m (13%)   7 (362%)
  memory                      922Mi (27%)  4Gi (122%)
--
  Resource                    Requests      Limits
  --------                    --------      ------
  cpu                         530m (27%)    5 (259%)
  memory                      1360Mi (40%)  3Gi (92%)
--
  Resource                    Requests      Limits
  --------                    --------      ------
  cpu                         440m (22%)    5250m (272%)
  memory                      1020Mi (30%)  3884Mi (116%)

Run Code Online (Sandbox Code Playgroud)

Pub*_*uwa 5

尝试通过匹配正则表达式模式来提取您想要的属性

kubectl describe nodes | grep -E -A 3 "Resource|Requests|Limits"
Run Code Online (Sandbox Code Playgroud)

您可以像这样扩展它来提取CPUMEMORY

grep -E -A 3 "Resource|Requests|Limits" | awk '/cpu/{print $2}'
Run Code Online (Sandbox Code Playgroud)

编辑 要打印是否超出限制(例如 cpu 超过 1),

grep -E -A 3 "Limits" | awk '/cpu/{if($2 > 1) print "Limit Exceeded"; else print "Within Limits";}'
Run Code Online (Sandbox Code Playgroud)

你必须做

| awk '/memory/{print $2}' | awk -vFS="" '{print $1}'
Run Code Online (Sandbox Code Playgroud)

在应用条件之前从内存中提取数字,因为它给出了G带有数字的度量。

编辑2

这可以根据 grep 命令提供的输出为您提供比率。

中央处理器

| awk '/cpu/{print $1,$2,$4}' | awk '{if($3 ~ /[0-9]$/) {print $1,$2/($3*1000)} else {print $1,$2/$3}}'
Run Code Online (Sandbox Code Playgroud)

输出

cpu 0.0276923
cpu 0.0641256
cpu 0.048
cpu 0.3
cpu 0.0385714
cpu 0.106
cpu 0.0838095
Run Code Online (Sandbox Code Playgroud)

记忆

| awk '/memory/{print $1,$2,$4}' | awk '{if($3 ~ /Gi$/) {print $1,$2/($3*1024)} else {print $1,$2/$3}}'
Run Code Online (Sandbox Code Playgroud)

输出

memory 0.303819
memory 0.132092
memory 0.22526
memory 0.577667
memory 0.225098
memory 0.442708
memory 0.262616
Run Code Online (Sandbox Code Playgroud)