K9s tarjoaa päätelaitteen käyttöliittymän vuorovaikutukseen Kubernetes-klusterien kanssa. Tämän avoimen lähdekoodin projektin tavoitteena on helpottaa sovellusten navigointia, valvontaa ja hallintaa K8s:ssa. K9s seuraa jatkuvasti muutoksia Kubernetesissa ja tarjoaa nopeita komentoja valvottujen resurssien kanssa työskentelemiseen.
Projekti on kirjoitettu Go-kielellä ja se on ollut käynnissä yli puolitoista vuotta: ensimmäinen sitoumus tehtiin 1. Kirjoitushetkellä päällä on yli 2019 tähteä GitHub ja noin 80 kirjoittajaa. Katsotaan mitä k9s voi tehdä?
Asennus ja käynnistys
Tämä on asiakassovellus (Kubernetes-klusterin suhteen), joka on helpoin ajaa Docker-kuvana:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s
Joillekin Linux-jakeluille ja muille käyttöjärjestelmille on myös asennusvalmiita paketit. Yleensä Linux-järjestelmissä voit asentaa binaaritiedoston:
Itse K8s-klusterille ei ole erityisiä vaatimuksia. Arvostelujen perusteella sovellus toimii myös Kubernetesin vanhempien versioiden, kuten 1.12:n, kanssa.
Sovellus käynnistetään vakiokonfiguraatiolla .kube/config - samalla tavalla kuin se tekee kubectl.
Suunnistus
Oletusarvoisesti avautuu ikkuna, jossa on kontekstille määritetty oletusnimiavaruus. Siis jos kirjoitit kubectl config set-context --current --namespace=test, nimiavaruus avautuu test. (Katso alta kontekstien/nimiavaruuksien muuttaminen.)
Mene komentotila tehdään painamalla ":". Sen jälkeen voit ohjata k9s:n toimintaa komennoilla - esimerkiksi nähdäksesi StatefulSets-luettelon (nykyisessä nimiavaruudessa), voit kirjoittaa :sts.
Jotkin muut Kubernetes-resurssit:
:ns — nimiavaruudet;
:deploy — käyttöönotot;
:ing — Sisäänpääsy;
:svc – palvelut.
Täydellisen luettelon katseltavissa olevista resurssityypeistä saat näkyviin komennon :aliases.
On myös kätevää tarkastella luetteloa pikanäppäinyhdistelmillä käytettävissä olevista komennoista nykyisessä ikkunassa: tehdäksesi tämän, napsauta vain "?".
Myös k9s:ssä on hakutila, johon pääset syöttämään "/". Sen avulla suoritetaan haku nykyisen "ikkunan" sisällöstä. Oletetaan, jos olet aiemmin syöttänyt :ns, sinulla on luettelo nimiavaruuksista auki. Jos niitä on liikaa, riittää, että syötät ikkunaan nimiavaruuksilla, jotta et vierittäisi alas pitkään /mynamespace.
Voit etsiä nimiöillä valitsemalla kaikki podit halutusta nimiavaruudesta ja kirjoittamalla sitten esim. / -l app=whoami. Saamme luettelon paloista, joissa on tämä etiketti:
Haku toimii kaikenlaisissa ikkunoissa, mukaan lukien lokit, YAML-luetteloiden katselu ja describe resurssit - katso alta lisätietoja näistä ominaisuuksista.
Miltä navigoinnin kokonaiskulku näyttää?
Komennolla :ctx voit valita kontekstin:
Nimiavaruuden valitsemiseksi on jo mainittu komento :ns, ja sitten voit käyttää haluamasi tilan hakua: /test.
Jos nyt valitaan meitä kiinnostava resurssi (esimerkiksi sama StatefulSet), sille ilmestyy vastaavat tiedot: kuinka monta podia on käynnissä ja niistä löytyy lyhyttä tietoa.
Vain palot voivat kiinnostaa - silloin riittää sisäänpääsy :pod. ConfigMapsin tapauksessa (:cm - näiden resurssien luetteloa varten, voit valita kiinnostavan kohteen ja napsauttaa "u", jonka jälkeen K9s kertoo, kuka sitä erityisesti käyttää (tämä CM).
Toinen kätevä ominaisuus resurssien katseluun on niiden "röntgenkuva" (röntgennäkymä). Tätä tilaa kutsutaan komennolla :xray RESOURCE ja ... on helpompi näyttää kuinka se toimii kuin selittää. Tässä on esimerkki StatefulSetsistä:
(Jokaista näistä resursseista voidaan muokata, muuttaa, tehdä describe.)
Ja tässä on käyttöönotto Ingressin kanssa:
Työskentely resurssien kanssa
Voit saada tietoa jokaisesta YAML:n tai sen resurssista describe painamalla vastaavia pikanäppäimiä ("y" ja "d" vastaavasti). Tietysti on vielä enemmän perustoimintoja: niiden luettelo ja pikanäppäimet ovat aina näkyvissä käyttöliittymän kätevän "otsikon" ansiosta (piilotettu painamalla Ctrl + e).
Mitä tahansa resurssia (valinnan jälkeen "e") muokattaessa avautuu ympäristömuuttujissa määritetty tekstieditori (export EDITOR=vim).
Ja tältä näyttää resurssin yksityiskohtainen kuvaus (describe):
Tämä tulos (tai resurssin YAML-luettelon katselutulos) voidaan tallentaa tutulla Ctrl + s -pikanäppäimellä. Mihin se tallennetaan, selviää K9s-viestistä:
Voit myös palauttaa resurssit luoduista varmuuskopiotiedostoista, kun olet poistanut järjestelmätunnisteet ja huomautukset. Tätä varten sinun on mentävä heidän kanssaan hakemistoon (:dir /tmp), valitse sitten haluamasi tiedosto ja käytä apply.
Muuten, voit milloin tahansa palata edelliseen ReplicaSet-tilaan, jos nykyisessä ReplicaSetissä on ongelmia. Voit tehdä tämän valitsemalla haluamasi RS (:rs heidän listalleen):
... ja peruutus painamalla Ctrl + l. Meidän pitäisi saada ilmoitus, että kaikki meni hyvin:
k9s/whoami-5cfbdbb469 successfully rolled back
Ja skaalata kopioita napsauttamalla "s" (skaala) ja valitsemalla haluamasi määrä esiintymiä:
Voit syöttää minkä tahansa säiliön kuoren avulla: tehdäksesi tämän mene haluamaasi koteloon, napsauta "s" (kuori) ja valitse kontti.
Muita ominaisuuksia
Tietysti myös lokien katselu on tuettu ("l" valitulle resurssille). Ja uusien lokien katselemiseksi ei tarvitse jatkuvasti painaa Enteriä: riittää, että merkitään ("m") ja sitten vain seurataan uusia viestejä.
Samassa ikkunassa voit myös valita aikavälin lokien tulostamiselle:
näppäin "1" - 1 minuutti;
"2" - 5 minuuttia;
"3" - 15 minuuttia;
"4" - 30 minuuttia;
"5" - 1 tunti;
"0" - kotelon koko käyttöiän ajan.
Erikoiskäyttötila Pulssi (komento :pulse) näyttää yleistä tietoa Kubernetes-klusterista:
Siinä näet resurssien määrän ja niiden tilan (vihreä näyttää ne, joilla on tila Running).
Toinen K9s:n hieno ominaisuus on nimeltään Popeye. Se tarkistaa kaikkien resurssien tiettyjen oikeellisuuskriteerien varalta ja näyttää tuloksena saadun "luokituksen" selityksineen. Voit esimerkiksi nähdä, että näytteitä tai rajoja ei ole tarpeeksi, ja jotkut säilöt voivat toimia pääkäyttäjänä ...
Helmille on perustuki. Esimerkiksi näin voit nähdä klusterissa käyttöönotetut julkaisut:
:helm all # все
:helm $namespace # в конкретном пространстве имен
benchmark
Jopa sisäänrakennettu K9s:iin hei on yksinkertainen HTTP-palvelimen kuormitusgeneraattori, vaihtoehto tunnetummalle ab:lle (ApacheBench).
Voit ottaa sen käyttöön ottamalla portin edelleenlähetyksen käyttöön podissa. Voit tehdä tämän valitsemalla pod ja painamalla Shift + f, siirry portti eteenpäin -alivalikkoon käyttämällä "pf"-aliasta.
Kun olet valinnut portin ja painanut Ctrl + b, itse vertailu alkaa. Hänen työnsä tulokset tallennetaan /tmp ja ne ovat katsottavissa myöhemmin K9s:ssä.
Jos haluat muuttaa vertailuarvon asetuksia, sinun on luotava tiedosto $HOME/.k9s/bench-<my_context>.yml (määritetty kullekin klusterille).
HUOM: On tärkeää, että kaikkien YAML-tiedostojen laajennus hakemistossa .k9s se oli täsmälleen .yml (.yaml ei toimi oikein).
Esimerkki kokoonpanosta:
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
liitäntä
Resurssiluetteloiden sarakkeiden ulkoasua muokataan luomalla tiedosto $HOME/.k9s/views.yml. Esimerkki sen sisällöstä:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Tosin tarroille ei ole tarpeeksi saraketta, jota varten on ongelma hankkeessa.
Lajittelu sarakkeiden mukaan suoritetaan pikanäppäimillä:
Vaihto + n - nimellä;
Vaihto + o - solmujen mukaan;
Vaihto + i - IP:n mukaan;
Vaihto + a - säiliön käyttöiän mukaan;
Vaihto + t - uudelleenkäynnistysten lukumäärän mukaan;
Vaihto + r - valmiustilan mukaan;
Shift + c - suorittimen kulutuksen mukaan;
Vaihto + m - muistin kulutuksen mukaan.
Jos joku ei pidä oletusväriteemästä, K9s jopa tukee nahat. Valmiita esimerkkejä (7 kpl) on saatavilla täällä. Tässä on esimerkki yhdestä näistä skineistä (laivastossa):
Плагины
Lopuksi laajennuksia voit laajentaa K9s:n ominaisuuksia. Olen itse käyttänyt niistä vain yhtä työssäni - kubectl get all -n $namespace.
Se näyttää tältä. Luo tiedosto $HOME/.k9s/plugin.yml tällaisella sisällöllä:
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"
Nyt voit siirtyä nimiavaruuteen ja painaa "g" suorittaaksesi vastaavan komennon:
Lisäosien joukossa on esimerkiksi integraatioita kubectl-jq:n kanssa ja apuohjelma lokien katseluun perä.
Johtopäätös
Minun makuuni K9s osoittautui erittäin käteväksi työskennellä: voit nopeasti tottua etsimään kaikkea tarvitsemaasi ilman sitä. kubectl. Olin tyytyväinen lokien näkymään ja niiden säästämiseen, resurssien nopeaan muokkaamiseen, työn nopeuteen yleensä *, Popeye-tila osoittautui hyödylliseksi. Erityinen maininta on kyky luoda laajennuksia ja muokata sovellusta tarpeidesi mukaan.
* Vaikka suuren lokimäärän kanssa huomasin myös K9s:n hitaan toiminnan. Tällaisina hetkinä apuohjelma "söi" 2 ydintä Intel Xeon E312xx:stä ja saattoi jopa jäätyä.
Mitä puuttuu tällä hetkellä? Nopea palautus edelliseen versioon (emme puhu RS:stä) menemättä hakemistoon. Lisäksi toipuminen tapahtuu vain vain resurssi: jos poistat huomautuksen tai otsikon, sinun on poistettava ja palautettava koko resurssi (täältä sinun on siirryttävä hakemistoon). Toinen pieni asia - sellaisille tallennetuille "varmuuskopioille" ei ole tarpeeksi päivämäärää.