Pārskats par k9s — uzlabots Kubernetes termināļa interfeiss
K9s 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 GitHub 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/k9s
Dažiem Linux izplatījumiem un citām operētājsistēmām ir arī gatavas instalēšanai iepakojumi. Parasti Linux sistēmām varat instalēt bināro failu:
Paš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:
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 back
Un, 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 hey 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
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 ādas. Ir pieejami gatavi piemēri (7 gab.). šeit. Šeit ir vienas no šīm ādām piemērs (jūras flotē):
Spraudņi
Visbeidzot, spraudņi ļ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 pakaļgals.
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".