ãã®ãããžã§ã¯ã㯠Go ã§æžãããŠããã1 幎å以äžåããååšããŠãããæåã®ã³ããã㯠2019 幎 9000 æ XNUMX æ¥ã«è¡ãããŸããã ãã®èšäºã®å·çæç¹ã§ã¯ãXNUMX å以äžã®ã¹ã¿ãŒãä»ããŠããŸãã
ã€ã³ã¹ããŒã«ãšèµ·å
ããã¯ãDocker ã€ã¡ãŒãžãšããŠå®è¡ããã®ãæãç°¡åãªã¯ã©ã€ã¢ã³ã (Kubernetes ã¯ã©ã¹ã¿ãŒã«é¢é£ãã) ã¢ããªã±ãŒã·ã§ã³ã§ãã
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s
äžéšã® 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/bin
K8s ã¯ã©ã¹ã¿ãŒèªäœã«ã¯ç¹å®ã®èŠä»¶ã¯ãããŸããã ã¬ãã¥ãŒããå€æãããšããã®ã¢ããªã±ãŒã·ã§ã³ã¯ 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 ã«ãçµã¿èŸŒãŸããŠããŸã
ãããæå¹ã«ããã«ã¯ããããã§ããŒã転éãæå¹ã«ããå¿ èŠããããŸãã ãããè¡ãã«ã¯ãããããéžæã㊠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 ã¯ãµããŒãããŸãã
ÐлагОМÑ
æåŸã«ã 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
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «
Kubernetes ã® GUI ã®æŠèŠ "; - «
Kubernetes Web View ã®çºè¡š (ããã³ Kubernetes ã®ä»ã® Web UI ã®æŠèŠ) "; - «
kubebox ããã³ Kubernetes çšã®ãã®ä»ã®ã·ã§ã« 'ã
åºæïŒ habr.com