рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдкреЙрдбреНрд╕ рд╢реЗрдбреНрдпреВрд▓ рдирд╣реАрдВ рдХрд░ рдкрд╛рдиреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░реЗрд╢рд╛рди рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЬрд╛рдирдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреЙрдб рдХрдм рд▓рдВрдмрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЗрд╕реЗ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред 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 рдХрдорд╛рдВрдб рдмрдирд╛рдПрдВред рдореИрдВ рдПрдХ "рдХреБрдмреЗрдХреНрдЯрд▓ рдЙрдкрдпреЛрдЧ" рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдХреБрд▓ рдХреНрд▓рд╕реНрдЯрд░ рд╕реАрдкреАрдпреВ рдФрд░ рдореЗрдо, рдкреНрд░рддрд┐ рдиреЛрдб рд╕реАрдкреАрдпреВ рдФрд░ рдореЗрдо рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдб/рдХрдВрдЯреЗрдирд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд▓реЗ рд╕рд╣рд┐рдд рд╕рднреА рдкреЙрдбреНрд╕ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЕрдиреБрд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЬрдм рдЖрдкрдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрд╕рд╛рдзрди рд╣реЛрдВ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдПрдХрд▓ рдиреЛрдб рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реЛ ('рдХреЛрдИ рдЫреЗрдж рдкрд░реНрдпрд╛рдкреНрдд рдмрдбрд╝рд╛ рдирд╣реАрдВ' рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рджрд╛рди)ред
(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
@ylogx https://github.com/kubernetes/kubernetes/issues/17512#issuecomment -326089708
рдЖрд╡рдВрдЯрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рддрд░реАрдХрд╛, рдХреНрд▓рд╕реНрдЯрд░-рд╡реНрдпрд╛рдкреА:
$ 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 :
kubectl top
рдзреНрд╡рдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: --heapster-namespace
ред<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/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
@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
, рдХреНрд▓рд╕реНрдЯрд░ рд╕рдВрд╕рд╛рдзрди рдЙрдкрдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?/ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛
рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рд╣реИрдХреНрд╕ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЙрдЪреНрдЪ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рднреА рдХреБрдЫ рдЪрд╛рд╣рд┐рдП .. рдкреНрд░рддрд┐ рдиреЛрдб рдкреВрд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рддрд░рд╣ рдХрд╛ рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП!
рдирдорд╕реНрддреЗ,
рдореИрдВ рдПрдХ рдкреЙрдб рдХреЗ рд▓рд┐рдП рд╕реАрдкреАрдпреВ рдФрд░ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЛ рд╣рд░ 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 рджреНрд╡рд╛рд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдСрд░реНрдбрд░ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЛ рднреА рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗред
рд╡рд╛рд╣, рдПрдХ рдкреВрд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдордЧреНрд░ рд╕реАрдкреАрдпреВ рдЙрдкрдпреЛрдЧ рдХреА рдареАрдХ рд╕реЗ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЯреАрдо рд╕реЗ рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рдзрд╛рдЧрд╛ рдФрд░ рдЕрднреА рднреА рдХреЛрдИ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ?
рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдорд┐рдиреАрдХреНрдпреВрдм рдкрд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдореАрдЯреНрд░рд┐рдХ рд╕рд░реНрд╡рд░ рдРрдб-рдСрди рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
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%)
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╡рд╣рд╛рдБ рд╣реИ: