Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Ngati mumagwira ntchito ndi Kubernetes, ndiye kubectl mwina ndi imodzi mwazinthu zomwe mumagwiritsa ntchito kwambiri. Ndipo nthawi zonse mukamathera nthawi yambiri mukugwira ntchito ndi chida china, zimapindulitsa kuti muphunzire bwino ndikuphunzira momwe mungagwiritsire ntchito bwino.

timu Kubernetes aaS kuchokera ku Mail.ru adamasulira nkhani ya Daniel Weibel momwe mungapezere malangizo ndi zidule zogwirira ntchito bwino ndi kubectl. Zikuthandizaninso kumvetsetsa mwakuya za Kubernetes.

Malinga ndi wolemba, cholinga cha nkhaniyi ndikupangitsa kuti ntchito yanu ya tsiku ndi tsiku ndi Kubernetes ikhale yabwino kwambiri, komanso yosangalatsa!

Chiyambi: Kodi kubectl ndi chiyani

Musanaphunzire kugwiritsa ntchito kubectl moyenera, muyenera kumvetsetsa kuti ndi chiyani komanso momwe imagwirira ntchito.

Kuchokera pamawonedwe a wogwiritsa ntchito, kubectl ndi gulu lowongolera lomwe limakupatsani mwayi wochita ntchito za Kubernetes.

Mwaukadaulo, kubectl ndi kasitomala wa Kubernetes API.

Kubernetes API ndi HTTP REST API. API iyi ndi mawonekedwe enieni a Kubernetes, omwe amayendetsedwa kwathunthu. Izi zikutanthauza kuti ntchito iliyonse ya Kubernetes imawululidwa ngati mapeto a API ndipo ikhoza kupangidwa ndi pempho la HTTP kumapeto kwake.

Chifukwa chake, ntchito yayikulu ya kubectl ndikupanga zopempha za HTTP ku Kubernetes API:

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Kubernetes ndi njira yokhazikika pazinthu zonse. Izi zikutanthauza kuti imasunga zinthu zamkati zamkati ndipo ntchito zonse za Kubernetes ndi ntchito za CRUD.

Muli mu ulamuliro wonse wa Kubernetes poyang'anira zothandizira izi, ndipo Kubernetes amawerengera zoyenera kuchita kutengera momwe zinthu ziliri pano. Pazifukwa izi, Kubernetes API yofotokoza idapangidwa ngati mndandanda wamitundu yazinthu zomwe zimagwirizana nazo.

Tiyeni tione chitsanzo.

Tinene kuti mukufuna kupanga ReplicaSet gwero. Kuti muchite izi, mumafotokoza ReplicaSet mufayilo ndi dzina replicaset.yaml, kenako yendetsani lamulo:

$ kubectl create -f replicaset.yaml

Izi zipanga chida cha ReplicaSet. Koma chimachitika ndi chiyani kuseri kwa zochitika?

Kubernetes ali ndi ntchito yopanga ReplicaSet. Monga ntchito ina iliyonse, imawululidwa ngati mapeto a API. Mapeto enieni a API pa ntchitoyi akuwoneka motere:

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

Zomaliza za API pazochita zonse za Kubernetes zitha kupezeka pa Chidziwitso cha API (kuphatikiza mapeto pamwamba). Kuti mupange pempho lenileni kumapeto, muyenera choyamba kuwonjezera URL ya seva ya API ku njira zomaliza zomwe zalembedwa muzolemba za API.

Chifukwa chake, mukapereka lamulo ili pamwambapa, kubectl imatumiza pempho la HTTP POST kumapeto kwa API pamwambapa. Tanthauzo la ReplicaSet lomwe mudapereka mufayilo replicaset.yaml, imatumizidwa mu thupi la pempho.

Umu ndi momwe kubectl imagwirira ntchito pamalamulo onse omwe amalumikizana ndi gulu la Kubernetes. Muzochitika zonsezi, kubectl imangopanga zopempha za HTTP kumalo oyenera a Kubernetes API.

Chonde dziwani kuti mutha kuyang'anira Kubernetes kwathunthu pogwiritsa ntchito zofunikira monga curlpotumiza pamanja zopempha za HTTP ku Kubernetes API. Kubectl imangopangitsa kukhala kosavuta kugwiritsa ntchito Kubernetes API.

Izi ndiye zoyambira zomwe kubectl ndi momwe zimagwirira ntchito. Koma pali chinanso chokhudza Kubernetes API chomwe wosuta aliyense wa kubectl ayenera kudziwa. Tiyeni tiwone mwachangu dziko lamkati la Kubernetes.

Dziko lamkati la Kubernetes

Kubernetes imakhala ndi zigawo zodziyimira pawokha zomwe zimayenda ngati njira zosiyana pamagulu amagulu. Zigawo zina zimayenda pa ma master node, zina pamagulu ogwira ntchito, gawo lililonse limagwira ntchito yakeyake.

Nazi zigawo zofunika kwambiri pa mfundo zazikulu:

  1. zapamwamba - sungani matanthauzo azinthu (kawirikawiri ndi etcd).
  2. API seva - imapereka API ndikuwongolera kusungirako.
  3. Woyang'anira Woyang'anira - Imawonetsetsa kuti zidziwitso zazinthu zikugwirizana ndi zomwe zanenedwa.
  4. Wopanga dongosolo - amakonza ma pod pa node za antchito.

Ndipo ichi ndi chimodzi mwazinthu zofunika kwambiri pamagulu ogwira ntchito:

  1. kubelet - imayang'anira kukhazikitsidwa kwa zotengera pa node yogwira ntchito.

Kuti timvetse mmene zigawozi zimagwirira ntchito limodzi, tiyeni tione chitsanzo.

Tiyerekeze kuti mwamaliza kumene kubectl create -f replicaset.yaml, pambuyo pake kubectl adapempha HTTP POST kuti ReplicaSet API endpoint (kudutsa tanthauzo lachidziwitso cha ReplicaSet).

Kodi chikuchitika ndi chiyani m'gululi?

  1. Pambuyo pochita kubectl create -f replicaset.yaml Seva ya API imasunga matanthauzo anu azinthu za ReplicaSet mosungira:

    Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane

  2. Kenako, wowongolera wa ReplicaSet amakhazikitsidwa mwa woyang'anira woyang'anira, yemwe amayang'anira kupanga, kusinthidwa ndi kuchotsedwa kwazinthu za ReplicaSet:

    Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane

  3. Wolamulira wa ReplicaSet amapanga tanthauzo la pod pamtundu uliwonse wa ReplicaSet (malinga ndi template ya pod mu tanthauzo la ReplicaSet) ndikusunga mosungira:

    Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane

  4. Wokonzerayo amakhazikitsidwa, kutsatira ma pod omwe sanapatsidwe ma node aliwonse ogwira ntchito:

    Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane

  5. Wokonza mapulani amasankha node yoyenerera yogwira ntchito pa pod iliyonse ndikuwonjezera izi ku tanthauzo la pod mu sitolo:

    Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane

  6. Pamalo ogwirira ntchito omwe pod amapatsidwa, Kubelet imakhazikitsidwa, imatsata ma pods omwe amaperekedwa ku mfundo iyi:

    Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane

  7. Kubelet amawerenga tanthauzo la pod kuchokera kusungirako ndikulangiza nthawi yoyendetsera chidebe, monga Docker, kuti akhazikitse zotengera pa node:

    Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane

M'munsimu muli malemba ofotokozera.

Pempho la API kumalo omaliza opangira ReplicaSet limakonzedwa ndi seva ya API. Seva ya API imatsimikizira pempho ndikusunga tanthauzo lachidziwitso cha ReplicaSet posungira.

Chochitika ichi chimayambitsa ReplicaSet controller, yomwe ndi subprocess ya woyang'anira woyang'anira. Woyang'anira ReplicaSet amayang'anira kupangidwa, kukonzanso, ndi kufufutidwa kwa ReplicaSet zothandizira m'sitolo ndi kulandira zidziwitso zazochitika izi zikachitika.

Ntchito ya ReplicaSet controller ndikuwonetsetsa kuti nambala yofunikira ya ReplicaSet pods ilipo. Muchitsanzo chathu, palibe ma pods omwe alipo, kotero wolamulira wa ReplicaSet amapanga matanthauzo a pod (malinga ndi template ya pod mu tanthauzo la ReplicaSet) ndikuwasunga posungira.

Kupanga ma pods atsopano kumayambitsidwa ndi wokonza mapulani omwe amatsata matanthauzo a pod omwe sanakonzedwenso kuti agwire ntchito. Wokonza mapulani amasankha node yoyenera ya ogwira ntchito pa pod iliyonse ndikusintha matanthauzidwe a pod munkhokwe.

Dziwani kuti mpaka pano, palibe code yolemetsa yomwe ikugwira ntchito paliponse mgululi. Zonse zomwe zachitika mpaka pano - uku ndiko kupanga ndi kukonzanso kwazinthu zomwe zili munkhokwe pa master node.

Chochitika chomaliza chimayambitsa Kubelets, yomwe imayang'anira ma pods omwe amakonzedwa pamagulu awo antchito. Kubelet ya node ya ogwira ntchito pomwe ma pod anu a ReplicaSet amayikidwa ayenera kulangiza nthawi yoyendetsera chidebe, monga Docker, kutsitsa zithunzi zomwe zikufunika ndikuziyendetsa.

Pakadali pano, pulogalamu yanu ya ReplicaSet ikugwira ntchito!

Udindo wa Kubernetes API

Monga momwe mudawonera mu chitsanzo chapitachi, zigawo za Kubernetes (kupatula seva ya API ndi kusungirako) yang'anani kusintha kwazinthu zosungirako ndikusintha zambiri zokhudzana ndi zosungirako.

Zoonadi, zigawozi sizikugwirizana ndi zosungirako mwachindunji, koma kupyolera mu Kubernetes API.

Taonani zitsanzo zotsatirazi:

  1. Wolamulira wa ReplicaSet amagwiritsa ntchito API endpoint list ReplicaSets ndi parameter watch kuyang'anira kusintha kwa ReplicaSet zothandizira.
  2. Wolamulira wa ReplicaSet amagwiritsa ntchito API endpoint kupanga Pod (create pod) kuti mupange makoko.
  3. Scheduler amagwiritsa ntchito API endpoint patch pansi (edit pod) kuti musinthe ma pod ndi zambiri za node yosankhidwa ya ogwira ntchito.

Monga mukuwonera, iyi ndi API yomweyi yomwe kubectl amapeza. Kugwiritsa ntchito API yomweyi pazinthu zamkati ndi ogwiritsa ntchito akunja ndi lingaliro lofunikira pamapangidwe a Kubernetes.

Tsopano titha kunena mwachidule momwe Kubernetes amagwirira ntchito:

  1. Malo osungiramo zinthu, ndiye kuti, Kubernetes zothandizira.
  2. Seva ya API imapereka mawonekedwe kusungirako mu mawonekedwe a Kubernetes API.
  3. Zida zina zonse za Kubernetes ndi ogwiritsa ntchito amawerenga, kuyang'ana, ndikuwongolera Kubernetes state (zothandizira) kudzera mu API.

Kudziwa mfundozi kukuthandizani kumvetsetsa kubectl ndikupeza bwino.

Tsopano tiyeni tiwone maupangiri ndi zidule zina zomwe zingakuthandizeni kukonza zokolola zanu ndi kubectl.

1. Fulumizirani zolowetsa pogwiritsa ntchito kumaliza kwa lamulo

Njira imodzi yothandiza kwambiri, koma yomwe nthawi zambiri imanyalanyazidwa, pakuwongolera magwiridwe antchito ndi kubectl ndikumaliza kulamula.

Kumaliza kwa lamulo kumakupatsani mwayi woti mumalize magawo a malamulo a kubectl pogwiritsa ntchito kiyi ya Tab. Izi zimagwira ntchito pama subcommand, zosankha, ndi mikangano, kuphatikiza zinthu zovuta monga mayina azothandizira.

Onani momwe kutsirizitsa lamulo la kubectl kumagwirira ntchito:

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Kumaliza kwa lamulo kumagwira ntchito kwa zipolopolo za Bash ndi Zsh.

Official Guide lili ndi malangizo atsatanetsatane okhazikitsa kumalizitsa, koma pansipa tipereka kachigawo kakang'ono.

Momwe kumaliza kwamalamulo kumagwirira ntchito

Kumaliza kwa lamulo ndi gawo lachipolopolo lomwe limagwira ntchito pomaliza script. Script yowonjezera ndi chipolopolo chomwe chimatanthawuza khalidwe lachiwongolero cha lamulo linalake.

Kubectl imapanga zokha ndikutulutsa zolemba zowonjezera za Bash ndi Zsh pogwiritsa ntchito malamulo awa:

$ kubectl completion bash

Kapena:

$ kubectl completion zsh

Mwachidziwitso, ndikwanira kulumikiza zotuluka za malamulowa ku chipolopolo choyenera kuti kubectl athe kukwaniritsa malamulowo.

M'zochita, njira yolumikizira ndi yosiyana kwa Bash (kuphatikiza kusiyana pakati pa Linux ndi MacOS) ndi Zsh. Pansipa tiwona njira zonsezi.

Bash pa Linux

Zolemba zomaliza za Bash zimatengera bash-completion phukusi, ndiye muyenera kuyiyika kaye:

$ sudo apt-get install bash-completion

Kapena:

$ yum install bash-completion

Mutha kuyesa kuti phukusili lakhazikitsidwa bwino pogwiritsa ntchito lamulo ili:

$ type _init_completion

Ngati izi zitulutsa code ya ntchito ya chipolopolo, ndiye kuti bash-completion imayikidwa bwino. Ngati lamulo likupereka cholakwika "Sindinapezeke", muyenera kuwonjezera mzere wotsatira pafayilo yanu ~ / .bashrc:

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

Kodi ndikofunikira kuwonjezera mzerewu ku fayilo ~ / .bashrc kapena ayi zimatengera woyang'anira phukusi lomwe mudagwiritsa ntchito kukhazikitsa bash-completion. Izi ndizofunikira kwa APT, koma osati kwa YUM.

Mukakhazikitsa bash-completion, muyenera kukonza zonse kuti kubectl kumaliza script kutsegulidwa mu magawo onse a zipolopolo.

Njira imodzi yochitira izi ndikuwonjezera mzere wotsatira ku fayilo ~ / .bashrc:

source <(kubectl completion bash)

Njira ina ndikuwonjezera zolemba zowonjezera za kubectl pamndandanda /etc/bash_completion.d (pangeni ngati palibe):

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

Zolemba zonse zowonjezera mu catalog /etc/bash_completion.d zimaphatikizidwa ndi bash-completion.

Zosankha ziwirizi ndizofanana.

Pambuyo poyambitsanso chipolopolo, kutsiriza kwa lamulo la kubectl kudzagwira ntchito.

Bash pa MacOS

Pa MacOS kukhazikitsa kumakhala kovuta kwambiri. Chowonadi ndi chakuti, mwachisawawa, MacOS imagwiritsa ntchito Bash version 3.2, ndipo kubectl autocompletion script imafuna mtundu wa Bash osachepera 4.1 ndipo sagwira ntchito ku Bash 3.2.

Pali zovuta zamalayisensi okhudzana ndi kugwiritsa ntchito mtundu wakale wa Bash pa MacOS. Bash version 4 ili ndi chilolezo pansi pa GPLv3, yomwe sichirikizidwa ndi Apple.

Kuti musinthe kubectl autocompletion pa MacOS, muyenera kukhazikitsa mtundu waposachedwa wa Bash. Mutha kukhazikitsanso Bash yosinthidwa ngati chipolopolo chanu chosasinthika, chomwe chingakupulumutseni mavuto ambiri mtsogolo. Sizovuta, tsatanetsatane waperekedwa m'nkhani "Kusintha Bash pa MacOS".

Musanapitirize, onetsetsani kuti mukugwiritsa ntchito mtundu waposachedwa wa Bash (onani zomwe zatuluka bash --version).

Bash kumaliza script amasiyana ndi polojekiti bash-kumaliza, kotero muyenera kuyiyika kaye.

Mutha kukhazikitsa bash-completion pogwiritsa ntchito Homebrew:

$ brew install bash-completion@2

ndi @2 imayimira bash-completion version 2. kubectl autocompletion imafuna bash-completion v2, ndipo bash-completion v2 imafuna osachepera Bash version 4.1.

Command output brew-install ili ndi gawo la Caveats, lomwe limafotokoza zomwe ziyenera kuwonjezeredwa ku fayilo ~/.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"

Komabe, ndikupangira kuwonjezera mizere iyi kuti musatero ~/.bash_profilendi ~/.bashrc. Pachifukwa ichi, autocompletion idzapezeka osati makamaka, komanso mu zipolopolo za malamulo a ana.

Pambuyo poyambitsanso chipolopolo cha lamulo, mutha kutsimikizira kuti kukhazikitsa ndikolondola pogwiritsa ntchito lamulo ili:

$ type _init_completion

Ngati muwona chipolopolo chikugwira ntchito muzotulutsa, ndiye kuti zonse zimakonzedwa bwino.

Tsopano tikuyenera kuwonetsetsa kuti kubectl autocompletion imayatsidwa magawo onse.

Njira imodzi ndikuwonjezera mzere wotsatira wanu ~/.bashrc:

source <(kubectl completion bash)

Njira yachiwiri ndikuwonjezera zolemba zokha pafoda /usr/local/etc/bash_completion.d:

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

Njirayi idzagwira ntchito ngati mutayika bash-completion pogwiritsa ntchito Homebrew. Pankhaniyi, bash-completion imanyamula zolemba zonse kuchokera mu bukhuli.

Ngati inu anaika kubectl pogwiritsa ntchito Homebrew, ndiye palibe chifukwa chochitira sitepe yapitayi, popeza zolemba zodziwikiratu zidzangoyikidwa mufoda. /usr/local/etc/bash_completion.d pa unsembe. Apa, kubectl autocompletion iyamba kugwira ntchito mukangokhazikitsa bash-completion.

Zotsatira zake, zosankha zonsezi ndizofanana.

Zsh

Zolemba zokha za Zsh sizifunikira kudalira kulikonse. Zomwe muyenera kuchita ndikuwathandiza mukatsitsa chipolopolo cha lamulo.

Mungathe kuchita izi powonjezera mzere wanu ~/.zshrc wapamwamba:

source <(kubectl completion zsh)

Ngati mulandira cholakwika not found: compdef mutayambitsanso chipolopolo chanu, muyenera kuyambitsa ntchito ya buildin compdef. Mutha kuyiyambitsa powonjezera pa chiyambi cha fayilo yanu ~/.zshrc Otsatirawa:

autoload -Uz compinit
compinit

2. Onani mwachangu zofunikira

Mukapanga matanthauzidwe azinthu za YAML, muyenera kudziwa minda ndi matanthauzo ake pazinthuzo. Malo amodzi oti mufufuze izi ndi muzofotokozera za API, zomwe zili ndi mfundo zonse zazinthu zonse.

Komabe, kusintha pa msakatuli nthawi zonse mukafuna kufufuza china chake ndikovuta. Chifukwa chake kubectl imapereka lamulo kubectl explain, zomwe zikuwonetsa tsatanetsatane wazinthu zonse zomwe zili mu terminal yanu.

Fomu ya lamulo ili motere:

$ kubectl explain resource[.field]...

Lamulo lidzatulutsa zomwe mwafunsidwa kapena gawo lomwe mwafunsidwa. Zomwe zawonetsedwa ndizofanana ndi zomwe zili mubuku la API.

zotsatira kubectl explain amangowonetsa gawo loyamba la zisa za minda.

Onani momwe izo zikuwonekera akhoza kukhala pano.

Mutha kuwonetsa mtengo wonse ngati muwonjezera mwayi --recursive:

$ kubectl explain deployment.spec --recursive

Ngati simukudziwa zomwe zikufunika, mutha kuziwonetsa zonse ndi lamulo ili:

$ kubectl api-resources

Lamuloli likuwonetsa mayina azinthu mumitundu yambiri, mwachitsanzo. deployments mmalo mwa deployment. Ikuwonetsanso dzina lalifupi, mwachitsanzo deploy, kwa omwe ali nazo. Osadandaula ndi kusiyana kumeneku. Zosankha zonsezi ndizofanana ndi kubectl. Ndiko kuti, mutha kugwiritsa ntchito aliyense wa iwo kubectl explain.

Malamulo otsatirawa onse ndi ofanana:

$ kubectl explain deployments.spec
# ΠΈΠ»ΠΈ
$ kubectl explain deployment.spec
# ΠΈΠ»ΠΈ        
$ kubectl explain deploy.spec

3. Gwiritsani ntchito ndime linanena bungwe mwambo mtundu

Chotsatira lamulo linanena bungwe mtundu 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

Fomu iyi ndi yabwino, koma ili ndi zambiri zochepa. Poyerekeza ndi mtundu wonse wa matanthauzidwe azinthu, magawo ochepa okha ndi omwe akuwonetsedwa apa.

Pankhaniyi, mungagwiritse ntchito mwambo ndime linanena bungwe mtundu. Kumakuthandizani kudziwa zimene deta linanena bungwe. Mutha kuwonetsa gawo lililonse lazinthu ngati gawo lapadera.

Kugwiritsiridwa ntchito kwa makonda kumatsimikiziridwa pogwiritsa ntchito zosankha:

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

Mutha kufotokozera ndime iliyonse linanena bungwe ngati awiri <header>:<jsonpath>kumene <header> ndi dzina lazambiri, ndi <jsonpath> - mawu ofotokozera gawo lazothandizira.

Tiyeni tiwone chitsanzo chosavuta:

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

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

Zomwe zimatuluka zimakhala ndi gawo limodzi lokhala ndi mayina a pods.

Mawu osankha amasankha mayina a pod kuchokera kumunda metadata.name. Izi ndichifukwa choti dzina la pod limatanthauzidwa mu gawo la dzina la mwana metadata m'mafotokozedwe azinthu za pod. Zambiri zitha kupezeka mu API Guide kapena lembani lamulo kubectl explain pod.metadata.name.

Tsopano tinene kuti mukufuna kuwonjezera gawo lowonjezera pazotulutsa, mwachitsanzo kuwonetsa nodi iliyonse pod ikugwira ntchito. Kuti muchite izi, mutha kungowonjezera zolemba zoyenera pazosankha zomwe mwasankha:

$ 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

Mawuwa amasankha dzina la node kuchokera spec.nodeName - pamene pod imaperekedwa ku node, dzina lake limalembedwa m'munda spec.nodeName pod resource specifications. Zambiri zatsatanetsatane zitha kupezeka pazotulutsa kubectl explain pod.spec.nodeName.

Chonde dziwani kuti magawo a Kubernetes ndi ovuta.

Mutha kuwona gawo lililonse lazinthu ngati gawo. Ingoyang'anani zomwe mukufuna ndikuyesa ndi magawo omwe mukufuna.

Koma choyamba, tiyeni tione bwinobwino mawu osankhidwa a m’munda.

Mawu a JSONPath

Mawu oti musankhe magawo azinthu amatengerapo JSONPath.

JSONPath ndi chiyankhulo chochotsa deta kuchokera ku zolemba za JSON. Kusankha gawo limodzi ndiye njira yosavuta yogwiritsira ntchito JSONPath. Ali ndi zambiri zotheka zambiri, kuphatikizapo osankha, zosefera ndi zina zotero.

Kubectl akufotokoza amathandizira chiwerengero chochepa cha mawonekedwe a JSONPath. Kuthekera ndi zitsanzo zakugwiritsa ntchito kwawo zikufotokozedwa pansipa:

# Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ всС элСмСнты списка
$ 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'

Wogwiritsa ntchito [] ndiwofunikira kwambiri. Magawo ambiri a Kubernetes ndi mindandanda, ndipo wogwiritsa ntchito uyu amakulolani kusankha mamembala amndandandawo. Nthawi zambiri amagwiritsidwa ntchito ndi wildcard ngati [*] kusankha zinthu zonse pamndandanda.

Zitsanzo za ntchito

Kuthekera kogwiritsa ntchito mawonekedwe amtundu wamtundu wamtunduwu ndikosatha, chifukwa mutha kuwonetsa gawo lililonse kapena kuphatikiza magawo azinthu pazotulutsa. Nazi zitsanzo za mapulogalamu, koma omasuka kuzifufuza nokha ndikupeza mapulogalamu omwe amakuthandizani.

  1. Kuwonetsa zithunzi zotengera ma pod:
    $ 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

    Lamulo ili likuwonetsa mayina azithunzi zachidebe pa pod iliyonse.

    Kumbukirani kuti pod ikhoza kukhala ndi zotengera zingapo, ndiye kuti mayina azithunzi adzawonetsedwa pamzere umodzi, wolekanitsidwa ndi koma.

  2. Kuwonetsa madera omwe alipo:
    $ 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

    Lamuloli ndi lothandiza ngati gulu lanu limakhala pamtambo wapagulu. Imawonetsa zone yopezeka pa node iliyonse.

    Malo opezeka ndi lingaliro lamtambo lomwe limachepetsa malo obwerezabwereza kudera lamalo.

    Magawo opezeka pa node iliyonse amapezedwa kudzera pa lebulo lapadera - failure-domain.beta.kubernetes.io/zone. Ngati gululo likuyenda mumtambo wapagulu, chizindikirochi chimapangidwa chokha ndikudzazidwa ndi mayina a magawo omwe akupezeka pa node iliyonse.

    Zolemba sizili gawo la Kubernetes gwero lazinthu, kotero simupeza zambiri za iwo API Guide. Komabe, zitha kuwoneka (monga zilembo zina zilizonse) ngati mungafunse zambiri zama node mu YAML kapena mtundu wa JSON:

    $ kubectl get nodes -o yaml
    # ΠΈΠ»ΠΈ
    $ kubectl get nodes -o json

    Iyi ndi njira yabwino yophunzirira zambiri zazinthu zothandizira, kuwonjezera pa mfundo zazinthu zophunzirira.

4. Sinthani mosavuta pakati pa magulu ndi malo a mayina

Kubectl ikafunsira Kubernetes API, imawerenga kaye fayilo ya kubeconfig kuti ipeze magawo onse olumikizirana.

Mwachikhazikitso fayilo ya kubeconfig ndi ~/.kube/config. Kawirikawiri fayiloyi imapangidwa kapena kusinthidwa ndi lamulo lapadera.

Mukamagwira ntchito ndi magulu angapo, fayilo yanu ya kubeconfig imakhala ndi zoikamo zolumikizana ndi magulu onsewo. Mufunika njira yoti muwuze lamulo la kubectl lomwe mukugwira nawo ntchito.

Mkati mwa tsango, mutha kupanga malo angapo a mayina-mtundu wa gulu lamagulu mkati mwa gulu lakuthupi. Kubectl imasankhanso malo oti agwiritse ntchito potengera fayilo ya kubeconfig. Izi zikutanthauza kuti mukufunikanso njira yowuzira lamulo la kubectl kuti mugwiritse ntchito dzina liti.

M’mutu uno tifotokoza mmene zimagwirira ntchito komanso mmene zingagwiritsire ntchito bwino.

Dziwani kuti mutha kukhala ndi mafayilo angapo a kubeconfig omwe adalembedwa mu KUBECONFIG kusinthika kwachilengedwe. Pachifukwa ichi, mafayilo onsewa adzaphatikizidwa kukhala kasinthidwe kamodzi pa nthawi yothamanga. Mutha kusinthanso fayilo yokhazikika ya kubeconfig poyendetsa kubectl ndi parameter --kubeconfig. Penyani! zolemba zovomerezeka.

kubeconfig mafayilo

Tiyeni tiwone zomwe fayilo ya kubeconfig ili ndi:

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Monga mukuwonera, fayilo ya kubeconfig ili ndi magawo angapo. Context ili ndi zinthu zitatu:

  • Cluster - API URL ya seva yamagulu.
  • Zidziwitso zotsimikizika za wogwiritsa ntchito pagulu.
  • Namespace - malo omwe amagwiritsidwa ntchito polowa mgulu.

M'malo mwake, nthawi zambiri amagwiritsa ntchito gawo limodzi pagulu lililonse la kubeconfig. Komabe, mutha kukhala ndi zochitika zingapo pagulu lililonse, losiyanitsidwa ndi wogwiritsa ntchito kapena malo a mayina. Komabe, makonzedwe amitundu yambiriwa ndi achilendo, choncho nthawi zambiri pamakhala mapu amodzi ndi amodzi pakati pa magulu ndi zochitika.

Nthawi iliyonse, imodzi mwazinthuzi ndi yaposachedwa:

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Kubectl akawerenga fayilo yosinthira, zimatengera zambiri pazomwe zikuchitika. Mu chitsanzo pamwambapa, kubectl ilumikizana ndi gulu la Hare.

Chifukwa chake, kuti musinthe gulu lina, muyenera kusintha zomwe zikuchitika mufayilo ya kubeconfig:

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Tsopano kubectl ilumikizana ndi gulu la Fox.

Kuti musinthe ku malo ena a mayina mugulu lomwelo, muyenera kusintha kufunikira kwa gawo la namespace pazomwe zikuchitika:

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Muchitsanzo chapamwambachi, kubectl adzagwiritsa ntchito Fox cluster's Prod namespace (m'mbuyomu malo oyeserera adakhazikitsidwa).

Dziwani kuti kubectl imaperekanso zosankha --cluster, --user, --namespace ΠΈ --context, zomwe zimakupatsani mwayi kuti mulembe zinthu zamtundu uliwonse komanso zomwe zikuchitika panopo, mosasamala kanthu za zomwe zili mu kubeconfig. Penyani! kubectl options.

Mwachidziwitso, mutha kusintha pamanja zosintha mu kubeconfig. Koma ndizovuta. Kuti izi zitheke, pali zida zingapo zomwe zimakulolani kuti musinthe magawo okha.

Gwiritsani ntchito kubectx

Chida chodziwika bwino chosinthira pakati pamagulu ndi ma namespaces.

Pulogalamuyi imapereka malangizo kubectx ΠΈ kubens kusintha zomwe zikuchitika panopa ndi malo a mayina motsatira.

Monga tafotokozera, kusintha zomwe zikuchitika panopa kumatanthauza kusintha masango ngati muli ndi nkhani imodzi yokha pamagulu.

Nachi chitsanzo choyendetsera malamulo awa:

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Kwenikweni, malamulo awa amangosintha fayilo ya kubeconfig monga tafotokozera pamwambapa.

kukhazikitsa kubectx, tsatirani malangizo pa Github.

Malamulo onsewa amathandizira kukwaniritsidwa kwazomwe zikuchitika komanso mayina amtundu wa mayina, zomwe zimachotsa kufunika kowalemba kwathunthu. Malangizo pakukhazikitsa komaliza apa.

Mbali ina yothandiza kubectx ndi mode interactive. Zimagwira ntchito mogwirizana ndi malangizowo fzf, yomwe iyenera kukhazikitsidwa mosiyana. Kuyika fzf kumapangitsa kuti muzitha kulumikizana kubectx. Mwanjira, mutha kusankha nkhani ndi malo a mayina kudzera mu mawonekedwe osakira aulere operekedwa ndi fzf.

Kugwiritsa ntchito zilembo za shell

Simukusowa zida zosiyana kuti musinthe zomwe zikuchitika komanso malo a mayina chifukwa kubectl imaperekanso malamulo a izi. Inde, timu kubectl config imapereka ma subcommands osintha mafayilo a kubeconfig.

Nawa ena mwa iwo:

  • kubectl config get-contexts: kuwonetsa zochitika zonse;
  • kubectl config current-context: pezani zomwe zikuchitika;
  • kubectl config use-context: sinthani zomwe zikuchitika;
  • kubectl config set-context: Sinthani nkhaniyo.

Komabe, kugwiritsa ntchito malamulowa mwachindunji sikothandiza chifukwa ndiatali. Mutha kupanga zilembo zachipolopolo kwa iwo zomwe ndizosavuta kuchita.

Ndidapanga ma alias kutengera malamulo awa omwe amapereka magwiridwe antchito ofanana ndi kubectx. Apa mutha kuwawona akugwira ntchito:

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Dziwani kuti ma aliases amagwiritsa ntchito fzf kuti apereke mawonekedwe ochezera aulere (monga mawonekedwe a kubectx). Izi zikutanthauza kuti muyenera kukhazikitsa fzfkugwiritsa ntchito zilembo izi.

Nawa matanthauzo a zilembo zokha:

# ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ контСкст
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/^..//")"'

Kuti muyike zilembo izi muyenera kuwonjezera matanthauzidwe apamwambawa pafayilo yanu ~/.bashrc kapena ~/.zshrc ndikuyambitsanso chipolopolo chanu.

Kugwiritsa ntchito mapulagini

Kubectl imakulolani kuti muyike mapulagini omwe amachitidwa mofanana ndi malamulo oyambirira. Mwachitsanzo, mutha kukhazikitsa pulogalamu yowonjezera ya kubectl-foo ndikuyiyendetsa potsatira lamulo kubectl foo.

Zingakhale zabwino kusintha nkhani ndi malo a mayina motere, mwachitsanzo pothamanga kubectl ctx kusintha nkhani ndi kubectl ns kusintha dzina.

Ndalemba mapulagini awiri omwe amachita izi:

Ntchito ya mapulagini imachokera pazidziwitso za gawo lapitalo.

Umu ndi momwe amagwirira ntchito:

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Dziwani kuti mapulagini amagwiritsa ntchito fzf kuti apereke mawonekedwe osakira aulere (monga mawonekedwe a kubectx). Izi zikutanthauza kuti muyenera kukhazikitsa fzfkugwiritsa ntchito zilembo izi.

Kuti muyike mapulagini, muyenera kutsitsa zolemba zachipolopolo zotchulidwa kukhalactl-ctx ΠΈ kubectl-ns ku chikwatu chilichonse muzosintha zanu za PATH ndikupangitsa kuti zitheke ndi mwachitsanzo. chmod +x. Mukangotha ​​izi mudzatha kugwiritsa ntchito kubectl ctx ΠΈ kubectl ns.

5. Chepetsani zolowetsa ndi autoaliases

Zipolopolo za Shell ndi njira yabwino yofulumizitsa zolowetsa. Ntchito kubectl-aliases ili ndi njira zazifupi za 800 zamalamulo oyambira a kubectl.

Mutha kukhala mukuganiza - mumakumbukira bwanji zilembo 800? Koma simuyenera kukumbukira zonse, chifukwa zimamangidwa molingana ndi dongosolo losavuta, lomwe laperekedwa pansipa:

Momwe mungagwiritsire ntchito kubectl mogwira mtima: kalozera watsatanetsatane
Mwachitsanzo:

  1. kgpooyaml - kubectl kupeza pods oyaml
  2. ksysgsvcw - kubectl -n kube-system kupeza svc w
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. kgdepallsl - kubectl kupeza kutumizidwa onse sl

Monga mukuwonera, ma alias amapangidwa ndi zigawo, chilichonse chomwe chimayimira gawo la lamulo la kubectl. Alias ​​aliyense akhoza kukhala ndi gawo limodzi la lamulo loyambira, ntchito, ndi zothandizira, ndi zigawo zingapo zamagawo. "Mumangodzaza" zigawo izi kuchokera kumanzere kupita kumanja molingana ndi chithunzi pamwambapa.

Chithunzi chatsatanetsatane chapano chili pa GitHub. Kumeneko mungapezenso mndandanda wathunthu wamakanema.

Mwachitsanzo, mawu akuti kgpooyamlall ndi ofanana ndi lamulo kubectl get pods -o yaml --all-namespaces.

Dongosolo lachibale la zosankha sizofunikira: lamulo kgpooyamlall ikufanana ndi lamulo kgpoalloyaml.

Simuyenera kugwiritsa ntchito zigawo zonse ngati alias. Mwachitsanzo k, kg, klo, ksys, kgpo angagwiritsidwenso ntchito. Kuphatikiza apo, mutha kuphatikiza ma alias ndi malamulo okhazikika kapena zosankha pamzere wamalamulo:

Mwachitsanzo:

  1. M'malo mwake kubectl proxy mukhoza kulemba k proxy.
  2. M'malo mwake kubectl get roles mukhoza kulemba kg roles (pakali pano palibe dzina lachidziwitso cha Maudindo gwero).
  3. Kuti mupeze deta ya pod inayake, mungagwiritse ntchito lamulo kgpo my-pod β€” kubectl get pod my-pod.

Chonde dziwani kuti zilembo zina zimafuna mkangano wa mzere wolamula. Mwachitsanzo, alias kgpol amatanthauza kubectl get pods -l. Njira -l amafuna mkangano - chizindikiro. Ngati mugwiritsa ntchito alias zikuwoneka ngati kgpol app=ui.

Chifukwa zilembo zina zimafuna mikangano, mawu oti a, f, ndi l ayenera kugwiritsidwa ntchito pomaliza.

Nthawi zambiri, mukapeza chiwembu ichi, mutha kupeza mwachidziwitso zilembo zomwe mukufuna kuchita ndikusunga nthawi yambiri yolemba.

kukhazikitsa

Kuti muyike kubectl-aliases, muyenera kutsitsa fayilo .kubectl_aliases kuchokera ku GitHub ndikuphatikiza mufayilo ~/.bashrc kapena ~/.zshrc:

source ~/.kubectl_aliases

Kumaliza zokha

Monga tanena kale, nthawi zambiri mumawonjezera mawu owonjezera pazambiri pamzere wolamula. Mwachitsanzo:

$ kgpooyaml test-pod-d4b77b989

Ngati mugwiritsa ntchito kutsiriza kwa lamulo la kubectl, mwina mwagwiritsapo ntchito kumalizitsa pa zinthu monga mayina azinthu. Koma kodi izi zingatheke akagwiritsidwa ntchito?

Ili ndi funso lofunika kwambiri chifukwa ngati kumalizitsa kokha sikukugwira ntchito, mutaya zina mwazabwino zamatchulidwe.

Yankho limatengera chipolopolo chomwe mukugwiritsa ntchito:

  1. Kwa Zsh, kumaliza kwa dzina kumagwira ntchito kunja kwa bokosi.
  2. Kwa Bash, mwatsoka, ntchito ina imafunika kuti munthu athe kumaliza ntchito.

Kuthandizira kumalizidwa kokwanira kwa ma alias ku Bash

Vuto la Bash ndikuti limayesa kumaliza (nthawi iliyonse mukasindikiza Tab) dzina, osati lamulo lomwe dzinali limatchula (monga Zsh amachitira, mwachitsanzo). Popeza mulibe mawu omaliza a zilembo zonse 800, kumalizitsa zokha sikugwira ntchito.

Ntchitoyi dzina lathunthu imapereka njira yothetsera vutoli. Imalumikizana ndi njira yomaliza ya ma alias, mkatimo imakulitsa dzina lachidziwitso ku lamulo, ndikubwezeretsanso zosankha zamalamulo omalizidwa. Izi zikutanthauza kuti padding kwa alias amachita chimodzimodzi ndi lamulo lathunthu.

Potsatira, ndifotokoza kaye momwe mungayikitsire zilembo zonse kenako momwe mungasinthire kuti muthe kumaliza zonse za kubectl.

Kuyika zilembo zonse

Choyamba, dzina lathunthu limatengera bash-kumaliza. Chifukwa chake, musanayike ma alias athunthu, muyenera kuwonetsetsa kuti bash-completion yakhazikitsidwa. Malangizo oyika adaperekedwa kale kwa Linux ndi MacOS.

Chidziwitso Chofunikira kwa Ogwiritsa Ntchito a MacOS: Monga script ya kubectl autocompletion, alias-alias sagwira ntchito ndi Bash 3.2, yomwe ndi yosasinthika pa MacOS. Makamaka, zofananira zonse zimatengera bash-completion v2 (brew install bash-completion@2), zomwe zimafuna osachepera Bash 4.1. Izi zikutanthauza kuti kuti mugwiritse ntchito ma alias athunthu pa MacOS muyenera kukhazikitsa mtundu watsopano wa Bash.

Muyenera kukopera script bash_completion.sh kuchokera Malo a GitHub ndikuziphatikiza mufayilo yanu ~/.bashrc:

source ~/bash_completion.sh

Pambuyo poyambitsanso chipolopolocho, zidziwitso zathunthu zidzakhazikitsidwa kwathunthu.

Kuyang'anira kumalizitsidwa kwamtundu wa kubectl

Mwaukadaulo wathunthu-zidziwitso zimapereka ntchito yokulunga _complete_alias. Ntchitoyi imayang'ana ma alias ndikubwezeretsanso malingaliro omaliza a lamulo la alias.

Kuti mugwirizanitse ntchito ndi dzina linalake, muyenera kugwiritsa ntchito makina omangira a Bash wathunthu, kukhazikitsa _complete_alias ngati ntchito yomaliza.

Mwachitsanzo, tiyeni titenge alias k, yomwe imayimira lamulo la kubectl. kukhazikitsa _complete_alias Monga chothandizira pazidziwitso izi, muyenera kuyendetsa lamulo ili:

$ complete -F _complete_alias k

Zotsatira zake ndikuti nthawi iliyonse mukamaliza alias k, ntchitoyi imatchedwa _complete_alias, yomwe imayang'ana dzina lachidziwitso ndikubwezeretsanso malangizo omaliza a lamulo kubectl.

Chitsanzo chachiwiri, tiyeni titenge mawu oti alias kg, lomwe limatanthauza kubectl get:

$ complete -F _complete_alias kg

Monga momwe ziliri m'chitsanzo cham'mbuyomu, mukamaliza ma kilogalamu, mumapeza malangizo omwewo omwe mungatenge. kubectl get.

Zindikirani kuti mutha kugwiritsa ntchito zilembo zamtundu uliwonse pamakina anu.

Chifukwa chake, kuti muthe kukwanitsa kwa ma aliase onse a kubectl, muyenera kuyendetsa lamulo lomwe lili pamwambapa kwa aliyense waiwo. Chidutswa chotsatirachi chimachita izi, bola ngati mwakhazikitsa kubectl-aliases ~/.kubectl-aliases:

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

Chidutswa cha code ichi chiyenera kuikidwa m'manja mwanu ~/.bashrc, yambitsaninso chipolopolo cha lamulo ndipo kumalizitsa kudzapezeka kwa ma aliase onse 800 kubectl.

6. Kukulitsa kubectl ndi mapulagini

Kuyambira Mtundu 1.12, kubectl imathandizira plugin mechanism, zomwe zimakulolani kuti muwonjezere ntchito zake ndi malamulo owonjezera.

Ngati mumadziwa Njira zowonjezera za Git, ndiye mapulagini a kubectl amamangidwa pa mfundo yomweyo.

M'mutu uno, tiwona momwe mungayikitsire mapulagini, komwe mungawapeze, komanso momwe mungapangire mapulagini anu.

Kukhazikitsa mapulagini

Mapulagini a Kubectl amagawidwa ngati mafayilo osavuta omwe ali ndi dzina ngati kubectl-x. Mawu Oyamba kubectl- ikufunika, ndikutsatiridwa ndi subcommand yatsopano ya kubectl yomwe imakupatsani mwayi woyimbira pulogalamu yowonjezera.

Mwachitsanzo, pulogalamu yowonjezera ya hello idzagawidwa ngati fayilo yotchedwa kubectl-hello.

Kuti muyike pulogalamu yowonjezera, muyenera kukopera fayilo kubectl-x ku chikwatu chilichonse mu PATH yanu ndikupangitsa kuti ikwaniritsidwe, mwachitsanzo ndi chmod +x. Zitangotha ​​izi mutha kuyimba pulogalamu yowonjezera ndi kubectl x.

Mutha kugwiritsa ntchito lamulo ili kuti mulembe mapulagini onse omwe adayikidwa pakompyuta yanu:

$ kubectl plugin list

Lamuloli liwonetsanso machenjezo ngati muli ndi mapulagini angapo okhala ndi dzina lomwelo, kapena ngati pali fayilo ya mapulagini yomwe singagwire ntchito.

Kupeza ndikuyika mapulagini pogwiritsa ntchito Krew

Mapulagini a Kubectl amatha kugawidwa kapena kugwiritsidwanso ntchito ngati phukusi la mapulogalamu. Koma mungapeze kuti mapulagini omwe ena adagawana nawo?

Project Krew ikufuna kupereka yankho logwirizana logawana, kusaka, kukhazikitsa ndi kuyang'anira mapulagini a kubectl. Pulojekitiyi imadzitcha "woyang'anira phukusi la kubectl mapulagini" (Krew ndi ofanana ndi Brew).

Krew ndi mndandanda wamapulagini a kubectl omwe mungasankhe ndikuyika. Nthawi yomweyo, Krew ndi pulogalamu yowonjezera ya kubectl.

Izi zikutanthauza kuti kukhazikitsa Krew kumagwira ntchito ngati kukhazikitsa pulogalamu yowonjezera ya kubectl. Mukhoza kupeza malangizo atsatanetsatane pa Tsamba la GitHub.

Malamulo ofunika kwambiri a Krew ndi awa:

# Поиск в спискС плагинов
$ kubectl krew search [<query>]
# ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π΅
$ kubectl krew info <plugin>
# Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½
$ kubectl krew install <plugin>
# ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π΄ΠΎ послСднСй вСрсии
$ kubectl krew upgrade
# ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, установлСнныС Ρ‡Π΅Ρ€Π΅Π· Krew
$ kubectl krew list
# Π”Π΅ΠΈΠ½ΡΡ‚Π°Π»Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½
$ kubectl krew remove <plugin>

Chonde dziwani kuti kukhazikitsa mapulagini pogwiritsa ntchito Krew sikusokoneza kuyika mapulagini pogwiritsa ntchito njira yomwe tafotokozayi.

Chonde dziwani kuti lamulo kubectl krew list amangowonetsa mapulagini omwe adayikidwa pogwiritsa ntchito Krew, pomwe lamulo kubectl plugin list imalemba mapulagini onse, ndiye kuti, omwe adayikidwa pogwiritsa ntchito Krew ndi omwe adayikidwa ndi njira zina.

Kupeza mapulagini kwina

Krew ndi ntchito yachinyamata, yomwe ili mkati mwake mndandanda mapulagini pafupifupi 30 okha. Ngati simukupeza zomwe mukufuna, mutha kupeza mapulagini kwina, monga GitHub.

Ndikupangira kuyang'ana gawo la GitHub kubectl-plugins. Kumeneko mudzapeza mapulagini ambiri omwe alipo omwe muyenera kuyang'ana.

Kulemba mapulagini anu

mungathe nokha pangani mapulagini - Sizovuta. Muyenera kupanga executable yomwe imachita zomwe mukufuna, itchuleni ngati kubectl-x ndi kukhazikitsa monga tafotokozera pamwambapa.

Fayilo ikhoza kukhala bash script, python script, kapena GO application yophatikizidwa - zilibe kanthu. Chokhacho ndichoti chikhoza kuchitidwa mwachindunji mu machitidwe opangira.

Tiyeni tipange plugin yachitsanzo pompano. M'gawo lapitalo, mudagwiritsa ntchito lamulo la kubectl kuti mulembe zotengera za pod iliyonse. Ndikosavuta kutembenuza lamuloli kukhala pulogalamu yowonjezera yomwe mutha kuyimba nayo mwachitsanzo. kubectl img.

Pangani fayilo kubectl-img zotsatirazi:

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

Tsopano pangani fayilo kuti ikwaniritsidwe ndi chmod +x kubectl-img ndikusunthira ku chikwatu chilichonse mu PATH yanu. Mukangotha ​​izi mutha kugwiritsa ntchito pulogalamu yowonjezera kubectl img.

Monga tafotokozera, mapulagini a kubectl amatha kulembedwa mumapulogalamu aliwonse kapena chilankhulo chilichonse. Ngati mukugwiritsa ntchito zipolopolo, mwayi wotha kuyimba kubectl mosavuta kuchokera mkati mwa pulogalamu yowonjezera. Komabe, mutha kulemba mapulagini ovuta kwambiri m'zilankhulo zenizeni zamapulogalamu pogwiritsa ntchito Kubernetes kasitomala library. Ngati mukugwiritsa ntchito Go, mutha kugwiritsanso ntchito cli-runtime library, yomwe ilipo makamaka polemba mapulagini a kubectl.

Momwe mungagawire mapulagini anu

Ngati mukuganiza kuti mapulagini anu angakhale othandiza kwa ena, omasuka kugawana nawo pa GitHub. Onetsetsani kuti mwawawonjezera pamutuwu kubectl-plugins.

Mukhozanso kupempha kuti pulogalamu yowonjezera yanu iwonjezedwe Mndandanda wa Krew. Malangizo amomwe angachitire izi ali mkati Zosungirako za GitHub.

Kumaliza kwa lamulo

Mapulagini sakuthandizira kumalizitsa zokha. Ndiye kuti, muyenera kulowa dzina lathunthu la pulogalamu yowonjezera ndi mayina athunthu a mikangano.

Chosungira cha GitHub kubectl cha ntchitoyi chili pempho lotseguka. Ndiye ndizotheka kuti izi zitha kuchitika mtsogolo muno.

Zabwino zonse!!!

Chinanso choti muwerenge pamutuwu:

  1. Miyezo itatu ya autoscaling ku Kubernetes ndi momwe mungagwiritsire ntchito bwino.
  2. Kubernetes mu mzimu wa piracy wokhala ndi template yokhazikitsidwa.
  3. Njira yathu Yozungulira Kubernetes mu Telegraph.

Source: www.habr.com

Kuwonjezera ndemanga