
Kubernetes ã¯ã©ã¹ã¿ãŒãšå¯Ÿè©±ããããã®ã¿ãŒããã« ãŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãã ãã®ãªãŒãã³ãœãŒã¹ ãããžã§ã¯ãã®ç®æšã¯ãK8s ã§ã®ã¢ããªã±ãŒã·ã§ã³ã®ç§»åãç£èŠã管çã容æã«ããããšã§ãã K9s ã¯ãKubernetes ã®å€æŽãåžžã«ç£èŠããç£èŠå¯Ÿè±¡ã®ãªãœãŒã¹ãæäœããããã®è¿
éãªã³ãã³ããæäŸããŸãã
ãã®ãããžã§ã¯ã㯠Go ã§æžãããŠããã1 幎å以äžåããååšããŠãããæåã®ã³ããã㯠2019 幎 9000 æ XNUMX æ¥ã«è¡ãããŸããã ãã®èšäºã®å·çæç¹ã§ã¯ãXNUMX å以äžã®ã¹ã¿ãŒãä»ããŠããŸãã ãããŠçŽ80人ã®å¯çš¿è ã k9s ã§äœãã§ãããèŠãŠã¿ãŸããã?
ã€ã³ã¹ããŒã«ãšèµ·å
ããã¯ãDocker ã€ã¡ãŒãžãšããŠå®è¡ããã®ãæãç°¡åãªã¯ã©ã€ã¢ã³ã (Kubernetes ã¯ã©ã¹ã¿ãŒã«é¢é£ãã) ã¢ããªã±ãŒã·ã§ã³ã§ãã
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9säžéšã® Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³ããã®ä»ã®ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã«ã€ããŠã¯ãããã«ã€ã³ã¹ããŒã«ã§ãããã®ããããŸãã ã äžè¬ã«ãLinux ã·ã¹ãã ã®å Žåã¯ããã€ã㪠ãã¡ã€ã«ãã€ã³ã¹ããŒã«ã§ããŸãã
sudo wget -qO- https://github.com/derailed/k9s/releases/download/v0.22.0/k9s_Linux_x86_64.tar.gz | tar zxvf - -C /tmp/
sudo mv /tmp/k9s /usr/local/binK8s ã¯ã©ã¹ã¿ãŒèªäœã«ã¯ç¹å®ã®èŠä»¶ã¯ãããŸããã ã¬ãã¥ãŒãã倿ãããšããã®ã¢ããªã±ãŒã·ã§ã³ã¯ 1.12 ãªã©ã®å€ãããŒãžã§ã³ã® Kubernetes ã§ãââåäœããŸãã
ã¢ããªã±ãŒã·ã§ã³ã¯æšæºæ§æã䜿çšããŠèµ·åãããŸã .kube/config - ããæ¹ãšäŒŒãŠããŸã kubectl.
ããã²ãŒã·ã§ã³
ããã©ã«ãã§ã¯ãã³ã³ããã¹ãã«æå®ãããããã©ã«ãã®åå空éã§ãŠã£ã³ããŠãéããŸãã ã€ãŸããæ¬¡ã®ããã«æžããå Žå kubectl config set-context --current --namespace=testãããããšãåå空éãéããŸã test. (ã³ã³ããã¹ã/åå空éã®å€æŽã«ã€ããŠã¯ä»¥äžãåç
§ããŠãã ããã)

ã«è¡ã ã³ãã³ãã¢ãŒã ã:ããæŒããšå®è¡ãããŸãã ãã®åŸãã³ãã³ãã䜿çšã㊠k9s ã®åäœãå¶åŸ¡ã§ããŸããããšãã°ã(çŸåšã®åå空éå
ã®) StatefulSet ã®ãªã¹ãã衚瀺ããã«ã¯ã次ã®ããã«å
¥åããŸãã :sts.
![]()
ãã®ä»ã® Kubernetes ãªãœãŒã¹ã«ã€ããŠã¯ã次ã®ãšããã§ãã
-
:nsâ åå空é; -
:deployâ å°å ¥; -
:ingâ äŸµå ¥; -
:svcâ ãµãŒãã¹ã
衚瀺å¯èœãªãªãœãŒã¹ ã¿ã€ãã®å®å
šãªãªã¹ãã衚瀺ããã«ã¯ã次ã®ã³ãã³ãããããŸãã :aliases.
ãŸããçŸåšã®ãŠã£ã³ããŠå ã§ããã ããŒã®çµã¿åããã§äœ¿çšã§ããã³ãã³ãã®ãªã¹ãã衚瀺ãããšäŸ¿å©ã§ãããããè¡ãã«ã¯ãã?ããã¯ãªãã¯ããã ãã§ãã

k9sã«ããããŸã æ€çŽ¢ã¢ãŒã, ã/ããå
¥åããã ãã§ç§»åã§ããŸãã ããã䜿çšãããšãçŸåšã®ããŠã£ã³ããŠãã®å
容ã«å¯ŸããŠæ€çŽ¢ãå®è¡ãããŸãã 以åã«å
¥åãããšããŸããã :nsãåå空éã®ãªã¹ããéããŠããŸãã ããããå€ãããå Žåã¯ãé·æéäžã«ã¹ã¯ããŒã«ããªãããã«ãåå空éãå«ããŠã£ã³ããŠã«å
¥åããã ãã§ååã§ã /mynamespace.
ã©ãã«ã§æ€çŽ¢ããã«ã¯ãç®çã®åå空éå
ã®ãã¹ãŠã®ããããéžæããããšãã°æ¬¡ã®ããã«å
¥åããŸãã / -l app=whoamiã ãã®ã©ãã«ãä»ãããããã®ãªã¹ããååŸããŸãã
![]()
æ€çŽ¢ã¯ããã°ãYAML ãããã§ã¹ãã®è¡šç€ºã describe ãªãœãŒã¹ã«ã€ããŠã¯ããããã®æ©èœã®è©³çްã«ã€ããŠã¯ä»¥äžãåç
§ããŠãã ããã
å šäœçãªããã²ãŒã·ã§ã³ ãããŒã¯ã©ã®ãããªãã®ã§ãã?
ã³ãã³ãã§ :ctx ã³ã³ããã¹ããéžæã§ããŸãã

åå空éãéžæããã«ã¯ããã§ã«è¿°ã¹ãã³ãã³ãããããŸãã :nsãã¯ãªãã¯ãããšãç®çã®ã¹ããŒã¹ãæ€çŽ¢ã§ããŸãã /test.
ããã§ãé¢å¿ã®ãããªãœãŒã¹ (ããšãã°ãåã StatefulSet) ãéžæãããšãããã«å¯Ÿå¿ããæ å ± (å®è¡äžã®ãããã®æ°ãšãããã«é¢ããç°¡åãªæ å ±) ã衚瀺ãããŸãã
![]()
ãããã®ã¿ã察象ãšãªãå¯èœæ§ããããŸãããã®å Žåã¯ãå
¥åããã ãã§ååã§ã :podã ConfigMap ã®å Žå (:cm - ãããã®ãªãœãŒã¹ã®ãªã¹ãã«ã€ããŠã¯)ãèå³ã®ãããªããžã§ã¯ããéžæããŠãuããã¯ãªãã¯ãããšãK9 ãå
·äœçã«èª°ãããã䜿çšããŠããããéç¥ããŸã (ãã® CM)ã
ãªãœãŒã¹ã衚瀺ããããã®ãã XNUMX ã€ã®äŸ¿å©ãªæ©èœã¯ã ãx-rayãïŒXç·ãã¥ãŒïŒã ãã®ã¢ãŒãã¯ã³ãã³ãã«ãã£ãŠåŒã³åºãããŸãã :xray RESOURCE ãããŠ...ãããã©ã®ããã«æ©èœãããã説æãããããç€ºãæ¹ãç°¡åã§ãã StatefulSet ã®å³ã次ã«ç€ºããŸãã

(ãããã®ãªãœãŒã¹ã¯ããããç·šéã倿Žãäœæããããšãã§ããŸã describe.)
Ingress ã䜿çšãããããã€ã¡ã³ãã¯æ¬¡ã®ãšããã§ãã

ãªãœãŒã¹ã®æäœ
YAML ãŸãã¯ãã®ãªãœãŒã¹ã®åãªãœãŒã¹ã«é¢ããæ
å ±ãååŸã§ããŸãã describe 察å¿ããããŒããŒã ã·ã§ãŒãã«ãã (ãããããyããšãdã) ãæŒããŸãã ãã¡ãããããã«åºæ¬çãªæäœããããŸãããããã®ãªã¹ããšããŒããŒã ã·ã§ãŒãã«ããã¯ãã€ã³ã¿ãŒãã§ã€ã¹ã®äŸ¿å©ãªãããããŒãã®ãããã§åžžã«è¡šç€ºãããŸã (Ctrl + e ãæŒããšé衚瀺ã«ãªããŸã)ã

ãªãœãŒã¹ (éžæåŸã®ãeã) ãç·šéãããšãç°å¢å€æ°ã§å®çŸ©ãããããã¹ã ãšãã£ã¿ãŒãéããŸã (export EDITOR=vim).
ãªãœãŒã¹ã®è©³çްãªèª¬æã¯æ¬¡ã®ããã«ãªããŸã (describe):

ãã®åºå (ãŸãã¯ãªãœãŒã¹ã® YAML ãããã§ã¹ãã衚瀺ããåºå) ã¯ã䜿ãæ
£ãã Ctrl + s ããŒããŒã ã·ã§ãŒãã«ããã䜿çšããŠä¿åã§ããŸãã ä¿åãããå Žæã¯ãK9s ã¡ãã»ãŒãžããããããŸãã
Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully! ã·ã¹ãã ã©ãã«ãšæ³šéãåé€ããåŸãäœæãããããã¯ã¢ãã ãã¡ã€ã«ãããªãœãŒã¹ã埩å
ããããšãã§ããŸãã ãããè¡ãã«ã¯ãããããå«ãŸãããã£ã¬ã¯ããªã«ç§»åããå¿
èŠããããŸã (:dir /tmp)ãç®çã®ãã¡ã€ã«ãéžæããŠé©çšããŸã apply.
ã¡ãªã¿ã«ãçŸåšã® ReplicaSet ã«åé¡ãããå Žåã¯ããã€ã§ã以åã® ReplicaSet ã«ããŒã«ããã¯ã§ããŸãã ãããè¡ãã«ã¯ãç®çã® RS (:rs 圌ãã®ãªã¹ãã«ã€ããŠã¯):

...Ctrl + l ã§ããŒã«ããã¯ããŸãã ãã¹ãŠãããŸããã£ããšããéç¥ãåãåãã¯ãã§ãã
k9s/whoami-5cfbdbb469 successfully rolled backã¬ããªã«ãã¹ã±ãŒã«ããã«ã¯ããsãïŒã¹ã±ãŒã«ïŒãã¯ãªãã¯ããŠãå¿ èŠãªã€ã³ã¹ã¿ã³ã¹ã®æ°ãéžæããã ãã§ãã

ã·ã§ã«ã䜿çšããŠä»»æã®ã³ã³ããã«å
¥ãããšãã§ããŸãããããè¡ãã«ã¯ãç®çã®ãããã«ç§»åãããsã(ã·ã§ã«) ãã¯ãªãã¯ããŠã³ã³ãããéžæããŸãã
ãã®ä»ã®æ©èœ
ãã¡ããããã°ã®è¡šç€ºããµããŒããããŠããŸã (éžæãããªãœãŒã¹ã®å Žåã¯ãlã)ã ãŸããæ°ãããã°ãç£èŠããããã«ãEnter ããŒãåžžã«æŒãå¿ èŠã¯ãããŸããã(ãmã) ãããŒã¯ããŠãæ°ããã¡ãã»ãŒãžã®ã¿ã远跡ããã ãã§ååã§ãã

ãŸããåããŠã£ã³ããŠã§ããã°åºåã®æéç¯å²ãéžæã§ããŸãã
- ããŒã1ã - 1åé;
- ã2ã - 5åã
- ã3ã - 15åã
- ã4ã - 30åã
- ã5ã - 1æéã
- ã0ã - ãããã®åç¶æéå šäœã
ç¹æ®åäœã¢ãŒã ãã«ã¹ïŒæä»€ïŒ :pulse) ã¯ãKubernetes ã¯ã©ã¹ã¿ãŒã«é¢ããäžè¬æ
å ±ã瀺ããŸãã

ããã§ã¯ããªãœãŒã¹ã®æ°ãšãã®ã¹ããŒã¿ã¹ã確èªã§ããŸã (ç·è²ã¯ã¹ããŒã¿ã¹ã®ãããªãœãŒã¹ã瀺ããŸã) Running).
K9s ã®ãã XNUMX ã€ã®åªããæ©èœã¯æ¬¡ã®ãšããã§ãã ããã€ã ãã¹ãŠã®ãªãœãŒã¹ã®æ£ç¢ºæ§ã«é¢ããç¹å®ã®åºæºããã§ãã¯ãããã®çµæã®ãè©äŸ¡ãã説æãšãšãã«è¡šç€ºããŸãã ããšãã°ãååãªãµã³ãã«ãå¶éããªããäžéšã®ã³ã³ãã㯠root ãšããŠå®è¡ã§ããããšãããããŸãã

Helm ã«ã¯åºæ¬çãªãµããŒãããããŸãã ããšãã°ãã¯ã©ã¹ã¿ãŒã«ãããã€ãããŠãããªãªãŒã¹ã確èªããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
:helm all # вÑе
:helm $namespace # в кПМкÑеÑМПЌ пÑПÑÑÑаМÑÑве ОЌеМ
ãã³ãããŒã¯
K9 ã«ãçµã¿èŸŒãŸããŠããŸã ããã¯ã·ã³ãã«ãª HTTP ãµãŒã㌠ããŒã ãžã§ãã¬ãŒã¿ãŒã§ãããããç¥ãããŠãã ab (ApacheBench) ã®ä»£æ¿åã§ãã
ãããæå¹ã«ããã«ã¯ããããã§ããŒã転éãæå¹ã«ããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãããããéžæã㊠Shift + f ãæŒãããpfããšã€ãªã¢ã¹ã䜿çšããŠããŒããã©ã¯ãŒã ãµãã¡ãã¥ãŒã«ç§»åããŸãã

ããŒããéžæã㊠Ctrl + b ãæŒããšããã³ãããŒã¯èªäœãéå§ãããŸãã 圌ã®ä»äºã®çµæã¯æ¬¡ã®å Žæã«ä¿åãããŸãã /tmp åŸã§ K9 ã§è¡šç€ºã§ããããã«ãªããŸãã


ãã³ãããŒã¯ã®æ§æã倿Žããã«ã¯ããã¡ã€ã«ãäœæããå¿
èŠããããŸã $HOME/.k9s/bench-<my_context>.yml (ã¯ã©ã¹ã¿ãŒããšã«æ±ºå®ãããŸã)ã
泚æ: ãã£ã¬ã¯ããªå
ã®ãã¹ãŠã® YAML ãã¡ã€ã«ã®æ¡åŒµåã .k9s ãŸãã«ããã§ãã .yml (.yaml æ£ããåäœããŸããïŒã
èšå®äŸïŒ
benchmarks:
defaults:
# ÐПлОÑеÑÑвП пПÑПкПв
concurrency: 2
# ÐПлОÑеÑÑвП запÑПÑПв
requests: 1000
containers:
# ÐаÑÑÑПйкО ÐŽÐ»Ñ ÐºÐŸÐœÑейМеÑа Ñ Ð±ÐµÐœÑЌаÑкПЌ
# ÐПМÑÐµÐ¹ÐœÐµÑ ÐŸÐ¿ÑеЎелÑеÑÑÑ ÐºÐ°Ðº namespace/pod-name:container-name
default/nginx:nginx:
concurrency: 2
requests: 10000
http:
path: /
method: POST
body:
{"foo":"bar"}
header:
Accept:
- text/html
Content-Type:
- application/json
services:
# ÐПжМП пÑПвПЎОÑÑ Ð±ÐµÐœÑЌаÑк Ма ÑеÑвОÑаÑ
ÑОпа NodePort О LoadBalancer
# СОМÑакÑОÑ: namespace/service-name
default/nginx:
concurrency: 5
requests: 500
http:
method: GET
path: /auth
auth:
user: flant
password: s3cr3tp455w0rd
ã€ã³ã¿ãŒãã§ãŒã¹
ãªãœãŒã¹ã®ãªã¹ãã®åã®å€èгã¯ããã¡ã€ã«ãäœæããããšã§å€æŽãããŸãã $HOME/.k9s/views.ymlã ãã®å
容ã®äŸ:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
確ãã«ãã©ãã«çšã®ååãªåããããŸããã .
åã«ããäžŠã¹æ¿ãã¯ããŒããŒã ã·ã§ãŒãã«ããã«ãã£ãŠå®è¡ãããŸãã
- Shift + n - ååã§æå®ããŸãã
- Shift + o - ããŒãåäœã
- Shift + i - IP ã«ããã
- Shift + a - ã³ã³ããã®åç¶æéããšã«ã
- Shift + t - åèµ·åã®åæ°åã
- Shift + r - æºåç¶æ³ã«ããã
- Shift + c - CPU æ¶è²»éã«ããã
- Shift + m - ã¡ã¢ãªæ¶è²»éã«ããã
ããã©ã«ãã®é è²ãæ°ã«å ¥ããªãå Žåã§ããK9s ã¯ãµããŒãããŸãã ã æ¢è£œåïŒ7åïŒããçšæããŠãããŸã ã 以äžã¯ãããã®ã¹ãã³ã® XNUMX ã€ã®äŸã§ã ïŒæµ·è»ã§ïŒ:

ÐлагОМÑ
æåŸã«ã K9 ã®æ©èœãæ¡åŒµã§ããŸãã ç§èªèº«ãä»äºã§ãããã®ãã¡ã® XNUMX ã€ã ãã䜿çšããŸããã kubectl get all -n $namespace.
ãããªæãã§ãã ãã¡ã€ã«ãäœæãã $HOME/.k9s/plugin.yml 次ã®ãããªå
容ã§:
plugin:
get-all:
shortCut: g
confirm: false
description: get all
scopes:
- all
command: sh
background: false
args:
- -c
- "kubectl -n $NAMESPACE get all -o wide | less"ããã§ãåå空éã«ç§»åãããgããæŒããŠé©åãªã³ãã³ããå®è¡ã§ããŸãã

ãã©ã°ã€ã³ã®äžã«ã¯ãkubectl-jq ãšã®çµ±åããã°ã衚瀺ããããã®ãŠãŒãã£ãªãã£ãªã©ããããŸãã .
ãŸãšã
ç§ã®å¥œã¿ã§ã¯ãK9 ã¯éåžžã«äœ¿ããããããšãããããŸãããKXNUMX ã䜿çšããã«ãå¿
èŠãªãã®ãã¹ãŠãæ¢ãããšã«ããã«æ
£ããããšãã§ããŸãã kubectlã ãã°ã®è¡šç€ºãšãã®ä¿åããªãœãŒã¹ã®çŽ æ©ãç·šéãäžè¬çãªäœæ¥é床 * ã«æºè¶³ããŠããããã〠ã¢ãŒãã䟿å©ã§ããããšãããããŸããã ç¹çãã¹ãç¹ã¯ããã©ã°ã€ã³ãäœæããããŒãºã«åãããŠã¢ããªã±ãŒã·ã§ã³ã倿Žã§ããããšã§ãã
â»ãã ãããã°ã倧éã«ãªããšK9sã®åäœãé ãããšãæ°ã«ãªããŸããã ãã®ãããªç¬éã«ããŠãŒãã£ãªãã£ã¯ Intel Xeon E2xx ã® 312 ã³ã¢ããæ¶è²»ãããããªãŒãºããå¯èœæ§ããããŸããã
çŸæç¹ã§äœãè¶³ããªãã®ã§ããããïŒ ãã£ã¬ã¯ããªã«ç§»åããã«ã以åã®ããŒãžã§ã³ã«ãã°ããããŒã«ããã¯ã§ããŸã (RS ã«ã€ããŠã¯è©±ããŠããŸãã)ã ãŸããååŸ©ã¯æ¬¡ã®å Žåã«ã®ã¿çºçããŸãã ã®ã¿ ãªãœãŒã¹: 泚éãŸãã¯ã©ãã«ãåé€ããå Žåã¯ããªãœãŒã¹å šäœãåé€ããŠåŸ©å ããå¿ èŠããããŸã (ããã§ãã£ã¬ã¯ããªã«ç§»åããå¿ èŠããããŸã)ã ãã XNUMX ã€ã®äºçްãªããšã§ãããã®ãããªä¿åããããããã¯ã¢ãããã«ã¯ååãªæ¥ä»ããããŸããã
PS
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «";
- «";
- «'ã
åºæïŒ habr.com
