Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

K9s bay yon koòdone itilizatè tèminal pou kominike avèk gwoup Kubernetes. Objektif pwojè Open Source sa a se fè li fasil pou navige, kontwole, ak jere aplikasyon nan K8s. K9s toujou ap kontwole chanjman nan Kubernetes epi li ofri kòmandman rapid pou travay avèk resous kontwole.

Pwojè a ekri nan Go e li egziste pou plis pase yon ane edmi: premye angajman an te fèt nan dat 1ye fevriye 2019. Nan moman sa a nan ekri a, gen 9000 + zetwal sou GitHub ak anviwon 80 kontribitè. Ann wè kisa k9s ka fè?

Enstalasyon ak lansman

Sa a se yon aplikasyon kliyan (an relasyon ak gwoup Kubernetes la) ki pi fasil pou kouri kòm yon imaj Docker:

docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s

Pou kèk distribisyon Linux ak lòt sistèm opere, gen tou pare pou enstale pakè. An jeneral, pou sistèm Linux, ou ka enstale yon dosye binè:

sudo wget -qO- https://github.com/derailed/k9s/releases/download/v0.22.0/k9s_Linux_x86_64.tar.gz | tar zxvf -  -C /tmp/
sudo mv /tmp/k9s /usr/local/bin

Pa gen okenn kondisyon espesifik pou gwoup K8s tèt li. Jije pa revizyon yo, aplikasyon an ap travay tou ak ansyen vèsyon Kubernetes tankou 1.12.

Aplikasyon an te lanse lè l sèvi avèk konfigirasyon estanda a .kube/config - menm jan ak jan li fè kubectl.

Navigasyon

Pa default, yon fenèt ouvè ak espas non default ki espesifye pou kontèks la. Sa vle di, si ou te ekri kubectl config set-context --current --namespace=test, Lè sa a, espas non an ap louvri test. (Gade anba a pou chanje kontèks/espas non yo.)

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Ale nan mòd lòd se fè pa peze ":". Apre sa, ou ka kontwole operasyon k9s lè l sèvi avèk kòmandman - pou egzanp, pou wè lis StatefulSets (nan espas non aktyèl la), ou ka antre. :sts.

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Pou kèk lòt resous Kubernetes:

  • :ns - espas non;
  • :deploy — Deplwaman;
  • :ing — Antre;
  • :svc - sèvis yo.

Pou montre yon lis konplè kalite resous ki disponib pou gade, gen yon lòd :aliases.

Li se tou pratik yo wè lis la nan kòmandman ki disponib nan konbinezon kle cho nan fenèt aktyèl la: pou fè sa, jis klike sou "?".

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Epitou nan k9s gen mòd rechèch, pou ale kote li ase pou antre "/". Avèk li, yo fè yon rechèch sou sa ki nan "fenèt" aktyèl la. Ann di si ou te deja antre :ns, ou gen yon lis espas non ouvè. Si gen twòp nan yo, Lè sa a, yo nan lòd yo pa woule desann pou yon tan long, li ase yo antre nan fenèt la ak espas non. /mynamespace.

Pou fè rechèch sou etikèt, ou ka chwazi tout gous nan espas non vle a, epi antre, pou egzanp, / -l app=whoami. Nou pral jwenn yon lis gous ak etikèt sa a:

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Rechèch la ap travay nan tout kalite fenèt, tankou mòso bwa, gade manifest YAML, ak describe pou resous - gade anba a pou plis detay sou karakteristik sa yo.

Ki jan koule navigasyon an jeneral sanble?

Avèk kòmandman an :ctx ou ka chwazi yon kontèks:

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Pou chwazi yon espas non, gen kòmandman an deja mansyone :ns, ak Lè sa a, ou ka itilize rechèch la pou espas vle a: /test.

Si kounye a nou chwazi resous nou enterese nan (pa egzanp, menm StatefulSet la), enfòmasyon ki koresponn lan ap parèt pou li: konbyen gous k ap kouri ak enfòmasyon kout sou yo.

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Se sèlman gous ki ka nan enterè - Lè sa a, li se ase yo antre :pod. Nan ka ConfigMaps (:cm - pou lis resous sa yo), ou ka chwazi objè ki enterese a epi klike sou "u", apre sa K9s pral di w kiyès ki sèvi ak li espesyalman (CM sa a).

Yon lòt karakteristik pratik pou gade resous yo se yo "x-ray" (vizyon radyografi). Mòd sa a rele pa lòd la :xray RESOURCE ak ... li pi fasil pou montre kijan li fonksyone pase pou eksplike. Men yon ilistrasyon pou StatefulSets:

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes
(Chak nan resous sa yo ka modifye, chanje, fè describe.)

Ak isit la se Deplwaman ak Ingress:

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Travay ak resous yo

Ou ka jwenn enfòmasyon sou chak resous nan YAML oswa li yo describe pa peze rakoursi klavye korespondan yo ("y" ak "d", respektivman). Natirèlman, gen menm plis operasyon debaz yo: lis yo ak rakoursi klavye yo toujou vizib gras a yon "tèt" pratik nan koòdone a (kache pa peze Ctrl + e).

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Lè modifye nenpòt resous ("e" apre seleksyon li), editè tèks la defini nan varyab anviwònman yo louvri (export EDITOR=vim).

Ak isit la se deskripsyon detaye resous la sanble (describe):

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Pwodiksyon sa a (oswa pwodiksyon an nan gade manifest resous YAML) ka sove lè l sèvi avèk chemen kout klavye abitye Ctrl + s. Ki kote li pral sove yo pral konnen nan mesaj K9s la:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

Ou kapab tou retabli resous ki soti nan dosye yo backup kreye, apre yo fin retire etikèt sistèm ak anotasyon. Pou fè sa, ou bezwen ale nan anyè a avèk yo (:dir /tmp), Lè sa a, chwazi fichye a vle epi aplike apply.

By wout la, nenpòt ki lè ou ka retounen nan ReplicaSet anvan an si gen pwoblèm ak youn aktyèl la. Pou fè sa, chwazi RS vle a (:rs pou lis yo):

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

... ak rollback ak Ctrl + l. Nou ta dwe resevwa yon notifikasyon ke tout bagay te byen mache:

k9s/whoami-5cfbdbb469 successfully rolled back

Epi pou echèl kopi yo, jis klike sou "s" (echèl la) epi chwazi kantite ka yo vle:

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Ou ka antre nan nenpòt nan resipyan yo lè l sèvi avèk koki a: pou fè sa, ale nan gous la vle, klike sou "s" (koki) epi chwazi veso a.

Lòt karakteristik

Natirèlman, gade mòso bwa tou sipòte ("l" pou resous yo chwazi a). Epi yo nan lòd yo gade nouvo mòso bwa, pa gen okenn bezwen toujou ap peze Antre: li se ase yo make ("m"), ak Lè sa a, sèlman swiv nouvo mesaj.

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Epitou nan menm fenèt la, ou ka chwazi seri tan pou pwodiksyon an nan mòso bwa:

  • kle "1" - pou 1 minit;
  • "2" - 5 minit;
  • "3" - 15 minit;
  • "4" - 30 minit;
  • "5" - 1 èdtan;
  • "0" - pou tout lavi gous la.

Mòd operasyon espesyal Pulse (kòmand :pulse) montre enfòmasyon jeneral sou gwoup Kubernetes la:

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Nan li ou ka wè kantite resous ak estati yo (vèt montre moun ki gen estati a Running).

Yo rele yon lòt karakteristik fre nan K9s Popeye. Li tcheke tout resous yo pou sèten kritè kòrèk epi li montre "evalyasyon" ki kapab lakòz ak eksplikasyon. Pou egzanp, ou ka wè ke pa gen ase echantiyon oswa limit, ak kèk veso ka kouri kòm rasin ...

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Gen sipò Helm debaz. Pou egzanp, men ki jan ou ka wè degaje yo deplwaye nan gwoup la:

:helm all # все
:helm $namespace # в конкретном пространстве имен

Tests

Menm bati nan K9s hey se yon senp dèlko chaj sèvè HTTP, yon altènativ a pi byen li te ye ab (ApacheBench).

Pou pèmèt li, ou bezwen pèmèt port-forward nan gous la. Pou fè sa, chwazi gous la epi peze Shift + f, ale nan sous-menu port-forward lè l sèvi avèk "pf" alyas la.

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Apre w fin chwazi pò a epi peze Ctrl + b, referans nan tèt li ap kòmanse. Rezilta travay li yo estoke nan /tmp epi yo disponib pou gade pita nan K9s.

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes
Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Pou chanje konfigirasyon referans lan, ou bezwen kreye yon dosye $HOME/.k9s/bench-<my_context>.yml (detèmine pou chak gwoup).

NB: Li enpòtan pou ekstansyon tout fichye YAML nan yon anyè .k9s li te egzakteman .yml (.yaml pa travay kòrèkteman).

Egzanp konfigirasyon:

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

koòdone

Aparans kolòn pou lis resous yo modifye pa kreye yon dosye $HOME/.k9s/views.yml. Yon egzanp kontni li yo:

k9s:
 views:
   v1/pods:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - IP
       - NODE
       - STATUS
       - READY
   v1/services:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - TYPE
       - CLUSTER-IP

Se vre, pa gen ase kolòn pou etikèt, pou ki gen pwoblèm nan pwojè a.

Klasifikasyon pa kolòn fèt pa rakoursi klavye:

  • Shift + n - pa non;
  • Shift + o - pa nœuds;
  • Shift + i - pa IP;
  • Shift + a - pa tout lavi veso a;
  • Shift + t - pa kantite rekòmanse;
  • Shift + r - pa estati preparasyon;
  • Shift + c - pa konsomasyon CPU;
  • Shift + m - pa konsomasyon memwa.

Si yon moun pa renmen konplo koulè default, K9s menm sipòte po. Egzanp pare yo (7 moso) ki disponib isit la. Men yon egzanp youn nan po sa yo (nan marin la):

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Plugins

Finalman grefon pèmèt ou elaji kapasite K9s yo. Mwen menm mwen te itilize sèlman youn nan yo nan travay mwen - kubectl get all -n $namespace.

Li sanble sa a. Kreye yon fichye $HOME/.k9s/plugin.yml ak kontni tankou sa a:

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"

Koulye a, ou ka ale nan espas non an epi peze "g" pou egzekite ak lòd ki koresponn lan:

Apèsi sou k9s - yon koòdone tèminal avanse pou Kubernetes

Pami grefon yo gen, pou egzanp, entegrasyon ak kubectl-jq ak yon sèvis piblik pou gade mòso bwa. vout.

Konklizyon

Pou gou mwen, K9s te tounen trè pratik pou travay avèk: ou ka byen vit abitye chèche tout bagay ou bezwen san yo pa itilize li. kubectl. Mwen te kontan ak gade nan mòso bwa yo ak ekonomize yo, koreksyon rapid nan resous, vitès la nan travay an jeneral *, mòd nan Popeye te tounen itil. Yon mansyone espesyal se kapasite nan kreye grefon ak modifye aplikasyon an anfòm bezwen ou yo.

* Malgre ke, ak yon gwo volim nan mòso bwa, mwen menm tou mwen remake operasyon an dousman nan K9s. Nan moman sa yo, sèvis piblik la "manje" 2 nwayo soti nan Intel Xeon E312xx la e li ka menm friz.

Ki sa ki manke nan moman sa a? Quick Rollback nan vèsyon anvan an (nou pa pale de RS) san yo pa ale nan anyè a. Anplis de sa, rekiperasyon rive sèlman pou sèlman resous: si ou efase yon annotasyon oswa yon etikèt, w ap oblije efase ak restore resous la tout antye (sa a se kote ou bezwen ale nan anyè a). Yon lòt vetiy - pa gen ase dat pou sa yo sove "sovgad".

PS

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè