Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Ef þú vinnur með Kubernetes, þá er kubectl líklega eitt af tólunum sem þú notar mest. Og alltaf þegar þú eyðir miklum tíma í að vinna með tiltekið verkfæri, borgar sig að læra það vel og læra hvernig á að nota það á áhrifaríkan hátt.

Team Kubernetes aaS frá Mail.ru þýddi grein eftir Daniel Weibel þar sem þú finnur ráð og brellur til að vinna á áhrifaríkan hátt með kubectl. Það mun einnig hjálpa þér að öðlast dýpri skilning á Kubernetes.

Að sögn höfundar er markmið greinarinnar að gera daglegt starf þitt með Kubernetes ekki aðeins skilvirkara, heldur líka skemmtilegra!

Inngangur: Hvað er kubectl

Áður en þú getur lært að nota kubectl á skilvirkari hátt þarftu að öðlast grunnskilning á því hvað það er og hvernig það virkar.

Frá sjónarhóli notanda er kubectl stjórnborð sem gerir þér kleift að framkvæma Kubernetes aðgerðir.

Tæknilega séð er kubectl Kubernetes API viðskiptavinur.

Kubernetes API er HTTP REST API. Þetta API er hið sanna Kubernetes notendaviðmót, þar sem því er fullkomlega stjórnað. Þetta þýðir að sérhver Kubernetes aðgerð er afhjúpuð sem API endapunktur og hægt er að gera það með HTTP beiðni á þann endapunkt.

Þess vegna er aðalstarf kubectl að gera HTTP beiðnir til Kubernetes API:

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Kubernetes er algjörlega auðlindamiðað kerfi. Þetta þýðir að það viðheldur innri stöðu auðlinda og öll Kubernetes aðgerðir eru CRUD-aðgerðir.

Þú hefur fulla stjórn á Kubernetes með því að stjórna þessum auðlindum og Kubernetes finnur út hvað á að gera út frá núverandi stöðu auðlindanna. Af þessum sökum er Kubernetes API tilvísunin skipulögð sem listi yfir auðlindagerðir með tengdum aðgerðum.

Við skulum skoða dæmi.

Segjum að þú viljir búa til ReplicaSet tilföng. Til að gera þetta lýsir þú ReplicaSetinu í skrá með nafni replicaset.yaml, keyrðu síðan skipunina:

$ kubectl create -f replicaset.yaml

Þetta mun búa til ReplicaSet tilföng. En hvað gerist á bak við tjöldin?

Kubernetes er með ReplicaSet sköpunaraðgerð. Eins og hver önnur aðgerð er hún afhjúpuð sem API endapunktur. Sérstakur API endapunktur fyrir þessa aðgerð lítur svona út:

POST /apis/apps/v1/namespaces/{namespace}/replicasets

API endapunkta fyrir allar Kubernetes aðgerðir má finna á API tilvísun (þ.m.t. ofangreindum endapunkti). Til að gera raunverulega beiðni að endapunkti, verður þú fyrst að bæta API þjónsslóðinni við endapunktsslóðirnar sem eru skráðar í API tilvísuninni.

Þess vegna, þegar þú framkvæmir ofangreinda skipun, sendir kubectl HTTP POST beiðni til ofangreinds API endapunkts. ReplicaSet skilgreiningin sem þú gafst upp í skránni replicaset.yaml, er sent í meginmáli beiðninnar.

Svona virkar kubectl fyrir allar skipanir sem hafa samskipti við Kubernetes klasann. Í öllum þessum tilvikum gerir kubectl einfaldlega HTTP beiðnir til viðeigandi Kubernetes API endapunkta.

Vinsamlegast athugaðu að þú getur stjórnað Kubernetes að fullu með því að nota tól eins og curlmeð því að senda HTTP beiðnir handvirkt til Kubernetes API. Kubectl gerir það einfaldlega auðveldara að nota Kubernetes API.

Þetta er grunnatriði hvað kubectl er og hvernig það virkar. En það er eitthvað annað við Kubernetes API sem allir kubectl notendur ættu að vita. Við skulum líta fljótt inn í innri heim Kubernetes.

Innri heimur Kubernetes

Kubernetes samanstendur af mengi óháðra íhluta sem keyra sem aðskilin ferli á klasahnútum. Sumir íhlutir keyra á aðalhnútum, aðrir á starfshnútum, þar sem hver íhlutur sinnir sínu tiltekna verkefni.

Hér eru mikilvægustu þættirnir á helstu hnútum:

  1. geymsla - geymir auðlindaskilgreiningar (venjulega er það etcd).
  2. API þjónn — veitir API og stjórnar geymslu.
  3. Stjórnandi stjórnandi — Tryggir að auðlindastaða sé í samræmi við forskriftir.
  4. Dagskrármaður — skipuleggur belg á starfshnútum.

Og hér er einn mikilvægasti þátturinn í starfsmannahnútunum:

  1. kúbelet — stjórnar ræsingu gáma á vinnuhnútnum.

Til að skilja hvernig þessir þættir vinna saman skulum við skoða dæmi.

Gerum ráð fyrir að þú sért nýbúinn kubectl create -f replicaset.yaml, eftir það gerði kubectl HTTP POST beiðni til Endpoint ReplicaSet API (Stendur ReplicaSet auðlindaskilgreininguna).

Hvað er að gerast í þyrpingunni?

  1. Eftir að hafa gert kubectl create -f replicaset.yaml API þjónninn geymir ReplicaSet auðlindaskilgreininguna þína í geymslu:

    Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir

  2. Næst er ReplicaSet stjórnandinn ræstur í stjórnandastjóranum, sem sér um að búa til, breyta og eyða ReplicaSet tilföngum:

    Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir

  3. ReplicaSet stjórnandi býr til fræbelgsskilgreiningu fyrir hverja ReplicaSet eftirmynd (samkvæmt fræbelgssniðmátinu í ReplicaSet skilgreiningunni) og geymir þær í geymslu:

    Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir

  4. Tímaáætlunin er ræst og rekur belg sem ekki hefur enn verið úthlutað á neina starfshnúta:

    Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir

  5. Tímaáætlunin velur viðeigandi starfshnút fyrir hvern belg og bætir þessum upplýsingum við belgskilgreininguna í versluninni:

    Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir

  6. Á vinnuhnútnum sem belgnum er úthlutað til, er Kubelet ræst, það rekur belg sem úthlutað er á þennan hnút:

    Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir

  7. Kubelet les belgskilgreininguna úr geymslu og gefur fyrirmæli fyrir gámakeyrslu, eins og Docker, um að ræsa gáma á hnútnum:

    Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir

Hér að neðan er textaútgáfa af þessari lýsingu.

API-beiðnin til ReplicaSet stofnunarendapunktsins er unnin af API þjóninum. API þjónninn sannvotir beiðnina og geymir ReplicaSet auðlindaskilgreininguna í geymslu.

Þetta tilvik ræsir ReplicaSet stjórnandi, sem er undirferli stjórnanda stjórnanda. ReplicaSet stjórnandi fylgist með stofnun, uppfærslu og eyðingu ReplicaSet auðlinda í versluninni og fær tilkynningu um atburð þegar þetta gerist.

Hlutverk ReplicaSet stjórnandans er að tryggja að nauðsynlegur fjöldi ReplicaSet-belgja sé til. Í dæminu okkar eru engir fræbelgir til ennþá, þannig að ReplicaSet stjórnandi býr til þessar podskilgreiningar (samkvæmt fræbelgsniðmátinu í ReplicaSet skilgreiningunni) og geymir þær í geymslu.

Stofnun nýrra belg er hrundið af stað af tímaáætlun sem heldur utan um skilgreiningar belgs sem ekki eru enn áætlaðar fyrir starfshnúta. Tímaáætlunin velur hentugan starfshnút fyrir hvern belg og uppfærir belgskilgreiningarnar í geymslunni.

Athugaðu að fram að þessum tímapunkti var enginn vinnuálagskóði í gangi neins staðar í þyrpingunni. Allt sem hefur verið gert hingað til - þetta er stofnun og uppfærsla á tilföngum í geymslunni á aðalhnútnum.

Síðasti atburðurinn kveikir á Kubelets, sem fylgjast með belgunum sem eru áætluð fyrir vinnuhnúta þeirra. Kubelet vinnuhnútsins sem ReplicaSet belgirnir þínir eru settir upp á verður að gefa fyrirmæli fyrir keyrslutíma gámans, eins og Docker, að hlaða niður nauðsynlegum gámamyndum og keyra þær.

Á þessum tímapunkti er ReplicaSet forritið þitt loksins í gangi!

Hlutverk Kubernetes API

Eins og þú sást í fyrra dæmi, horfa Kubernetes íhlutir (að undanskildum API miðlara og geymslu) eftir breytingum á tilföngum í geymslu og breyta upplýsingum um tilföng í geymslu.

Auðvitað hafa þessir þættir ekki samskipti við geymsluna beint, heldur aðeins í gegnum Kubernetes API.

Skoðum eftirfarandi dæmi:

  1. ReplicaSet stjórnandi notar API endapunktinn lista ReplicaSets með færibreytu watch til að fylgjast með breytingum á ReplicaSet tilföngum.
  2. ReplicaSet stjórnandi notar API endapunktinn búa til Pod (búa til fræbelgur) til að búa til fræbelg.
  3. Tímaáætlun notar API endapunkt patch pod (edit pod) til að uppfæra pods með upplýsingum um valda starfshnút.

Eins og þú sérð er þetta sama API og kubectl opnar. Að nota sama API fyrir innri hluti og ytri notendur er grundvallarhugtak í Kubernetes hönnun.

Nú getum við dregið saman hvernig Kubernetes virkar:

  1. Geymslugeymslurnar segja til um, það er Kubernetes auðlindir.
  2. API þjónninn veitir viðmót við geymsluna í formi Kubernetes API.
  3. Allir aðrir Kubernetes íhlutir og notendur lesa, fylgjast með og vinna með Kubernetes ástand (tilföng) í gegnum API.

Að þekkja þessi hugtök mun hjálpa þér að skilja kubectl betur og fá sem mest út úr því.

Nú skulum við skoða nokkur sérstök ráð og brellur sem munu hjálpa til við að bæta framleiðni þína með kubectl.

1. Flýttu inntakinu með því að ljúka skipunum

Ein gagnlegasta, en oft gleymist, tækni til að bæta árangur með kubectl er að ljúka skipunum.

Að ljúka skipunum gerir þér kleift að ljúka sjálfkrafa hluta af kubectl skipunum með því að nota Tab takkann. Þetta virkar fyrir undirskipanir, valkosti og rök, þar á meðal eitthvað eins flókið og auðlindaheiti.

Sjáðu hvernig kubectl skipanaútfylling virkar:

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Skipunarlok virka fyrir Bash og Zsh skeljar.

Opinber leiðarvísir inniheldur nákvæmar leiðbeiningar um uppsetningu sjálfvirkrar útfyllingar, en hér að neðan munum við gefa stuttan útdrátt.

Hvernig skipanalok virka

Skipunarfrágangur er skeleiginleiki sem virkar með því að nota lokaforskrift. Framlengingarforskrift er skeljaforskrift sem skilgreinir hegðun framlengingar fyrir tiltekna skipun.

Kubectl býr sjálfkrafa til og gefur út framlengingarforskriftir fyrir Bash og Zsh með því að nota eftirfarandi skipanir:

$ kubectl completion bash

Eða:

$ kubectl completion zsh

Í orði, það er nóg að tengja úttak þessara skipana við viðeigandi skipanaskel svo að kubectl geti bætt skipanirnar.

Í reynd er tengiaðferðin önnur fyrir Bash (þar á meðal munur á Linux og MacOS) og Zsh. Hér að neðan munum við skoða alla þessa valkosti.

Bash á Linux

Bash completion handritið fer eftir bash-completion pakkanum, svo þú þarft að setja það upp fyrst:

$ sudo apt-get install bash-completion

Eða:

$ yum install bash-completion

Þú getur prófað að pakkinn sé settur upp með eftirfarandi skipun:

$ type _init_completion

Ef þetta gefur út skeljavirknikóða, þá er bash-completion rétt uppsett. Ef skipunin gefur "Finn ekki" villu þarftu að bæta eftirfarandi línu við skrána þína ~ / .bashrc:

$ source /usr/share/bash-completion/bash_completion

Er nauðsynlegt að bæta þessari línu við skrána ~ / .bashrc eða ekki fer eftir pakkastjóranum sem þú notaðir til að setja upp bash-completion. Þetta er nauðsynlegt fyrir APT, en ekki fyrir YUM.

Eftir að þú hefur sett upp bash-completion þarftu að stilla allt þannig að kubectl completion scriptið sé virkt í öllum skellotum.

Ein leið til að gera þetta er að bæta eftirfarandi línu við skrána ~ / .bashrc:

source <(kubectl completion bash)

Önnur leið er að bæta kubectl viðbótinni við möppuna /etc/bash_completion.d (búið til ef það er ekki til):

$ kubectl completion bash >/etc/bash_completion.d/kubectl

Öll viðbótarforskrift í vörulistanum /etc/bash_completion.d eru sjálfkrafa innifalin í bash-lokun.

Báðir valkostirnir eiga jafnt við.

Eftir að skelin hefur verið endurræst mun kubectl skipunin virka.

Bash á MacOS

Á MacOS er uppsetningin aðeins flóknari. Staðreyndin er sú að sjálfgefið er að MacOS notar Bash útgáfu 3.2 og kubectl sjálfvirka útfyllingarhandritið krefst Bash útgáfu af að minnsta kosti 4.1 og virkar ekki í Bash 3.2.

Það eru leyfisvandamál tengd því að nota úrelta útgáfu af Bash á MacOS. Bash útgáfa 4 er með leyfi samkvæmt GPLv3, sem er ekki studd af Apple.

Til að stilla sjálfvirka útfyllingu kubectl á MacOS þarftu að setja upp nýrri útgáfu af Bash. Þú getur líka stillt uppfærða Bash sem sjálfgefna skel þína, sem mun spara þér mörg vandamál í framtíðinni. Það er ekki erfitt, upplýsingar eru gefnar í greininni “Uppfærir Bash á MacOS'.

Áður en þú heldur áfram skaltu ganga úr skugga um að þú sért að nota nýlega útgáfu af Bash (athugaðu úttakið bash --version).

Bash-lokunarhandrit er mismunandi eftir verkefnum bash-lokun, svo þú þarft að setja það upp fyrst.

Þú getur sett upp bash-completion með því að nota Homebrew:

$ brew install bash-completion@2

Hér @2 stendur fyrir bash-completion version 2. kubectl autocompletion krefst bash-completion v2, og bash-completion v2 krefst að lágmarki Bash útgáfu 4.1.

Skipunarúttak brew-install inniheldur varnaðarhluta, sem tilgreinir hvað þarf að bæta við skrána ~/.bash_profile:

export BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . 
"/usr/local/etc/profile.d/bash_completion.sh"

Hins vegar mæli ég með því að bæta þessum línum ekki við ~/.bash_profile, og inn ~/.bashrc. Í þessu tilviki verður sjálfvirk útfylling ekki aðeins tiltæk í aðal, heldur einnig í barnaskipanaskeljum.

Eftir að hafa endurræst skipanaskelina geturðu staðfest að uppsetningin sé rétt með því að nota eftirfarandi skipun:

$ type _init_completion

Ef þú sérð skeljaaðgerð í úttakinu, þá er allt rétt stillt.

Nú þurfum við að tryggja að kubectl sjálfvirk útfylling sé virkjuð í öllum lotum.

Ein leið er að bæta eftirfarandi línu við þitt ~/.bashrc:

source <(kubectl completion bash)

Önnur leiðin er að bæta sjálfvirkri útfyllingarskrift við möppuna /usr/local/etc/bash_completion.d:

$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectl

Þessi aðferð virkar aðeins ef þú settir upp bash-completion með Homebrew. Í þessu tilviki hleður bash-completion öll forskriftir úr þessari möppu.

Ef þú settir upp kubectl með Homebrew, þá er engin þörf á að framkvæma fyrra skrefið, þar sem sjálfvirka útfyllingarhandritið verður sjálfkrafa sett í möppuna /usr/local/etc/bash_completion.d við uppsetningu. Í þessu tilviki mun kubectl sjálfvirk útfylling byrja að virka um leið og þú setur upp bash-completion.

Þess vegna eru allir þessir valkostir jafngildir.

zsh

Sjálfvirk útfyllingarforskriftir fyrir Zsh þurfa ekki neinar ósjálfstæði. Allt sem þú þarft að gera er að virkja þau þegar þú hleður skipanaskelinni.

Þú getur gert þetta með því að bæta línu við þitt ~/.zshrc skrá:

source <(kubectl completion zsh)

Ef þú færð villu not found: compdef eftir að þú hefur endurræst skelina þína þarftu að virkja innbyggðu aðgerðina compdef. Þú getur virkjað það með því að bæta því við upphaf skrárinnar ~/.zshrc eftirfarandi:

autoload -Uz compinit
compinit

2. Skoðaðu auðlindaforskriftir fljótt

Þegar þú býrð til YAML auðlindaskilgreiningar þarftu að þekkja reitina og merkingu þeirra fyrir þær auðlindir. Einn staður til að leita að þessum upplýsingum er í API tilvísuninni, sem inniheldur fullkomnar forskriftir fyrir öll tilföng.

Hins vegar er óþægilegt að skipta yfir í vafra í hvert skipti sem þú þarft að leita að einhverju. Þess vegna gefur kubectl skipunina kubectl explain, sem sýnir forskriftir allra auðlinda beint í flugstöðinni þinni.

Skipunarsniðið er sem hér segir:

$ kubectl explain resource[.field]...

Skipunin mun gefa út forskrift umbeðinnar auðlindar eða reits. Upplýsingarnar sem birtast eru þær sömu og í API handbókinni.

Sjálfgefið kubectl explain sýnir aðeins fyrsta stig varps á túnum.

Sjáðu hvernig það lítur út Þú getur þá.

Þú getur sýnt allt tréð ef þú bætir við valkostinum --recursive:

$ kubectl explain deployment.spec --recursive

Ef þú veist ekki nákvæmlega hvaða auðlindir eru nauðsynlegar geturðu birt þau öll með eftirfarandi skipun:

$ kubectl api-resources

Þessi skipun sýnir auðlindanöfn í fleirtölu, t.d. deployments í staðinn fyrir deployment. Það sýnir einnig stutt nafnið, til dæmis deploy, fyrir þær auðlindir sem hafa það. Ekki hafa áhyggjur af þessum mun. Allir þessir nafnakostir eru jafngildir fyrir kubectl. Það er, þú getur notað hvaða þeirra sem er kubectl explain.

Allar eftirfarandi skipanir eru jafngildar:

$ kubectl explain deployments.spec
# или
$ kubectl explain deployment.spec
# или        
$ kubectl explain deploy.spec

3. Notaðu sérsniðið dálkúttakssnið

Sjálfgefið úttakssnið skipunar kubectl get:

$ kubectl get pods
NAME                     READY    STATUS    RESTARTS  AGE
engine-544b6b6467-22qr6   1/1     Running     0       78d
engine-544b6b6467-lw5t8   1/1     Running     0       78d
engine-544b6b6467-tvgmg   1/1     Running     0       78d
web-ui-6db964458-8pdw4    1/1     Running     0       78d

Þetta snið er þægilegt, en það inniheldur takmarkað magn upplýsinga. Í samanburði við skilgreiningarsniðið í heild sinni eru aðeins nokkrir reitir sýndir hér.

Í þessu tilviki geturðu notað sérsniðið dálkúttakssnið. Það gerir þér kleift að ákvarða hvaða gögn á að gefa út. Þú getur birt hvaða tilfangsreit sem er sem sérstakan dálk.

Notkun sérsniðins sniðs er ákvörðuð með því að nota valkostina:

-o custom-columns=<header>:<jsonpath>[,<header>:<jsonpath>]...

Þú getur skilgreint hvern úttaksdálk sem par <header>:<jsonpath>hvar <header> er dálknafnið, og <jsonpath> — tjáning sem skilgreinir auðlindareit.

Við skulum skoða einfalt dæmi:

$ kubectl get pods -o custom-columns='NAME:metadata.name'

NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4

Úttakið inniheldur einn dálk með nöfnum belgjanna.

Valkostatjáningin velur fræbelgsnöfnin úr reitnum metadata.name. Þetta er vegna þess að nafn belgsins er skilgreint í barnanafnareitnum metadata í auðlindalýsingu belgsins. Nánari upplýsingar er að finna í API leiðarvísir eða sláðu inn skipunina kubectl explain pod.metadata.name.

Segjum nú að þú viljir bæta auka dálki við úttakið, til dæmis að sýna hnútinn sem hver fræbelgur keyrir á. Til að gera þetta geturðu einfaldlega bætt viðeigandi dálkaforskrift við valmöguleikann fyrir sérsniðna dálka:

$ kubectl get pods 
  -o custom-columns='NAME:metadata.name,NODE:spec.nodeName'

NAME                       NODE
engine-544b6b6467-22qr6    ip-10-0-80-67.ec2.internal
engine-544b6b6467-lw5t8    ip-10-0-36-80.ec2.internal
engine-544b6b6467-tvgmg    ip-10-0-118-34.ec2.internal
web-ui-6db964458-8pdw4     ip-10-0-118-34.ec2.internal

Tjáningin velur hnútsheitið úr spec.nodeName — þegar belg er úthlutað hnút er nafn hans skrifað í reitinn spec.nodeName forskrift pod auðlinda. Nánari upplýsingar er að finna í úttakinu kubectl explain pod.spec.nodeName.

Vinsamlegast athugaðu að Kubernetes tilföngareitir eru hástafaviðkvæmir.

Þú getur skoðað hvaða tilfangsreit sem er sem dálk. Farðu bara yfir auðlindaforskriftina og prófaðu hana með hvaða sviðum sem þú vilt.

En fyrst skulum við skoða orðatiltæki fyrir val á sviði.

JSONPath tjáningar

Tjáningar til að velja tilföngareiti eru byggðar á JSONPath.

JSONPath er tungumál til að sækja gögn úr JSON skjölum. Að velja einn reit er einfaldasta notkunartilvikið fyrir JSONPath. Hann á mikið fleiri möguleika, þar á meðal veljara, síur og svo framvegis.

Kubectl explain styður takmarkaðan fjölda JSONPath eiginleika. Möguleikum og dæmum um notkun þeirra er lýst hér að neðan:

# Выбрать все элементы списка
$ kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
# Выбрать специфический элемент списка
$ kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
# Выбрать элементы списка, попадающие под фильтр
$ kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
# Выбрать все поля по указанному пути, независимо от их имени
$ kubectl get pods -o custom-columns='DATA:metadata.*'
# Выбрать все поля с указанным именем, вне зависимости от их расположения
$ kubectl get pods -o custom-columns='DATA:..image'

[] rekstraraðilinn er sérstaklega mikilvægur. Margir Kubernetes tilföngareitir eru listar og þessi stjórnandi gerir þér kleift að velja meðlimi þessara lista. Það er oft notað með algildisstaf eins og [*] til að velja alla þætti lista.

Dæmi um notkun

Möguleikarnir á því að nota sérsniðið dálkaúttakssnið eru óþrjótandi, þar sem þú getur sýnt hvaða reit sem er eða samsetning tilfangareita í úttakinu. Hér eru nokkur sýnishorn af forritum, en ekki hika við að kanna þau sjálfur og finna forrit sem virka fyrir þig.

  1. Sýnir ílátsmyndir fyrir belg:
    $ kubectl get pods 
      -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
    
    NAME                        IMAGES
    engine-544b6b6467-22qr6     rabbitmq:3.7.8-management,nginx
    engine-544b6b6467-lw5t8     rabbitmq:3.7.8-management,nginx
    engine-544b6b6467-tvgmg     rabbitmq:3.7.8-management,nginx
    web-ui-6db964458-8pdw4      wordpress

    Þessi skipun sýnir nöfn gámamynda fyrir hvern belg.

    Mundu að belg getur innihaldið nokkra ílát, þá birtast myndnöfnin á einni línu, aðskilin með kommum.

  2. Sýnir tiltæk svæði fyrir hnút:
    $ kubectl get nodes 
      -o 
    custom-columns='NAME:metadata.name,ZONE:metadata.labels.failure-domain.beta.kubernetes.io/zone'
    
    NAME                          ZONE
    ip-10-0-118-34.ec2.internal   us-east-1b
    ip-10-0-36-80.ec2.internal    us-east-1a
    ip-10-0-80-67.ec2.internal    us-east-1b

    Þessi skipun er gagnleg ef þyrpingin þín er hýst í almenningsskýi. Það sýnir framboðssvæðið fyrir hvern hnút.

    Aðgengissvæði er skýjahugtak sem takmarkar afritunarsvæðið við landfræðilegt svæði.

    Aðgengissvæði fyrir hvern hnút fást með sérstöku merki - failure-domain.beta.kubernetes.io/zone. Ef þyrpingin er í gangi í almennu skýi er þetta merki búið til sjálfkrafa og fyllt með nöfnum tiltæka svæða fyrir hvern hnút.

    Merki eru ekki hluti af Kubernetes auðlindaforskriftinni, svo þú finnur ekki upplýsingar um þau í API leiðarvísir. Hins vegar er hægt að sjá þau (eins og önnur merki) ef þú biður um upplýsingar um hnútana á YAML eða JSON sniði:

    $ kubectl get nodes -o yaml
    # или
    $ kubectl get nodes -o json

    Þetta er frábær leið til að læra meira um auðlindir, auk þess að læra auðlindaforskriftir.

4. Skiptu auðveldlega á milli klasa og nafna

Þegar kubectl leggur fram beiðni til Kubernetes API, les það fyrst kubeconfig skrána til að fá allar nauðsynlegar breytur fyrir tenginguna.

Sjálfgefið er að kubeconfig skráin er ~/.kube/config. Venjulega er þessi skrá búin til eða uppfærð með sérstakri skipun.

Þegar þú vinnur með marga klasa inniheldur kubeconfig skráin þín stillingar fyrir tengingu við alla þessa klasa. Þú þarft leið til að segja kubectl skipuninni hvaða klasa þú ert að vinna með.

Innan klasa er hægt að búa til mörg nafnrými — gerð sýndarklasa innan líkamlegs klasa. Kubectl ákvarðar einnig hvaða nafnrými á að nota byggt á kubeconfig skránni. Þetta þýðir að þú þarft líka leið til að segja kubectl skipuninni hvaða nafnrými á að vinna með.

Í þessum kafla munum við útskýra hvernig það virkar og hvernig á að láta það virka á áhrifaríkan hátt.

Athugaðu að þú gætir verið með margar kubeconfig skrár skráðar í KUBECONFIG umhverfisbreytunni. Í þessu tilviki verða allar þessar skrár sameinaðar í eina sameiginlega uppsetningu á keyrslutíma. Þú getur líka breytt sjálfgefna kubeconfig skránni með því að keyra kubectl með færibreytunni --kubeconfig. Sjáðu opinber skjöl.

kubeconfig skrár

Við skulum sjá hvað nákvæmlega kubeconfig skráin inniheldur:

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Eins og þú sérð inniheldur kubeconfig skráin sett af samhengi. Samhengi samanstendur af þremur þáttum:

  • Cluster — API vefslóð klasaþjónsins.
  • Notandi - auðkenningarskilríki notanda í klasanum.
  • Nafnarými - nafnrýmið sem notað er þegar tengt er við þyrpinguna.

Í reynd nota þeir oft eitt samhengi fyrir hvern klasa í kubeconfig þeirra. Hins vegar geturðu haft mörg samhengi í hverjum klasa, aðgreind eftir notanda eða nafnrými. Hins vegar er þessi fjölsamhengi uppsetning sjaldgæf, þannig að það er venjulega einstaklingsbundin kortlagning á milli klasa og samhengis.

Á hverjum tíma er eitt af samhengjunum núverandi:

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Þegar kubectl les stillingarskrá tekur hún alltaf upplýsingar úr núverandi samhengi. Í dæminu hér að ofan mun kubectl tengjast Hare þyrpingunni.

Í samræmi við það, til að skipta yfir í annan klasa, þarftu að breyta núverandi samhengi í kubeconfig skránni:

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Nú mun kubectl tengjast Fox þyrpingunni.

Til að skipta yfir í annað nafnrými í sama þyrpingunni þarftu að breyta gildi nafnarýmisins fyrir núverandi samhengi:

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Í dæminu hér að ofan mun kubectl nota Prod nafnrými Fox þyrpingarinnar (áður var prófnafnarýmið stillt).

Athugaðu að kubectl býður einnig upp á valkosti --cluster, --user, --namespace и --context, sem gerir þér kleift að skrifa yfir einstaka þætti og núverandi samhengi sjálft, óháð því hvað er stillt í kubeconfig. Sjáðu kubectl options.

Fræðilega séð geturðu breytt stillingunum handvirkt í kubeconfig. En það er óþægilegt. Til að einfalda þessar aðgerðir eru ýmis tól sem gera þér kleift að breyta breytum sjálfkrafa.

Notaðu kubectx

Mjög vinsælt tól til að skipta á milli klasa og nafna.

Tækið veitir skipanir kubectx и kubens til að breyta núverandi samhengi og nafnrými í sömu röð.

Eins og fram hefur komið þýðir það að breyta núverandi samhengi að breyta klasanum ef þú hefur aðeins eitt samhengi á hvern klasa.

Hér er dæmi um að keyra þessar skipanir:

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Í meginatriðum breyta þessar skipanir einfaldlega kubeconfig skrána eins og lýst er hér að ofan.

að setja upp kubectx, fylgdu leiðbeiningunum á Github.

Báðar skipanirnar styðja sjálfvirka útfyllingu samhengis- og nafnrýmisheita, sem útilokar þörfina á að slá þau alveg inn. Leiðbeiningar um uppsetningu sjálfvirkrar útfyllingar hér.

Annar gagnlegur eiginleiki kubectx er gagnvirka stillingu. Það virkar í tengslum við tólið fzf, sem verður að setja upp sérstaklega. Uppsetning fzf gerir gagnvirka stillingu sjálfkrafa aðgengilega í kubectx. Gagnvirkt geturðu valið samhengi og nafnrými í gegnum gagnvirka ókeypis leitarviðmótið sem fzf býður upp á.

Að nota skeljasamnefni

Þú þarft ekki aðskilin verkfæri til að breyta núverandi samhengi og nafnrými því kubectl gefur einnig skipanir fyrir þetta. Já, lið kubectl config veitir undirskipanir til að breyta kubeconfig skrám.

Hér eru nokkrar af þeim:

  • kubectl config get-contexts: birta allt samhengi;
  • kubectl config current-context: fá núverandi samhengi;
  • kubectl config use-context: breyta núverandi samhengi;
  • kubectl config set-context: Breyttu samhengishlutanum.

Hins vegar er ekki mjög þægilegt að nota þessar skipanir beint vegna þess að þær eru langar. Þú getur búið til skeljasamnefni fyrir þá sem auðvelt er að framkvæma.

Ég bjó til safn samheita sem byggjast á þessum skipunum sem veita svipaða virkni og kubectx. Hér má sjá þá í aðgerð:

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Athugaðu að samnefni nota fzf til að bjóða upp á gagnvirkt ókeypis uppflettingarviðmót (eins og gagnvirkur hamur kubectx). Þetta þýðir að þú þarft setja upp fzfað nota þessi samheiti.

Hér eru skilgreiningar á samheitum sjálfum:

# Получить текущий контекст
alias krc='kubectl config current-context'
# Список всех контекстов
alias klc='kubectl config get-contexts -o name | sed "s/^/  /;|^  $(krc)$|s/ /*/"'
# Изменить текущий контекст
alias kcc='kubectl config use-context "$(klc | fzf -e | sed "s/^..//")"'

# Получить текущее пространство имен
alias krn='kubectl config get-contexts --no-headers "$(krc)" | awk "{print $5}" | sed "s/^$/default/"'
# Список всех пространств имен
alias kln='kubectl get -o name ns | sed "s|^.*/|  |;|^  $(krn)$|s/ /*/"'
# Изменить текущее пространство имен
alias kcn='kubectl config set-context --current --namespace "$(kln | fzf -e | sed "s/^..//")"'

Til að setja þessi samnefni þarftu að bæta ofangreindum skilgreiningum við skrána þína ~/.bashrc eða ~/.zshrc og endurræstu skelina þína.

Að nota viðbætur

Kubectl gerir þér kleift að hlaða viðbætur sem eru keyrðar á sama hátt og grunnskipanir. Þú getur til dæmis sett upp kubectl-foo viðbótina og keyrt það með því að framkvæma skipunina kubectl foo.

Það væri þægilegt að breyta samhengi og nafnrými á þennan hátt, til dæmis með því að keyra kubectl ctx að breyta samhengi og kubectl ns til að breyta nafnrýminu.

Ég hef skrifað tvær viðbætur sem gera þetta:

Vinna viðbætur er byggð á samnöfnum frá fyrri hlutanum.

Svona virka þeir:

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Athugaðu að viðbæturnar nota fzf til að bjóða upp á gagnvirkt ókeypis leitarviðmót (eins og gagnvirkur hamur kubectx). Þetta þýðir að þú þarft setja upp fzfað nota þessi samheiti.

Til að setja upp viðbætur þarftu að hlaða niður skeljaforskriftum sem heita kubectl-ctx и kubectl-ns í hvaða möppu sem er í PATH breytunni þinni og gerðu þær keyranlegar með t.d. chmod +x. Strax eftir þetta muntu geta notað kubectl ctx и kubectl ns.

5. Minnka inntak með sjálfvirkum samnefnum

Skeljasamnefni eru góð leið til að flýta fyrir inntakinu. Verkefni kubectl-samnefni inniheldur um 800 flýtileiðir fyrir helstu kubectl skipanir.

Þú gætir verið að velta fyrir þér - hvernig manstu 800 samnefni? En þú þarft ekki að muna þá alla, því þeir eru byggðir samkvæmt einföldu kerfi, sem er gefið hér að neðan:

Hvernig á að nota kubectl á skilvirkari hátt: nákvæm leiðarvísir
Til dæmis:

  1. kgpooyaml - kubectl fá fræbelgur oyaml
  2. ksysgsvcw — kubectl -n kube-kerfi fá svc w
  3. ksysrmcm -kubectl -n kube-kerfi rm cm
  4. kgdepallsl - kubectl fá dreifingu allt sl

Eins og þú sérð eru samheiti samsett úr íhlutum sem hver um sig táknar ákveðinn þátt í kubectl skipuninni. Hvert samnefni getur haft einn íhlut fyrir grunnskipunina, aðgerðina og tilföngina og marga hluti fyrir færibreytur. Þú einfaldlega „fyllir“ þessa hluti frá vinstri til hægri samkvæmt skýringarmyndinni hér að ofan.

Núverandi ítarleg skýringarmynd er kl GitHub. Þar má líka finna fullur listi yfir samnefni.

Til dæmis er nafnið kgpooyamlall jafngilt skipuninni kubectl get pods -o yaml --all-namespaces.

Hlutfallsleg röð valkostanna er ekki mikilvæg: skipun kgpooyamlall jafngildir skipuninni kgpoalloyaml.

Þú þarft ekki að nota alla hluti sem samnefni. Til dæmis k, kg, klo, ksys, kgpo einnig hægt að nota. Þar að auki geturðu sameinað samnefni og venjulegar skipanir eða valkosti á skipanalínunni:

Til dæmis:

  1. Í stað þess að kubectl proxy þú getur skrifað k proxy.
  2. Í stað þess að kubectl get roles þú getur skrifað kg roles (sem stendur er ekkert samnefni fyrir hlutverk tilföngsins).
  3. Til að fá gögn fyrir tiltekið hólf geturðu notað skipunina kgpo my-pod — kubectl get pod my-pod.

Vinsamlegast athugaðu að sum samheiti krefjast skipanalínurök. Til dæmis, alias kgpol þýðir kubectl get pods -l. Valkostur -l krefst rök - merki forskrift. Ef þú notar samnefni mun það líta út kgpol app=ui.

Vegna þess að sum samheiti krefjast rök, verður að nota samheiti a, f og l síðast.

Almennt séð, þegar þú hefur náð tökum á þessu kerfi, geturðu innsæi dregið samnefni úr skipunum sem þú vilt framkvæma og sparað mikinn innsláttartíma.

Uppsetning

Til að setja upp kubectl-aliases þarftu að hlaða niður skránni .kubectl_aliases frá GitHub og settu það inn í skrána ~/.bashrc eða ~/.zshrc:

source ~/.kubectl_aliases

Sjálfvirk útfylling

Eins og við sögðum áður, bætirðu oft viðbótarorðum við samnefni á skipanalínunni. Til dæmis:

$ kgpooyaml test-pod-d4b77b989

Ef þú notar kubectl skipanaútfyllingu, hefur þú líklega notað sjálfvirka útfyllingu fyrir hluti eins og tilfönganöfn. En er hægt að gera þetta þegar samnefni eru notuð?

Þetta er mjög mikilvæg spurning vegna þess að ef sjálfvirk útfylling virkar ekki muntu missa hluta af ávinningi samnefna.

Svarið fer eftir því hvaða skel þú ert að nota:

  1. Fyrir Zsh virkar samnefnisuppfylling út úr kassanum.
  2. Fyrir Bash, því miður, þarf nokkur vinna til að fá sjálfvirka útfyllingu til að virka.

Virkjar sjálfvirka útfyllingu fyrir samnefni í Bash

Vandamálið með Bash er að það reynir að klára (í hvert skipti sem þú ýtir á Tab) samheitið, ekki skipunina sem samnefnið vísar til (eins og Zsh gerir til dæmis). Þar sem þú ert ekki með útfyllingarforskriftir fyrir öll 800 samnefnin, virkar sjálfvirk útfylling ekki.

Project heill-alias veitir almenna lausn á þessu vandamáli. Það tengist útfyllingarkerfi fyrir samnefni, stækkar samheitið innbyrðis í skipun og skilar frágangsmöguleikum fyrir lokið skipun. Þetta þýðir að fyllingin fyrir samnefni hegðar sér nákvæmlega eins og fyrir fulla skipun.

Í eftirfarandi mun ég fyrst útskýra hvernig á að setja upp complete-alias og síðan hvernig á að stilla það til að virkja frágang fyrir öll kubectl samnefni.

Setur upp fullkomið samnefni

Fyrst af öllu, heill-alias fer eftir bash-lokun. Þess vegna, áður en þú setur upp complete-alias, þarftu að ganga úr skugga um að bash-completion sé uppsett. Uppsetningarleiðbeiningar hafa verið veittar áður fyrir Linux og MacOS.

Mikilvæg athugasemd fyrir MacOS notendur: Eins og kubectl sjálfvirka útfyllingarhandritið, virkar complete-alias ekki með Bash 3.2, sem er sjálfgefið á MacOS. Sérstaklega veltur heill-alias á bash-completion v2 (brew install bash-completion@2), sem krefst að minnsta kosti Bash 4.1. Þetta þýðir að til að nota fullkomið samnefni á MacOS þarftu að setja upp nýrri útgáfu af Bash.

Þú þarft að sækja handritið bash_completion.sh á GitHub geymsla og settu það inn í skrána þína ~/.bashrc:

source ~/bash_completion.sh

Eftir að hafa endurræst skelina verður complete-alias að fullu sett upp.

Virkjar sjálfvirka útfyllingu fyrir kubectl samnefni

Tæknilega heill-alias veitir umbúðaaðgerð _complete_alias. Þessi aðgerð athugar aliasið og skilar vísbendingum um lokun fyrir alias skipunina.

Til að tengja aðgerð við tiltekið samnefni þarftu að nota innbyggða Bash vélbúnaðinn ljúka, til að setja upp _complete_alias sem samnefnislokunaraðgerð.

Sem dæmi skulum við taka aliasið k, sem stendur fyrir kubectl skipunina. að setja upp _complete_alias Sem viðbótaraðgerð fyrir þetta samnefni ættir þú að keyra eftirfarandi skipun:

$ complete -F _complete_alias k

Niðurstaðan af þessu er sú að þegar þú fyllir út sjálfvirkt samnefni k, þá er fallið kallað _complete_alias, sem athugar samheitið og skilar vísbendingum um að lokið sé fyrir skipunina kubectl.

Sem annað dæmi skulum við taka aliasið kg, sem táknar kubectl get:

$ complete -F _complete_alias kg

Rétt eins og í fyrra dæminu, þegar þú fyllir út kg sjálfvirkt, færðu sömu vísbendingar um frágang og þú myndir fá fyrir kubectl get.

Athugaðu að þú getur notað fullkomið samnefni fyrir hvaða samnefni sem er á kerfinu þínu.

Þess vegna, til að virkja sjálfvirka útfyllingu fyrir öll kubectl samnefni, þarftu að keyra ofangreinda skipun fyrir hvert þeirra. Eftirfarandi bútur gerir nákvæmlega þetta, að því tilskildu að þú hafir stillt kubectl-alias á ~/.kubectl-aliases:

for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases); 
do
  complete -F _complete_alias "$_a"
done

Þetta stykki af kóða þarf að setja í þinn ~/.bashrc, endurræstu skipanaskelina og sjálfvirk útfylling verður í boði fyrir öll 800 kubectl samnefnin.

6. Framlenging kubectl með viðbótum

Byrjar frá útgáfa 1.12, kubectl styður viðbætur vélbúnaður, sem gerir þér kleift að auka virkni þess með viðbótarskipunum.

Ef þú ert kunnugur Git viðbætur, þá eru kubectl viðbætur byggðar á sömu reglu.

Í þessum kafla munum við fara yfir hvernig á að setja upp viðbætur, hvar á að finna þau og hvernig á að búa til eigin viðbætur.

Að setja upp viðbætur

Kubectl viðbætur eru dreift sem einföldum keyranlegum skrám með nafninu eins og kubectl-x. Forskeyti kubectl- er krafist, fylgt eftir með nýrri kubectl undirskipun sem gerir þér kleift að hringja í viðbótina.

Til dæmis verður halló viðbótinni dreift sem skrá sem heitir kubectl-hello.

Til að setja upp viðbótina þarftu að afrita skrána kubectl-x í hvaða möppu sem er í PATH þinni og gerðu hana keyranlega, til dæmis með chmod +x. Strax eftir þetta geturðu hringt í viðbótina með kubectl x.

Þú getur notað eftirfarandi skipun til að skrá öll viðbætur sem eru uppsett á kerfinu þínu:

$ kubectl plugin list

Þessi skipun mun einnig sýna viðvaranir ef þú ert með margar viðbætur með sama nafni, eða ef það er viðbætur skrá sem er ekki keyranleg.

Að finna og setja upp viðbætur með Krew

Kubectl viðbætur er hægt að deila eða endurnýta eins og hugbúnaðarpakka. En hvar geturðu fundið viðbætur sem aðrir hafa deilt?

Verkefnið Krew miðar að því að bjóða upp á sameinaða lausn til að deila, leita, setja upp og stjórna kubectl viðbótum. Verkefnið kallar sig „pakkastjóra fyrir kubectl viðbætur“ (Krew er svipað og Brew).

Krew er listi yfir kubectl viðbætur sem þú getur valið og sett upp. Á sama tíma er Krew einnig viðbót fyrir kubectl.

Þetta þýðir að uppsetning Krew virkar í meginatriðum eins og að setja upp önnur kubectl viðbót. Þú getur fundið nákvæmar leiðbeiningar á GitHub síðu.

Mikilvægustu Krew skipanir eru:

# Поиск в списке плагинов
$ kubectl krew search [<query>]
# Посмотреть информацию о плагине
$ kubectl krew info <plugin>
# Установить плагин
$ kubectl krew install <plugin>
# Обновить все плагины до последней версии
$ kubectl krew upgrade
# Посмотреть все плагины, установленные через Krew
$ kubectl krew list
# Деинсталлировать плагин
$ kubectl krew remove <plugin>

Vinsamlegast athugaðu að uppsetning viðbætur með Krew truflar ekki uppsetningu viðbætur með stöðluðu aðferðinni sem lýst er hér að ofan.

Vinsamlegast athugaðu að skipunin kubectl krew list sýnir aðeins viðbætur sem voru settar upp með Krew, en skipunin kubectl plugin list listar allar viðbætur, það er þær sem eru settar upp með Krew og þær sem eru settar upp með öðrum aðferðum.

Að finna viðbætur annars staðar

Krew er ungt verkefni, sem nú stendur yfir listanum aðeins um 30 viðbætur. Ef þú finnur ekki það sem þú þarft geturðu fundið viðbætur annars staðar, eins og GitHub.

Ég mæli með að skoða GitHub hlutann kubectl-viðbætur. Þar finnur þú heilmikið af tiltækum viðbótum sem vert er að skoða.

Að skrifa eigin viðbætur

þú getur sjálfur búa til viðbætur — Það er ekki erfitt. Þú þarft að búa til keyrslu sem gerir það sem þú þarft, nefndu það eins og kubectl-x og settu upp eins og lýst er hér að ofan.

Skráin gæti verið bash forskrift, python forskrift eða samsett GO forrit - það skiptir ekki máli. Eina skilyrðið er að hægt sé að framkvæma það beint í stýrikerfinu.

Við skulum búa til dæmi um viðbót núna. Í fyrri hlutanum notaðirðu kubectl skipunina til að skrá gámana fyrir hvern belg. Það er auðvelt að breyta þessari skipun í viðbót sem þú getur hringt í með t.d. kubectl img.

Búðu til skrá kubectl-img eftirfarandi efni:

#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'

Gerðu nú skrána keyranlega með chmod +x kubectl-img og færðu það í hvaða möppu sem er í PATH þínum. Strax eftir þetta geturðu notað viðbótina kubectl img.

Eins og fram hefur komið er hægt að skrifa kubectl viðbætur á hvaða forritunar- eða forskriftarmáli sem er. Ef þú ert að nota skeljaforskriftir er kosturinn við að geta auðveldlega hringt í kubectl innan við viðbótina. Hins vegar geturðu skrifað flóknari viðbætur á raunverulegum forritunarmálum með því að nota Kubernetes viðskiptavinabókasafn. Ef þú ert að nota Go geturðu líka notað cli-runtime bókasafn, sem er til sérstaklega til að skrifa kubectl viðbætur.

Hvernig á að deila viðbótunum þínum

Ef þú heldur að viðbæturnar þínar gætu verið gagnlegar fyrir aðra skaltu ekki hika við að deila þeim á GitHub. Vertu viss um að bæta þeim við efnið kubectl-viðbætur.

Þú getur líka beðið um að viðbótinni þinni verði bætt við Krew listi. Leiðbeiningar um hvernig á að gera þetta eru í GitHub geymslur.

Skipun lokið

Viðbætur styðja ekki sjálfvirka útfyllingu eins og er. Það er, þú verður að slá inn fullt nafn viðbótarinnar og fullt nöfn rökanna.

GitHub kubectl geymslan fyrir þessa aðgerð hefur opin beiðni. Svo það er mögulegt að þessi eiginleiki verði innleiddur einhvern tíma í framtíðinni.

Gangi þér vel!!!

Hvað annað að lesa um efnið:

  1. Þrjú stig sjálfvirkrar mælingar í Kubernetes og hvernig á að nota þau á áhrifaríkan hátt.
  2. Kubernetes í anda sjóræningjastarfsemi með sniðmáti fyrir útfærslu.
  3. Rásin okkar Around Kubernetes í Telegram.

Heimild: www.habr.com

Bæta við athugasemd