ProHoster > Blog > Bestjoer > Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes
Oersjoch fan k9s - in avansearre terminalynterface foar Kubernetes
K9s biedt in terminal brûkersynterface foar ynteraksje mei Kubernetes-klusters. It doel fan dit Open Source-projekt is om it maklik te meitsjen om applikaasjes yn K8s te navigearjen, te kontrolearjen en te behearjen. K9s kontrolearret konstant feroarings yn Kubernetes en biedt rappe kommando's om te wurkjen mei kontroleare boarnen.
It projekt is skreaun yn Go en bestiet al mear as oardel jier: de earste commit waard makke op 1 febrewaris 2019. Op it stuit fan dit skriuwen binne d'r 9000+ stjerren op GitHub en sa'n 80 meiwurkers. Litte wy sjen wat k9s kinne dwaan?
Ynstallaasje en lansearring
Dit is in client (yn relaasje mei it Kubernetes-kluster) applikaasje dy't it maklikst is om te rinnen as in Docker-ôfbylding:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s
Foar guon Linux-distribúsjes en oare bestjoeringssystemen binne d'r ek klear te ynstallearjen pakjes. Yn 't algemien kinne jo foar Linux-systemen in binêre triem ynstallearje:
D'r binne gjin spesifike easken foar it K8s-kluster sels. Beoardielje troch de resinsjes, wurket de applikaasje ek mei âldere ferzjes fan Kubernetes lykas 1.12.
De applikaasje wurdt lansearre mei de standert konfiguraasje .kube/config - fergelykber mei hoe't it docht kubectl.
Navigaasje
Standert iepenet in finster mei de standert nammeromte oantsjutte foar de kontekst. Dat is, as jo skreaun hawwe kubectl config set-context --current --namespace=test, dan sil de nammeromte iepenje test. (Sjoch hjirûnder foar feroarjen fan konteksten/nammeromten.)
Gean nei kommando modus wurdt dien troch te drukken op ":". Dêrnei kinne jo de wurking fan k9s kontrolearje mei kommando's - bygelyks om de list fan StatefulSets te besjen (yn 'e hjoeddeistige nammeromte), kinne jo ynfiere :sts.
Foar guon oare Kubernetes-boarnen:
:ns - nammeromten;
:deploy - ynset;
:ing - Ingressen;
:svc - Tsjinsten.
Om in folsleine list fan boarnetypen te sjen dy't beskikber binne foar besjen, is d'r in kommando :aliases.
It is ek handich om de list mei kommando's te besjen dy't beskikber binne troch fluchtoetskombinaasjes yn it hjoeddeistige finster: om dit te dwaan, klikje gewoan op "?".
Ek yn k9s is der sykmodus, om te gean wêr't it genôch is om "/" yn te fieren. Dêrmei wurdt in sykopdracht útfierd op de ynhâld fan it aktuele "finster". Litte wy sizze as jo earder ynfierd hawwe :ns, jo hawwe in list mei nammeromten iepen. As d'r tefolle binne, dan is it genôch om yn it finster mei nammeromten te gean, om net lang nei ûnderen te rôljen /mynamespace.
Om op labels te sykjen, kinne jo alle pods yn 'e winske nammeromte selektearje, en dan ynfiere, bygelyks, / -l app=whoami. Wy krije in list mei pods mei dit label:
It sykjen wurket yn alle soarten finsters, ynklusyf logs, besjen fan YAML-manifesten, en describe foar boarnen - sjoch hjirûnder foar mear details oer dizze funksjes.
Hoe sjocht de algemiene navigaasjestream der út?
Mei it kommando :ctx jo kinne in kontekst kieze:
Om in nammeromte te selektearjen, is d'r it al neamde kommando :ns, en dan kinne jo it sykjen brûke foar de winske romte: /test.
As wy no de boarne selektearje wêryn wy ynteressearre binne (bygelyks deselde StatefulSet), sil de oerienkommende ynformaasje dêrfoar ferskine: hoefolle pods rinne mei koarte ynformaasje oer har.
Allinnich pods kinne fan belang wêze - dan is it genôch om yn te gean :pod. Yn it gefal fan ConfigMaps (:cm - foar de list fan dizze boarnen), kinne jo it objekt fan belang selektearje en klikke op "u", wêrnei't K9s jo fertelle wa't it spesifyk brûkt (dizze CM).
In oare handige funksje foar it besjen fan boarnen is har "röntgen" (röntgenwerjefte). Dizze modus wurdt neamd troch it kommando :xray RESOURCE en ... it is makliker om te sjen hoe't it wurket dan út te lizzen. Hjir is in yllustraasje foar StatefulSets:
(Elk fan dizze boarnen kin wurde bewurke, feroare, makke describe.)
En hjir is ynset mei Ingress:
Wurkje mei middels
Jo kinne ynformaasje krije oer elke boarne yn YAML as syn describe troch te drukken op de oerienkommende toetseboerd fluchtoetsen ("y" en "d", respektivelik). Fansels binne d'r noch mear basis operaasjes: har list en fluchtoetsen binne altyd sichtber troch in handige "koptekst" yn 'e ynterface (ferburgen troch te drukken op Ctrl + e).
By it bewurkjen fan in boarne ("e" nei syn seleksje), wurdt de tekstbewurker definieare yn 'e omjouwingsfariabelen iepene (export EDITOR=vim).
En hjir is hoe't de detaillearre beskriuwing fan 'e boarne derút sjocht (describe):
Dizze útfier (as de útfier fan it besjen fan it YAML-manifest fan 'e boarne) kin bewarre wurde mei de bekende Ctrl + s toetseboerd fluchtoets. Wêr't it sil wurde bewarre sil bekend wêze fan it K9s-berjocht:
Jo kinne ek boarnen weromsette fan 'e oanmakke reservekopybestannen, nei it fuortsmiten fan systeemetiketten en annotaasjes. Om dit te dwaan, moatte jo nei de map mei har (:dir /tmp), selektearje dan it winske bestân en tapasse apply.
Trouwens, jo kinne op elk momint weromdraaie nei de foarige ReplicaSet as d'r problemen binne mei de hjoeddeiske. Om dit te dwaan, selektearje de winske RS (:rs foar harren list):
... en weromdraaie mei Ctrl + l. Wy moatte in notifikaasje krije dat alles goed gie:
k9s/whoami-5cfbdbb469 successfully rolled back
En om de replika's te skaaljen, klikje jo gewoan op de "s" (skaal) en selektearje it winske oantal eksimplaren:
Jo kinne elk fan 'e konteners ynfiere mei de shell: om dit te dwaan, gean nei de winske pod, klikje op "s" (shell) en selektearje de kontener.
Oare mooglikheden
Fansels wurdt it besjen fan logs ek stipe ("l" foar de selektearre boarne). En om nije logs te besjen, is it net nedich om konstant op Enter te drukken: it is genôch om te markearjen ("m") en dan allinich nije berjochten te folgjen.
Ek yn itselde finster kinne jo it tiidbereik selektearje foar de útfier fan logs:
kaai "1" - foar 1 minút;
"2" - 5 minuten;
"3" - 15 minuten;
"4" - 30 minuten;
"5" - 1 oere;
"0" - foar it hiele libben fan 'e pod.
Spesjale bestjoeringsmodus Pulse (kommando :pulse) toant algemiene ynformaasje oer it Kubernetes-kluster:
Dêryn kinne jo it oantal boarnen en har status sjen (grien toant dejingen dy't de status hawwe Running).
In oare koele skaaimerk fan K9s hjit Popeye. It kontrolearret alle boarnen foar bepaalde kritearia fan korrektheid en toant de resultearjende "beoardieling" mei taljochtingen. Jo kinne bygelyks sjen dat d'r net genôch samples of limiten binne, en guon kontener kin rinne as root ...
D'r is basisstipe foar Helm. Dit is bygelyks hoe't jo de releases sjen kinne ynset yn it kluster:
:helm all # все
:helm $namespace # в конкретном пространстве имен
benchmark
Sels boud yn K9s Hey is in ienfâldige HTTP tsjinner load generator, in alternatyf foar de better bekende ab (ApacheBench).
Om it yn te skeakeljen, moatte jo port-forward ynskeakelje yn 'e pod. Om dit te dwaan, selektearje de pod en druk op Shift + f, gean nei it poarte-foarút submenu mei de "pf" alias.
Nei it selektearjen fan de poarte en drukke op Ctrl + b, sil de benchmark sels begjinne. De resultaten fan syn wurk wurde opslein yn /tmp en binne beskikber foar letter besjen yn K9s.
Om de konfiguraasje fan 'e benchmark te feroarjen, moatte jo in bestân oanmeitsje $HOME/.k9s/bench-<my_context>.yml (bepaald foar elk kluster).
NB: It is wichtich dat de útwreiding fan alle YAML triemmen yn in map .k9s it wie krekt .yml (.yaml wurket net goed).
Foarbyld fan konfiguraasje:
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
ynterface
It uterlik fan kolommen foar listen mei boarnen wurdt wizige troch it meitsjen fan in bestân $HOME/.k9s/views.yml. In foarbyld fan har ynhâld:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Sortearje op kolommen wurdt útfierd troch fluchtoetsen:
Shift + n - by namme;
Shift + o - troch knopen;
Shift + i - troch IP;
Shift + a - troch it libben fan 'e kontener;
Shift + t - troch it oantal opnij starte;
Shift + r - troch status fan reewilligens;
Shift + c - troch CPU-konsumpsje;
Shift + m - troch ûnthâld konsumpsje.
As immen it standertkleurskema net leuk fynt, stipet K9s sels skins. Kant-makke foarbylden (7 stiks) binne beskikber hjir. Hjir is in foarbyld fan ien fan dizze skins (yn 'e marine):
Plugins
Einlings plugins tastean jo te wreidzjen de mooglikheden fan K9s. Ik sels haw mar ien fan har brûkt yn myn wurk - kubectl get all -n $namespace.
It liket derop. Meitsje in triem $HOME/.k9s/plugin.yml mei ynhâld lykas dizze:
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"
No kinne jo nei de nammeromte gean en op "g" drukke om út te fieren mei it korrespondearjende kommando:
Under de plugins binne d'r bygelyks yntegraasjes mei kubectl-jq en in hulpprogramma foar it besjen fan logs stern.
konklúzje
Foar myn smaak bliken K9's heul handich om mei te wurkjen: jo kinne fluch wenne oan it sykjen nei alles wat jo nedich hawwe sûnder it te brûken. kubectl. Ik wie bliid mei it sicht fan 'e logs en har besparring, rappe bewurking fan boarnen, de snelheid fan wurk yn' t algemien *, de Popeye-modus die bliken nuttich te wêzen. In spesjale fermelding is de mooglikheid om plugins te meitsjen en de applikaasje te feroarjen om oan jo behoeften te passen.
* Hoewol, mei in grut folume fan logs, haw ik ek de trage wurking fan K9s opmurken. Op sokke mominten "iten" it hulpprogramma 2 kearnen fan 'e Intel Xeon E312xx en koe sels befrieze.
Wat mist der op it stuit? Fluch weromdraaie nei de foarige ferzje (wy prate net oer RS) sûnder nei de map te gean. Dêrneist herstel komt allinnich foar totaal boarne: as jo in annotaasje of label wiskje, moatte jo de folsleine boarne wiskje en weromsette (dit is wêr't jo nei de map moatte gean). In oar lyts ding - d'r is net genôch datum foar sokke bewarre "backups".