Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
Uma usebenza ne-Kubernetes, i-kubectl cishe ingenye yezinsiza ozisebenzisa kakhulu. Futhi noma nini lapho uchitha isikhathi esiningi usebenza ngethuluzi elithile, kuyakhokha ukulitadisha kahle futhi ufunde indlela yokulisebenzisa ngempumelelo.

Ithimba I-Kubernetes aaS evela ku-Mail.ru kuhunyushwe i-athikili kaDaniel Weibel lapho uzothola khona amathiphu namasu okusebenza ngempumelelo nge-kubectl. Kuzokusiza futhi ukuthi uthole ukuqonda okujulile kwe-Kubernetes.

Ngokusho komlobi, umgomo we-athikili ukwenza umsebenzi wakho wansuku zonke no-Kubernetes ungasebenzi nje kuphela, kodwa futhi ujabulise nakakhulu!

Isigeniso: Kuyini kubectl

Ngaphambi kokuthi ufunde ukusebenzisa i-bectl ngempumelelo kakhudlwana, udinga ukuthola ukuqonda okuyisisekelo kokuthi iyini nokuthi isebenza kanjani.

Ngokombono womsebenzisi, i-kubectl iyiphaneli yokulawula ekuvumela ukuthi wenze imisebenzi ye-Kubernetes.

Uma sikhuluma ngobuchwepheshe, i-kubectl iyiklayenti le-Kubernetes API.

I-Kubernetes API iyi-HTTP REST API. Le API iwumsebenzisi we-Kubernetes weqiniso, olawulwa ngayo ngokuphelele. Lokhu kusho ukuthi yonke imisebenzi ye-Kubernetes ivezwa njengendawo yokugcina ye-API futhi ingenziwa ngesicelo se-HTTP kuleyo ndawo yokugcina.

Ngakho-ke, umsebenzi omkhulu we-kubectl ukwenza izicelo ze-HTTP ku-Kubernetes API:

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
I-Kubernetes iwuhlelo olugxile ezinsizeni ngokuphelele. Lokhu kusho ukuthi igcina isimo sangaphakathi sezinsiza futhi yonke imisebenzi ye-Kubernetes iyimisebenzi ye-CRUD.

Ulawula ngokuphelele i-Kubernetes ngokuphatha lezi zinsiza, futhi u-Kubernetes ubala ukuthi yini okufanele yenziwe ngokusekelwe esimweni samanje sezinsiza. Ngalesi sizathu, inkomba ye-Kubernetes API ihlelwa njengohlu lwezinhlobo zezinsiza nemisebenzi yazo ehlobene.

Ake sibheke isibonelo.

Ake sithi ufuna ukudala insiza ye-ReplicaSet. Ukwenza lokhu, uchaza i-ReplicaSet efayeleni ngegama replicaset.yaml, bese ugijima umyalo:

$ kubectl create -f replicaset.yaml

Lokhu kuzodala insiza ye-ReplicaSet. Kodwa kwenzekani ngemuva?

I-Kubernetes inomsebenzi wokudala we-ReplicaSet. Njenganoma yimuphi omunye umsebenzi, ivezwa njengendawo yokugcina ye-API. Isiphetho esithile se-API salo msebenzi sibukeka kanje:

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

Iziphetho ze-API zayo yonke imisebenzi ye-Kubernetes zingatholakala kokuthi Ireferensi ye-API (kufaka phakathi isiphetho esingenhla). Ukuze wenze isicelo sangempela endaweni yokugcina, kufanele uqale wengeze i-URL yeseva ye-API ezindleleni zephoyinti lokugcina ezisohlwini lwereferensi ye-API.

Ngakho-ke, lapho ukhipha umyalo ongenhla, kubectl ithumela isicelo se-HTTP POST endaweni yokugcina ye-API engenhla. Incazelo ye-ReplicaSet oyinikezile kufayela replicaset.yaml, ithunyelwa emzimbeni wesicelo.

Lena yindlela i-kubectl esebenza ngayo kuyo yonke imiyalo esebenzisana neqoqo le-Kubernetes. Kuzo zonke lezi zimo, i-kubectl ivele yenze izicelo ze-HTTP ezindaweni ezifanele zokugcina ze-Kubernetes API.

Sicela wazi ukuthi ungaphatha ngokugcwele i-Kubernetes usebenzisa insiza efana nale curlngokuthumela mathupha izicelo ze-HTTP ku-Kubernetes API. I-Kubectl ikwenza kube lula ukusebenzisa i-Kubernetes API.

Lezi izisekelo zokuthi i-kubectl iyini nokuthi isebenza kanjani. Kepha kukhona okunye mayelana ne-Kubernetes API okufanele wonke umsebenzisi we-kubectl akwazi. Ake sibheke ngokushesha umhlaba wangaphakathi we-Kubernetes.

Umhlaba wangaphakathi we-Kubernetes

I-Kubernetes iqukethe isethi yezingxenye ezizimele ezisebenza njengezinqubo ezihlukene kuma-cluster node. Ezinye izingxenye zisebenza kuma-master node, ezinye kuma-worker node, ingxenye ngayinye yenza umsebenzi wayo othize.

Nazi izingxenye ezibaluleke kakhulu kuma-node amakhulu:

  1. Isitoreji - izitolo izincazelo zensiza (ngokuvamile kuba etcd).
  2. Iseva ye-API - inikeza i-API futhi ilawula ukugcinwa.
  3. Umphathi wesilawuli - Iqinisekisa ukuthi izimo zensiza ziyahambisana nezicaciso.
  4. Isihleli - ukuhlela amaphodi kumanodi abasebenzi.

Futhi nansi ingxenye ebaluleke kakhulu kuma-node abasebenzi:

  1. kubelet - ilawula ukwethulwa kweziqukathi endaweni yokusebenza.

Ukuze siqonde ukuthi lezi zingxenye zisebenza kanjani ndawonye, ​​ake sibheke isibonelo.

Ake sicabange ukuthi usanda kuqeda kubectl create -f replicaset.yaml, ngemuva kwalokho kubectl wenze isicelo se-HTTP POST ku Iphoyinti lokugcina le-ReplicaSet API (ukudlulisa incazelo yensiza ye-ReplicaSet).

Kwenzakalani ku-cluster?

  1. Ngemva kokwenza kubectl create -f replicaset.yaml Iseva ye-API igcina incazelo yensiza ye-ReplicaSet endaweni yokugcina:

    Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane

  2. Okulandelayo, isilawuli se-ReplicaSet sethulwa kumphathi wesilawuli, esisingatha ukudalwa, ukuguqulwa kanye nokususwa kwezinsiza ze-ReplicaSet:

    Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane

  3. Isilawuli se-ReplicaSet sidala incazelo ye-pod yekhophi ngayinye ye-ReplicaSet (ngokuvumelana nesifanekiso se-pod encazelweni ye-ReplicaSet) futhi siyigcina endaweni yokugcina:

    Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane

  4. Isihleli siyethulwa, silandelela ama-pod angakabelwa kunoma yimaphi amanodi abasebenzi:

    Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane

  5. Umhleli ukhetha indawo yesisebenzi efanelekile ye-pod ngayinye bese wengeza lolu lwazi encazelweni ye-pod esitolo:

    Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane

  6. Ku-node yesisebenzi lapho i-pod yabelwe khona, i-Kubelet yethulwa, ilandelela ama-pods anikezwe kule nodi:

    Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane

  7. I-Kubelet ifunda incazelo ye-pod endaweni yokugcina futhi iyala isikhathi sokusebenza esitsheni, njenge-Docker, ukuthi yethule iziqukathi endaweni:

    Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane

Ngezansi inguqulo yombhalo yale ncazelo.

Isicelo se-API endaweni yokugcina yokudala ye-ReplicaSet sicutshungulwa iseva ye-API. Iseva ye-API iqinisekisa isicelo futhi igcina incazelo yensiza ye-ReplicaSet endaweni yokugcina.

Lo mcimbi uqala isilawuli se-ReplicaSet, okuyinqubo engaphansi yomphathi wesilawuli. Isilawuli se-ReplicaSet siqapha ukudalwa, ukubuyekezwa, nokususwa kwezisetshenziswa ze-ReplicaSet esitolo futhi sithola isaziso somcimbi uma lokhu kwenzeka.

Umsebenzi wesilawuli se-ReplicaSet ukuqinisekisa ukuthi inombolo edingekayo yama-ReplicaSet pods ikhona. Esibonelweni sethu, awekho ama-pods okwamanje, ngakho-ke isilawuli se-ReplicaSet sidala lezi zincazelo ze-pod (ngokuvumelana nesifanekiso se-pod encazelweni ye-ReplicaSet) futhi sizigcine endaweni yokugcina.

Ukwakhiwa kwama-pod amasha kuqalwa isihleli esilandelela izincazelo ze-pod ezingakahlelelwe amanodi ezisebenzi. Umhleli ukhetha indawo yesisebenzi efanelekile ye-pod ngayinye futhi abuyekeze izincazelo ze-pod endaweni yokugcina.

Qaphela ukuthi kuze kube manje, ayikho ikhodi yomthwalo womsebenzi ebisebenza noma kuphi kuqoqo. Konke osekwenziwe kuze kube manje - lokhu ukudalwa nokubuyekezwa kwezinsiza endaweni yokugcina ku-master node.

Umcimbi wokugcina uvusa ama-Kubelets, aqapha ama-pods ahlelelwe ama-node abo abasebenzi. I-Kubelet yenodi yesisebenzi lapho kufakwe khona ama-pods akho e-ReplicaSet kufanele iyalele isikhathi sokusebenza sesiqukathi, njenge-Docker, ukulanda izithombe ezidingekayo zesiqukathi futhi ziyisebenzise.

Kuleli qophelo, uhlelo lwakho lokusebenza lwe-ReplicaSet ekugcineni luyasebenza!

Iqhaza le-Kubernetes API

Njengoba ubonile esibonelweni sangaphambilini, izingxenye ze-Kubernetes (ngaphandle kweseva ye-API nesitoreji) zibuka izinguquko kuzinsiza ezikusitoreji futhi zishintshe ulwazi mayelana nezinsiza ezikusitoreji.

Vele, lezi zingxenye azihlangani nesitoreji ngokuqondile, kodwa kuphela nge-Kubernetes API.

Cabangela izibonelo ezilandelayo:

  1. Isilawuli se-ReplicaSet sisebenzisa iphoyinti lokugcina le-API klelisa ama-ReplicaSets ngepharamitha watch ukuqapha izinguquko kuzinsiza ze-ReplicaSet.
  2. Isilawuli se-ReplicaSet sisebenzisa iphoyinti lokugcina le-API dala iPod (dala i-pod) ukuze udale ama-pods.
  3. I-Scheduler isebenzisa iphoyinti lokugcina le-API i-patch pod (hlela i-pod) ukuze ubuyekeze ama-pods ngolwazi mayelana nendawo yesisebenzi ekhethiwe.

Njengoba ubona, lena yi-API efanayo efinyelelwa yi-kubectl. Ukusebenzisa i-API efanayo yezingxenye zangaphakathi nabasebenzisi bangaphandle kuwumqondo oyisisekelo ekwakhiweni kwe-Kubernetes.

Manje singafingqa ukuthi uKubernetes usebenza kanjani:

  1. Izitolo zesitoreji zichaza, okungukuthi, izinsiza ze-Kubernetes.
  2. Iseva ye-API inikeza isixhumi esibonakalayo endaweni yokugcina ngendlela ye-Kubernetes API.
  3. Zonke ezinye izingxenye ze-Kubernetes nabasebenzisi bafunda, babheka, futhi bakhohlisa isimo se-Kubernetes (izinsiza) nge-API.

Ukwazi le mibono kuzokusiza uqonde kangcono i-bectl futhi uthole okuningi kuyo.

Manje ake sibheke amathiphu athile namasu azosiza ukuthuthukisa ukukhiqiza kwakho nge-kubectl.

1. Sheshisa okokufaka usebenzisa ukuqedela umyalo

Enye yezindlela eziwusizo kakhulu, kodwa ezivame ukunganakwa, zokuthuthukisa ukusebenza nge-kubectl ukuqedwa komyalo.

Ukuqedwa komyalo kukuvumela ukuthi ugcwalise ngokuzenzakalelayo izingxenye zemiyalo ye-kubectl usebenzisa ukhiye we-Tab. Lokhu kusebenzela imiyalo engaphansi, izinketho, nezimpikiswano, okuhlanganisa into eyinkimbinkimbi njengamagama ezinsiza.

Bona ukuthi ukuqedwa komyalo we-kubectl kusebenza kanjani:

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
Ukuqedwa komyalo kusebenza kumagobolondo e-Bash ne-Zsh.

Umhlahlandlela Osemthethweni iqukethe imiyalelo enemininingwane yokusetha ukuqedela ngokuzenzakalela, kodwa ngezansi sizohlinzeka ngengcaphuno emfushane.

Ukuqedwa komyalo kusebenza kanjani

Ukuqedwa komyalo kuyisici segobolondo esisebenza kusetshenziswa iskripthi sokuqedela. Iskripthi sesandiso siwumbhalo wegobolondo ochaza ukuziphatha kwesandiso somyalo othile.

I-Kubectl ikhiqiza ngokuzenzakalelayo futhi ikhiphe imibhalo yesandiso ye-Bash ne-Zsh isebenzisa imiyalo elandelayo:

$ kubectl completion bash

Noma:

$ kubectl completion zsh

Ngokombono, kwanele ukuxhuma okukhiphayo kwale miyalo kugobolondo lomyalo elifanele ukuze i-kubectl igcwalise imiyalo.

Empeleni, indlela yokuxhuma ihlukile ku-Bash (okuhlanganisa umehluko phakathi kwe-Linux ne-MacOS) kanye ne-Zsh. Ngezansi sizobheka zonke lezi zinketho.

Bash ku-Linux

Iskripthi sokuqedwa kwe-Bash sincike kuphakheji yokuqedela i-bash, ngakho-ke udinga ukuyifaka kuqala:

$ sudo apt-get install bash-completion

Noma:

$ yum install bash-completion

Ungahlola ukuthi iphakheji ifakwe ngempumelelo usebenzisa umyalo olandelayo:

$ type _init_completion

Uma lokhu kukhipha ikhodi yokusebenza kwegobolondo, i-bash-completion ifakwa ngendlela efanele. Uma umyalo unikeza iphutha elithi "Akutholakali", udinga ukwengeza umugqa olandelayo efayeleni lakho ~ / .bashrc:

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

Ingabe kuyadingeka ukwengeza lo mugqa efayeleni ~ / .bashrc noma cha kuya kumphathi wephakheji owusebenzisile ukufaka i-bash-completion. Lokhu kuyadingeka ku-APT, kodwa hhayi ku-YUM.

Ngemva kokufaka i-bash-completion, udinga ukulungisa yonke into ukuze iskripthi sokuqeda i-kubectl sinikwe amandla kuzo zonke izikhathi zegobolondo.

Enye indlela yokwenza lokhu ukwengeza umugqa olandelayo efayeleni ~ / .bashrc:

source <(kubectl completion bash)

Enye indlela iwukwengeza iskripthi sokunweba se-kubectl kumkhombandlela /etc/bash_completion.d (yidale uma ingekho):

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

Zonke izikripthi zezengezo kukhathalogi /etc/bash_completion.d afakwa ngokuzenzakalelayo ekuqedeni i-bash.

Zombili izinketho zisebenza ngokulinganayo.

Ngemuva kokuqala kabusha igobolondo, ukuqedwa komyalo we-kubectl kuzosebenza.

Bash ku-MacOS

Ku-MacOS ukusetha kuyinkimbinkimbi kancane. Iqiniso liwukuthi ngokuzenzakalelayo, i-MacOS isebenzisa inguqulo ye-Bash 3.2, futhi umbhalo we-kubectl autocompletion udinga inguqulo ye-Bash okungenani engu-4.1 futhi ayisebenzi ku-Bash 3.2.

Kunezinkinga zelayisensi ezihlobene nokusebenzisa inguqulo yakudala ye-Bash ku-MacOS. Inguqulo ye-Bash 4 ilayisensi ngaphansi kwe-GPLv3, engasekelwe yi-Apple.

Ukuze ulungiselele ukuqedwa okuzenzakalelayo kwe-kubectl ku-MacOS, udinga ukufaka inguqulo yakamuva ye-Bash. Ungakwazi futhi ukusetha i-Bash ebuyekeziwe njengegobolondo lakho elizenzakalelayo, elizokongela izinkinga eziningi ngokuzayo. Akunzima, imininingwane inikezwe esihlokweni "Ibuyekeza i-Bash ku-MacOS".

Ngaphambi kokuqhubeka, qiniseka ukuthi usebenzisa inguqulo yakamuva ye-Bash (hlola okukhiphayo bash --version).

Isikripthi sokuqedwa kwe-Bash siyahlukahluka ngephrojekthi bash-ukuqedwa, ngakho udinga ukuyifaka kuqala.

Ungafaka i-bash-completion usebenzisa Homebrew:

$ brew install bash-completion@2

kuyinto @2 imele inguqulo ye-bash-completion 2. ukuqedela ngokuzenzakalela kwe-kubectl kudinga i-bash-completion v2, futhi i-bash-completion v2 idinga ubuncane benguqulo ye-Bash 4.1.

Umyalo ophumayo brew-install iqukethe isigaba se-Caveats, esicacisa lokho okudingeka kwengezwe kufayela ~/.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"

Kodwa-ke, ngincoma ukuthi wengeze le migqa hhayi ~/.bash_profile, futhi ngaphakathi ~/.bashrc. Kulokhu, ukuqedela ngokuzenzakalela ngeke kutholakale kuphela ngokuyinhloko, kodwa futhi kumagobolondo womyalo wengane.

Ngemuva kokuqala kabusha igobolondo lomyalo, ungaqinisekisa ukuthi ukufakwa kulungile usebenzisa umyalo olandelayo:

$ type _init_completion

Uma ubona umsebenzi wegobolondo kokuphumayo, khona-ke yonke into ilungiswa ngendlela efanele.

Manje sidinga ukuqinisekisa ukuthi ukuqedela ngokuzenzakalela kwe-kubectl kunikwe amandla kuzo zonke izikhathi.

Enye indlela ukwengeza umugqa olandelayo kweyakho ~/.bashrc:

source <(kubectl completion bash)

Indlela yesibili iwukwengeza umbhalo wokuqedela ngokuzenzakalela kufolda /usr/local/etc/bash_completion.d:

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

Le ndlela izosebenza kuphela uma ufake i-bash-completion usebenzisa i-Homebrew. Kulesi simo, i-bash-completion ilayisha zonke izikripthi kulolu hlu lwemibhalo.

Uma ufake kubectl usebenzisa i-Homebrew, asikho isidingo sokwenza isinyathelo esedlule, njengoba umbhalo wokuqedela ngokuzenzakalela uzofakwa kufolda ngokuzenzakalelayo. /usr/local/etc/bash_completion.d ngesikhathi sokufakwa. Kulokhu, ukuqedela okuzenzakalelayo kwe-kubectl kuzoqala ukusebenza ngemuva nje kokufaka i-bash-completion.

Ngenxa yalokho, zonke lezi zinketho ziyalingana.

I-Zsh

Imibhalo yokuqedela ngokuzenzakalela ye-Zsh ayidingi noma yikuphi ukuncika. Konke okudingeka ukwenze ukuwavumela uma ulayisha igobolondo lomyalo.

Ungakwenza lokhu ngokungeza umugqa kweyakho ~/.zshrc ifayela:

source <(kubectl completion zsh)

Uma uthola iphutha not found: compdef ngemuva kokuqala kabusha igobolondo lakho, udinga ukunika amandla umsebenzi we-buildin compdef. Ungayivula ngokuyengeza ekuqaleni kwefayela lakho ~/.zshrc okulandelayo:

autoload -Uz compinit
compinit

2. Buka ngokushesha ukucaciswa kwensiza

Uma udala izincazelo zensiza ye-YAML, udinga ukwazi izinkambu nencazelo yazo kulezo zinsiza. Indawo eyodwa ongabheka kuyo lolu lwazi kusithenjwa se-API, esiqukethe imininingwane ephelele yazo zonke izinsiza.

Nokho, ukushintshela kusiphequluli sewebhu ngaso sonke isikhathi uma udinga ukucinga okuthile akulula. Ngakho-ke kubectl inikeza umyalo kubectl explain, okubonisa imininingwane yazo zonke izinsiza khona kanye kutheminali yakho.

Ifomethi yomyalo imi kanje:

$ kubectl explain resource[.field]...

Umyalo uzokhipha ukucaciswa kwensiza eceliwe noma inkambu. Ulwazi olubonisiwe luyafana nalolo oluqukethwe kumanuwali we-API.

Ngokuzenzakalelayo kubectl explain ibonisa kuphela izinga lokuqala lokuzalela amasimu.

Bona ukuthi ibukeka kanjani kungaba lapha.

Ungabonisa isihlahla sonke uma wengeza inketho --recursive:

$ kubectl explain deployment.spec --recursive

Uma ungazi kahle ukuthi yiziphi izinsiza ezidingekayo, ungabonisa zonke ngomyalo olandelayo:

$ kubectl api-resources

Lo myalo ubonisa amagama ezinsiza ngobuningi, isib. deployments esikhundleni salokho deployment. Iphinde ibonise igama elifushane, isibonelo deploy, kulezo zinsiza ezinakho. Ungakhathazeki ngalokhu kwehluka. Zonke lezi zinketho zokuqamba ziyalingana ne-kubectl. Okusho ukuthi, ungasebenzisa noma iyiphi yazo kubectl explain.

Yonke imiyalo elandelayo iyalingana:

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

3. Sebenzisa ifomethi yokuphuma kwekholomu yangokwezifiso

Ifomethi yokuphuma komyalo ezenzakalelayo 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

Le fomethi ifanelekile, kodwa iqukethe inani elilinganiselwe lolwazi. Uma kuqhathaniswa nefomethi yencazelo yensiza egcwele, izinkambu ezimbalwa kuphela eziboniswa lapha.

Kulokhu, ungasebenzisa ifomethi yokuphuma kwekholomu yangokwezifiso. Ikuvumela ukuthi unqume ukuthi iyiphi idatha ozoyikhipha. Ungabonisa noma iyiphi inkambu yensiza njengekholomu ehlukile.

Ukusetshenziswa kwefomethi yangokwezifiso kunqunywa kusetshenziswa izinketho:

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

Ungachaza ikholomu ngayinye yokuphumayo njengepheya <header>:<jsonpath>kuphi <header> igama lekholomu, futhi <jsonpath> β€” isisho esichaza inkambu yensiza.

Ake sibheke isibonelo esilula:

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

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

Okukhiphayo kuqukethe ikholomu eyodwa namagama ama-pods.

Inkulumo yokukhetha ikhetha amagama e-pod kusukela kunkambu metadata.name. Lokhu kungenxa yokuthi igama le-pod lichazwa endaweni yegama lengane metadata encazelweni yensiza ye-pod. Imininingwane eyengeziwe ingatholakala ku Umhlahlandlela we-API noma thayipha umyalo kubectl explain pod.metadata.name.

Manje ake sithi ufuna ukwengeza ikholomu eyengeziwe kokuphumayo, isibonelo ubonisa i-nodi ngayinye i-pod esebenzayo. Ukuze wenze lokhu, ungamane wengeze ukucaciswa kwekholomu efanele kunketho yamakholomu angokwezifiso:

$ 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

Isisho sikhetha igama le-node kusuka spec.nodeName - lapho i-pod inikezwa i-node, igama layo libhalwa ensimini spec.nodeName ukucaciswa kwensiza ye-pod. Ulwazi oluningiliziwe lungatholakala kokuphumayo kubectl explain pod.spec.nodeName.

Sicela uqaphele ukuthi izinkambu zezinsiza ze-Kubernetes zibucayi kakhulu.

Ungabuka noma iyiphi inkambu yensiza njengekholomu. Vele ubuyekeze ukucaciswa kwensiza bese uyizame nganoma yiziphi izinkambu ozithandayo.

Kodwa okokuqala, ake sibhekisise izinkulumo zokukhetha insimu.

Izinkulumo ze-JSONPath

Izinkulumo zokukhetha izinkambu zensiza zisekelwe kukho JSONPath.

I-JSONPath iwulimi lokubuyisa idatha kumadokhumenti e-JSON. Ukukhetha inkambu eyodwa kuyindlela elula yokusebenzisa i-JSONPath. Unokuningi amanye amathuba, okuhlanganisa abakhethi, izihlungi nokunye.

I-Kubectl ichaza isekela inombolo elinganiselwe yezici ze-JSONPath. Amathuba nezibonelo zokusetshenziswa kwazo kuchazwe ngezansi:

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

Umsebenzisi we-[] ubaluleke kakhulu. Izinkambu eziningi ze-Kubernetes ziwuhlu, futhi lo opharetha ikuvumela ukuthi ukhethe amalungu alolo hlu. Ivamise ukusetshenziswa ne-wildcard efana ne-[*] ukukhetha zonke izici zohlu.

Izibonelo zohlelo lokusebenza

Amathuba okusebenzisa ifomethi yokuphuma kwekholomu yangokwezifiso awapheli, njengoba ungabonisa noma iyiphi inkambu noma inhlanganisela yezinkambu zensiza kokuphumayo. Nazi ezinye izinhlelo zokusebenza eziyisampula, kodwa zizwe ukhululekile ukuzihlola futhi uthole izinhlelo zokusebenza ezikusebenzelayo.

  1. Ibonisa izithombe zeziqukathi zama-pods:
    $ 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

    Lo myalo ubonisa amagama esithombe sesiqukathi se-pod ngayinye.

    Khumbula ukuthi i-pod ingaba neziqukathi ezimbalwa, khona-ke amagama ezithombe azovezwa kulayini owodwa, ahlukaniswe ngamakhoma.

  2. Ibonisa izindawo zokutholakala kwenodi:
    $ 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

    Lo myalo uwusizo uma iqoqo lakho lisingathwe kumafu omphakathi. Ibonisa indawo yokutholakala yenodi ngayinye.

    Indawo etholakalayo umqondo wamafu okhawulela indawo yokuphindaphinda endaweni.

    Izindawo ezitholakalayo zenodi ngayinye zitholakala ngelebula elikhethekile - failure-domain.beta.kubernetes.io/zone. Uma iqoqo lisebenza emafini omphakathi, le lebula idalwa ngokuzenzakalelayo futhi igcwaliswe ngamagama ezindawo ezitholakalayo zenodi ngayinye.

    Amalebula awayona ingxenye yokucaciswa kwensiza yakwa-Kubernetes, ngakho-ke ngeke uthole ulwazi mayelana nawo Umhlahlandlela we-API. Nokho, angabonakala (njenganoma yimaphi amanye amalebula) uma ucela ulwazi mayelana namanodi ngefomethi ye-YAML noma ye-JSON:

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

    Lena indlela enhle yokufunda kabanzi mayelana nezinsiza, ngaphezu kokucaciswa kwezinsiza zokufunda.

4. Shintsha kalula phakathi kwamaqoqo nezikhala zamagama

Lapho i-kubectl yenza isicelo ku-Kubernetes API, iqala ngokufunda ifayela le-kubeconfig ukuze ithole yonke imingcele edingekayo yokuxhuma.

Ngokuzenzakalelayo ifayela le-kubeconfig lithi ~/.kube/config. Ngokuvamile leli fayela lidalwa noma libuyekezwe ngomyalo okhethekile.

Uma usebenza ngamaqoqo amaningi, ifayela lakho le-kubeconfig liqukethe izilungiselelo zokuxhuma kuwo wonke lawo maqoqo. Udinga indlela yokutshela umyalo we-kubectl ukuthi yiliphi iqoqo osebenza nalo.

Ngaphakathi kweqoqo, ungakha izikhala zamagama eziningiβ€”uhlobo lweqoqo elibonakalayo ngaphakathi kweqoqo elibonakalayo. I-Kubectl iphinde inqume ukuthi iyiphi indawo yamagama okufanele isetshenziswe ngokusekelwe kufayela le-kubeconfig. Lokhu kusho ukuthi udinga nendlela yokutshela umyalo we-kubectl ukuthi iyiphi indawo yegama okufanele usebenze ngayo.

Kulesi sahluko sizochaza ukuthi isebenza kanjani nokuthi ingenziwa kanjani ngempumelelo.

Qaphela ukuthi ungase ube namafayela e-kubeconfig amaningi asohlwini lwe-KUBECONFIG eguquguqukayo yemvelo. Kulokhu, wonke lawa mafayela azohlanganiswa abe ukucushwa okukodwa ngesikhathi sokusebenza. Ungakwazi futhi ukushintsha ifayela le-kubeconfig elizenzakalelayo ngokusebenzisa i-kubectl ngepharamitha --kubeconfig. Bheka imibhalo esemthethweni.

kubeconfig amafayela

Ake sibone ukuthi ifayela le-kubeconfig liqukethe ini:

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
Njengoba ubona, ifayela le-kubeconfig liqukethe isethi yezimo. Umongo uqukethe izici ezintathu:

  • Cluster - API URL yeseva cluster.
  • Umsebenzisi - imininingwane yokuqinisekisa yomsebenzisi kuqoqo.
  • I-Namespace - indawo yamagama esetshenziswa lapho kuhlanganiswa iqoqo.

Empeleni, bavame ukusebenzisa umongo owodwa iqoqo ngalinye ku-kubeconfig yabo. Nokho, ungaba nezingqikithi eziningi ngeqoqo ngalinye, ezihlukaniswa ngomsebenzisi noma indawo yamagama. Kodwa-ke, lokhu kulungiselelwa kokuqukethwe okuningi akuvamile, ngakho-ke ngokuvamile kuba nemephu eyodwa-to-one phakathi kwamaqoqo nezingqikithi.

Nganoma isiphi isikhathi, enye yezingqikithi ezamanje:

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
Uma i-kubectl ifunda ifayela lokumisa, ihlala ithatha ulwazi kusuka kumongo wamanje. Esibonelweni esingenhla, i-kubectl izoxhuma ku-Hare cluster.

Kanjalo, ukuze ushintshele kwelinye iqoqo, udinga ukushintsha umongo wamanje kufayela le-kubeconfig:

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
Manje i-kubectl izoxhuma ku-Fox cluster.

Ukuze ushintshele endaweni yamagama ehlukile kuqoqo elifanayo, udinga ukushintsha inani le-elementi ye-namespace yomongo wamanje:

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
Esibonelweni esingenhla, i-kubectl izosebenzisa i-namespace ye-Fox cluster's Prod (ngaphambilini kwakusethiwe indawo yamagama yokuhlola).

Qaphela ukuthi i-kubectl iphinde inikeze izinketho --cluster, --user, --namespace ΠΈ --context, okuvumela ukuthi ubhale phezu kwezakhi ngazinye kanye nomongo wamanje ngokwawo, kungakhathaliseki ukuthi yini esethwe ku-kubeconfig. Bheka kubectl options.

Ngokombono, ungakwazi ukushintsha ngokwakho izilungiselelo ku-kubeconfig. Kodwa kuyaphazamisa. Ukwenza lokhu kube lula, kunezinsiza ezahlukahlukene ezikuvumela ukuthi uguqule amapharamitha ngokuzenzakalelayo.

Sebenzisa kubectx

Isisetshenziswa esidume kakhulu sokushintsha phakathi kwamaqoqo nezikhala zamagama.

Uhlelo lokusebenza lunikeza imiyalo kubectx ΠΈ kubens ukushintsha umongo wamanje nendawo yamagama ngokulandelana.

Njengoba kushiwo, ukushintsha umongo wamanje kusho ukushintsha iqoqo uma unomongo owodwa kuphela iqoqo ngalinye.

Nasi isibonelo sokusebenzisa le miyalo:

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
Empeleni, le miyalo imane ihlele ifayela le-kubeconfig njengoba kuchazwe ngenhla.

ukufaka kubectx, landela imiyalelo ku I-Github.

Yomibili imiyalo isekela ukuqedelwa ngokuzenzakalela komongo namagama esikhala samagama, okususa isidingo sokuwathayipha ngokuphelele. Imiyalo yokusetha ukuqedela ngokuzenzakalela lapha.

Esinye isici esiwusizo kubectx kuyinto imodi esebenzisanayo. Isebenza ngokubambisana nohlelo lokusebenza fzf, okumele ifakwe ngokwehlukana. Ukufaka i-fzf ngokuzenzakalela kwenza imodi yokusebenzisana itholakale kuyo kubectx. Ngokusebenzisana, ungakhetha umongo kanye ne-namespace ngokusebenzisa isixhumi esibonakalayo sosesho samahhala esinikezwa i-fzf.

Ukusebenzisa ama-aliases we-shell

Awudingi amathuluzi ahlukene ukuze uguqule umongo wamanje nendawo yamagama ngoba i-kubectl iphinde inikeze imiyalo yalokhu. Yebo, iqembu kubectl config inikeza imiyalo engaphansi yokuhlela amafayela e-kubeconfig.

Nazi ezinye zazo:

  • kubectl config get-contexts: bonisa zonke izimo;
  • kubectl config current-context: thola umongo wamanje;
  • kubectl config use-context: shintsha umongo wamanje;
  • kubectl config set-context: Shintsha isici somongo.

Nokho, ukusebenzisa le miyalo ngokuqondile akulula kakhulu ngoba mide. Ungenza iziteketiso zegobolondo kubo okulula ukuzisebenzisa.

Ngidale isethi yeziteketiso ngokusekelwe kule miyalo ehlinzeka ngokusebenza okufana ne-kubectx. Lapha ungazibona zisebenza:

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
Qaphela ukuthi iziteketiso zisebenzisa i-fzf ukunikeza isixhumi esibonakalayo samahhala esisebenzisanayo (njengemodi yokusebenzisana ye-kubectx). Lokhu kusho ukuthi udinga faka fzfukusebenzisa lezi ziteketiso.

Nazi izincazelo zeziteketiso ngokwazo:

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

Ukuze usethe lezi ziteketiso udinga ukwengeza izincazelo ezingenhla kufayela lakho ~/.bashrc noma ~/.zshrc bese uqalisa kabusha igobolondo lakho.

Ukusebenzisa ama-plugin

I-Kubectl ikuvumela ukuthi ulayishe ama-plugin asetshenziswa ngendlela efanayo nemiyalo eyisisekelo. Ungakwazi, isibonelo, ukufaka i-plugin ye-kubectl-foo bese uyiqhuba ngokwenza umyalo kubectl foo.

Kungaba lula ukushintsha umongo nesikhala samagama ngale ndlela, isibonelo ngokuqalisa kubectl ctx ukushintsha umongo kanye kubectl ns ukushintsha indawo yamagama.

Ngibhale ama-plugin amabili enza lokhu:

Umsebenzi wama-plugin usekelwe kuziteketiso ezivela esigabeni sangaphambilini.

Nansi indlela asebenza ngayo:

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
Qaphela ukuthi ama-plugin asebenzisa i-fzf ukuze anikeze isixhumi esibonakalayo sosesho samahhala esisebenzisanayo (njengemodi yokusebenzisana ye-kubectx). Lokhu kusho ukuthi udinga faka fzfukusebenzisa lezi ziteketiso.

Ukuze ufake ama-plugin, udinga ukulanda izikripthi zegobolondo eziqanjwe igama kubectl-ctx ΠΈ kubectl-ns kunoma yiluphi uhla lwemibhalo ku-PATH yakho eguquguqukayo futhi ubenze basebenziseke ngesib. chmod +x. Ngokushesha ngemva kwalokhu uzokwazi ukusebenzisa kubectl ctx ΠΈ kubectl ns.

5. Yehlisa okokufaka ngama-autoaliases

Iziteketiso zeshell ziyindlela enhle yokusheshisa okokufaka. Iphrojekthi kubectl-aliases iqukethe izinqamuleli ezingaba ngu-800 zemiyalo ye-kubectl eyisisekelo.

Ungase uzibuze - uzikhumbula kanjani iziteketiso ezingama-800? Kodwa awudingi ukuwakhumbula wonke, ngoba akhiwe ngohlelo olulula, olunikezwe ngezansi:

Ungayisebenzisa kanjani i-bectl ngempumelelo kakhulu: umhlahlandlela onemininingwane
Isibonelo:

  1. kgpooyaml - kubectl uthole ama-pods oyaml
  2. ksysgsvcw β€” kubectl -n kube-system uthole svc w
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. kgdepallsl - kubectl thola ukuthunyelwa konke sl

Njengoba ubona, iziteketiso zenziwa izingxenye, ngayinye emele ingxenye ethile yomyalo we-kubectl. Isibizo ngasinye singaba nengxenye eyodwa yomyalo wesisekelo, ukusebenza, nensiza, kanye nezingxenye eziningi zamapharamitha. Uvele "ugcwalise" lezi zingxenye ukusuka kwesobunxele kuye kwesokudla ngokomdwebo ongenhla.

Umdwebo wamanje onemininingwane uku GitHub. Lapho ungathola futhi uhlu olugcwele lweziteketiso.

Isibonelo, igama elithi kgpooyamlall lilingana nomyalo kubectl get pods -o yaml --all-namespaces.

Ukuhleleka okuhlobene kwezinketho akubalulekile: umyalo kgpooyamlall ilingana nomyalo kgpoalloyaml.

Awudingi ukusebenzisa zonke izingxenye njengeziteketiso. Ngokwesibonelo k, kg, klo, ksys, kgpo ingasetshenziswa futhi. Ngaphezu kwalokho, ungahlanganisa iziteketiso nemiyalo evamile noma izinketho kulayini womyalo:

Isibonelo:

  1. Esikhundleni kubectl proxy ungabhala k proxy.
  2. Esikhundleni kubectl get roles ungabhala kg roles (okwamanje asikho isibizo sensiza Yezindima).
  3. Ukuze uthole idatha ye-pod ethile, ungasebenzisa umyalo kgpo my-pod β€” kubectl get pod my-pod.

Sicela uqaphele ukuthi ezinye iziteketiso zidinga i-agumenti yomugqa womyalo. Ngokwesibonelo, alias kgpol kusho kubectl get pods -l. Inketho -l idinga ukuphikisana - ukucaciswa kwelebula. Uma usebenzisa i-alias kuzobukeka kgpol app=ui.

Ngenxa yokuthi ezinye iziteketiso zidinga izimpikiswano, iziteketiso a, f, kanye no-l kufanele zisetshenziswe ekugcineni.

Ngokuvamile, uma usuthole ukulengiswa kwalolu hlelo, ungakwazi ngokunembile ukuthola iziteketiso emiyalweni ofuna ukuyisebenzisa futhi wonge isikhathi esiningi sokuthayipha.

ukufakwa

Ukufaka i-kubectl-aliases, udinga ukulanda ifayela .kubectl_aliases kusuka ku-GitHub futhi uyifake kufayela ~/.bashrc noma ~/.zshrc:

source ~/.kubectl_aliases

Ukuqedela ngokuzenzakalela

Njengoba sishilo ngaphambili, uvame ukwengeza amagama engeziwe kusibizo emugqeni womyalo. Ngokwesibonelo:

$ kgpooyaml test-pod-d4b77b989

Uma usebenzisa ukuqedelwa komyalo we-kubectl, kungenzeka ukuthi usebenzise ukuqedela ngokuzenzakalela ezintweni ezifana namagama ezinsiza. Kodwa ingabe lokhu kungenziwa lapho kusetshenziswa iziteketiso?

Lona umbuzo obaluleke kakhulu ngoba uma ukuqedela ngokuzenzakalela kungasebenzi, uzolahlekelwa ezinye zezinzuzo zeziteketiso.

Impendulo incike ekutheni usebenzisa liphi igobolondo:

  1. Ku-Zsh, ukuqedwa kwesibizo kusebenza ngaphandle kwebhokisi.
  2. Ku-Bash, ngeshwa, umsebenzi othile uyadingeka ukuze kuqedwe ngokuzenzakalela ukuze kusebenze.

Inika amandla ukuqedela ngokuzenzakalela kweziteketiso ku-Bash

Inkinga nge-Bash ukuthi izama ukuqedela (ngaso sonke isikhathi uma ucindezela u-Tab) isibizo, hhayi umyalo isibizo esibhekisela kuwo (njengoba i-Zsh yenza, isibonelo). Njengoba ungenayo imibhalo yokuqedela yazo zonke iziteketiso ezingu-800, ukuqedela ngokuzenzakalela akusebenzi.

Le phrojekthi okuphelele-izibizo inikeza isisombululo esijwayelekile sale nkinga. Ixhuma endleleni yokuqedela yeziteketiso, ngaphakathi inweba isibizo emyalweni, futhi ibuyisela izinketho zokuqedela zomyalo oqediwe. Lokhu kusho ukuthi i-padding ye-alias iziphatha ngendlela efanayo ncamashi nomyalo ogcwele.

Ngokulandelayo, ngizoqale ngichaze ukuthi ungasifaka kanjani igama-alias eliphelele bese kuthi indlela yokuyilungisa ukuze unike amandla ukuqedwa kwazo zonke iziteketiso ze-kubectl.

Ifaka iziteketiso eziphelele

Okokuqala, igama eliphelele lincike bash-ukuqedwa. Ngakho-ke, ngaphambi kokufaka ama-alias aphelele, udinga ukwenza isiqiniseko sokuthi i-bash-completion ifakiwe. Imiyalo yokufaka ihlinzekwe ngaphambilini ye-Linux ne-MacOS.

Inothi elibalulekile labasebenzisi be-MacOS: Njengeskripthi sokuqedela okuzenzakalelayo kwe-kubectl, izibizo eziphelele azisebenzi nge-Bash 3.2, okuzenzakalelayo ku-MacOS. Ikakhulukazi, igama eliphelele lincike ekuqedeni i-bash v2 (brew install bash-completion@2), okudinga okungenani i-Bash 4.1. Lokhu kusho ukuthi ukusebenzisa izibizo eziphelele ku-MacOS udinga ukufaka inguqulo entsha ye-Bash.

Udinga ukulanda iskripthi bash_completion.sh kusuka ku Indawo yokugcina ye-GitHub futhi ukufake kufayela lakho ~/.bashrc:

source ~/bash_completion.sh

Ngemva kokuqalisa kabusha igobolondo, izibizo eziphelele zizofakwa ngokugcwele.

Inika amandla ukuqedela ngokuzenzakalela kweziteketiso ze-kubectl

Ngobuchwepheshe isibizo esiphelele sihlinzeka ngomsebenzi wokugoqa _complete_alias. Lo msebenzi uhlola i-alias bese ubuyisela amasu okuqedwa komyalo we-alias.

Ukuze uhlobanise umsebenzi nesibizo esithile, udinga ukusebenzisa indlela ye-Bash eyakhelwe ngaphakathi ephelele, ukufaka _complete_alias njengomsebenzi wokuqedela isibizo.

Njengesibonelo, ake sithathe igama elithi alias k, elimele umyalo we-kubectl. ukufaka _complete_alias Njengomsebenzi wokugcwalisa walesi sibizo, kufanele usebenzise umyalo olandelayo:

$ complete -F _complete_alias k

Umphumela walokhu ukuthi noma nini lapho uqedela ngokuzenzakalelayo igama elithi alias k, umsebenzi ubizwa _complete_alias, ehlola isiteketiso bese ibuyisela amacebo okuqedela womyalo kubectl.

Njengesibonelo sesibili, ake sithathe isibizo kg, okusho ukuthi kubectl get:

$ complete -F _complete_alias kg

Njengasesibonelweni sangaphambilini, lapho uqedela ngokuzenzakalela i-kg, uthola amacebo okugcwalisa afanayo ongawatholela. kubectl get.

Qaphela ukuthi ungasebenzisa isiteketiso esiphelele kunoma yisiphi isiteketiso kusistimu yakho.

Ngakho-ke, ukuze unike amandla ukuqedela ngokuzenzakalela kuzo zonke iziteketiso ze-kubectl, udinga ukusebenzisa umyalo ongenhla kuzo zonke. Amazwibela alandelayo enza lokhu kanye, inqobo nje uma usethe iziteketiso ze-kubectl kuzo ~/.kubectl-aliases:

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

Lolu cezu lwekhodi ludinga ukufakwa endaweni yakho ~/.bashrc, qala kabusha igobolondo lomyalo futhi ukuqedela ngokuzenzakalela kuzotholakala kuzo zonke iziteketiso ze-kubectl ezingu-800.

6. Inweba i-kubectl ngama-plugin

Ukuqala ngo- inguqulo 1.12, kubectl isekela indlela ye-plugin, okuvumela ukuthi ukwandise imisebenzi yayo ngemiyalo eyengeziwe.

Uma ujwayelene Izindlela ze-plugin ze-Git, bese kuba ama-plugin e-kubectl akhelwe kumgomo ofanayo.

Kulesi sahluko, sizofaka indlela yokufaka ama-plugin, ukuthi ungawathola kuphi, nokuthi ungawakha kanjani awakho ama-plugin.

Ifaka ama-plugin

Ama-plugin e-Kubectl asatshalaliswa njengamafayela asebenzisekayo alula anegama elifana nalo kubectl-x. Isiqalo kubectl- iyadingeka, ilandelwa umyalo ongaphansi we-kubectl omusha okuvumela ukuthi ushayele i-plugin.

Isibonelo, i-plugin ye-hello izosatshalaliswa njengefayela elibizwa kubectl-hello.

Ukuze ufake i-plugin, udinga ukukopisha ifayela kubectl-x kunoma yiluphi uhla lwemibhalo ku-PATH yakho futhi ulwenze lusebenziseke, isibonelo nge chmod +x. Ngokushesha ngemva kwalokhu ungashayela i-plugin nge kubectl x.

Ungasebenzisa umyalo olandelayo ukuze ubhale wonke ama-plugin afakwe kusistimu yakho okwamanje:

$ kubectl plugin list

Lo myalo uzophinde ubonise izexwayiso uma unama-plugin amaningi anegama elifanayo, noma uma kukhona ifayela lama-plugin elingakwazi ukusebenziseka.

Ukuthola nokufaka ama-plugin usebenzisa i-Krew

Ama-plugin e-Kubectl angabiwa noma asetshenziswe kabusha njengamaphakheji esofthiwe. Kodwa ungawatholaphi ama-plugin abanye abelane ngawo?

Iphrojekthi Krew ihlose ukuhlinzeka ngesixazululo esihlangene sokwabelana, ukusesha, ukufaka nokuphatha ama-plugin e-kubectl. Iphrojekthi izibiza ngokuthi "umphathi wephakheji wama-plugin we-kubectl" (I-Krew ifana ne Brew).

I-Krew iwuhlu lwama-plugin we-kubectl ongakhetha futhi uwafake. Ngasikhathi sinye, i-Krew futhi iyi-plugin ye-kubectl.

Lokhu kusho ukuthi ukufaka i-Krew kusebenza ngokuyisisekelo njengokufaka noma iyiphi enye i-plugin ye-kubectl. Ungathola imiyalelo enemininingwane kokuthi Ikhasi le-GitHub.

Imiyalo ebaluleke kakhulu ye-Krew yile:

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

Sicela uqaphele ukuthi ukufaka ama-plugin usebenzisa i-Krew akuphazamisi ukufakwa kwama-plugin usebenzisa indlela evamile echazwe ngenhla.

Sicela uqaphele ukuthi umyalo kubectl krew list ibonisa kuphela ama-plugin afakwe kusetshenziswa i-Krew, kuyilapho umyalo kubectl plugin list ibala wonke ama-plugin, okungukuthi, lawo afakwe kusetshenziswa i-Krew nalawo afakwe ngezinye izindlela.

Ukuthola Ama-plugin Kwenye Indawo

I-Krew iphrojekthi encane, okwamanje ekuyo uhlu cishe ama-plugin angama-30 kuphela. Uma ungakutholi okudingayo, ungathola ama-plugin kwenye indawo, njenge-GitHub.

Ngincoma ukubheka isigaba se-GitHub kubectl-plugins. Lapho uzothola inqwaba yama-plugin atholakalayo okufanele uwahlole.

Ukubhala awakho ama-plugin

ungakwenza wena dala ama-plugin - Akunzima. Udinga ukudala i-executable eyenza lokho okudingayo, uyisho kanjalo kubectl-x futhi ufake njengoba kuchazwe ngenhla.

Ifayela lingaba iskripthi se-bash, iskripthi se-python, noma uhlelo lokusebenza oluhlanganisiwe lwe-GO - akunandaba. Umbandela kuphela ukuthi ingenziwa ngokuqondile ohlelweni lokusebenza.

Masidale isibonelo se-plugin khona manje. Esigabeni esidlule, usebenzise umyalo we-kubectl ukuze ubhale uhlu lweziqukathi ze-pod ngayinye. Kulula ukushintsha lo myalo uwenze i-plugin ongayishayela isb. kubectl img.

Dala ifayela kubectl-img okuqukethwe okulandelayo:

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

Manje yenza ifayela lisebenze nge chmod +x kubectl-img bese uyihambisa kunoma iyiphi inkomba ku-PATH yakho. Ngokushesha ngemva kwalokhu ungasebenzisa i-plugin kubectl img.

Njengoba kushiwo, ama-plugin e-kubectl angabhalwa nganoma yiluphi uhlelo noma ulimi lokubhala. Uma usebenzisa imibhalo yegobolondo, inzuzo yokukwazi ukushayela kalula i-kubectl ngaphakathi kwe-plugin. Kodwa-ke, ungabhala ama-plugin ayinkimbinkimbi ngezilimi zangempela zokuhlela usebenzisa Ilabhulali yeklayenti le-Kubernetes. Uma usebenzisa i-Go, ungasebenzisa futhi umtapo wezincwadi we-cli-runtime, ekhona ngokukhethekile ukubhala ama-plugin e-kubectl.

Ungawabelana kanjani ngama-plugin akho

Uma ucabanga ukuthi ama-plugin akho angaba usizo kwabanye, zizwe ukhululekile ukwabelana ngawo ku-GitHub. Qiniseka ukuthi uyawengeza esihlokweni kubectl-plugins.

Ungaphinda ucele ukuthi i-plugin yakho yengezwe kuyo Krew uhlu. Imiyalo yokuthi ungakwenza kanjani lokhu ingaphakathi I-GitHub yokugcina.

Ukuqedwa komyalo

Ama-plugin okwamanje awakusekeli ukuqedela ngokuzenzakalela. Okusho ukuthi, kufanele ufake igama eligcwele le-plugin namagama aphelele wezingxabano.

Inqolobane ye-GitHub kubectl yalo msebenzi inakho isicelo esivulekile. Ngakho-ke kungenzeka ukuthi lesi sici sizosetshenziswa esikhathini esizayo.

Ngikufisela inhlanhla!!!

Yini enye ongayifunda esihlokweni:

  1. Amaleveli amathathu okulinganisa okuzenzakalelayo ku-Kubernetes nokuthi angawasebenzisa kanjani ngempumelelo.
  2. U-Kubernetes emoyeni wobugebengu ngesifanekiso sokusetshenziswa.
  3. Isiteshi sethu Around Kubernetes kuTelegram.

Source: www.habr.com

Engeza amazwana