
nodroÅ”ina terminÄļa lietotÄja saskarni mijiedarbÄ«bai ar Kubernetes klasteriem. Å Ä« atvÄrtÄ pirmkoda projekta mÄrÄ·is ir atvieglot lietojumprogrammu navigÄciju, pÄrraudzÄ«bu un pÄrvaldÄ«bu K8s. K9s pastÄvÄ«gi uzrauga izmaiÅas Kubernetes un piedÄvÄ Ätras komandas darbam ar uzraudzÄ«tajiem resursiem.
Projekts ir rakstÄ«ts Go un pastÄv jau vairÄk nekÄ pusotru gadu: pirmÄ apÅemÅ”anÄs tika veikta 1. gada 2019. februÄrÄ«. RakstīŔanas laikÄ tajÄ ir vairÄk nekÄ 9000 zvaigžÅu un aptuveni 80 lÄ«dzstrÄdnieku. PaskatÄ«simies, ko k9s spÄj?
UzstÄdīŔana un palaiÅ”ana
Å Ä« ir klienta lietojumprogramma (saistÄ«bÄ ar Kubernetes klasteru), kuru visvieglÄk palaist kÄ Docker attÄlu:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9sDažiem Linux izplatÄ«jumiem un citÄm operÄtÄjsistÄmÄm ir arÄ« gatavas instalÄÅ”anai . Parasti Linux sistÄmÄm varat instalÄt binÄro failu:
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/binPaÅ”am K8s klasterim nav Ä«paÅ”u prasÄ«bu. Spriežot pÄc atsauksmÄm, lietojumprogramma darbojas arÄ« ar vecÄkÄm Kubernetes versijÄm, piemÄram, 1.12.
Lietojumprogramma tiek palaista, izmantojot standarta konfigurÄciju .kube/config - lÄ«dzÄ«gi kÄ tas notiek kubectl.
NavigÄcija
PÄc noklusÄjuma tiek atvÄrts logs ar kontekstam norÄdÄ«to noklusÄjuma nosaukumvietu. Tas ir, ja jÅ«s rakstÄ«jÄt kubectl config set-context --current --namespace=test, tad tiks atvÄrta nosaukumvieta test. (Lai mainÄ«tu kontekstu/nosaukumvietas, skatiet tÄlÄk.)

Iet uz komandu režīms tiek darÄ«ts, nospiežot ":". PÄc tam jÅ«s varat kontrolÄt k9s darbÄ«bu, izmantojot komandas - piemÄram, lai skatÄ«tu StatefulSets sarakstu (paÅ”reizÄjÄ nosaukumvietÄ), varat ievadÄ«t :sts.
![]()
Dažiem citiem Kubernetes resursiem:
-
:nsā nosaukumu telpas; -
:deployā izvietoÅ”ana; -
:ingā iekļūst; -
:svcā Pakalpojumi.
Lai parÄdÄ«tu pilnu apskatei pieejamo resursu tipu sarakstu, ir komanda :aliases.
Ir arÄ« Ärti skatÄ«t ar karsto taustiÅu kombinÄcijÄm pieejamo komandu sarakstu paÅ”reizÄjÄ logÄ: lai to izdarÄ«tu, vienkÄrÅ”i noklikŔķiniet uz "?".

ArÄ« k9s ir meklÄÅ”anas režīms, lai pÄrietu uz kuru pietiek ievadÄ«t "/". Ar to tiek veikta paÅ”reizÄjÄ "loga" satura meklÄÅ”ana. PieÅemsim, ja esat ievadÄ«jis iepriekÅ” :ns, jums ir atvÄrts nosaukumvietu saraksts. Ja to ir par daudz, tad, lai ilgi neritinÄtu uz leju, pietiek ievadÄ«t logÄ ar nosaukumvietÄm /mynamespace.
Lai meklÄtu pÄc etiÄ·etÄm, varat atlasÄ«t visus aplikumus vajadzÄ«gajÄ nosaukumvietÄ un pÄc tam ievadÄ«t, piemÄram, / -l app=whoami. MÄs saÅemsim sarakstu ar pÄkstÄ«m ar Å”o etiÄ·eti:
![]()
MeklÄÅ”ana darbojas visu veidu logos, tostarp žurnÄlos, YAML manifestu skatīŔanÄ un describe resursiem ā skatiet tÄlÄk, lai iegÅ«tu sÄ«kÄku informÄciju par Ŕīm funkcijÄm.
KÄ izskatÄs kopÄjÄ navigÄcijas plÅ«sma?
Ar komandu :ctx varat izvÄlÄties kontekstu:

Lai izvÄlÄtos nosaukumvietu, ir jau minÄtÄ komanda :ns, un pÄc tam varat izmantot vajadzÄ«gÄs vietas meklÄÅ”anu: /test.
Ja tagad atlasÄ«sim mÅ«s interesÄjoÅ”o resursu (piemÄram, to paÅ”u StatefulSet), par to parÄdÄ«sies atbilstoÅ”Ä informÄcija: cik podi darbojas ar Ä«su informÄciju par tiem.
![]()
InteresÄt var tikai pÄkstis - tad pietiek ar iebraukÅ”anu :pod. ConfigMaps gadÄ«jumÄ (:cm - Å”o resursu sarakstam), varat atlasÄ«t interesÄjoÅ”o objektu un noklikŔķinÄt uz "u", pÄc kura K9s pateiks, kas to konkrÄti izmanto (Å”o CM).
VÄl viena noderÄ«ga funkcija resursu skatīŔanai ir to "rentgens" (rentgena skats). Å o režīmu izsauc komanda :xray RESOURCE un ... ir vieglÄk parÄdÄ«t, kÄ tas darbojas, nekÄ izskaidrot. Å eit ir StatefulSets ilustrÄcija:

(Katru no Å”iem resursiem var rediÄ£Ät, mainÄ«t, izveidot describe.)
Un Ŕeit ir IzvietoŔana ar Ingress:

Darbs ar resursiem
JÅ«s varat iegÅ«t informÄciju par katru YAML vai tÄ resursu describe nospiežot atbilstoÅ”os Ä«sinÄjumtaustiÅus (attiecÄ«gi āyā un ādā). Protams, ir vÄl vairÄk pamata darbÄ«bu: to saraksts un Ä«sinÄjumtaustiÅi vienmÄr ir redzami, pateicoties Ärtai āgalveneiā saskarnÄ (paslÄpta, nospiežot Ctrl + e).

RediÄ£Äjot jebkuru resursu ("e" pÄc tÄ atlases), tiek atvÄrts vides mainÄ«gajos definÄtais teksta redaktors (export EDITOR=vim).
Un lÅ«k, kÄ izskatÄs detalizÄts resursa apraksts (describe):

Å o izvadi (vai YAML resursu manifesta skatīŔanas izvadi) var saglabÄt, izmantojot pazÄ«stamo Ä«sinÄjumtaustiÅu Ctrl + s. Kur tas tiks saglabÄts, bÅ«s zinÄms no K9s ziÅojuma:
Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully! Varat arÄ« atjaunot resursus no izveidotajiem dublÄjuma failiem pÄc sistÄmas etiÄ·eÅ”u un anotÄciju noÅemÅ”anas. Lai to izdarÄ«tu, kopÄ ar viÅiem jÄiet uz direktoriju (:dir /tmp), pÄc tam atlasiet vajadzÄ«go failu un lietojiet apply.
Starp citu, jebkurÄ laikÄ varat atgriezties pie iepriekÅ”ÄjÄs ReplicaSet, ja rodas problÄmas ar paÅ”reizÄjo. Lai to izdarÄ«tu, atlasiet vajadzÄ«go RS (:rs viÅu sarakstam):

... un atcelÅ”anu ar Ctrl + l. Mums vajadzÄtu saÅemt paziÅojumu, ka viss noritÄja labi:
k9s/whoami-5cfbdbb469 successfully rolled backUn, lai mÄrogotu kopijas, vienkÄrÅ”i noklikŔķiniet uz "s" (mÄrogs) un atlasiet vajadzÄ«go gadÄ«jumu skaitu:

Izmantojot apvalku, varat ievadÄ«t jebkuru no konteineriem: lai to izdarÄ«tu, dodieties uz vajadzÄ«go podiÅu, noklikŔķiniet uz "s" (apvalks) un atlasiet konteineru.
Citas funkcijas
Protams, tiek atbalstÄ«ta arÄ« žurnÄlu apskate (ālā atlasÄ«tajam resursam). Un, lai skatÄ«tu jaunus žurnÄlus, nav nepiecieÅ”ams pastÄvÄ«gi nospiest Enter: pietiek atzÄ«mÄt (āmā) un pÄc tam tikai izsekot jaunus ziÅojumus.

TajÄ paÅ”Ä logÄ varat izvÄlÄties arÄ« žurnÄlu izvades laika diapazonu:
- taustiÅÅ” "1" - uz 1 minÅ«ti;
- "2" - 5 minūtes;
- "3" - 15 minūtes;
- "4" - 30 minūtes;
- "5" - 1 stunda;
- "0" - visam podiÅa kalpoÅ”anas laikam.
ÄŖpaÅ”s darbÄ«bas režīms Impulss (komanda :pulse) parÄda vispÄrÄ«gu informÄciju par Kubernetes klasteru:

TajÄ var redzÄt resursu skaitu un to statusu (zaÄ¼Ä krÄsÄ ir tie, kuriem ir statuss Running).
VÄl viena lieliska K9s funkcija tiek saukta Popeye. Tas pÄrbauda visus resursus, lai noteiktu pareizÄ«bas kritÄrijus, un parÄda iegÅ«to "vÄrtÄjumu" ar paskaidrojumiem. PiemÄram, varat redzÄt, ka nav pietiekami daudz paraugu vai ierobežojumu, un daži konteineri var darboties kÄ root ...

Helm ir pamata atbalsts. PiemÄram, Å”Ädi varat skatÄ«t klasterÄ« izvietotos laidienus:
:helm all # Š²ŃŠµ
:helm $namespace # в ŠŗŠ¾Š½ŠŗŃеŃном ŠæŃоŃŃŃŠ°Š½ŃŃŠ²Šµ имен
etalons
Pat iebÅ«vÄts K9s ir vienkÄrÅ”s HTTP servera slodzes Ä£enerators, alternatÄ«va labÄk zinÄmajam ab (ApacheBench).
Lai to iespÄjotu, podÄ ir jÄiespÄjo portu pÄrsÅ«tīŔana. Lai to izdarÄ«tu, atlasiet podziÅu un nospiediet taustiÅu kombinÄciju Shift + f, dodieties uz porta pÄrsÅ«tīŔanas apakÅ”izvÄlni, izmantojot aizstÄjvÄrdu "pf".

PÄc porta atlasīŔanas un Ctrl + b nospieÅ”anas sÄksies pats etalons. ViÅa darba rezultÄti tiek glabÄti /tmp un ir pieejami vÄlÄkai apskatei K9s.


Lai mainÄ«tu etalona konfigurÄciju, ir jÄizveido fails $HOME/.k9s/bench-<my_context>.yml (noteikts katram klasterim).
NB: Ir svarÄ«gi, lai paplaÅ”inÄjums visiem YAML failiem direktorijÄ .k9s tas bija tieÅ”i .yml (.yaml nedarbojas pareizi).
KonfigurÄcijas piemÄrs:
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
interfeiss
Resursu sarakstu kolonnu izskats tiek mainÄ«ts, izveidojot failu $HOME/.k9s/views.yml. TÄs satura piemÄrs:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Tiesa, etiÄ·etÄm nepietiek kolonnas, kurÄm ir .
KÄrtoÅ”ana pÄc kolonnÄm tiek veikta, izmantojot Ä«sinÄjumtaustiÅus:
- Shift + n - pÄc nosaukuma;
- Shift + o - pa mezgliem;
- Shift + i - pÄc IP;
- Shift + a - pÄc konteinera kalpoÅ”anas laika;
- Shift + t - pÄc restartÄÅ”anas reižu skaita;
- Shift + r - pÄc gatavÄ«bas statusa;
- Shift + c - pÄc CPU patÄriÅa;
- Shift + m - pÄc atmiÅas patÄriÅa.
Ja kÄdam nepatÄ«k noklusÄjuma krÄsu shÄma, K9s pat atbalsta . Ir pieejami gatavi piemÄri (7 gab.). . Å eit ir vienas no Ŕīm ÄdÄm piemÄrs (jÅ«ras flotÄ):

SpraudÅi
Visbeidzot, ļauj paplaÅ”inÄt K9 iespÄjas. Es pats savÄ darbÄ esmu izmantojis tikai vienu no tiem - kubectl get all -n $namespace.
Tas izskatÄs Å”Ädi. Izveidojiet failu $HOME/.k9s/plugin.yml ar Å”Ädu saturu:
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"Tagad varat doties uz nosaukumvietu un nospiest "g", lai izpildītu ar atbilstoŔo komandu:

Starp spraudÅiem ir, piemÄram, integrÄcijas ar kubectl-jq un utilÄ«ta žurnÄlu apskatei .
SecinÄjums
Manai gaumei K9s izrÄdÄ«jÄs ļoti Ärts darbam: var Ätri pierast meklÄt visu nepiecieÅ”amo, neizmantojot. kubectl. Mani iepriecinÄja žurnÄlu skats un to saglabÄÅ”ana, Ätra resursu rediÄ£ÄÅ”ana, darba Ätrums kopumÄ *, Popeye režīms izrÄdÄ«jÄs noderÄ«gs. ÄŖpaÅ”a pieminÄÅ”ana ir iespÄja izveidot spraudÅus un modificÄt lietojumprogrammu atbilstoÅ”i jÅ«su vajadzÄ«bÄm.
* Lai gan ar lielu baļķu apjomu pamanÄ«ju arÄ« K9s lÄno darbÄ«bu. Å Ädos brīžos utilÄ«ta "apÄda" 2 kodolus no Intel Xeon E312xx un varÄja pat sasalt.
Kas Å”obrÄ«d trÅ«kst? Ätra atgrieÅ”ana uz iepriekÅ”Äjo versiju (mÄs nerunÄjam par RS), nepÄrejot uz direktoriju. TurklÄt atveseļoÅ”anÄs notiek tikai tikai resurss: ja izdzÄÅ”at anotÄciju vai etiÄ·eti, jums bÅ«s jÄizdzÄÅ” un jÄatjauno viss resurss (Å”eit jums jÄiet uz direktoriju). VÄl viens sÄ«kums - nepietiek datuma Å”Ädiem saglabÄtiem "dublÄjumiem".
PS
Lasi arÄ« mÅ«su emuÄrÄ:
- Ā«";
- Ā«";
- Ā«'.
Avots: www.habr.com
