Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

K9s Ji bo danûstandina bi komên Kubernetes re navgînek bikarhênerek termînalê peyda dike. Armanca vê projeya Çavkaniya Vekirî ew e ku hêsantir navîgasyon, şopandin û birêvebirina serîlêdanên li K8-an bike. K9s bi berdewamî guhertinên li Kubernetes dişopîne û ji bo xebata bi çavkaniyên çavdêrîkirî re fermanên bilez peyda dike.

Proje di Go-yê de hatî nivîsandin û ji sal û nîvek zêdetir e heye: Yekem pevrabûn di 1ê Sibata 2019-an de hate çêkirin. Di dema nivîsandinê de, 9000+ stêrk li ser hene GitHub û nêzîkî 80 beşdaran. Ka em bibînin ka k9s dikarin çi bikin?

Sazkirin û destpêkirin

Ev serîlêdanek xerîdar e (li gorî koma Kubernetes-ê), ku herî hêsan e ku wekî wêneyek Docker were xebitandin:

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

Ji bo hin belavkirinên Linux û pergalên xebitandinê yên din jî amade-sazkirinê hene pakêt. Bi gelemperî, ji bo pergalên Linux-ê hûn dikarin pelê binary saz bikin:

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

Ji bo koma K8s bixwe hewcedariyên taybetî tune. Li gorî nirxandinan, serîlêdan bi guhertoyên kevntir ên Kubernetes ên wekî 1.12 re jî dixebite.

Serlêdan dest bi karanîna konfigurasyona standard dike .kube/config - mîna ku çawa dike kubectl.

Navkirin

Ji hêla xwerû ve, pencereyek bi navên standard ên ku ji bo çarçovê ve hatî destnîşan kirin vedibe. Yanî eger te nivîsîbe kubectl config set-context --current --namespace=test, wê hingê cîhê navan dê vebe test. (Li jêr li ser guheztina naverok / cîhên navan binêre.)

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Biçe moda fermanê bi tikandina li ser ":" pêk tê. Dûv re hûn dikarin kontrol bikin ka k9s çawa bi karanîna fermanan dixebite - mînakî, ji bo dîtina navnîşek StatefulSets (di cîhê navên heyî de) hûn dikarin têkevin :sts.

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Ji bo hin çavkaniyên din ên Kubernetes:

  • :ns - Cihên navan;
  • :deploy - Dabeşkirin;
  • :ing - Ingress;
  • :svc - Xizmetên.

Ji bo nîşandana navnîşek bêkêmasî ya cûreyên çavkaniyê yên ji bo temaşekirinê hene, fermanek heye :aliases.

Di heman demê de hêsan e ku meriv navnîşa emrên ku bi navgîniya bişkojka germî ya di pencereya heyî de peyda dibin bibînin: ji bo vê yekê, tenê li ser "?" bikirtînin.

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Di k9s de jî heye moda lêgerînê, ji bo ku hûn biçin ku hûn tenê "/" têkevin. Ew di nav naveroka "pencereya" ya heyî de digere. Mînakî, heke hûn berê ketine :ns, we navnîşek cîhên navan vekirî ye. Ger ji wan pir zêde bin, wê hingê ji bo ku demek dirêj li jêr negerin, tenê di pencereyê de bi navên navan têkevin /mynamespace.

Ji bo lêgerîna li gorî etîketan, hûn dikarin di nav cîhê navên xwestî de hemî podan hilbijêrin, û dûv re, mînakî, têkevin, / -l app=whoami. Em ê navnîşek pelên bi vê etîketê bistînin:

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Lêgerîn di her cûre pencereyan de, di nav de têketin, dîtina diyardeyên YAML û describe ji bo çavkaniyan - ji bo bêtir agahdarî li ser van kapasîteyan li jêr binêrin.

Herikîna navîgasyonê ya giştî çawa xuya dike?

Bi fermanê :ctx hûn dikarin çarçoveyê hilbijêrin:

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Ji bo hilbijartina cîhek navekî fermana ku berê hatî behs kirin heye :ns, û paşê hûn dikarin lêgerîna cîhê xwestinê bikar bînin: /test.

Ger em aniha çavkaniya ku em jê re eleqedar dibin hilbijêrin (mînak, heman StatefulSet), dê agahdariya têkildar jê re xuya bibe: çend pod bi agahdariya kurt li ser wan têne xebitandin.

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Tenê pods dibe ku balkêş bin - hingê tenê têkevin :pod. Di doza ConfigMaps de (:cm - ji bo navnîşek van çavkaniyan) hûn dikarin tiştê balkêş hilbijêrin û li ser "u" bikirtînin, piştî ku K9 dê ji we re bêje ka kî bi rastî (ev CM) wê bikar tîne.

Taybetmendiyek din a hêsan a ji bo dîtina çavkaniyan wan e "X-ray" (dîtina XRay). Ev moda bi fermanê tê gotin :xray RESOURCE û ... ji ravekirinê hêsantir e ku meriv nîşan bide ka ew çawa dixebite. Li vir nîgarek ji bo StatefulSets heye:

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî
(Her yek ji van çavkaniyan dikare were guherandin, guhertin, çêkirin describe.)

Û li vir Dabeşkirina bi Ingress re ye:

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Bi Çavkaniyan re dixebitin

Agahdariya li ser her çavkaniyek dikare di YAML an wê de were bidestxistin describe bi tikandina kurtebirên klavyeyê yên guncan (bi rêzê "y" û "d"). Bê guman, operasyonên bingehîn hê bêtir jî hene: navnîş û kurtebirên klavyeyê yên wan her gav bi saya "sernivîs"ek hêsan di navberê de têne xuyang kirin (bi tikandina Ctrl + e ve têne veşartin).

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Dema ku her çavkaniyek ("e" piştî bijartina wê biguhezîne), edîtorê nivîsê di guhêrbarên hawîrdorê de destnîşan dike (export EDITOR=vim).

Û li vir e ku ravekek berfireh a çavkaniyê wekî xuya dike (describe):

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Ev encam (an jî derana dîtina YAML manîfestoya çavkaniyekê) dikare bi karanîna kurteya klavyeyê ya asayî Ctrl + s were hilanîn. Li ku derê ew ê were xilas kirin dê ji peyama K9s were zanîn:

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

Her weha hûn dikarin çavkaniyan ji pelên hilanînê yên hatine afirandin bi rakirina yekem nîşan û şîroveyên pergalê vegerînin. Ji bo vê yekê hûn hewce ne ku hûn bi wan re biçin pelrêça (:dir /tmp), paşê pelê xwestin hilbijêrin û bicîh bikin apply.

Bi awayê, di her kêliyê de hûn dikarin vegerin ser ReplicaSet-a berê heke di ya heyî de pirsgirêk hebin. Ji bo vê yekê, hûn hewce ne ku RS-ya xwestinê hilbijêrin (:rs ji bo lîsteya wan):

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

... û bi karanîna Ctrl + l vegere. Divê em agahdariyek bistînin ku her tişt serketî bû:

k9s/whoami-5cfbdbb469 successfully rolled back

Û ji bo pîvandina kopiyan, tenê li ser "s" (pîvan) bikirtînin û hejmara kopiyên pêwîst hilbijêrin:

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Hûn dikarin bi karanîna şêlê têkevin yek ji konteyniran: ji bo vê yekê, biçin poda xwestinê, li ser "s" (şel) bikirtînin û konteynerê hilbijêrin.

Taybetmendiyên din

Bê guman, têketinên dîtinê jî têne piştgirî kirin ("l" ji bo çavkaniya hilbijartî). Û ji bo dîtina têketinên nû, ne hewce ye ku bi berdewamî Enter bikirtînin: tenê nîşanek ("m") bikin, û dûv re tenê peyamên nû bişopînin.

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Her weha di heman pencereyê de hûn dikarin rêza demjimêr ji bo derxistina têketin hilbijêrin:

  • mifteya "1" - di 1 hûrdemê de;
  • "2" - 5 deqîqe;
  • "3" - 15 deqîqe;
  • "4" - 30 deqîqe;
  • "5" - 1 saet;
  • "0" - ji bo tevahiya jiyana pod.

Moda xebatê ya taybetî Pulse (ferman :pulse) agahdariya gelemperî li ser koma Kubernetes nîşan dide:

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Di wê de hûn dikarin hejmara çavkaniyan û rewşa wan bibînin (yên ku statûyek wan bi kesk têne xuyang kirin Running).

Taybetmendiyek din a balkêş a K9s tê gotin Popeye. Ew hemî çavkaniyan ji bo hin pîvanên rastdariyê kontrol dike û "rêjeya" encam bi şiroveyan nîşan dide. Mînakî, hûn dikarin bibînin ku têr nimûne an sînor nîn in, û hin konteynir dikare wekî root were xebitandin…

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Piştgiriya Helm ya bingehîn heye. Mînakî, bi vî rengî hûn dikarin serbestberdanên ku li komê hatine bicîh kirin bibînin:

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

Benchmark

Wan ew di nav K9-an de jî ava kirin hey ji bo serverek HTTP-ê hilberînerek barkirinê ya hêsan e, alternatîfek ji ab-ya naskirî (ApacheBench).

Ji bo çalakkirina wê, hûn ê hewce bikin ku port-pêşverû di pod de çalak bikin. Ji bo kirina vê yekê, pod hilbijêrin û Shift + f bikirtînin, bi navnavê "pf" biçin jêrmenuya port-pêşverû.

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Piştî hilbijartina portê û pêlkirina Ctrl + b, pîvan bixwe dê dest pê bike. Encamên xebata wî di nav de têne tomar kirin /tmp û ji bo dîtina paşîn di K9s de berdest in.

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî
Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Ji bo guherandina veavakirina pîvanê divê hûn pelek biafirînin $HOME/.k9s/bench-<my_context>.yml (ji bo her komê tê diyarkirin).

NB: Girîng e ku dirêjkirina hemî pelên YAML di pelrêça de .k9s ew tam bû .yml (.yaml rast naxebite).

Mînaka veavakirinê:

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

virtual

Xuyabûna stûnên ji bo navnîşên çavkaniyê bi çêkirina pelek tê guheztin $HOME/.k9s/views.yml. Mînakek naveroka wê:

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

Rast e, ji bo etîketan stûnek têr tune, ji bo ku heye pirsgirêk di projeyê de.

Rêzkirina li gorî stûnan bi karanîna kurtebirên klavyeyê pêk tê:

  • Shift + n - bi navê;
  • Shift + o - bi girêkan;
  • Shift + i - bi IP;
  • Shift + a - ji hêla jiyana konteynerê ve;
  • Shift + t - ji hêla hejmara nû ve destpêkirinê;
  • Shift + r - ji hêla rewşa amadebûnê ve;
  • Shift + c - ji hêla karanîna CPU ve;
  • Shift + m - ji hêla karanîna bîranînê ve.

Ger kesek ji nexşeya rengê xwerû hez neke, K9s jî piştgirî dike çerm. Mînakên amade (7 perçe) hene vir. Li vir mînakek yek ji van çerman e (di nav deryayê de):

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Plugins

Di dawiyê de pêvekên destûrê dide te ku hûn kapasîteyên K9s berfireh bikin. Min bi xwe di xebata xwe de tenê yek ji wan bikar anî - kubectl get all -n $namespace.

Wisa xuya dike. Pelê çêbikin $HOME/.k9s/plugin.yml bi naverok bi vî rengî:

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"

Naha hûn dikarin biçin cîhê navan û "g" bikirtînin da ku emrê têkildar bicîh bînin:

Pêşniyara k9s - ji bo Kubernetes navgînek termînalê ya pêşkeftî

Di nav pêvekan de, mînakî, entegrasyonên bi kubectl-jq û amûrek ji bo dîtina têketin hene. hişk.

encamê

Ji bo tama min, K9s derket holê ku karanîna wê pir rehet e: bi wê re hûn dikarin zû zû fêr bibin ku hûn bêyî karanîna her tiştê ku hûn hewce ne bibînin. kubectl. Ez ji dîtina têketin û tomarkirina wan, sererastkirina bilez a çavkaniyan, leza xebatê bi gelemperî * kêfxweş bûm, moda Popeye kêrhatî derket. Pêdivî ye ku bi taybetî behsa şiyana afirandina pêvekan û xweşkirina serîlêdanê li gorî hewcedariyên we were kirin.

* Her çend, digel hejmareke mezin a têketinê, min operasyona hêdî ya K9 jî dît. Di demên weha de, karûbar 2 core Intel Xeon E312xx "xwar" û dikaribû bicemidîne.

Di vê demê de çi winda ye? Vegera bilez a guhertoya berê (em behsa RS nakin) bêyî ku biçin pelrêçê. Wekî din, restorasyon tenê ji bo pêk tê tevahî çavkanî: heke we annotasyonek an etîketek jêbirin, hûn ê neçar bin ku hemî çavkaniyê jêbikin û vegerînin (li vir hewce ye ku hûn biçin pelrêçê). Tiştek piçûkek din jî ev e ku tarîxa van "paşvekêşan" ên hilanîn winda ye.

PS

Li ser bloga me jî bixwînin:

Source: www.habr.com

Add a comment