Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

K9 xyoo muab lub davhlau ya nyob twg tus neeg siv interface rau kev cuam tshuam nrog Kubernetes pawg. Lub hom phiaj ntawm qhov Open Source project yog ua kom yooj yim rau kev taw qhia, saib xyuas, thiab tswj cov ntawv thov hauv K8s. K9s tas li saib xyuas cov kev hloov pauv hauv Kubernetes thiab muab cov lus txib ceev rau kev ua haujlwm nrog cov kev saib xyuas.

Qhov project tau sau rau hauv Go thiab muaj nyob rau ntau tshaj li ib xyoos thiab ib nrab: thawj qhov kev cog lus tau ua thaum Lub Ob Hlis 1, 2019. Thaum lub sijhawm sau ntawv, muaj 9000+ hnub qub rau GitHub thiab txog 80 tus neeg pab txhawb nqa. Wb saib dab tsi k9s ua tau?

Installation thiab tso tawm

Qhov no yog tus neeg siv khoom (nrog rau Kubernetes pawg) daim ntawv thov, uas yooj yim tshaj los khiav raws li Docker duab:

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

Rau qee qhov kev faib tawm Linux thiab lwm lub tshuab ua haujlwm kuj tseem npaj tau-rau-nruab pob. Feem ntau, rau Linux systems koj tuaj yeem nruab cov ntaub ntawv binary:

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

Tsis muaj cov cai tshwj xeeb rau K8s pawg nws tus kheej. Kev txiav txim los ntawm kev tshuaj xyuas, daim ntawv thov kuj ua haujlwm nrog cov laus ntawm Kubernetes xws li 1.12.

Daim ntawv thov pib siv tus qauv config .kube/config - zoo ib yam li nws ua li cas kubectl.

Kev Nkoj Tawm

Los ntawm lub neej ntawd, lub qhov rais qhib nrog tus qauv namespace teev rau cov ntsiab lus. Qhov ntawd yog, yog tias koj sau kubectl config set-context --current --namespace=test, ces lub namespace yuav qhib test. (Saib hauv qab no txog kev hloov cov ntsiab lus / namespaces.)

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Mus rau hom lus txib ua tiav los ntawm txhaj rau ":". Tom qab ntawd koj tuaj yeem tswj tau li cas k9s ua haujlwm siv cov lus txib - piv txwv li, saib cov npe ntawm StatefulSets (hauv lub npe tam sim no) koj tuaj yeem nkag mus :sts.

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Rau qee qhov kev pabcuam Kubernetes:

  • :ns - Cov npe;
  • :deploy - Kev xa tawm;
  • :ing - Ingress;
  • :svc - Kev pabcuam.

Txhawm rau tso tawm cov npe ua tiav ntawm cov peev txheej muaj rau saib, muaj lus txib :aliases.

Nws tseem yog qhov yooj yim los saib cov npe ntawm cov lus txib muaj los ntawm kev sib txuas ntawm hotkey hauv lub qhov rais tam sim no: ua qhov no, tsuas yog nyem rau ntawm "?".

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Kuj muaj k9s nrhiav hom, mus rau qhov koj tsuas yog yuav tsum nkag mus rau "/". Nws tshawb los ntawm cov ntsiab lus ntawm "qhov rais" tam sim no. Piv txwv li, yog tias koj tau nkag mus dhau los :ns, koj muaj ib daim ntawv teev npe chaw qhib. Yog hais tias muaj ntau dhau lawm, ces nyob rau hauv thiaj li tsis mus scroll down rau ntev, cia li nkag mus rau hauv lub qhov rais nrog namespaces /mynamespace.

Txhawm rau tshawb nrhiav los ntawm cov ntawv sau, koj tuaj yeem xaiv tag nrho cov pods hauv qhov xav tau lub npe, thiab tom qab ntawd nkag mus, piv txwv li, / -l app=whoami. Peb yuav tau txais ib daim ntawv teev cov pods nrog daim ntawv lo:

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Kev tshawb nrhiav ua haujlwm hauv txhua hom qhov rais, suav nrog cov cav, saib YAML manifests thiab describe rau cov peev txheej - saib hauv qab no kom paub ntau ntxiv txog cov peev txheej no.

Tag nrho cov navigation ntws zoo li cas?

Siv cov lus txib :ctx koj tuaj yeem xaiv cov ntsiab lus:

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Txhawm rau xaiv lub namespace muaj cov lus txib uas twb tau hais lawm :ns, thiab tom qab ntawd koj tuaj yeem siv qhov kev tshawb nrhiav rau qhov chaw xav tau: /test.

Yog tias peb tam sim no xaiv cov peev txheej uas peb xav tau (piv txwv li, tib StatefulSet), cov ntaub ntawv sib raug zoo yuav tshwm sim rau nws: pes tsawg lub pods khiav nrog cov ntaub ntawv luv luv txog lawv.

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Tsuas yog pods tej zaum yuav txaus siab - ces cia li nkag :pod. Nyob rau hauv rooj plaub ntawm ConfigMaps (:cm - rau cov npe ntawm cov peev txheej no) koj tuaj yeem xaiv cov khoom nyiam thiab nyem rau ntawm "u", tom qab ntawd K9s yuav qhia koj tias leej twg (CM no) siv nws.

Lwm qhov yooj yim rau kev saib cov peev txheej yog lawv "X-ray" (XRay saib). Hom no yog hu los ntawm cov lus txib :xray RESOURCE thiab... nws yooj yim dua los qhia nws ua haujlwm li cas dua li piav qhia. Nov yog ib qho piv txwv rau StatefulSets:

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes
(Txhua qhov kev pabcuam no tuaj yeem hloov kho, hloov pauv, ua describe.)

Thiab ntawm no yog Deployment nrog Ingress:

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Ua haujlwm nrog Kev Pabcuam

Cov ntaub ntawv hais txog txhua qhov peev txheej tuaj yeem muab tau hauv YAML lossis nws describe los ntawm nias cov keyboard shortcuts uas tsim nyog ("y" thiab "d" feem). Muaj, ntawm chav kawm, txawm ntau yooj yim ua hauj lwm: lawv cov npe thiab keyboard shortcuts yeej ib txwm pom ua tsaug rau ib tug yooj yim "header" nyob rau hauv lub interface (ntxiv los ntawm nias Ctrl + e).

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Thaum kho cov peev txheej ("e" tom qab xaiv nws), cov ntawv nyeem tau teev tseg hauv ib puag ncig hloov pauv (export EDITOR=vim).

Thiab ntawm no yog qhov kev piav qhia ntxaws ntawm cov peev txheej zoo li (describe):

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Cov zis no (los yog cov zis ntawm kev saib YAML manifest ntawm ib qho chaw) tuaj yeem khaws cia siv cov keyboard luv luv Ctrl + s. Qhov twg nws yuav tau txais kev cawmdim yuav paub los ntawm K9s cov lus:

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

Koj tuaj yeem rov qab tau cov peev txheej los ntawm cov ntaub ntawv thaub qab tsim los ntawm kev tshem tawm cov ntawv sau ua ntej thiab cov lus piav qhia. Txhawm rau ua qhov no, koj yuav tsum mus rau cov npe nrog lawv (:dir /tmp), ces xaiv cov ntaub ntawv xav tau thiab siv apply.

Los ntawm txoj kev, txhua lub sijhawm koj tuaj yeem rov qab mus rau yav dhau los ReplicaSet yog tias muaj teeb meem nrog qhov tam sim no. Txhawm rau ua qhov no, koj yuav tsum xaiv qhov xav tau RS (:rs rau lawv cov npe):

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

... thiab rov qab siv Ctrl + l. Peb yuav tsum tau txais kev ceeb toom tias txhua yam ua tiav:

k9s/whoami-5cfbdbb469 successfully rolled back

Thiab txhawm rau ntsuas qhov hloov pauv, tsuas yog nyem rau ntawm "s" (scale) thiab xaiv tus lej yuav tsum tau luam tawm:

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Koj tuaj yeem nkag mus rau ib qho ntawm cov thawv uas siv lub plhaub: ua li no, mus rau qhov xav tau pod, nyem rau ntawm "s" (plhaub) thiab xaiv lub thawv.

Lwm yam nta

Tau kawg, saib cov cav kuj tau txais kev txhawb nqa ("l" rau cov peev txheej xaiv). Thiab txhawm rau saib cov cav tshiab, tsis tas yuav tsum nias Enter: tsuas yog ua lub cim ("m"), thiab tom qab ntawd saib xyuas cov lus tshiab xwb.

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Tsis tas li ntawd nyob rau hauv tib lub qhov rais koj tuaj yeem xaiv lub sijhawm ntau rau kev tso tawm cov cav:

  • yuam "1" - hauv 1 feeb;
  • "2" - 5 feeb;
  • "3" - 15 feeb;
  • "4" - 30 feeb;
  • "5" - 1 teev;
  • "0" - rau tag nrho lub neej ntawm lub pod.

Tshwj xeeb kev khiav hauj lwm hom Pulse (hais kom :pulse) qhia cov ntaub ntawv dav dav txog Kubernetes pawg:

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Hauv nws koj tuaj yeem pom cov naj npawb ntawm cov peev txheej thiab lawv cov xwm txheej (cov uas muaj xwm txheej tau pom hauv ntsuab Running).

Lwm qhov nthuav dav ntawm K9s hu ua Popeye. Nws tshawb xyuas tag nrho cov peev txheej rau qee yam kev raug thiab qhia qhov tshwm sim "kev ntsuas" nrog cov lus piav qhia. Piv txwv li, koj tuaj yeem pom tias tsis muaj cov qauv txaus lossis txwv, thiab qee lub thawv tuaj yeem khiav raws li hauv paus ...

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Muaj kev txhawb nqa Helm. Piv txwv li, qhov no yog qhov koj tuaj yeem saib cov kev tso tawm xa mus rau pawg:

:helm all # всС
:helm $namespace # Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ пространствС ΠΈΠΌΠ΅Π½

benchmark

Lawv txawm ua nws rau hauv K9s hav yog lub tshuab hluav taws xob thauj khoom yooj yim rau HTTP neeg rau zaub mov, lwm txoj hauv kev paub ntau dua ab (ApacheBench).

Txhawm rau ua kom nws, koj yuav tsum tau qhib qhov chaw nres nkoj-rau pem hauv ntej hauv lub pod. Txhawm rau ua qhov no, xaiv pod thiab nias Shift + f, mus rau qhov chaw nres nkoj-rau pem hauv ntej submenu siv lub npe "pf".

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Tom qab xaiv qhov chaw nres nkoj thiab nias Ctrl + b, qhov ntsuas nws tus kheej yuav pib. Cov txiaj ntsig ntawm nws txoj haujlwm tau muab khaws cia rau hauv /tmp thiab muaj nyob rau tom qab saib hauv K9s.

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes
Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Txhawm rau hloov qhov kev teeb tsa benchmark koj yuav tsum tsim cov ntaub ntawv $HOME/.k9s/bench-<my_context>.yml (txhais tau rau txhua pawg).

NB: Nws yog ib qho tseem ceeb uas qhov txuas ntxiv ntawm tag nrho cov ntaub ntawv YAML hauv cov npe .k9s nws yog raws nraim .yml (.yaml ua haujlwm tsis raug).

Configuration piv txwv:

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

interface

Cov tsos ntawm cov kab rau cov npe cov ntaub ntawv tau hloov kho los ntawm kev tsim cov ntaub ntawv $HOME/.k9s/views.yml. Ib qho piv txwv ntawm nws cov ntsiab lus:

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

Muaj tseeb, tsis muaj kab ntawv txaus rau cov ntawv, uas muaj teeb meem hauv qhov project.

Kev txheeb xyuas los ntawm kab yog ua los ntawm cov keyboard shortcuts:

  • Hloov + n - los ntawm lub npe;
  • Hloov + o - los ntawm cov leeg;
  • Shift + i - los ntawm IP;
  • Hloov + a - los ntawm lub neej ntim khoom;
  • Hloov + t - los ntawm tus naj npawb ntawm rov pib dua;
  • Hloov + r - los ntawm kev npaj txhij;
  • Hloov + c - los ntawm CPU noj;
  • Hloov + m - los ntawm kev nco noj.

Yog hais tias ib tug neeg tsis nyiam lub hom phiaj xim, K9s txawm txhawb tawv nqaij. Npaj ua piv txwv (7 daim) muaj no. Ntawm no yog ib qho piv txwv ntawm ib qho ntawm cov tawv nqaij no (hauv navy):

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Plugins

Thaum kawg plugins cia koj nthuav lub peev xwm ntawm K9s. Kuv tus kheej tsuas yog siv ib qho ntawm lawv hauv kuv txoj haujlwm - kubectl get all -n $namespace.

Zoo li no. Tsim ib cov ntaub ntawv $HOME/.k9s/plugin.yml nrog cov ntsiab lus zoo li no:

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"

Tam sim no koj tuaj yeem mus rau lub npe chaw thiab nias "g" kom ua tiav cov lus txib:

Txheej txheem cej luam ntawm k9s - lub davhlau ya nyob twg siab heev rau Kubernetes

Ntawm cov plugins muaj, piv txwv li, kev koom ua ke nrog kubectl-jq thiab cov khoom siv rau saib cov cav. tawv nqaij.

xaus

Rau kuv saj, K9s tig tawm los siv tau yooj yim heev: nrog nws koj tuaj yeem siv sai sai los nrhiav txhua yam koj xav tau yam tsis siv. kubectl. Kuv txaus siab rau kev saib cov cav thiab txuag lawv, kho cov peev txheej ceev, kev ua haujlwm nrawm *, Popeye hom tau ua kom muaj txiaj ntsig. Cov lus tshwj xeeb yuav tsum tau ua los ntawm lub peev xwm los tsim plugins thiab kho cov ntawv thov kom haum rau koj cov kev xav tau.

* Txawm hais tias, nrog lub ntim loj ntawm cov cav, kuv kuj pom kev ua haujlwm qeeb ntawm K9s. Nyob rau lub sijhawm zoo li no, cov nqi hluav taws xob "noj" 2 cores ntawm Intel Xeon E312xx thiab tuaj yeem khov.

Dab tsi yog ploj lawm tam sim no? Ceev rollback rau yav dhau los version (peb tsis tau tham txog RS) yam tsis tau mus rau hauv phau ntawv. Tsis tas li ntawd, kev kho dua tshiab tsuas yog tshwm sim rau tag nrho cov ntaub ntawv: yog tias koj tshem tawm cov lus piav qhia lossis daim ntawv lo, koj yuav tsum rho tawm thiab rov qab tag nrho cov peev txheej (qhov no yog qhov koj yuav tsum tau mus rau hauv phau ntawv qhia). Lwm qhov me me yog tias hnub ntawm qhov kev cawmdim "backups" ploj lawm.

PS

Nyeem kuj ntawm peb blog:

Tau qhov twg los: www.hab.com

Ntxiv ib saib