ProHoster > Blog > administratë > Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes
Përmbledhje e k9s - një ndërfaqe e avancuar e terminalit për Kubernetes
K9s ofron një ndërfaqe përdoruesi terminal për ndërveprim me grupimet Kubernetes. Qëllimi i këtij projekti me burim të hapur është ta bëjë të lehtë navigimin, monitorimin dhe menaxhimin e aplikacioneve në K8. K9s monitoron vazhdimisht ndryshimet në Kubernetes dhe ofron komanda të shpejta për të punuar me burimet e monitoruara.
Projekti është shkruar në Go dhe ka ekzistuar për më shumë se një vit e gjysmë: angazhimi i parë u bë më 1 shkurt 2019. Në kohën e shkrimit, ka mbi 9000 yje GitHub dhe rreth 80 kontribues. Le të shohim se çfarë mund të bëjnë k9s?
Instalimi dhe nisja
Ky është një aplikacion klienti (në lidhje me grupin Kubernetes) që është më i lehtë për t'u ekzekutuar si një imazh Docker:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s
Për disa shpërndarje Linux dhe sisteme të tjera operative, ka gjithashtu të gatshme për instalim paketa. Në përgjithësi, për sistemet Linux, mund të instaloni një skedar binar:
Nuk ka kërkesa specifike për vetë grupin K8s. Duke gjykuar nga rishikimet, aplikacioni funksionon edhe me versione më të vjetra të Kubernetes si 1.12.
Aplikacioni niset duke përdorur konfigurimin standard .kube/config - e ngjashme me atë se si vepron kubectl.
lundrim
Si parazgjedhje, hapet një dritare me hapësirën e emrave të paracaktuar të specifikuar për kontekstin. Kjo është, nëse keni shkruar kubectl config set-context --current --namespace=test, atëherë do të hapet hapësira e emrave test. (Shih më poshtë për ndryshimin e konteksteve/hapësirave të emrave.)
Shko tek modaliteti i komandës bëhet duke shtypur ":". Pas kësaj, ju mund të kontrolloni funksionimin e k9s duke përdorur komanda - për shembull, për të parë listën e StatefulSets (në hapësirën aktuale të emrave), mund të futni :sts.
Për disa burime të tjera të Kubernetes:
:ns - hapësirat e emrave;
:deploy - Vendosjet;
:ing - Hyrja;
:svc — Shërbimet.
Për të shfaqur një listë të plotë të llojeve të burimeve të disponueshme për shikim, ekziston një komandë :aliases.
Është gjithashtu i përshtatshëm për të parë listën e komandave të disponueshme nga kombinimet e tasteve të nxehtë brenda dritares aktuale: për ta bërë këtë, thjesht klikoni në "?".
Gjithashtu në k9s ka mënyra e kërkimit, për të shkuar në të cilën mjafton të futni "/". Me të, kryhet një kërkim në përmbajtjen e "dritares" aktuale. Le të themi nëse keni hyrë më parë :ns, ju keni një listë të hapësirave të emrave të hapur. Nëse ka shumë prej tyre, atëherë për të mos lëvizur poshtë për një kohë të gjatë, mjafton të futni në dritare me hapësira emrash /mynamespace.
Për të kërkuar sipas etiketave, mund të zgjidhni të gjitha grupet në hapësirën e dëshiruar të emrave dhe më pas futni, për shembull, / -l app=whoami. Ne do të marrim një listë të bishtajave me këtë etiketë:
Kërkimi funksionon në të gjitha llojet e dritareve, duke përfshirë regjistrat, shikimin e manifesteve YAML dhe describe për burimet - shihni më poshtë për më shumë detaje mbi këto veçori.
Si duket rrjedha e përgjithshme e navigimit?
Me komandën :ctx ju mund të zgjidhni një kontekst:
Për të zgjedhur një hapësirë emri, ekziston komanda e përmendur tashmë :ns, dhe më pas mund të përdorni kërkimin për hapësirën e dëshiruar: /test.
Nëse tani zgjedhim burimin që na intereson (për shembull, i njëjti StatefulSet), informacioni përkatës do të shfaqet për të: sa pods po funksionojnë me informacion të shkurtër rreth tyre.
Vetëm bishtajat mund të jenë me interes - atëherë mjafton të futeni :pod. Në rastin e ConfigMaps (:cm - për listën e këtyre burimeve), mund të zgjidhni objektin e interesit dhe të klikoni në "u", pas së cilës K9s do t'ju tregojë se kush e përdor në mënyrë specifike (këtë CM).
Një veçori tjetër e dobishme për shikimin e burimeve është e tyre "X-ray" (pamje me rreze X). Kjo mënyrë thirret nga komanda :xray RESOURCE dhe ... është më e lehtë të tregosh se si funksionon sesa të shpjegosh. Këtu është një ilustrim për StatefulSets:
(Secili prej këtyre burimeve mund të modifikohet, ndryshohet, bëhet describe.)
Dhe këtu është vendosja me Ingress:
Puna me burimet
Ju mund të merrni informacion për çdo burim në YAML ose të tij describe duke shtypur shkurtoret përkatëse të tastierës (përkatësisht "y" dhe "d". Sigurisht, ka edhe më shumë operacione themelore: lista e tyre dhe shkurtesat e tastierës janë gjithmonë të dukshme falë një "header" të përshtatshëm në ndërfaqe (të fshehura duke shtypur Ctrl + e).
Kur redaktoni ndonjë burim ("e" pas përzgjedhjes së tij), hapet redaktori i tekstit i përcaktuar në variablat e mjedisit (export EDITOR=vim).
Dhe ja se si duket përshkrimi i detajuar i burimit (describe):
Ky dalje (ose rezultati i shikimit të manifestit YAML të burimit) mund të ruhet duke përdorur shkurtoren e njohur të tastierës Ctrl + s. Ku do të ruhet do të dihet nga mesazhi i K9s:
Ju gjithashtu mund të rivendosni burimet nga skedarët rezervë të krijuar, pasi të keni hequr etiketat dhe shënimet e sistemit. Për ta bërë këtë, duhet të shkoni në drejtori me ta (:dir /tmp), më pas zgjidhni skedarin e dëshiruar dhe aplikoni apply.
Nga rruga, në çdo kohë mund të ktheheni te ReplicaSet i mëparshëm nëse ka probleme me atë aktual. Për ta bërë këtë, zgjidhni RS-në e dëshiruar (:rs për listën e tyre):
... dhe rikthim me Ctrl + l. Duhet të marrim një njoftim se gjithçka shkoi mirë:
k9s/whoami-5cfbdbb469 successfully rolled back
Dhe për të shkallëzuar kopjet, thjesht klikoni në "s" (shkallë) dhe zgjidhni numrin e dëshiruar të rasteve:
Mund të futni cilindo nga kontejnerët duke përdorur guaskën: për ta bërë këtë, shkoni në podin e dëshiruar, klikoni në "s" (guaska) dhe zgjidhni enën.
Karakteristika te tjera
Sigurisht, mbështetet edhe shikimi i regjistrave ("l" për burimin e zgjedhur). Dhe për të parë regjistrat e rinj, nuk ka nevojë të shtypni vazhdimisht Enter: mjafton të shënoni ("m"), dhe më pas të gjurmoni vetëm mesazhet e reja.
Gjithashtu në të njëjtën dritare, mund të zgjidhni intervalin kohor për prodhimin e regjistrave:
çelësi "1" - për 1 minutë;
"2" - 5 minuta;
"3" - 15 minuta;
"4" - 30 minuta;
"5" - 1 orë;
"0" - për të gjithë jetën e pod.
Modaliteti special i funksionimit Pulse (komandë :pulse) tregon informacione të përgjithshme rreth grupit Kubernetes:
Në të mund të shihni numrin e burimeve dhe statusin e tyre (e gjelbër tregon ato që kanë statusin Running).
Një tjetër veçori e lezetshme e K9 quhet Popeye. Ai kontrollon të gjitha burimet për disa kritere korrektësie dhe shfaq "vlerësimin" që rezulton me shpjegime. Për shembull, mund të shihni se nuk ka mostra ose kufij të mjaftueshëm, dhe disa enë mund të funksionojnë si rrënjë ...
Ekziston mbështetje themelore e Helm-it. Për shembull, kjo është mënyra se si mund t'i shihni lëshimet e vendosura në grup:
:helm all # все
:helm $namespace # в конкретном пространстве имен
Etapë
Madje i integruar në K9 hej është një gjenerator i thjeshtë i ngarkesës së serverit HTTP, një alternativë ndaj ab më të njohurit (ApacheBench).
Për ta aktivizuar atë, duhet të aktivizoni port-forward në pod. Për ta bërë këtë, zgjidhni podin dhe shtypni Shift + f, shkoni te nënmenyja port-forward duke përdorur pseudonimin "pf".
Pasi të zgjidhni portin dhe të shtypni Ctrl + b, do të fillojë vetë standardi. Rezultatet e punës së tij ruhen në /tmp dhe janë të disponueshme për shikim të mëvonshëm në K9.
Për të ndryshuar konfigurimin e standardit, duhet të krijoni një skedar $HOME/.k9s/bench-<my_context>.yml (përcaktuar për çdo grup).
NB: Është e rëndësishme që shtrirja e të gjithë skedarëve YAML në një direktori .k9s ishte pikërisht .yml (.yaml nuk funksionon si duhet).
Shembull i konfigurimit:
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
ndërfaqe
Pamja e kolonave për listat e burimeve modifikohet duke krijuar një skedar $HOME/.k9s/views.yml. Një shembull i përmbajtjes së tij:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Vërtetë, nuk ka kolonë të mjaftueshme për etiketat, për të cilat ka çështje në projekt.
Renditja sipas kolonave kryhet nga shkurtoret e tastierës:
Shift + n - me emër;
Shift + o - sipas nyjeve;
Shift + i - nga IP;
Shift + a - sipas jetëgjatësisë së kontejnerit;
Shift + t - nga numri i rinisjeve;
Shift + r - sipas statusit të gatishmërisë;
Shift + c - sipas konsumit të CPU;
Shift + m - sipas konsumit të memories.
Nëse dikujt nuk i pëlqen skema e parazgjedhur e ngjyrave, K9s madje e mbështet lëkurat. Ka shembuj të gatshëm (7 copë). këtu. Këtu është një shembull i një prej këtyre lëkurave (në marinë):
plugins
Së fundi, shtojcat ju lejon të zgjeroni aftësitë e K9. Unë vetë kam përdorur vetëm një prej tyre në punën time - kubectl get all -n $namespace.
Duket kështu. Krijo një skedar $HOME/.k9s/plugin.yml me përmbajtje si kjo:
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"
Tani mund të shkoni në hapësirën e emrave dhe të shtypni "g" për të ekzekutuar me komandën përkatëse:
Midis shtojcave ka, për shembull, integrime me kubectl-jq dhe një mjet për shikimin e regjistrave i ashpër.
Përfundim
Për shijen time, K9 doli të ishte shumë i përshtatshëm për të punuar: mund të mësoheni shpejt të kërkoni gjithçka që ju nevojitet pa e përdorur atë. kubectl. Isha i kënaqur me pamjen e regjistrave dhe kursimin e tyre, redaktimin e shpejtë të burimeve, shpejtësinë e punës në përgjithësi *, modaliteti Popeye doli të ishte i dobishëm. Një përmendje e veçantë është aftësia për të krijuar shtojca dhe modifikuar aplikacionin për t'iu përshtatur nevojave tuaja.
* Edhe pse, me një vëllim të madh shkrimesh, vura re edhe funksionimin e ngadaltë të K9. Në momente të tilla, mjeti "hëngri" 2 bërthama nga Intel Xeon E312xx dhe madje mund të ngrinte.
Çfarë mungon për momentin? Rikthim i shpejtë në versionin e mëparshëm (nuk po flasim për RS) pa shkuar në drejtori. Përveç kësaj, shërimi ndodh vetëm për vetëm burimi: nëse fshini një shënim ose etiketë, do t'ju duhet të fshini dhe rivendosni të gjithë burimin (këtu duhet të shkoni te drejtoria). Një tjetër gjë e vogël - nuk ka një datë të mjaftueshme për "kopje rezervë" të tilla të ruajtura.