Kubernetes: рдХреНрд▓рд╕реНрдЯрд░ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдХреБрдмреЗрдХреНрдЯрд▓ рдХрдорд╛рдВрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдирд╡ре░ 2015  ┬╖  88рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: kubernetes/kubernetes

рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдкреЙрдбреНрд╕ рд╢реЗрдбреНрдпреВрд▓ рдирд╣реАрдВ рдХрд░ рдкрд╛рдиреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░реЗрд╢рд╛рди рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЬрд╛рдирдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреЙрдб рдХрдм рд▓рдВрдмрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЗрд╕реЗ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред http://kubernetes.io/v1.1/docs/user-guide/compute-resources.html#monitoring -compute-resource-usage рдорджрдж рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЦреЛрдЬрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ (рдореИрдВ рдПрдХ рдкрд░ 'рдкреНрд░рд╛рдкреНрдд' рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдкреЙрдб рдкрд╣рд▓реЗ рд▓рдВрдмрд┐рдд рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдереЛрдбрд╝реА рджреЗрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд▓рдВрдмрд┐рдд рдореЗрдВ 'рдЕрдЯрдХ' рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'рд╡рд░реНрдгрди' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ)ред

рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдкреЙрдбреНрд╕ рдХреЗ рдЫрд┐рдкреЗ рд╣реБрдП рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдиреЗ рд╕реЗ рднреА рдЬрдЯрд┐рд▓ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдкреЙрдб рдореМрдЬреВрдж рд╣реИрдВ, рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл 'рдЧрд┐рдирддреА' рд╣реИред

рдХрдИ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрдзрд╛рд░ рд╣реИрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрджрд░реНрд╢ рдХреНрдпрд╛ рд╣реЛрдЧрд╛:

1) "рдЕрдиреБрд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХрдореА рдХреЗ рд▓рд┐рдП рд╡рд┐рдлрд▓" рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд┐рдд рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдирдпрд╛ рдкреЙрдб рд░рд╛рдЬреНрдп рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВред

2) рдХреНрдпрд╛ kubectl get po рдпрд╛ kubectl get po -o=wide рдПрдХ рдХреЙрд▓рдо рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреБрдЫ рд▓рдВрдмрд┐рдд рдХреНрдпреЛрдВ рд╣реИ (рд╢рд╛рдпрдж рдХрдВрдЯреЗрдирд░ред рд░рд╛рдЬреНрдп рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдШрдЯрдирд╛ред рд╕рдВрджреЗрд╢)ред

3) рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ kubectl рдХрдорд╛рдВрдб рдмрдирд╛рдПрдВред рдореИрдВ рдПрдХ "рдХреБрдмреЗрдХреНрдЯрд▓ рдЙрдкрдпреЛрдЧ" рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдХреБрд▓ рдХреНрд▓рд╕реНрдЯрд░ рд╕реАрдкреАрдпреВ рдФрд░ рдореЗрдо, рдкреНрд░рддрд┐ рдиреЛрдб рд╕реАрдкреАрдпреВ рдФрд░ рдореЗрдо рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдб/рдХрдВрдЯреЗрдирд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд▓реЗ рд╕рд╣рд┐рдд рд╕рднреА рдкреЙрдбреНрд╕ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрдиреБрд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЬрдм рдЖрдкрдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрд╕рд╛рдзрди рд╣реЛрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдПрдХрд▓ рдиреЛрдб рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реЛ ('рдХреЛрдИ рдЫреЗрдж рдкрд░реНрдпрд╛рдкреНрдд рдмрдбрд╝рд╛ рдирд╣реАрдВ' рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рджрд╛рди)ред

kinfeature prioritbacklog sicli

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╡рд╣рд╛рдБ рд╣реИ:

$ kubectl top nodes
NAME                    CPU(cores)   CPU%      MEMORY(bytes)   MEMORY%   
cluster1-k8s-master-1   312m         15%       1362Mi          68%       
cluster1-k8s-node-1     124m         12%       233Mi           11% 

рд╕рднреА 88 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

(2) рдХреА рддрд░реНрдЬ рдкрд░ рдХреБрдЫ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ UX рдХреЗ рд▓реЛрдЧ рдореБрдЭрд╕реЗ рдмреЗрд╣рддрд░ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗред

(3) #15743 рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдЧрдардмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдХрд░реАрдм рд╣реИрдВред

рдЙрдкрд░реЛрдХреНрдд рдорд╛рдорд▓реЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдХреМрди рд╕рд╛ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

kubectl utilization requests рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╢рд╛рдпрдж kubectl util рдпрд╛ kubectl usage рдмреЗрд╣рддрд░/рдЫреЛрдЯрд╛ рд╣реИрдВ):

cores: 4.455/5 cores (89%)
memory: 20.1/30 GiB (67%)
...

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреБрд▓ рдХрдВрдЯреЗрдирд░ рдЕрдиреБрд░реЛрдз 4.455 рдХреЛрд░ рдФрд░ 20.1 GiB рд╣реИрдВ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХреБрд▓ 5 рдХреЛрд░ рдФрд░ 30GiB рд╣реИрдВред

рд╡рд╣рд╛рдБ рд╣реИ:

$ kubectl top nodes
NAME                    CPU(cores)   CPU%      MEMORY(bytes)   MEMORY%   
cluster1-k8s-master-1   312m         15%       1362Mi          68%       
cluster1-k8s-node-1     124m         12%       233Mi           11% 

рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреНрд╡рд░рд┐рдд рджреГрд╢реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдореБрдЭреЗ рдорд┐рд▓рд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред

kubectl describe nodes

рдпрджрд┐ kubectl describe nodes рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ "рдкреНрд░рд╛рд░реВрдкрд┐рдд" рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдерд╛, рддреЛ рдореБрдЭреЗ рд╕рднреА рдиреЛрдб рдХреЗ рд╕рдВрд╕рд╛рдзрди рдЕрдиреБрд░реЛрдзреЛрдВ/рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реЛрдЧреАред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╣реИрдХ рд╣реИ kubectl describe nodes | grep -A 2 -e "^\\s*CPU Requests"

@ рд╕реЗ-рдмрд┐рд▓реНрдХреБрд▓ рдзрдиреНрдпрд╡рд╛рдж, рдмрд╕ рд╡рд╣реА рдЬреЛ рдореИрдВ рдвреВрдВрдв рд░рд╣рд╛ рдерд╛

рд╣рд╛рдБ, рдпрд╣ рдореЗрд░рд╛ рд╣реИ:

$ cat bin/node-resources.sh 
#!/bin/bash
set -euo pipefail

echo -e "Iterating...\n"

nodes=$(kubectl get node --no-headers -o custom-columns=NAME:.metadata.name)

for node in $nodes; do
  echo "Node: $node"
  kubectl describe node "$node" | sed '1,/Non-terminated Pods/d'
  echo
done

@goltermann рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд▓реЗрдмрд▓ рдирд╣реАрдВ рд╣реИрдВред рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд▓реЗрдмрд▓ рдЬреЛрдбрд╝реЗрдВ :
(1) рдПрдХ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛: @kubernetes/sig-<team-name>-misc
(2) рд▓реЗрдмрд▓ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛: /sig <label>

_рдиреЛрдЯ: рд╡рд┐рдзрд┐ (1) рдЯреАрдо рдХреЛ рдПрдХ рд╕реВрдЪрдирд╛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧреАред рдЖрдк рдЯреАрдо рдХреА рд╕реВрдЪреА рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ._

@ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ / sig-cli-misc

рдЖрдк рдЕрдкрдиреЗ рдиреЛрдбреНрд╕ рдХреЗ рдкреНрд░рддрд┐рд╢рдд рд╕реАрдкреАрдпреВ рдЙрдкрдпреЛрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

alias util='kubectl get nodes | grep node | awk '\''{print $1}'\'' | xargs -I {} sh -c '\''echo   {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve -- ; echo '\'''
Note: 4000m cores is the total cores in one node
alias cpualloc="util | grep % | awk '{print \$1}' | awk '{ sum += \$1 } END { if (NR > 0) { result=(sum**4000); printf result/NR \"%\n\" } }'"

$ cpualloc
3.89358%
Note: 1600MB is the total cores in one node
alias memalloc='util | grep % | awk '\''{print $3}'\'' | awk '\''{ sum += $1 } END { if (NR > 0) { result=(sum*100)/(NR*1600); printf result/NR "%\n" } }'\'''

$ memalloc
24.6832%

@tomfotherby alias util='kubectl get nodes | grep node | awk '\''{print $1}'\'' | xargs -I {} sh -c '\''echo {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve -- ; echo '\'''

@ рдЖрд▓реЛрдХ87 - рдЖрдкрдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо bash рдФрд░ m3.large рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреНрд░рдХрд╛рд░ (2 рд╕реАрдкреАрдпреВ, 7.5 рдЬреА рдореЗрдореЛрд░реА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

alias util='kubectl get nodes --no-headers | awk '\''{print $1}'\'' | xargs -I {} sh -c '\''echo {} ; kubectl describe node {} | grep Allocated -A 5 | grep -ve Event -ve Allocated -ve percent -ve -- ; echo '\'''

# Get CPU request total (we x20 because because each m3.large has 2 vcpus (2000m) )
alias cpualloc='util | grep % | awk '\''{print $1}'\'' | awk '\''{ sum += $1 } END { if (NR > 0) { print sum/(NR*20), "%\n" } }'\'''

# Get mem request total (we x75 because because each m3.large has 7.5G ram )
alias memalloc='util | grep % | awk '\''{print $5}'\'' | awk '\''{ sum += $1 } END { if (NR > 0) { print sum/(NR*75), "%\n" } }'\'''
$util
ip-10-56-0-178.ec2.internal
  CPU Requests  CPU Limits  Memory Requests Memory Limits
  960m (48%)    2700m (135%)    630Mi (8%)  2034Mi (27%)

ip-10-56-0-22.ec2.internal
  CPU Requests  CPU Limits  Memory Requests Memory Limits
  920m (46%)    1400m (70%) 560Mi (7%)  550Mi (7%)

ip-10-56-0-56.ec2.internal
  CPU Requests  CPU Limits  Memory Requests Memory Limits
  1160m (57%)   2800m (140%)    972Mi (13%) 3976Mi (53%)

ip-10-56-0-99.ec2.internal
  CPU Requests  CPU Limits  Memory Requests Memory Limits
  804m (40%)    794m (39%)  824Mi (11%) 1300Mi (17%)

cpualloc 
48.05 %

$ memalloc 
9.95333 %

https://github.com/kubernetes/kubernetes/issues/17512#issuecomment -267992922 kubectl top рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЖрд╡рдВрдЯрди рдирд╣реАрдВред рдЖрд╡рдВрдЯрди рд╡рд╣ рд╣реИ рдЬреЛ insufficient CPU рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЯрди рднреНрд░рдо рд╣реИред

AFAICT, рдкреЙрдб рджреНрд╡рд╛рд░рд╛ рдиреЛрдб CPU рдЖрд╡рдВрдЯрди рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрд░реЛрдз рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдкреНрд░рддрд┐ рдХрдВрдЯреЗрдирд░ рд╣реИрдВред рдФрд░ рдлрд┐рд░ рднреА, рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ .spec.containers[*].requests рдореЗрдВ limits / requests рдлрд╝реАрд▓реНрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ)

/рд╕реАрд╕реА @mysterikkit

рдЗрд╕ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдкрд╛рд░реНрдЯреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреБрд░рд╛рдирд╛ рдХреНрд▓рд╕реНрдЯрд░ рд╣реИ рдЬреЛ CA рдХреЛ рд╕реНрдХреЗрд▓ рдбрд╛рдЙрди рдбрд┐рд╕реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреА рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдЕрдкрдиреА AWS рдорд╛рд░реНрдЧ рд╕реАрдорд╛ рд╕реЗ рдЯрдХрд░рд╛рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдХрд┐рддрдирд╛ рдЫреЛрдЯрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

#!/bin/bash

set -e

KUBECTL="kubectl"
NODES=$($KUBECTL get nodes --no-headers -o custom-columns=NAME:.metadata.name)

function usage() {
    local node_count=0
    local total_percent_cpu=0
    local total_percent_mem=0
    local readonly nodes=$@

    for n in $nodes; do
        local requests=$($KUBECTL describe node $n | grep -A2 -E "^\\s*CPU Requests" | tail -n1)
        local percent_cpu=$(echo $requests | awk -F "[()%]" '{print $2}')
        local percent_mem=$(echo $requests | awk -F "[()%]" '{print $8}')
        echo "$n: ${percent_cpu}% CPU, ${percent_mem}% memory"

        node_count=$((node_count + 1))
        total_percent_cpu=$((total_percent_cpu + percent_cpu))
        total_percent_mem=$((total_percent_mem + percent_mem))
    done

    local readonly avg_percent_cpu=$((total_percent_cpu / node_count))
    local readonly avg_percent_mem=$((total_percent_mem / node_count))

    echo "Average usage: ${avg_percent_cpu}% CPU, ${avg_percent_mem}% memory."
}

usage $NODES

рдЬреИрд╕реЗ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ:

ip-REDACTED.us-west-2.compute.internal: 38% CPU, 9% memory
...many redacted lines...
ip-REDACTED.us-west-2.compute.internal: 41% CPU, 8% memory
ip-REDACTED.us-west-2.compute.internal: 61% CPU, 7% memory
Average usage: 45% CPU, 15% memory.

рд╢реАрд░реНрд╖ рдЖрджреЗрд╢ рдореЗрдВ рдкреЙрдб рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ:

kubectl top pod

рдЖрд╡рдВрдЯрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рддрд░реАрдХрд╛, рдХреНрд▓рд╕реНрдЯрд░-рд╡реНрдпрд╛рдкреА:

$ kubectl get po --all-namespaces -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]}  {.name}:{.resources.requests.cpu}{'\n'}{end}{'\n'}{end}"

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ:

kube-system:heapster-v1.5.0-dc8df7cc9-7fqx6
  heapster:88m
  heapster-nanny:50m
kube-system:kube-dns-6cdf767cb8-cjjdr
  kubedns:100m
  dnsmasq:150m
  sidecar:10m
  prometheus-to-sd:
kube-system:kube-dns-6cdf767cb8-pnx2g
  kubedns:100m
  dnsmasq:150m
  sidecar:10m
  prometheus-to-sd:
kube-system:kube-dns-autoscaler-69c5cbdcdd-wwjtg
  autoscaler:20m
kube-system:kube-proxy-gke-cluster1-default-pool-cd7058d6-3tt9
  kube-proxy:100m
kube-system:kube-proxy-gke-cluster1-preempt-pool-57d7ff41-jplf
  kube-proxy:100m
kube-system:kubernetes-dashboard-7b9c4bf75c-f7zrl
  kubernetes-dashboard:50m
kube-system:l7-default-backend-57856c5f55-68s5g
  default-http-backend:10m
kube-system:metrics-server-v0.2.0-86585d9749-kkrzl
  metrics-server:48m
  metrics-server-nanny:5m
kube-system:tiller-deploy-7794bfb756-8kxh5
  tiller:10m

рдпрд╣ рдЕрдЬреАрдм рд╣реИред рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЖрд╡рдВрдЯрди рдХреНрд╖рдорддрд╛ рдкрд░ рдХрдм рд╣реВрдВ рдпрд╛ рдЙрд╕рдХреЗ рдХрд░реАрдм рд╣реВрдВред рдпрд╣ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдп рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдРрд╕рд╛ рдЖрдБрдХрдбрд╝рд╛ рд╣реИ рдЬреЛ рдПрдХ рдЙрдЪреНрдЪ% рдпрд╛ рдкрд╛рдареНрдп рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИ ... рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕реЗ рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ? рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╣рдореЗрд╢рд╛ рдСрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?

рдореИрдВрдиреЗ #3 рдкрддреЗ рдкрд░ https://github.com/dpetzold/kube-resource-explorer/ рд▓рд┐рдЦрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХреБрдЫ рдирдореВрдирд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ:

$ ./resource-explorer -namespace kube-system -reverse -sort MemReq
Namespace    Name                                               CpuReq  CpuReq%  CpuLimit  CpuLimit%  MemReq    MemReq%  MemLimit  MemLimit%
---------    ----                                               ------  -------  --------  ---------  ------    -------  --------  ---------
kube-system  event-exporter-v0.1.7-5c4d9556cf-kf4tf             0       0%       0         0%         0         0%       0         0%
kube-system  kube-proxy-gke-project-default-pool-175a4a05-mshh  100m    10%      0         0%         0         0%       0         0%
kube-system  kube-proxy-gke-project-default-pool-175a4a05-bv59  100m    10%      0         0%         0         0%       0         0%
kube-system  kube-proxy-gke-project-default-pool-175a4a05-ntfw  100m    10%      0         0%         0         0%       0         0%
kube-system  kube-dns-autoscaler-244676396-xzgs4                20m     2%       0         0%         10Mi      0%       0         0%
kube-system  l7-default-backend-1044750973-kqh98                10m     1%       10m       1%         20Mi      0%       20Mi      0%
kube-system  kubernetes-dashboard-768854d6dc-jh292              100m    10%      100m      10%        100Mi     3%       300Mi     11%
kube-system  kube-dns-323615064-8nxfl                           260m    27%      0         0%         110Mi     4%       170Mi     6%
kube-system  fluentd-gcp-v2.0.9-4qkwk                           100m    10%      0         0%         200Mi     7%       300Mi     11%
kube-system  fluentd-gcp-v2.0.9-jmtpw                           100m    10%      0         0%         200Mi     7%       300Mi     11%
kube-system  fluentd-gcp-v2.0.9-tw9vk                           100m    10%      0         0%         200Mi     7%       300Mi     11%
kube-system  heapster-v1.4.3-74b5bd94bb-fz8hd                   138m    14%      138m      14%        301856Ki  11%      301856Ki  11%

@shtouff

root<strong i="7">@debian9</strong>:~# kubectl get po -n chenkunning-84 -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]}  {.name}:{.resources.requests.cpu}{'\n'}{end}{'\n'}{end}"
error: error parsing jsonpath {range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]}  {.name}:{.resources.requests.cpu}{'\n'}{end}{'\n'}{end}, unrecognized character in action: U+0027 '''
root<strong i="8">@debian9</strong>:~# kubectl version
Client Version: version.Info{Major:"1", Minor:"6+", GitVersion:"v1.6.7-beta.0+$Format:%h$", GitCommit:"bb053ff0cb25a043e828d62394ed626fda2719a1", GitTreeState:"dirty", BuildDate:"2017-08-26T09:34:19Z", GoVersion:"go1.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"6+", GitVersion:"v1.6.7-beta.0+$Format:84c3ae0384658cd40c1d1e637f5faa98cf6a965c$", GitCommit:"3af2004eebf3cbd8d7f24b0ecd23fe4afb889163", GitTreeState:"clean", BuildDate:"2018-04-04T08:40:48Z", GoVersion:"go1.8.1", Compiler:"gc", Platform:"linux/amd64"}

@ harryge00 : рдпреВ

@nfirvine рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХреА рд╣реИ:

kubectl get pods -n my-ns -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.containers[0].resources.limits.cpu} {"\n"}{end}' |awk '{sum+=$2 ; print $0} END{print "sum=",sum}'

рдпрд╣ рдЙрди рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкреЙрдб рдореЗрдВ рдХреЗрд╡рд▓ 1 рдХрдВрдЯреЗрдирд░ рд╣реЛрддрд╛ рд╣реИред

@xmik рдЕрд░реЗ, рдореИрдВ k8 1.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╣реЗрдкрд╕реНрдЯрд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред рдЬрдм рдореИрдВ $ kubectl рд╢реАрд░реНрд╖ рдиреЛрдбреНрд╕ --heapster-namespace=kube-system рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдореБрдЭреЗ "рддреНрд░реБрдЯрд┐: рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ" рджрд┐рдЦрд╛рддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрд░рд╛рдЧ?

@abushoeb :

  1. рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ kubectl top рдзреНрд╡рдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: --heapster-namespace ред рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдзреНрд╡рдЬ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдЖрдк рд╕рд╣реА рдереЗ: https://github.com/kubernetes/kubernetes/issues/44540#issuecomment -362882035ред
  2. рдпрджрд┐ рдЖрдк "рддреНрд░реБрдЯрд┐: рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ" рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╣реАрдкрд╕реНрдЯрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓реЙрдЧ рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╣реАрдкрд╕реНрдЯрд░ рд╕реЗрд╡рд╛ рдареАрдХ рд╣реИ, рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ <none> ? рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЛ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪреЗрдВ: kubectl -n kube-system describe svc/heapster

@xmik рдЖрдк рд╕рд╣реА рд╣реИрдВ, рд╣реАрдкрд╕реНрдЯрд░ рдареАрдХ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЕрдм рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░реАрдпрд▓-рдЯрд╛рдЗрдо GPU рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ? рдпрд╣ рд╢реАрд░реНрд╖ рдЖрджреЗрд╢ рдХреЗрд╡рд▓ CPU рдФрд░ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рджреЗрддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ред :(

@abushoeb рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ "рддреНрд░реБрдЯрд┐: рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ"ред рдЖрдкрдиреЗ рдпрд╣ рдХреИрд╕реЗ рдлрд┐рдХреНрд╕ рдХрд┐рдпрд╛?

@avgKol рдкрд╣рд▓реЗ рдЖрдк рд╣реАрдкрд╕реНрдЯрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рдареАрдХ рд╕реЗ рддреИрдирд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ curl -L http://heapster-pod-ip:heapster-service-port/api/v1/model/metrics/ рдЬреИрд╕реЗ рдХрд░реНрд▓ рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рддреЛ рд╣реАрдкрд╕реНрдЯрд░ рдкреЙрдб рдФрд░ рд▓реЙрдЧ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рд╣реЗрдкрд╕реНрдЯрд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рднреА рдПрдХ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рдЦрддрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ (рдФрд░ рд▓рд╛рдЧрдд) рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ HTML рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдпрд╛ рд╣реИ: https://github.com/hjacobs/kube-resource-report

@hjacobs рдореИрдВ рдЙрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд/рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВред рдПрдХ рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рдкреИрдХ рдХрд░рдиреЗ рдХрд╛ рдорди?

@tonglil рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рдпреЛрдЬрдирд╛ рдПрдХ рдЖрдЙрдЯ-рдСрдл-рдж-рдмреЙрдХреНрд╕ рддреИрдпрд╛рд░ рдбреЙрдХрд░ рдЫрд╡рд┐ рд╕рд╣рд┐рдд рд╣реИред рд╡реЗрдмрд╕рд░реНрд╡рд░ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдмрд╕ kubectl apply -f .. рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рдореЗрд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ:

kubectl get nodes -o=jsonpath="{range .items[*]}{.metadata.name}{'\t'}{.status.allocatable.memory}{'\t'}{.status.allocatable.cpu}{'\n'}{end}"

рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

ip-192-168-101-177.us-west-2.compute.internal   251643680Ki 32
ip-192-168-196-254.us-west-2.compute.internal   251643680Ki 32

@tonglil рдПрдХ рдбреЙрдХрд░ рдЫрд╡рд┐ рдЕрдм рдЙрдкрд▓рдмреНрдз рд╣реИ: https://github.com/hjacobs/kube-resource-report

90d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдореБрджреНрджреЗ рдкреБрд░рд╛рдиреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
/remove-lifecycle stale рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд 30d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдмрд╛рд╕реА рдореБрджреНрджреЗ рд╕рдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрддрдГ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рдмрдВрдж рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ /close ред

рд╕рд┐рдЧ-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕/рдЯреЗрд╕реНрдЯ-рдЗрдиреНрдлреНрд░рд╛ рдФрд░/рдпрд╛ рдлреЗрдЬрдЯрд╛ рдХреЛ рдлреАрдбрдмреИрдХ рднреЗрдЬреЗрдВ ред
/рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

/рдирд┐рдХрд╛рд▓реЗрдВ-рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

рд╣рд░ рдорд╣реАрдиреЗ рдпрд╛ рддреЛ, рдореЗрд░реА рдЧреБрдЧрд▓рд┐рдВрдЧ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рддреА рд╣реИред рд▓рдВрдмреЗ jq рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде, рдпрд╛ рдЧрдгрдирд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рдлрд╛рдирд╛ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрдБрдХрдбрд╝реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ ...

# kubectl utilization cluster
cores: 19.255/24 cores (80%)
memory: 16.4/24 GiB (68%)

# kubectl utilization [node name]
cores: 3.125/4 cores (78%)
memory: 2.1/4 GiB (52%)

(рдЬреИрд╕рд╛ рдХрд┐ @chrishiestand рдиреЗ рдкрд╣рд▓реЗ рд╕реВрддреНрд░ рдореЗрдВ рдмрддрд╛рдпрд╛ рдерд╛)ред

рдореИрдВ рдЕрдХреНрд╕рд░ рдкреНрд░рддрд┐ рд╕рдкреНрддрд╛рд╣ рдХреБрдЫ рджрд░реНрдЬрди рдкрд░реАрдХреНрд╖рдг рд╕рдореВрд╣реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдирд╖реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдмрдирд╛рдиреЗ рдпрд╛ рдХреБрдЫ рд╢реЗрд▓ рдЙрдкрдирд╛рдореЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рддрд╛рдХрд┐ рдореИрдВ рдпрд╣ рджреЗрдЦ рд╕рдХреВрдВ рдХрд┐ "рдЕрдЧрд░ рдореИрдВ рд╡рд╣рд╛рдВ рдХрдИ рд╕рд░реНрд╡рд░ рдбрд╛рд▓рддрд╛ рд╣реВрдВ, рдФрд░ рдЗрди рдРрдкреНрд╕ рдХреЛ рдЯреЙрд╕ рдХрд░рддрд╛ рд╣реВрдВ рдЙрди рдкрд░, рдореЗрд░рд╛ рд╕рдордЧреНрд░ рдЙрдкрдпреЛрдЧ/рджрдмрд╛рд╡ рдХреНрдпрд╛ рд╣реИ"ред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЫреЛрдЯреЗ / рдЕрдзрд┐рдХ рдЧреВрдврд╝ рд╕рдореВрд╣реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдСрдЯреЛрд╕реНрдХреЗрд▓-рдЯреВ-рдж-рдореВрди (рдЖрдорддреМрд░ рдкрд░ рдкреИрд╕реЗ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП) рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдорд╛рдореВрд▓реА рдкреЙрдб рдСрдЯреЛрд╕реНрдХреЗрд▓рд┐рдВрдЧ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдУрд╡рд░рд╣реЗрдб рд╣реИред

рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд░реЛрдз - рдореИрдВ рдирд╛рдорд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдХрдо рд╕реЗ рдХрдо; рдкрд░рд┐рдирд┐рдпреЛрдЬрди/рд▓реЗрдмрд▓ рджреНрд╡рд╛рд░рд╛ рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛), рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрди-рдЯреНрд░рд┐рдорд┐рдВрдЧ рдкреНрд░рдпрд╛рд╕реЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреМрди рд╕реЗ рдирд╛рдорд╕реНрдерд╛рди рд▓рд╛рдпрдХ рд╣реИрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд▓рдЧрдЗрди kubectl-view-utilization рдмрдирд╛рдпрд╛ рд╣реИ , рдЬреЛ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ @geerlingguy рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдХреНрд░реВ рдкреНрд▓рдЧрдЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрдирд╛ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕реЗ рдмрд╛рд╢ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдЬреАрдм рдФрд░ рдмреАрд╕реА рдХреА рдЬрд░реВрд░рдд рд╣реИред
Kubectl рдкреНрд▓рдЧрдЗрди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдХреЛрд░ рдЯреВрд▓реНрд╕ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧ рднреА рдЗрд╕ рдЪреБрдиреМрддреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рдереЗред рдореИрдВрдиреЗ рдХреНрдпреВрдм рдИрдЧрд▓ (рдПрдХ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдирд┐рд░реНрдпрд╛рддрдХ) рдмрдирд╛рдпрд╛ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдХреНрд▓рд╕реНрдЯрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдмреЗрд╣рддрд░ рдЕрд╡рд▓реЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА рдФрд░ рдЕрдВрддрддрдГ рдореБрдЭреЗ рдЙрдкрд▓рдмреНрдз рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдмреЗрд╣рддрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджрд┐рдпрд╛:

https://github.com/google-cloud-tools/kube-eagle

Kubernetes Resource monitoring dashboard

рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдиреЛрдб рдЙрдкрдпреЛрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдкрд╛рдпрдерди рд▓рд┐рдкрд┐ рд╣реИ
https://github.com/amelbakry/kube-node-utilization

рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЛрдб рдЙрдкрдпреЛрдЧ ............
+--------------------------------------------------------+ --------+----------+
| рдиреЛрдбрдирд╛рдо | рд╕реАрдкреАрдпреВ | рдореЗрдореЛрд░реА |
+--------------------------------------------------------+ --------+----------+
| рдЖрдИрдкреА-176-35-32-139.eu-central-1.compute.internal | 13.49% | 60.87% |
| рдЖрдИрдкреА-176-35-26-21.eu-central-1.compute.internal | 5.89% | 15.10% |
| ip-176-35-9-122.eu-central-1.compute.internal | 8.08% | 65.51% |
| рдЖрдИрдкреА-176-35-22-243.eu-central-1.compute.internal | 6.29% | 19.28% |
+--------------------------------------------------------+ --------+----------+

рдореЗрд░реЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо @amelbakry рдпрд╣ рдХреНрд▓рд╕реНрдЯрд░-рд╕реНрддрд░реАрдп рдЙрдкрдпреЛрдЧ рд╣реИ рдЬреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: "рдХреНрдпрд╛ рдореБрдЭреЗ рдФрд░ рдорд╢реАрдиреЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ?" / "рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдорд╢реАрдиреЗрдВ рд╣рдЯрд╛ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП?" / "рдХреНрдпрд╛ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдЬрд▓реНрдж рд╣реА рдмрдврд╝реЗрдЧрд╛?" ..

рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рднрдВрдбрд╛рд░рдг рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдХреЛрдИ рднреА рд╡рд┐рдЪрд╛рд░ рдЗрд╕реЗ рд╕рднреА рдлрд▓реА рд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?

рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рд╕рдВрдХреЗрдд:

kubectl get pods -o json -n kube-system | jq -r '.items[] | .metadata.name + " \n Req. RAM: " + .spec.containers[].resources.requests.memory + " \n Lim. RAM: " + .spec.containers[].resources.limits.memory + " \n Req. CPU: " + .spec.containers[].resources.requests.cpu + " \n Lim. CPU: " + .spec.containers[].resources.limits.cpu + " \n Req. Eph. DISK: " + .spec.containers[].resources.requests["ephemeral-storage"] + " \n Lim. Eph. DISK: " + .spec.containers[].resources.limits["ephemeral-storage"] + "\n"'
...
kube-proxy-xlmjt
 Req. RAM: 32Mi
 Lim. RAM: 256Mi
 Req. CPU: 100m
 Lim. CPU:
 Req. Eph. DISK: 100Mi
 Lim. Eph. DISK: 512Mi
...
echo "\nRAM Requests TOTAL:" && kubectl describe namespace kube-system | grep 'requests.memory' && echo "\nRAM Requests:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.requests.memory + " | " + .metadata.name'

echo "\nRAM Limits TOTAL:" && kubectl describe namespace kube-system | grep 'limits.memory' &&  echo "\nRAM Limits:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.limits.memory + " | " + .metadata.name'

echo "\nCPU Requests TOTAL:" && kubectl describe namespace kube-system | grep 'requests.cpu' &&  echo "\nCPU Requests:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.requests.cpu + " | " + .metadata.name'

echo "\nCPU Limits TOTAL:" && kubectl describe namespace kube-system | grep 'limits.cpu' &&  echo "\nCPU Limits:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.limits.cpu + " | " + .metadata.name'

echo "\nEph. DISK Requests TOTAL:" && kubectl describe namespace kube-system | grep 'requests.ephemeral-storage' && echo "\nEph. DISK Requests:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.requests["ephemeral-storage"] + " | " + .metadata.name'

echo "\nEph. DISK Limits TOTAL:" && kubectl describe namespace kube-system | grep 'limits.ephemeral-storage' && echo "\nEph. DISK Limits:\n" && kubectl get pods -o json -n kube-system | jq -r '.items[] | .spec.containers[].resources.limits["ephemeral-storage"] + " | " + .metadata.name'

RAM Requests TOTAL:
 requests.memory               3504Mi   16Gi

RAM Requests:

64Mi | aws-alb-ingress-controller-6b569b448c-jzj6f
...

@ kivagant-ba рдЖрдк рдкреЙрдб рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рддрд┐ рдиреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рд╕рднреА рдиреЛрдбреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
https://github.com/amelbakry/kube-node-utilization

def get_pod_metrics_per_node (рдиреЛрдб):
pod_metrics = "/api/v1/pods?fieldSelector=spec.nodeName%3D" + рдиреЛрдб
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = api_client.call_api(pod_metrics,
'GET', auth_settings=['BearerToken'],
response_type='json', _preload_content=false)

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = json.loads (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ [0] .data.decode ('utf-8'))

рд╡рд╛рдкрд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

@kierenj рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░-

90d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдореБрджреНрджреЗ рдкреБрд░рд╛рдиреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
/remove-lifecycle stale рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд 30d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдмрд╛рд╕реА рдореБрджреНрджреЗ рд╕рдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрддрдГ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рдмрдВрдж рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ /close ред

рд╕рд┐рдЧ-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕/рдЯреЗрд╕реНрдЯ-рдЗрдиреНрдлреНрд░рд╛ рдФрд░/рдпрд╛ рдлреЗрдЬрдЯрд╛ рдХреЛ рдлреАрдбрдмреИрдХ рднреЗрдЬреЗрдВ ред
/рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

/рдирд┐рдХрд╛рд▓реЗрдВ-рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

рдореИрдВ, рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреА рддрд░рд╣, рдпрд╣рд╛рдВ рд╡рд╛рдкрд╕ рдЖрддрд╛ рд░рд╣рддрд╛ рд╣реВрдВ - рд╡рд░реНрд╖реЛрдВ рддрдХ - рд╣реИрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╕реАрдПрд▓рдЖрдИ (рдЬреИрд╕реЗ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдПрдПрд╕рдЬреА) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

@etopeter рдЗрддрдиреА рдЕрдЪреНрдЫреА рд╕реАрдПрд▓рдЖрдИ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рдХреА рд╕рд╛рджрдЧреА рдкрд╕рдВрдж рд╣реИред рд╕рдВрдЦреНрдпрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдЯреАрдХ рдЕрд░реНрде рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рд▓рд╛рд╣?

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдлрд▓реА рдХреА рд╡рд░реНрддрдорд╛рди рд╕реАрдорд╛ рдХреЛ рдбрдВрдк рдХрд░ рджреЗрдЧреАред

kubectl get pods --all-namespaces -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}\ {'.spec.nodeName -'} {.spec.nodeName}{'\n'}\ {range .spec.containers[*]}\ {'requests.cpu -'} {.resources.requests.cpu}{'\n'}\ {'limits.cpu -'} {.resources.limits.cpu}{'\n'}\ {'requests.memory -'} {.resources.requests.memory}{'\n'}\ {'limits.memory -'} {.resources.limits.memory}{'\n'}\ {'\n'}{end}\ {'\n'}{end}"

рдЙрджрд╛рд╣рд░рдг рдЖрдЙрдЯрдкреБрдЯ
...
рдХреНрдпреВрдм- рд╕рд┐рд╕реНрдЯрдо: рдПрдбрдСрди-http-
.spec.nodeName - рдЕрдХреНрд╕-рдПрдЬреЗрдВрдЯрдкреВрд▓-84550961-0
request.cpu -
рд╕реАрдорд╛рдПрдВ.рд╕реАрдкреАрдпреВ -
рдЕрдиреБрд░реЛрдз.рд╕реНрдореГрддрд┐ -
рд╕реАрдорд╛.рд╕реНрдореГрддрд┐ -

рдХреНрдпреВрдм- рд╕рд┐рд╕реНрдЯрдо: coredns-696c4d987c-pjht8
.spec.nodeName - рдЕрдХреНрд╕-рдПрдЬреЗрдВрдЯрдкреВрд▓-84550961-0
request.cpu - 100m
рд╕реАрдорд╛рдПрдВ.рд╕реАрдкреАрдпреВ -
request.memory - 70Mi
рд╕реАрдорд╛рдПрдВ.рдореЗрдореЛрд░реА - 170Mi

рдХреНрдпреВрдм- рд╕рд┐рд╕реНрдЯрдо: coredns-696c4d987c-rtkl6
.spec.nodeName - рдЕрдХреНрд╕-рдПрдЬреЗрдВрдЯрдкреВрд▓-84550961-2
request.cpu - 100m
рд╕реАрдорд╛рдПрдВ.рд╕реАрдкреАрдпреВ -
request.memory - 70Mi
рд╕реАрдорд╛рдПрдВ.рдореЗрдореЛрд░реА - 170Mi

рдХреНрдпреВрдм- рд╕рд┐рд╕реНрдЯрдо: coredns-696c4d987c-zgcbp
.spec.nodeName - рдЕрдХреНрд╕-рдПрдЬреЗрдВрдЯрдкреВрд▓-84550961-1
request.cpu - 100m
рд╕реАрдорд╛рдПрдВ.рд╕реАрдкреАрдпреВ -
request.memory - 70Mi
рд╕реАрдорд╛рдПрдВ.рдореЗрдореЛрд░реА - 170Mi

рдХреНрдпреВрдм- рд╕рд┐рд╕реНрдЯрдо: рдХреЛрд░реНрдбрдиреНрд╕-рдСрдЯреЛрд╕реНрдХреЗрд▓рд░-657d77ffbf-7t72x
.spec.nodeName - рдЕрдХреНрд╕-рдПрдЬреЗрдВрдЯрдкреВрд▓-84550961-2
request.cpu - 20m
рд╕реАрдорд╛рдПрдВ.рд╕реАрдкреАрдпреВ -
request.memory - 10Mi
рд╕реАрдорд╛.рд╕реНрдореГрддрд┐ -

рдХреНрдпреВрдм- рд╕рд┐рд╕реНрдЯрдо: coredns-autoscaler-657d77ffbf-zrp6m
.spec.nodeName - рдЕрдХреНрд╕-рдПрдЬреЗрдВрдЯрдкреВрд▓-84550961-0
request.cpu - 20m
рд╕реАрдорд╛рдПрдВ.рд╕реАрдкреАрдпреВ -
request.memory - 10Mi
рд╕реАрдорд╛.рд╕реНрдореГрддрд┐ -

рдХреНрдпреВрдм- рд╕рд┐рд╕реНрдЯрдо: рдХреНрдпреВрдм-рдкреНрд░реЙрдХреНрд╕реА-57nw5
.spec.nodeName - рдЕрдХреНрд╕-рдПрдЬреЗрдВрдЯрдкреВрд▓-84550961-1
request.cpu - 100m
рд╕реАрдорд╛рдПрдВ.рд╕реАрдкреАрдпреВ -
рдЕрдиреБрд░реЛрдз.рд╕реНрдореГрддрд┐ -
рд╕реАрдорд╛.рд╕реНрдореГрддрд┐ -
...

@ Spaceman1861 рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

@eduncan911 рдХрд┐рдпрд╛

рдореБрдЭреЗ рдЯреЗрдмрд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ (рдпрд╣ рд╕реАрдорд╛ рдХреЗ рдмрдЬрд╛рдп рдЕрдиреБрд░реЛрдз рджрд┐рдЦрд╛рддрд╛ рд╣реИ):

kubectl get pods -o custom-columns=NAME:.metadata.name,"CPU(cores)":.spec.containers[*].resources.requests.cpu,"MEMORY(bytes)":.spec.containers[*].resources.requests.memory --all-namespaces

рдирдореВрдирд╛ рдЖрдЙрдЯрдкреБрдЯ:

NAME                                CPU(cores)      MEMORY(bytes)
pod1                                100m            128Mi
pod2                                100m            128Mi,128Mi

@ lentzi90 рдмрд╕ FYI рдХрд░реЗрдВ: рдЖрдк рдореЗрдВ рд╕рдорд╛рди рдХрд╕реНрдЯрдо рдХреЙрд▓рдо рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ Kubernetes рд╡реЗрдм рджреГрд╢реНрдп ( "рд╡реЗрдм рдХреЗ рд▓рд┐рдП kubectl"), рдбреЗрдореЛ: https://kube-web-view.demo.j-serv.de/clusters/local/namespaces/ ? рдбрд┐рдлрд╝реЙрд▓реНрдЯ / рдлрд▓реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ = рдореИрдЯреНрд░рд┐рдХреНрд╕; customcols = рд╕реАрдкреАрдпреВ + рдЕрдиреБрд░реЛрдз = рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ (% 27% 20% 27% 20spec.containers [] .resources.requests.cpu)% 3BMemory + рдЕрдиреБрд░реЛрдз = рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ (% 27% 20% 27% 20spec.containers [] .resources.requests.memory)

рдХрд╕реНрдЯрдо рд╕реНрддрдВрдн рдкрд░ рдбреЙрдХреНрд╕: https://kube-web-view.readthedocs.io/en/latest/features.html#listing -resources

рдКрдУ рдЪрдордХрджрд╛рд░

рдЙрдкрдпреЛрдЧ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╕реАрдорд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреИрдирд╛рддреА рдореЗрдВ рдкреЙрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рддреИрдирд╛рддреА-рд╕реНрд╡рд╛рд╕реНрдереНрдп.рд╢) рд╣реИ
https://github.com/amelbakry/kubernetes-scripts

Screenshot from 2019-09-02 15-11-42

@lentzi90 рдФрд░ @ylogx рдХреЗ рдЙрддреНрддрд░реЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░, рдореИрдВрдиреЗ рдЕрдкрдиреА рдмрдбрд╝реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ ( kubectl top pods ) рдФрд░ рд╕рдВрд╕рд╛рдзрди рдЕрдиреБрд░реЛрдз рдФрд░ рд╕реАрдорд╛рдПрдВ рджрд┐рдЦрд╛рддреА рд╣реИ:

join -a1 -a2 -o 0,1.2,1.3,2.2,2.3,2.4,2.5, -e '<none>' <(kubectl top pods) <(kubectl get pods -o custom-columns=NAME:.metadata.name,"CPU_REQ(cores)":.spec.containers[*].resources.requests.cpu,"MEMORY_REQ(bytes)":.spec.containers[*].resources.requests.memory,"CPU_LIM(cores)":.spec.containers[*].resources.limits.cpu,"MEMORY_LIM(bytes)":.spec.containers[*].resources.limits.memory) | column -t -s' ' 

рдЖрдЙрдЯрдкреБрдЯ рдЙрджрд╛рд╣рд░рдг:

NAME                                                             CPU(cores)  MEMORY(bytes)  CPU_REQ(cores)  MEMORY_REQ(bytes)  CPU_LIM(cores)  MEMORY_LIM(bytes)
xxxxx-847dbbc4c-c6twt                                            20m         110Mi          50m             150Mi              150m            250Mi
xxx-service-7b6b9558fc-9cq5b                                     19m         1304Mi         1               <none>             1               <none>
xxxxxxxxxxxxxxx-hook-5d585b449b-zfxmh                            0m          46Mi           200m            155M               200m            155M

рдЖрдкрдХреЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдХреЗрд╡рд▓ kstats рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЙрдкрдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

alias kstats='join -a1 -a2 -o 0,1.2,1.3,2.2,2.3,2.4,2.5, -e '"'"'<none>'"'"' <(kubectl top pods) <(kubectl get pods -o custom-columns=NAME:.metadata.name,"CPU_REQ(cores)":.spec.containers[*].resources.requests.cpu,"MEMORY_REQ(bytes)":.spec.containers[*].resources.requests.memory,"CPU_LIM(cores)":.spec.containers[*].resources.limits.cpu,"MEMORY_LIM(bytes)":.spec.containers[*].resources.limits.memory) | column -t -s'"'"' '"'" 

рдкреАрдПрд╕ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдореИрдХ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ

рдЙрдкрдпреЛрдЧ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╕реАрдорд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреИрдирд╛рддреА рдореЗрдВ рдкреЙрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рддреИрдирд╛рддреА-рд╕реНрд╡рд╛рд╕реНрдереНрдп.рд╢) рд╣реИ
https://github.com/amelbakry/kubernetes-scripts

@amelbakry рдореБрдЭреЗ рдореИрдХ рдкрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ:

Failed to execute process './deployment-health.sh'. Reason:
exec: Exec format error
The file './deployment-health.sh' is marked as an executable but could not be run by the operating system.

рд╡реВрдкреНрд╕,
"#!" рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "рдмрд╛рд╢реЛ" рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
./deployment-health.sh" рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

/рдЪрд╛рд░реНрд▓реНрд╕
рдкреБрдирд╢реНрдЪ. рдкреАрдЖрд░ рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓рд╛

рдмреБрдзрд╡рд╛рд░, 25 рд╕рд┐рддрдВрдмрд░, 2019 рдХреЛ рд╕реБрдмрд╣ 10:19 рдмрдЬреЗ рджрд┐рдорд┐рддреНрд░реА рдореВрд░ рд╕реВрдЪрдирд╛рдПрдВ @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдкреЙрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рддреИрдирд╛рддреА-рд╕реНрд╡рд╛рд╕реНрдереНрдп.рд╢) рд╣реИ
рдЙрдкрдпреЛрдЧ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╕реАрдорд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ
https://github.com/amelbakry/kubernetes-scripts

@amelbakry https://github.com/amelbakry рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВ
рдореИрдХ рдкрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐:

рдкреНрд░рдХреНрд░рд┐рдпрд╛ './deployment-health.sh' рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ред рдХрд╛рд░рдг:
рдирд┐рд╖реНрдкрд╛рджрди: рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╛рд░реВрдк рддреНрд░реБрдЯрд┐
рдлрд╝рд╛рдЗрд▓ './deployment-health.sh' рдХреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рдереНрд░реЗрдб рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/kubernetes/kubernetes/issues/17512?email_source=notifications&email_token=AACA3TODQEUPWK3V3UY3SF3QLOMSFA5CNFSM4BUXCUG2YY3PNVWWK3WTUL52HS4DFVREXG43VMVHJHRKGODNMV
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AACA3TOPOBIWXFX2DAOT6JDQLOMSFANCNFSM4BUXCUGQ
.

@cgthayer рдЖрдк рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЙрд╕ рдкреАрдЖрд░ рдлрд┐рдХреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдореИрдВрдиреЗ MacOs Mojave рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдИ, рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдпреВрд░реЛрдкреАрдп рд╕рдВрдШ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рд╕реА рдЦрд╛рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреА рдЧрдИ рд╣реИрдВред

рдпрд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдкреВрд░реНрд╡ рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдЬреЛ рдХреБрд▓ рдХреЙрд▓рдо рднреА рдХрд░рддрд╛ рд╣реИред

oc_ns_pod_usage () {
    # show pod usage for cpu/mem
    ns="$1"
    usage_chk3 "$ns" || return 1
    printf "$ns\n"
    separator=$(printf '=%.0s' {1..50})
    printf "$separator\n"
    output=$(join -a1 -a2 -o 0,1.2,1.3,2.2,2.3,2.4,2.5, -e '<none>' \
        <(kubectl top pods -n $ns) \
        <(kubectl get -n $ns pods -o custom-columns=NAME:.metadata.name,"CPU_REQ(cores)":.spec.containers[*].resources.requests.cpu,"MEMORY_REQ(bytes)":.spec.containers[*].resources.requests.memory,"CPU_LIM(cores)":.spec.containers[*].resources.limits.cpu,"MEMORY_LIM(bytes)":.spec.containers[*].resources.limits.memory))
    totals=$(printf "%s" "$output" | awk '{s+=$2; t+=$3; u+=$4; v+=$5; w+=$6; x+=$7} END {print s" "t" "u" "v" "w" "x}')
    printf "%s\n%s\nTotals: %s\n" "$output" "$separator" "$totals" | column -t -s' '
    printf "$separator\n"
}

рдЙрджрд╛рд╣рд░рдг

$ oc_ns_pod_usage ls-indexer
ls-indexer
==================================================
NAME                                                CPU(cores)  MEMORY(bytes)  CPU_REQ(cores)  MEMORY_REQ(bytes)  CPU_LIM(cores)  MEMORY_LIM(bytes)
ls-indexer-f5-7cd5859997-qsfrp                      15m         741Mi          1               1000Mi             2               2000Mi
ls-indexer-f5-7cd5859997-sclvg                      15m         735Mi          1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-4b7j2                 92m         1103Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-5xj5l                 88m         1124Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-6vvl2                 92m         1132Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-85f66                 85m         1151Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-924jz                 96m         1124Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-g6gx8                 119m        1119Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-hkhnt                 52m         819Mi          1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-hrsrs                 51m         1122Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-j4qxm                 53m         885Mi          1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-lxlrb                 83m         1215Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-mw6rt                 86m         1131Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-pbdf8                 95m         1115Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-qk9bm                 91m         1141Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-sdv9r                 54m         1194Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-t67v6                 75m         1234Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-tkxs2                 88m         1364Mi         1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-v6jl2                 53m         747Mi          1               1000Mi             2               2000Mi
ls-indexer-filebeat-7858f56c9-wkqr7                 53m         838Mi          1               1000Mi             2               2000Mi
ls-indexer-metricbeat-74d89d7d85-jp8qc              190m        1191Mi         1               1000Mi             2               2000Mi
ls-indexer-metricbeat-74d89d7d85-jv4bv              192m        1162Mi         1               1000Mi             2               2000Mi
ls-indexer-metricbeat-74d89d7d85-k4dcd              194m        1144Mi         1               1000Mi             2               2000Mi
ls-indexer-metricbeat-74d89d7d85-n46tz              192m        1155Mi         1               1000Mi             2               2000Mi
ls-indexer-packetbeat-db98f6fdf-8x446               35m         1198Mi         1               1000Mi             2               2000Mi
ls-indexer-packetbeat-db98f6fdf-gmxxd               22m         1203Mi         1               1000Mi             2               2000Mi
ls-indexer-syslog-5466bc4d4f-gzxw8                  27m         1125Mi         1               1000Mi             2               2000Mi
ls-indexer-syslog-5466bc4d4f-zh7st                  29m         1153Mi         1               1000Mi             2               2000Mi
==================================================
Totals:                                             2317        30365          28              28000              56              56000
==================================================

рдФрд░ use_chk3 рдХреНрдпрд╛ рд╣реИ?

рдореИрдВ рдЕрдкрдиреЗ рдЯреВрд▓реНрд╕ ;-) kubectl-view-allocations: kubectl рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕реВрдЪреА рдЖрд╡рдВрдЯрди (рд╕реАрдкреАрдпреВ, рдореЗрдореЛрд░реА, рдЬреАрдкреАрдпреВ, ... рдПрдХреНрд╕ рдЕрдиреБрд░реЛрдзрд┐рдд, рд╕реАрдорд╛, рдЖрд╡рдВрдЯрди рдпреЛрдЧреНрдп, ...) рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред , рдЕрдиреБрд░реЛрдз рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ (рдЖрдВрддрд░рд┐рдХ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ "рдХреМрди рдХреНрдпрд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ"ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдореВрдиреЗ рдореЗрдВ рдореИрдВ рдХреЗрд╡рд▓ "gpu" рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВред

> kubectl-view-allocations -r gpu

 Resource                                   Requested  %Requested  Limit  %Limit  Allocatable  Free
  nvidia.com/gpu                                    7         58%      7     58%           12     5
  тФЬтФА node-gpu1                                      1         50%      1     50%            2     1
  тФВ  тФФтФА xxxx-784dd998f4-zt9dh                       1                  1
  тФЬтФА node-gpu2                                      0          0%      0      0%            2     2
  тФЬтФА node-gpu3                                      0          0%      0      0%            2     2
  тФЬтФА node-gpu4                                      1         50%      1     50%            2     1
  тФВ  тФФтФА aaaa-1571819245-5ql82                       1                  1
  тФЬтФА node-gpu5                                      2        100%      2    100%            2     0
  тФВ  тФЬтФА bbbb-1571738839-dfkhn                       1                  1
  тФВ  тФФтФА bbbb-1571738888-52c4w                       1                  1
  тФФтФА node-gpu6                                      2        100%      2    100%            2     0
     тФЬтФА bbbb-1571738688-vlxng                       1                  1
     тФФтФА cccc-1571745684-7k6bn                       1                  1

рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг:

  • рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ (рдиреЛрдб, рдкреЙрдб) рд╕реНрддрд░ рдпрд╛ рд╕рдореВрд╣ рдХреИрд╕реЗ рдЪреБрдиреЗрдВ, (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)
  • рдХрд░реНрд▓, рдХреНрд░реВ, рдмреНрд░реВ, ... рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрд╛рдЗрдирд░реА рдЬреАрдердм рдХреЗ рд░рд┐рд▓реАрдЬ рд╕реЗрдХреНрд╢рди рдХреЗ рддрд╣рдд рдЙрдкрд▓рдмреНрдз рд╣реИрдВ)

рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдмреЗрдХреНрдЯрд▓-рд╡реНрдпреВ-рдпреВрдЯрд┐рд▓рд╛рдЗрдЬреЗрд╢рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдмреИрд╢ (рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ) рдореЗрдВ рдХрдИ рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдпрд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╣реИрдХ рд╣реИ kubectl describe nodes | grep -A 2 -e "^\\s*CPU Requests"

рдпрд╣ рдЕрдм рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ :(

kubectl describe node | grep -A5 "Allocated" рдЖрдЬрд╝рдорд╛рдПрдВ

рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдердореНрд╕ рдЕрдк рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рдЪреМрдерд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА priority/backlog ред

рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЕрдЧрд░ рд╣рдо рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдПрдХ рдХрджрдо рдЙрдард╛рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @davidB рдХреЗ рдЯреВрд▓ рдХрд╛ UX рдХрдорд╛рд▓ рдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓ kubectl ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: kubectl top nodes рдФрд░ kubectl describe node рд╣рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рд╕рд╛рде CPU (рдХреЛрд░) 1064m рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рдгрд╛рдо рджреВрд╕рд░реЗ (1480m) рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

kubectl top nodes
NAME                                                CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
abcd-p174e23ea5qa4g279446c803f82-abc-node-0         1064m        53%    6783Mi          88%
kubectl describe node abcd-p174e23ea5qa4g279446c803f82-abc-node-0
...
  Resource  Requests          Limits
  --------  --------          ------
  cpu       1480m (74%)       1300m (65%)
  memory    2981486848 (37%)  1588314624 (19%)

kubectl top nodes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ CPU (рдХреЛрд░) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рдореИрдВ рдЕрдкрдиреЗ рдЯреВрд▓реНрд╕ ;-) kubectl-view-allocations: kubectl рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕реВрдЪреА рдЖрд╡рдВрдЯрди (рд╕реАрдкреАрдпреВ, рдореЗрдореЛрд░реА, рдЬреАрдкреАрдпреВ, ... рдПрдХреНрд╕ рдЕрдиреБрд░реЛрдзрд┐рдд, рд╕реАрдорд╛, рдЖрд╡рдВрдЯрди рдпреЛрдЧреНрдп, ...) рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред , рдЕрдиреБрд░реЛрдз рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ (рдЖрдВрддрд░рд┐рдХ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ "рдХреМрди рдХреНрдпрд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рддрд╛ рд╣реИ"ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдореВрдиреЗ рдореЗрдВ рдореИрдВ рдХреЗрд╡рд▓ "gpu" рдирд╛рдо рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВред

> kubectl-view-allocations -r gpu

 Resource                                   Requested  %Requested  Limit  %Limit  Allocatable  Free
  nvidia.com/gpu                                    7         58%      7     58%           12     5
  тФЬтФА node-gpu1                                      1         50%      1     50%            2     1
  тФВ  тФФтФА xxxx-784dd998f4-zt9dh                       1                  1
  тФЬтФА node-gpu2                                      0          0%      0      0%            2     2
  тФЬтФА node-gpu3                                      0          0%      0      0%            2     2
  тФЬтФА node-gpu4                                      1         50%      1     50%            2     1
  тФВ  тФФтФА aaaa-1571819245-5ql82                       1                  1
  тФЬтФА node-gpu5                                      2        100%      2    100%            2     0
  тФВ  тФЬтФА bbbb-1571738839-dfkhn                       1                  1
  тФВ  тФФтФА bbbb-1571738888-52c4w                       1                  1
  тФФтФА node-gpu6                                      2        100%      2    100%            2     0
     тФЬтФА bbbb-1571738688-vlxng                       1                  1
     тФФтФА cccc-1571745684-7k6bn                       1                  1

рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг:

* will allow to hide (node, pod) level or to choose how to group, (eg to provide an overview with only resources)

* installation via curl, krew, brew, ... (currently binary are available under the releases section of github)

рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдмреЗрдХреНрдЯрд▓-рд╡реНрдпреВ-рдпреВрдЯрд┐рд▓рд╛рдЗрдЬреЗрд╢рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдмреИрд╢ (рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ) рдореЗрдВ рдХрдИ рдХреЙрдкреА/рдкреЗрд╕реНрдЯ рдпрд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ред

рд╣реИрд▓реЛ рдбреЗрд╡рд┐рдб рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдирдП рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдВрдХрд▓рд┐рдд рдмрд╛рдЗрдирд░реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЙрдмрдВрдЯреВ 16.04 рдкрд░ рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ

kubectl-view-allocations: /lib/x86_64-linux-gnu/libc.so.6: рд╕рдВрд╕реНрдХрд░рдг 'GLIBC_2.25' рдирд╣реАрдВ рдорд┐рд▓рд╛ (kubectl-view-allocations рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ)

dpkg -l |grep glib

ii libglib2.0-0:amd64 2.48.2-0ubuntu4.4

@omerfsen рдХреНрдпрд╛ рдЖрдк рдирдП рд╕рдВрд╕реНрдХрд░рдг kubectl-view-allocations рд╕рдВрд╕реНрдХрд░рдг 'GLIBC_2.25' рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ

рдЖрд╡рдВрдЯрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рддрд░реАрдХрд╛, рдХреНрд▓рд╕реНрдЯрд░-рд╡реНрдпрд╛рдкреА:

$ kubectl get po --all-namespaces -o=jsonpath="{range .items[*]}{.metadata.namespace}:{.metadata.name}{'\n'}{range .spec.containers[*]}  {.name}:{.resources.requests.cpu}{'\n'}{end}{'\n'}{end}"

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ:

kube-system:heapster-v1.5.0-dc8df7cc9-7fqx6
  heapster:88m
  heapster-nanny:50m
kube-system:kube-dns-6cdf767cb8-cjjdr
  kubedns:100m
  dnsmasq:150m
  sidecar:10m
  prometheus-to-sd:
kube-system:kube-dns-6cdf767cb8-pnx2g
  kubedns:100m
  dnsmasq:150m
  sidecar:10m
  prometheus-to-sd:
kube-system:kube-dns-autoscaler-69c5cbdcdd-wwjtg
  autoscaler:20m
kube-system:kube-proxy-gke-cluster1-default-pool-cd7058d6-3tt9
  kube-proxy:100m
kube-system:kube-proxy-gke-cluster1-preempt-pool-57d7ff41-jplf
  kube-proxy:100m
kube-system:kubernetes-dashboard-7b9c4bf75c-f7zrl
  kubernetes-dashboard:50m
kube-system:l7-default-backend-57856c5f55-68s5g
  default-http-backend:10m
kube-system:metrics-server-v0.2.0-86585d9749-kkrzl
  metrics-server:48m
  metrics-server-nanny:5m
kube-system:tiller-deploy-7794bfb756-8kxh5
  tiller:10m

рдпрд╣рд╛рдБ рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЬрд╡рд╛рдм рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдкрд┐рдпреЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░ рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ, рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рд╕реАрдорд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ:

join -1 2 -2 2 -a 1 -a 2 -o "2.1 0 1.3 2.3 2.5 1.4 2.4 2.6" -e '<wait>' \
  <( kubectl top pods --all-namespaces | sort --key 2 -b ) \
  <( kubectl get pods --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,"CPU_REQ(cores)":.spec.containers[*].resources.requests.cpu,"MEMORY_REQ(bytes)":.spec.containers[*].resources.requests.memory,"CPU_LIM(cores)":.spec.containers[*].resources.limits.cpu,"MEMORY_LIM(bytes)":.spec.containers[*].resources.limits.memory | sort --key 2 -b ) \
  | column -t -s' '

рдХреНрдпреЛрдВрдХрд┐ join рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреА рд╣реИ, рдКрдкрд░ рджреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрд░реЗ рд▓рд┐рдП рд╡рд┐рдлрд▓ рд░рд╣реАред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЖрдк рд╢реАрд░реНрд╖ рд╕реЗ рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧ рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реЗ рдЕрдиреБрд░реЛрдз рдФрд░ (рдпрд╣рд╛рдВ) рд╕рднреА рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреА рд╕реАрдорд╛рдПрдВ рджреЗрдЦрддреЗ рд╣реИрдВ:

NAMESPACE                 NAME                                                        CPU(cores)  CPU_REQ(cores)  CPU_LIM(cores)  MEMORY(bytes)  MEMORY_REQ(bytes)   MEMORY_LIM(bytes)
kube-system               aws-node-2jzxr                                              18m         10m             <none>          41Mi           <none>              <none>
kube-system               aws-node-5zn6w                                              <wait>      10m             <none>          <wait>         <none>              <none>
kube-system               aws-node-h8cc5                                              20m         10m             <none>          42Mi           <none>              <none>
kube-system               aws-node-h9n4f                                              0m          10m             <none>          0Mi            <none>              <none>
kube-system               aws-node-lz5fn                                              17m         10m             <none>          41Mi           <none>              <none>
kube-system               aws-node-tpmxr                                              20m         10m             <none>          39Mi           <none>              <none>
kube-system               aws-node-zbkkh                                              23m         10m             <none>          47Mi           <none>              <none>
cluster-autoscaler        cluster-autoscaler-aws-cluster-autoscaler-5db55fbcf8-mdzkd  1m          100m            500m            9Mi            300Mi               500Mi
cluster-autoscaler        cluster-autoscaler-aws-cluster-autoscaler-5db55fbcf8-q9xs8  39m         100m            500m            75Mi           300Mi               500Mi
kube-system               coredns-56b56b56cd-bb26t                                    6m          100m            <none>          11Mi           70Mi                170Mi
kube-system               coredns-56b56b56cd-nhp58                                    6m          100m            <none>          11Mi           70Mi                170Mi
kube-system               coredns-56b56b56cd-wrmxv                                    7m          100m            <none>          12Mi           70Mi                170Mi
gitlab-runner-l           gitlab-runner-l-gitlab-runner-6b8b85f87f-9knnx              3m          100m            200m            10Mi           128Mi               256Mi
gitlab-runner-m           gitlab-runner-m-gitlab-runner-6bfd5d6c84-t5nrd              7m          100m            200m            13Mi           128Mi               256Mi
gitlab-runner-mda         gitlab-runner-mda-gitlab-runner-59bb66c8dd-bd9xw            4m          100m            200m            17Mi           128Mi               256Mi
gitlab-runner-ops         gitlab-runner-ops-gitlab-runner-7c5b85dc97-zkb4c            3m          100m            200m            12Mi           128Mi               256Mi
gitlab-runner-pst         gitlab-runner-pst-gitlab-runner-6b8f9bf56b-sszlr            6m          100m            200m            20Mi           128Mi               256Mi
gitlab-runner-s           gitlab-runner-s-gitlab-runner-6bbccb9b7b-dmwgl              50m         100m            200m            27Mi           128Mi               512Mi
gitlab-runner-shared      gitlab-runner-shared-gitlab-runner-688d57477f-qgs2z         3m          <none>          <none>          15Mi           <none>              <none>
kube-system               kube-proxy-5b65t                                            15m         100m            <none>          19Mi           <none>              <none>
kube-system               kube-proxy-7qsgh                                            12m         100m            <none>          24Mi           <none>              <none>
kube-system               kube-proxy-gn2qg                                            13m         100m            <none>          23Mi           <none>              <none>
kube-system               kube-proxy-pz7fp                                            15m         100m            <none>          18Mi           <none>              <none>
kube-system               kube-proxy-vdjqt                                            15m         100m            <none>          23Mi           <none>              <none>
kube-system               kube-proxy-x4xtp                                            19m         100m            <none>          15Mi           <none>              <none>
kube-system               kube-proxy-xlpn7                                            0m          100m            <none>          0Mi            <none>              <none>
metrics-server            metrics-server-5875c7d795-bj7cq                             5m          200m            500m            29Mi           200Mi               500Mi
metrics-server            metrics-server-5875c7d795-jpjjn                             7m          200m            500m            29Mi           200Mi               500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-06t94f             <wait>      200m,100m       200m,200m       <wait>         200Mi,128Mi         500Mi,500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-10lpn9j            1m          200m,100m       200m,200m       12Mi           200Mi,128Mi         500Mi,500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-11jrxfh            <wait>      200m,100m       200m,200m       <wait>         200Mi,128Mi         500Mi,500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-129hpvl            1m          200m,100m       200m,200m       12Mi           200Mi,128Mi         500Mi,500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-13kswg8            1m          200m,100m       200m,200m       12Mi           200Mi,128Mi         500Mi,500Mi
gitlab-runner-s           runner-heq8ujaj-project-10386-concurrent-15qhp5w            <wait>      200m,100m       200m,200m       <wait>         200Mi,128Mi         500Mi,500Mi

рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп: рдЖрдк рд╕реАрдкреАрдпреВ рдЦрдкрдд рдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХреНрд░рдордмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

| awk 'NR<2{print $0;next}{print $0| "sort --key 3 --numeric -b --reverse"}

рдпрд╣ рдореИрдХ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рд▓рд┐рдирдХреНрд╕ рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ, рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдЖрджрд┐ рдХреЗ рдХрд╛рд░рдг ...)

рдЙрдореНрдореАрдж рд╣реИ, рдХреЛрдИ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рддрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреБрдмреЗрдХреНрдЯрд▓ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рджреГрд╢реНрдп рди рдорд┐рд▓ рдЬрд╛рдПред

рдореБрдЭреЗ рдХреНрдпреВрдм-рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдЕрдиреБрднрд╡

рдЙрджрд╛рд╣рд░рдг:

kube-capacity --util

NODE              CPU REQUESTS    CPU LIMITS    CPU UTIL    MEMORY REQUESTS    MEMORY LIMITS   MEMORY UTIL
*                 560m (28%)      130m (7%)     40m (2%)    572Mi (9%)         770Mi (13%)     470Mi (8%)
example-node-1    220m (22%)      10m (1%)      10m (1%)    192Mi (6%)         360Mi (12%)     210Mi (7%)
example-node-2    340m (34%)      120m (12%)    30m (3%)    380Mi (13%)        410Mi (14%)     260Mi (9%)

рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рддреИрдирд╛рдд рд╕рднреА рдХреБрдмреЗрд░рдиреЗрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реАрдкреАрдпреВ/рдореЗрдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдЬреАрдкреАрдпреВ, рдЯреАрдкреАрдпреВ (рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП), рдЗрдВрдЯреЗрд▓ рдХреНрдпреВрдПрдЯреА рдФрд░ рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рднрдВрдбрд╛рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдХреНрдпрд╛? рдореБрдЭреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╣ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдЖрдИрдУрдПрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА)ред

@ boniek83 , рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ kubectl-view-allocations рдмрдирд╛рдпрд╛ , рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ GPU рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, ... рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (рдЧреАрдердм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░) рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЙрддреНрд╕реБрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЯреАрдкреАрдпреВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ (рдЗрд╕реЗ рдиреЛрдб рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)

@ boniek83 , рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ kubectl-view-allocations рдмрдирд╛рдпрд╛ , рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ GPU рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, ... рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ (рдЧреАрдердм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░) рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЙрддреНрд╕реБрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЯреАрдкреАрдпреВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ (рдЗрд╕реЗ рдиреЛрдб рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)

рдореБрдЭреЗ рдЖрдкрдХреЗ рдЯреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ рдФрд░, рдореЗрд░реЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕рд░реНрд╡реЛрддреНрддрдо рд╣реИред рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдореИрдВ рдИрд╕реНрдЯрд░ рдХреЗ рдмрд╛рдж рдЯреАрдкреАрдпреВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рдбреЗрдЯрд╛ рд╡реЗрдм рдРрдк рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реБрдВрджрд░ рдЧреНрд░рд╛рдл рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдбреЗрдЯрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХреЛрдВ рдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рддрдХ рдХреЛрдИ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рджреЗрдиреА рдкрдбрд╝реЗрдЧреАред рд╡реЗ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдХреМрди рдЦрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ :)

рдЪреВрдВрдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ (рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдЦреБрд▓реА рд╣реИ :( ), рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдХ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ:
https://github.com/eht16/kube-cargo-load

рдпрд╣ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ POD рдХрд╛ рддреНрд╡рд░рд┐рдд рдЕрд╡рд▓реЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдореЗрдореЛрд░реА рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рд╕реАрдорд╛рдУрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╕реНрдореГрддрд┐ рд╕реАрдорд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдмреАрдЪ рдЕрдиреБрдкрд╛рдд рдХреА рдПрдХ рддрд╕реНрд╡реАрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред

рд╣рдо рдкреЙрдбреНрд╕ рдХреЗ рдореЗрдореЛрд░реА рдбрдВрдк рд▓реЙрдЧ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдлрд▓реА рдЕрдХреНрд╕рд░ рд▓рдЯрдХрддреА рд░рд╣рддреА рд╣реИ,

  • kubectl describe nodes рдпрд╛ kubectl top nodes , рдХреНрд▓рд╕реНрдЯрд░ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
  • рд╕рд╛рде рд╣реА рдЗрди 2 рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХреНрдпреЛрдВ рд╣реИред
    рдХреНрдпрд╛ рдЗрд╕рдХреА рдЕрднреА рддрдХ рдХреЛрдИ рддрд╛рд░реНрдХрд┐рдХ рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╣реИ?

/ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛

рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╣реИрдХреНрд╕ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЙрдЪреНрдЪ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рднреА рдХреБрдЫ рдЪрд╛рд╣рд┐рдП .. рдкреНрд░рддрд┐ рдиреЛрдб рдкреВрд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рддрд░рд╣ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП!

рдирдорд╕реНрддреЗ,
рдореИрдВ рдПрдХ рдкреЙрдб рдХреЗ рд▓рд┐рдП рд╕реАрдкреАрдпреВ рдФрд░ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рд░ 5 рдорд┐рдирдЯ рдореЗрдВ рд▓реЙрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдЧреНрд░рд╛рдл рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдзрдиреНрдпрд╡рд╛рдж

рдирдорд╕реНрддреЗ,
рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдХрд░ рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ Google рдиреЗ рд╣рдо рд╕рднреА рдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛ :-) (рдереЛрдбрд╝рд╛ рдирд┐рд░рд╛рд╢ рд╣реИ рдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ 5y рдХреЗ рдмрд╛рдж рднреА рдЦреБрд▓рд╛ рд╣реИред) рд╕рднреА рд╢реЗрд▓ рд╕реНрдирд┐рдкреНрд╕ рдФрд░ рдЕрдиреНрдп рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд╕рд░рд▓ рдФрд░ рддреНрд╡рд░рд┐рдд рд╣реИрдХ:

$ kubectl describe nodes | grep 'Name:\|  cpu\|  memory'

Name:               XXX-2-wke2
  cpu                                               1552m (77%)   2402m (120%)
  memory                                            2185Mi (70%)  3854Mi (123%)
Name:               XXX-2-wkep
  cpu                                               1102m (55%)   1452m (72%)
  memory                                            1601Mi (51%)  2148Mi (69%)
Name:               XXX-2-wkwz
  cpu                                               852m (42%)    1352m (67%)
  memory                                            1125Mi (36%)  3624Mi (116%)

рд╕рд░рд▓ рдФрд░ рддреНрд╡рд░рд┐рдд рд╣реИрдХ:

$ kubectl describe nodes | grep 'Name:\|  cpu\|  memory'

Name:               XXX-2-wke2
  cpu                                               1552m (77%)   2402m (120%)
  memory                                            2185Mi (70%)  3854Mi (123%)
Name:               XXX-2-wkep
  cpu                                               1102m (55%)   1452m (72%)
  memory                                            1601Mi (51%)  2148Mi (69%)
Name:               XXX-2-wkwz
  cpu                                               852m (42%)    1352m (67%)
  memory                                            1125Mi (36%)  3624Mi (116%)

рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдирд╣реАрдВ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕реЗ рдЙрдкрдХрд░рдг рд╕рдВрд╕рд╛рдзрди рднреА рд╣реИрдВред

рдирдорд╕реНрдХрд╛рд░!

рдореИрдВрдиреЗ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рдФрд░ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХреАред

https://github.com/Sensedia/open-tools/blob/master/scripts/listK8sHardwareResources.sh

рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╣рд╛рдВ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рд╕рдВрдХрд▓рди рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЕрдзрд┐рдХ рд╕рд░рд▓рддрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг kubectl рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реАрдкреАрдпреВ/рд░реИрдо рд╕реАрдорд╛/рдЖрд░рдХреНрд╖рдг рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдкреЙрдб CPU/RAM рдЦрдкрдд (рдЬреИрд╕реЗ kubectl top pods ) рдХреА рднреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди CPU рджреНрд╡рд╛рд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдСрд░реНрдбрд░ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЛ рднреА рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗред

https://github.com/laurybueno/kubectl-hoggers

рд╡рд╛рд╣, рдПрдХ рдкреВрд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдордЧреНрд░ рд╕реАрдкреАрдпреВ рдЙрдкрдпреЛрдЧ рдХреА рдареАрдХ рд╕реЗ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЯреАрдо рд╕реЗ рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рдзрд╛рдЧрд╛ рдФрд░ рдЕрднреА рднреА рдХреЛрдИ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ?

рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдорд┐рдиреАрдХреНрдпреВрдм рдкрд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдореАрдЯреНрд░рд┐рдХ рд╕рд░реНрд╡рд░ рдРрдб-рдСрди рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
minikube addons enable metrics-server
рдФрд░ рдлрд┐рд░ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ
kubectl top nodes

рдпрджрд┐ рдЖрдк рдХреНрд░реВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

kubectl krew install resource-capacity
kubectl resource-capacity
NODE                                          CPU REQUESTS   CPU LIMITS     MEMORY REQUESTS   MEMORY LIMITS
*                                             16960m (35%)   18600m (39%)   26366Mi (14%)     3100Mi (1%)
ip-10-0-138-176.eu-north-1.compute.internal   2460m (31%)    4200m (53%)    567Mi (1%)        784Mi (2%)
ip-10-0-155-49.eu-north-1.compute.internal    2160m (27%)    2200m (27%)    4303Mi (14%)      414Mi (1%)
ip-10-0-162-84.eu-north-1.compute.internal    3860m (48%)    3900m (49%)    8399Mi (27%)      414Mi (1%)
ip-10-0-200-101.eu-north-1.compute.internal   2160m (27%)    2200m (27%)    4303Mi (14%)      414Mi (1%)
ip-10-0-231-146.eu-north-1.compute.internal   2160m (27%)    2200m (27%)    4303Mi (14%)      414Mi (1%)
ip-10-0-251-167.eu-north-1.compute.internal   4160m (52%)    3900m (49%)    4491Mi (14%)      660Mi (2%)
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

theothermike picture theothermike  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

montanaflynn picture montanaflynn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

errordeveloper picture errordeveloper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

arun-gupta picture arun-gupta  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ddysher picture ddysher  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ