ProHoster > Blog > uprava > Pregled k9s - naprednog terminalskog sučelja za Kubernetes
Pregled k9s - naprednog terminalskog sučelja za Kubernetes
K9 pruža terminalsko korisničko sučelje za interakciju s Kubernetes klasterima. Cilj ovog Open Source projekta je olakšati navigaciju, nadzor i upravljanje aplikacijama u K8s. K9s neprestano prati promjene u Kubernetesu i nudi brze naredbe za rad s nadziranim resursima.
Projekt je napisan u Go-u i postoji više od godinu i pol dana: prvi commit napravljen je 1. veljače 2019. U vrijeme pisanja, na njemu je bilo 9000+ zvjezdica GitHub i oko 80 suradnika. Da vidimo što k9s može?
Instalacija i pokretanje
Ovo je klijentska (u odnosu na Kubernetes klaster) aplikacija koju je najlakše pokrenuti kao Docker sliku:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s
Za neke Linux distribucije i druge operativne sustave postoje i spremni za instalaciju paketi. Općenito, za Linux sustave možete instalirati binarnu datoteku:
Ne postoje posebni zahtjevi za sam klaster K8s. Sudeći po recenzijama, aplikacija radi i sa starijim verzijama Kubernetesa poput 1.12.
Aplikacija se pokreće pomoću standardne konfiguracije .kube/config - slično kako to radi kubectl.
Navigacija
Prema zadanim postavkama otvara se prozor sa zadanim prostorom imena navedenim za kontekst. Odnosno, ako ste napisali kubectl config set-context --current --namespace=test, otvorit će se imenski prostor test. (Pogledajte dolje za promjenu konteksta/prostora imena.)
Ići zapovjedni način rada vrši se pritiskom na ":". Nakon toga možete kontrolirati rad k9s pomoću naredbi - na primjer, za pregled popisa StatefulSets (u trenutnom imenskom prostoru), možete unijeti :sts.
Za neke druge Kubernetes resurse:
:ns — prostori imena;
:deploy — raspoređivanja;
:ing — Ulazi;
:svc — Usluge.
Za prikaz cjelovitog popisa vrsta resursa dostupnih za pregled, postoji naredba :aliases.
Također je prikladno pregledati popis naredbi dostupnih kombinacijama vrućih tipki unutar trenutnog prozora: da biste to učinili, samo kliknite na "?".
Također u k9s postoji način pretraživanja, za odlazak na koji je dovoljno unijeti "/". Njime se vrši pretraga sadržaja trenutnog "prozora". Recimo ako ste prethodno unijeli :ns, imate otvoren popis imenskih prostora. Ako ih ima previše, kako se ne biste dugo pomicali prema dolje, dovoljno je unijeti u prozor s prostorima imena /mynamespace.
Za pretraživanje po oznakama možete odabrati sve mahune u željenom prostoru naziva, a zatim unijeti, na primjer, / -l app=whoami. Dobit ćemo popis mahuna s ovom oznakom:
Pretraživanje radi u svim vrstama prozora, uključujući zapisnike, pregled YAML manifesta i describe za resurse - pogledajte dolje za više pojedinosti o ovim značajkama.
Kako izgleda cjelokupni tijek navigacije?
Uz zapovijed :ctx možete odabrati kontekst:
Za odabir imenskog prostora postoji već spomenuta naredba :ns, a zatim možete koristiti pretragu za željeni prostor: /test.
Ako sada odaberemo resurs koji nas zanima (na primjer, isti StatefulSet), za njega će se pojaviti odgovarajuće informacije: koliko podova radi s kratkim informacijama o njima.
Samo mahune mogu biti zanimljive - tada je dovoljno unijeti :pod. U slučaju ConfigMaps (:cm - za popis ovih resursa), možete odabrati predmet interesa i kliknuti na "u", nakon čega će vam K9s reći tko ga konkretno koristi (ovaj CM).
Još jedna zgodna značajka za pregled resursa je njihova "rendgenski snimak" (rendgenski prikaz). Ovaj mod se poziva naredbom :xray RESOURCE i ... lakše je pokazati kako radi nego objasniti. Evo ilustracije za StatefulSets:
(Svaki od ovih izvora može se uređivati, mijenjati, napraviti describe.)
A ovdje je implementacija s Ingressom:
Rad s resursima
Informacije o svakom resursu možete dobiti u YAML-u ili njegovom describe pritiskom na odgovarajuće tipkovničke prečace (“y” odnosno “d”). Naravno, ima još osnovnih operacija: njihov popis i prečaci na tipkovnici uvijek su vidljivi zahvaljujući prikladnom "zaglavlju" u sučelju (skriveno pritiskom na Ctrl + e).
Prilikom uređivanja bilo kojeg resursa ("e" nakon njegovog odabira), otvara se uređivač teksta definiran u varijablama okruženja (export EDITOR=vim).
A evo kako izgleda detaljan opis resursa (describe):
Ovaj izlaz (ili izlaz pregledavanja manifesta YAML resursa) može se spremiti pomoću poznate tipkovničke prečice Ctrl + s. Gdje će biti pohranjen saznat će se iz poruke K9s:
Također možete vratiti resurse iz kreiranih datoteka sigurnosne kopije, nakon uklanjanja sistemskih oznaka i bilješki. Da biste to učinili, morate otići u imenik s njima (:dir /tmp), zatim odaberite željenu datoteku i primijenite apply.
Usput, u bilo kojem trenutku možete se vratiti na prethodni ReplicaSet ako postoje problemi s trenutnim. Da biste to učinili, odaberite željeni RS (:rs za njihov popis):
... i vratite se s Ctrl + l. Trebali bismo dobiti obavijest da je sve prošlo u redu:
k9s/whoami-5cfbdbb469 successfully rolled back
A za skaliranje replika, samo kliknite na "s" (skala) i odaberite željeni broj instanci:
Možete ući u bilo koji spremnik pomoću ljuske: da biste to učinili, idite na željeni modul, kliknite na "s" (ljuska) i odaberite spremnik.
Ostale značajke
Naravno, podržan je i pregled zapisa ("l" za odabrani resurs). A da biste gledali nove zapise, nema potrebe stalno pritiskati Enter: dovoljno je označiti (“m”), a zatim samo pratiti nove poruke.
Također u istom prozoru možete odabrati vremenski raspon za ispis zapisa:
tipka "1" - za 1 minutu;
"2" - 5 minuta;
"3" - 15 minuta;
"4" - 30 minuta;
"5" - 1 sat;
"0" - za cijeli životni vijek mahune.
Poseban način rada Pulse (naredba :pulse) prikazuje opće informacije o Kubernetes klasteru:
U njemu možete vidjeti broj resursa i njihov status (zeleno označava one koji imaju status Running).
Još jedna cool značajka K9s je tzv Popeye. Provjerava sve resurse za određene kriterije ispravnosti i prikazuje dobivenu "ocjenu" s objašnjenjima. Na primjer, možete vidjeti da nema dovoljno uzoraka ili ograničenja, a neki se spremnik može pokrenuti kao root ...
Postoji osnovna Helm podrška. Na primjer, ovako možete vidjeti izdanja implementirana u klasteru:
:helm all # все
:helm $namespace # в конкретном пространстве имен
mjerilo
Čak je ugrađen u K9s ej je jednostavan generator opterećenja HTTP poslužitelja, alternativa poznatijem ab (ApacheBench).
Da biste ga omogućili, morate omogućiti port-forward u modulu. Da biste to učinili, odaberite pod i pritisnite Shift + f, idite na port-forward podizbornik koristeći "pf" alias.
Nakon što odaberete port i pritisnete Ctrl + b, pokrenut će se sam benchmark. Rezultati njegova rada pohranjeni su u /tmp i dostupni su za kasnije gledanje u K9s.
Da biste promijenili konfiguraciju referentne vrijednosti, morate stvoriti datoteku $HOME/.k9s/bench-<my_context>.yml (određuje se za svaki klaster).
NAPOMENA: Važno je da ekstenzija svih YAML datoteka u direktoriju .k9s bilo je točno .yml (.yaml ne radi ispravno).
Primjer konfiguracije:
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
sučelje
Izgled stupaca za popise resursa mijenja se stvaranjem datoteke $HOME/.k9s/views.yml. Primjer njegovog sadržaja:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Istina, nema dovoljno stupaca za oznake, za koje postoji pitanje u projektu.
Razvrstavanje po stupcima vrši se tipkovničkim prečacima:
Shift + n - po imenu;
Shift + o - po čvorovima;
Shift + i - prema IP-u;
Shift + a - prema vijeku trajanja spremnika;
Shift + t - prema broju ponovnih pokretanja;
Shift + r - prema statusu spremnosti;
Shift + c - prema potrošnji procesora;
Shift + m - prema potrošnji memorije.
Ako se nekome ne sviđa zadana shema boja, K9s čak podržava kože. Dostupni su gotovi primjerci (7 komada). здесь. Evo primjera jedne od ovih maski (u mornarici):
Плагины
Konačno, dodaci omogućuju vam da proširite mogućnosti K9s. I sam sam koristio samo jedan od njih u svom radu - kubectl get all -n $namespace.
Ovako izgleda. Stvorite datoteku $HOME/.k9s/plugin.yml sa ovakvim sadržajem:
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"
Sada možete otići u imenski prostor i pritisnuti "g" za izvršenje odgovarajuće naredbe:
Među dodacima tu su, na primjer, integracije s kubectl-jq i uslužni program za pregled zapisa krma.
Zaključak
Za moj ukus, K9s se pokazao vrlo prikladnim za rad: brzo se možete naviknuti tražiti sve što vam treba bez korištenja. kubectl. Bio sam zadovoljan pregledom zapisa i njihovim spremanjem, brzim uređivanjem resursa, brzinom rada općenito *, način rada Popeye pokazao se korisnim. Posebno treba spomenuti mogućnost izrade dodataka i modificiranja aplikacije kako bi odgovarala vašim potrebama.
* Iako, s velikim volumenom zapisa, primijetio sam i spor rad K9s. U takvim je trenucima uslužni program "pojeo" 2 jezgre iz Intel Xeon E312xx i čak se mogao zamrznuti.
Što trenutno nedostaje? Brzo vraćanje na prethodnu verziju (ne govorimo o RS-u) bez odlaska u imenik. Osim toga, oporavak se događa samo za samo resurs: ako izbrišete napomenu ili oznaku, morat ćete izbrisati i vratiti cijeli resurs (ovo je mjesto gdje morate ići u imenik). Još jedna sitnica - nema dovoljno datuma za tako spremljene "backupe".