Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata
Jekk taħdem ma 'Kubernetes, allura kubectl huwa probabbilment waħda mill-utilitajiet li tuża l-aktar. U kull meta tqatta’ ħafna ħin taħdem ma’ għodda partikolari, iħallas li tistudjaha sew u titgħallem kif tużaha b’mod effettiv.
Team Kubernetes aaS minn Mail.ru ittraduċiet artiklu ta’ Daniel Weibel li fih issib pariri u tricks biex taħdem b’mod effettiv ma’ kubectl. Dan jgħinek ukoll tikseb fehim aktar profond ta 'Kubernetes.
Skont l-awtur, l-għan tal-artiklu huwa li tagħmel ix-xogħol ta 'kuljum tiegħek ma' Kubernetes mhux biss aktar effiċjenti, iżda wkoll aktar pjaċevoli!
Introduzzjoni: X'inhu kubectl
Qabel ma tkun tista 'titgħallem tuża kubectl b'mod aktar effettiv, għandek bżonn tikseb fehim bażiku ta' x'inhu u kif jaħdem.
Mill-perspettiva tal-utent, kubectl huwa pannell tal-kontroll li jippermettilek twettaq operazzjonijiet Kubernetes.
Teknikament, kubectl huwa klijent API Kubernetes.
Kubernetes API hija HTTP REST API. Din l-API hija l-veru interface tal-utent ta' Kubernetes, li permezz tagħha hija kkontrollata kompletament. Dan ifisser li kull operazzjoni Kubernetes hija esposta bħala endpoint API u tista 'ssir b'talba HTTP għal dak l-endpoint.
Għalhekk, ix-xogħol ewlieni ta 'kubectl huwa li jagħmel talbiet HTTP lill-API Kubernetes:
Kubernetes hija sistema kompletament orjentata lejn ir-riżorsi. Dan ifisser li żżomm l-istat intern tar-riżorsi u l-operazzjonijiet kollha ta 'Kubernetes huma operazzjonijiet CRUD.
Int fil-kontroll sħiħ ta' Kubernetes billi timmaniġġja dawn ir-riżorsi, u Kubernetes jifhem x'għandu jagħmel abbażi tal-istat attwali tar-riżorsi. Għal din ir-raġuni, ir-referenza tal-API Kubernetes hija organizzata bħala lista ta 'tipi ta' riżorsi bl-operazzjonijiet assoċjati tagħhom.
Ejja nħarsu lejn eżempju.
Ejja ngħidu li trid toħloq riżorsa ReplicaSet. Biex tagħmel dan, tiddeskrivi r-ReplicaSet f'fajl bl-isem replicaset.yaml, imbagħad mexxi l-kmand:
$ kubectl create -f replicaset.yaml
Dan se joħloq riżors ReplicaSet. Imma x’jiġri wara l-kwinti?
Kubernetes għandu operazzjoni ta' ħolqien ta' ReplicaSet. Bħal kull operazzjoni oħra, hija esposta bħala endpoint API. L-endpoint speċifiku tal-API għal din l-operazzjoni jidher bħal dan:
POST /apis/apps/v1/namespaces/{namespace}/replicasets
Il-punti finali tal-API għall-operazzjonijiet kollha ta' Kubernetes jistgħu jinstabu fuq Referenza API (inkluż l-endpoint ta' hawn fuq). Biex tagħmel talba attwali lil endpoint, l-ewwel trid iżżid il-URL tas-server tal-API mal-mogħdijiet tal-endpoint li huma elenkati fir-referenza tal-API.
Għalhekk, meta tesegwixxi l-kmand ta 'hawn fuq, kubectl jibgħat talba HTTP POST lill-endpoint tal-API ta' hawn fuq. Id-definizzjoni ReplicaSet li pprovdejt fil-fajl replicaset.yaml, jintbagħat fil-korp tat-talba.
Dan huwa kif kubectl jaħdem għall-kmandi kollha li jinteraġixxu mal-cluster Kubernetes. F'dawn il-każijiet kollha, kubectl sempliċement jagħmel talbiet HTTP lill-endpoints xierqa tal-API Kubernetes.
Jekk jogħġbok innota li tista 'timmaniġġja kompletament Kubernetes billi tuża utilità bħal curlbilli tibgħat manwalment talbiet HTTP lill-API Kubernetes. Kubectl sempliċement jagħmilha aktar faċli biex tuża l-API Kubernetes.
Dan huwa l-baŜi ta 'x'inhu kubectl u kif jaħdem. Iżda hemm xi ħaġa oħra dwar l-API Kubernetes li kull utent kubectl għandu jkun jaf. Ejja nagħtu ħarsa malajr lejn id-dinja ta 'ġewwa ta' Kubernetes.
Id-dinja ta 'ġewwa ta' Kubernetes
Kubernetes jikkonsisti f'sett ta' komponenti indipendenti li jaħdmu bħala proċessi separati fuq cluster nodes. Xi komponenti jimxu fuq nodi prinċipali, oħrajn fuq nodi tal-ħaddiema, kull komponent iwettaq il-kompitu speċifiku tiegħu stess.
Hawn huma l-aktar komponenti importanti fuq in-nodi ewlenin:
Maniġer tal-Kontrollur — Jiżgura li l-istatus tar-riżorsi jikkonformaw mal-ispeċifikazzjonijiet.
Scheduler — iskedi pods fuq nodi tal-ħaddiema.
U hawn huwa komponent wieħed mill-aktar importanti fuq in-nodi tal-ħaddiema:
kubelet — jimmaniġġja t-tnedija tal-kontenituri fuq in-nodu tax-xogħol.
Biex tifhem kif dawn il-komponenti jaħdmu flimkien, ejja nħarsu lejn eżempju.
Ejja nassumu li għadek kif lestiet kubectl create -f replicaset.yaml, wara li kubectl għamel talba HTTP POST lil ReplicaSet API endpoint (tgħaddi d-definizzjoni tar-riżorsi ReplicaSet).
X'qed jiġri fil-cluster?
Wara li tagħmel kubectl create -f replicaset.yaml Is-server tal-API jaħżen id-definizzjoni tar-riżorsi ReplicaSet tiegħek fil-ħażna:
Sussegwentement, il-kontrollur ReplicaSet jitnieda fil-maniġer tal-kontrollur, li jieħu ħsieb il-ħolqien, il-modifika u t-tħassir tar-riżorsi ReplicaSet:
Il-kontrollur ReplicaSet joħloq definizzjoni ta’ pod għal kull replika ta’ ReplicaSet (skond il-mudell ta’ pod fid-definizzjoni ta’ ReplicaSet) u jaħżenhom fil-ħażna:
Jiġi mniedi l-iskedar, li jsegwi l-imżiewed li għadhom ma ġewx assenjati lil xi nodi tal-ħaddiema:
L-iskeder jagħżel node tal-ħaddiem adattat għal kull pod u jżid din l-informazzjoni mad-definizzjoni tal-pod fil-maħżen:
Fuq in-nodu tal-ħaddiem li għalih huwa assenjat il-pod, jitnieda Kubelet, isegwi l-pods assenjati lil dan in-nodu:
Il-Kubelet jaqra d-definizzjoni tal-pod mill-ħażna u jagħti struzzjonijiet lil kontenitur runtime, bħal Docker, biex iniedi kontenituri fuq in-node:
Hawn taħt hawn verżjoni test ta' din id-deskrizzjoni.
It-talba tal-API lill-endpoint tal-ħolqien ta' ReplicaSet tiġi pproċessata mis-server tal-API. Is-server API jawtentika t-talba u jaħżen id-definizzjoni tar-riżorsi ReplicaSet fil-ħażna.
Dan l-avveniment jibda l-kontrollur ReplicaSet, li huwa sottoproċess tal-maniġer tal-kontrollur. Il-kontrollur ReplicaSet jimmonitorja l-ħolqien, l-aġġornament u t-tħassir tar-riżorsi ReplicaSet fil-maħżen u jirċievi notifika tal-avveniment meta dan iseħħ.
Ix-xogħol tal-kontrollur ReplicaSet huwa li jiżgura li jeżistu n-numru meħtieġ ta' pods ReplicaSet. Fl-eżempju tagħna, għadha ma teżisti l-ebda miżwed, għalhekk il-kontrollur ReplicaSet joħloq dawn id-definizzjonijiet tal-miżwed (skond il-mudell tal-pod fid-definizzjoni ReplicaSet) u jaħżenhom fil-ħażna.
Il-ħolqien ta 'miżwed ġodda jiġi attivat minn skedar li jżomm kont tad-definizzjonijiet tal-pods li għadhom mhumiex skedati għal nodi tal-ħaddiema. L-iskeder jagħżel node tal-ħaddiem adattat għal kull pod u jaġġorna d-definizzjonijiet tal-pod fir-repożitorju.
Innota li sa dan il-punt, l-ebda kodiċi tax-xogħol ma kien qed jaħdem kullimkien fil-cluster. Dak kollu li sar s'issa - dan huwa l-ħolqien u l-aġġornament tar-riżorsi fir-repożitorju fuq in-node prinċipali.
L-aħħar avveniment iqajjem Kubelets, li jimmonitorjaw il-miżwed skedati għan-nodi tal-ħaddiema tagħhom. Il-Kubelet tan-node tal-ħaddiem li fuqu huma installati l-imżiewed ReplicaSet tiegħek għandu jagħti struzzjonijiet lir-runtime tal-kontejner, bħal Docker, biex tniżżel l-immaġini tal-kontejners meħtieġa u tmexxihom.
F'dan il-punt, l-applikazzjoni tiegħek ReplicaSet fl-aħħar qed taħdem!
Rwol tal-API Kubernetes
Kif rajt fl-eżempju preċedenti, il-komponenti Kubernetes (ħlief għas-server u l-ħażna tal-API) jaraw bidliet fir-riżorsi fil-ħażna u jibdlu l-informazzjoni dwar ir-riżorsi fil-ħażna.
Naturalment, dawn il-komponenti ma jinteraġixxux mal-ħażna direttament, iżda biss permezz tal-API Kubernetes.
Ikkunsidra l-eżempji li ġejjin:
Il-kontrollur ReplicaSet juża l-endpoint tal-API lista ReplicaSets bil-parametru watch biex tissorvelja l-bidliet fir-riżorsi ReplicaSet.
Il-kontrollur ReplicaSet juża l-endpoint tal-API toħloq Pod (create pod) to create pods.
Scheduler juża API endpoint garża pod (editja pod) biex taġġorna l-imżiewed b'informazzjoni dwar in-nodu tal-ħaddiem magħżul.
Kif tistgħu taraw, din hija l-istess API li taċċessa kubectl. L-użu tal-istess API għal komponenti interni u utenti esterni huwa kunċett fundamentali fid-disinn ta 'Kubernetes.
Issa nistgħu nġabru fil-qosor kif jaħdem Kubernetes:
Il-ħwienet tal-ħażna jiddikjaraw, jiġifieri r-riżorsi Kubernetes.
Il-komponenti u l-utenti l-oħra kollha ta’ Kubernetes jaqraw, josservaw u jimmanipulaw l-istat (riżorsi) ta’ Kubernetes permezz tal-API.
Li tkun taf dawn il-kunċetti tgħinek tifhem aħjar kubectl u tikseb l-aħjar minnha.
Issa ejja nħarsu lejn xi tips u tricks speċifiċi li jgħinu biex itejbu l-produttività tiegħek ma 'kubectl.
1. Tħaffef l-input billi tuża t-tlestija tal-kmand
Waħda mill-aktar tekniki utli, iżda spiss injorati, għat-titjib tal-prestazzjoni b'kubectl hija t-tlestija tal-kmand.
It-tlestija tal-kmand tippermettilek timla awtomatikament partijiet tal-kmandi tal-kubectl billi tuża ċ-ċavetta Tab. Dan jaħdem għal sottokmandi, għażliet, u argumenti, inkluż xi ħaġa kumplessa bħall-ismijiet tar-riżorsi.
Ara kif taħdem it-tlestija tal-kmand kubectl:
Xogħlijiet ta 'tlestija tal-kmand għall-qxur Bash u Zsh.
Gwida uffiċjali fih struzzjonijiet dettaljati għat-twaqqif tal-awtokompletazzjoni, iżda hawn taħt ser nipprovdu silta qasira.
Kif taħdem it-tlestija tal-kmand
It-tlestija tal-kmand hija karatteristika tal-qoxra li taħdem bl-użu ta 'kitba ta' tlestija. Script ta 'estensjoni huwa skript tal-qoxra li jiddefinixxi l-imġieba ta' estensjoni għal kmand speċifiku.
Kubectl awtomatikament jiġġenera u joħroġ skripts ta' estensjoni għal Bash u Zsh billi juża l-kmandi li ġejjin:
$ kubectl completion bash
Jew:
$ kubectl completion zsh
Fit-teorija, huwa biżżejjed li tikkonnettja l-output ta 'dawn il-kmandi mal-qoxra tal-kmand xierqa sabiex kubectl ikun jista' jikkumplimenta l-kmandi.
Fil-prattika, il-metodu ta 'konnessjoni huwa differenti għal Bash (inklużi differenzi bejn Linux u MacOS) u Zsh. Hawn taħt se nħarsu lejn dawn l-għażliet kollha.
Bash fuq Linux
L-iskrittura ta' tlestija ta' Bash tiddependi fuq il-pakkett ta' tlestija ta' bash, għalhekk għandek bżonn tinstallah l-ewwel:
$ sudo apt-get install bash-completion
Jew:
$ yum install bash-completion
Tista' tittestja li l-pakkett huwa installat b'suċċess billi tuża l-kmand li ġej:
$ type _init_completion
Jekk dan joħroġ kodiċi tal-funzjoni tal-qoxra, allura bash-kompletazzjoni hija installata b'mod korrett. Jekk il-kmand jagħti żball "Mhux misjub", trid iżżid il-linja li ġejja mal-fajl tiegħek ~ / .bashrc:
Huwa meħtieġ li din il-linja tiżdied mal-fajl ~ / .bashrc jew le jiddependi fuq il-maniġer tal-pakketti li użajt biex tinstalla bash-completion. Dan huwa meħtieġ għal APT, iżda mhux għal YUM.
Wara l-installazzjoni ta 'bash-completion, għandek bżonn tikkonfigura kollox sabiex l-iskrittura ta' tlestija kubectl tkun attivata fis-sessjonijiet kollha tal-qoxra.
Mod wieħed biex tagħmel dan huwa li żżid il-linja li ġejja mal-fajl ~ / .bashrc:
source <(kubectl completion bash)
Mod ieħor huwa li żżid l-iskript tal-estensjoni kubectl mad-direttorju /etc/bash_completion.d (oħloqha jekk ma teżistix):
L-iskripts add-on kollha fil-katalgu /etc/bash_completion.d huma awtomatikament inklużi fil-bash-completion.
Iż-żewġ għażliet huma ugwalment applikabbli.
Wara li terġa 'tibda l-qoxra, it-tlestija tal-kmand ta' kubectl se taħdem.
Bash fuq MacOS
Fuq MacOS is-setup hija ftit aktar ikkumplikata. Il-fatt hu li b'mod awtomatiku, MacOS juża Bash verżjoni 3.2, u l-iskrittura ta 'awtocompletion kubectl teħtieġ verżjoni Bash ta' mill-inqas 4.1 u ma taħdimx f'Bash 3.2.
Hemm kwistjonijiet ta 'liċenzjar assoċjati mal-użu ta' verżjoni skaduta ta 'Bash fuq MacOS. Bash verżjoni 4 hija liċenzjata taħt GPLv3, li mhix appoġġjata minn Apple.
Biex tikkonfigura l-awtokompletazzjoni ta' kubectl fuq MacOS, trid tinstalla verżjoni aktar riċenti ta' Bash. Tista 'wkoll tissettja l-Bash aġġornat bħala l-qoxra default tiegħek, li se tiffranka ħafna problemi fil-futur. Mhux diffiċli, id-dettalji jingħataw fl-artiklu "Aġġornament ta' Bash fuq MacOS".
Qabel ma tkompli, kun żgur li qed tuża verżjoni riċenti ta' Bash (iċċekkja l-output bash --version).
L-iskrittura tat-tlestija tal-Bash tvarja skont il-proġett bash-tlestija, għalhekk għandek bżonn tinstallah l-ewwel.
Hawnhekk @2 stands għal bash-completion verżjoni 2. kubectl autocompletion teħtieġ bash-completion v2, u bash-completion v2 teħtieġ minimu ta 'Bash verżjoni 4.1.
Output tal-kmand brew-install fiha taqsima Caveats, li tispeċifika dak li jeħtieġ li jiżdied mal-fajl ~/.bash_profile:
Madankollu, nirrakkomanda li żżid dawn il-linji le ~/.bash_profile, u ġewwa ~/.bashrc. F'dan il-każ, l-awtokompletazzjoni se tkun disponibbli mhux biss fil-prinċipali, iżda wkoll fil-qxur tal-kmand tat-tfal.
Wara li terġa 'tibda l-qoxra tal-kmand, tista' tivverifika li l-installazzjoni hija korretta billi tuża l-kmand li ġej:
$ type _init_completion
Jekk tara funzjoni tal-qoxra fl-output, allura kollox huwa kkonfigurat b'mod korrett.
Issa rridu niżguraw li l-awtokompletazzjoni tal-kubectl tkun attivata fis-sessjonijiet kollha.
Mod wieħed huwa li żżid il-linja li ġejja ma' tiegħek ~/.bashrc:
source <(kubectl completion bash)
It-tieni mod huwa li żżid script autocomplete mal-folder /usr/local/etc/bash_completion.d:
Dan il-metodu jaħdem biss jekk installajt bash-completion bl-użu ta' Homebrew. F'dan il-każ, bash-completion jgħabbi l-iskripts kollha minn dan id-direttorju.
Jekk installajt kubectl bl-użu tal-Homebrew, allura m'hemmx bżonn li twettaq il-pass preċedenti, peress li l-iskrittura tal-awtokompletazzjoni titqiegħed awtomatikament fil-folder /usr/local/etc/bash_completion.d waqt l-installazzjoni. F'dan il-każ, kubectl autocompletion se jibda jaħdem hekk kif tinstalla bash-completion.
Bħala riżultat, dawn l-għażliet kollha huma ekwivalenti.
zsh
L-iskripts ta' tlestija awtomatika għal Zsh ma jeħtieġu ebda dipendenza. Kull ma trid tagħmel hu li tippermettilhom meta tgħabbi l-qoxra tal-kmand.
Tista 'tagħmel dan billi żżid linja tiegħek ~/.zshrc fajl:
source <(kubectl completion zsh)
Jekk tirċievi żball not found: compdef wara li terġa 'tibda l-qoxra tiegħek, għandek bżonn li tippermetti l-funzjoni builtin compdef. Tista 'tippermettiha billi żżidha fil-bidu tal-fajl tiegħek ~/.zshrc li ġej:
autoload -Uz compinit
compinit
2. Ara malajr l-ispeċifikazzjonijiet tar-riżorsi
Meta toħloq definizzjonijiet tar-riżorsi YAML, trid tkun taf l-oqsma u t-tifsira tagħhom għal dawk ir-riżorsi. Post wieħed biex tfittex din l-informazzjoni huwa fir-referenza API, li fiha speċifikazzjonijiet kompluti għar-riżorsi kollha.
Madankollu, li taqleb għall-web browser kull darba li jkollok bżonn tfittex xi ħaġa hija inkonvenjenti. Għalhekk kubectl jipprovdi l-kmand kubectl explain, li turi l-ispeċifikazzjonijiet tar-riżorsi kollha dritt fit-terminal tiegħek.
Il-format tal-kmand huwa kif ġej:
$ kubectl explain resource[.field]...
Il-kmand joħroġ l-ispeċifikazzjoni tar-riżorsa jew il-qasam mitlub. L-informazzjoni murija hija identika għal dik li tinsab fil-manwal tal-API.
Permezz ta 'default kubectl explain juri biss l-ewwel livell ta 'bejta ta' għelieqi.
Tista 'turi s-siġra kollha jekk iżżid l-għażla --recursive:
$ kubectl explain deployment.spec --recursive
Jekk ma tafx eżattament liema riżorsi huma meħtieġa, tista 'turihom kollha bil-kmand li ġej:
$ kubectl api-resources
Dan il-kmand juri l-ismijiet tar-riżorsi f'forma plural, eż. deployments minflok deployment. Juri wkoll l-isem qasir, pereżempju deploy, għal dawk ir-riżorsi li għandhom. Tinkwetax dwar dawn id-differenzi. Dawn l-għażliet kollha ta' ismijiet huma ekwivalenti għal kubectl. Jiġifieri, tista 'tuża kwalunkwe wieħed minnhom għal kubectl explain.
Il-kmandi kollha li ġejjin huma ekwivalenti:
$ kubectl explain deployments.spec
# или
$ kubectl explain deployment.spec
# или
$ kubectl explain deploy.spec
3. Uża format ta 'produzzjoni tal-kolonna tad-dwana
Format tal-output tal-kmand default 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
Dan il-format huwa konvenjenti, iżda fih ammont limitat ta 'informazzjoni. Meta mqabbel mal-format sħiħ tad-definizzjoni tar-riżorsi, huma murija hawn ftit oqsma biss.
F'dan il-każ, tista 'tuża format ta' produzzjoni tal-kolonna tad-dwana. Jippermettilek tiddetermina liema data toħroġ. Tista' turi kwalunkwe qasam tar-riżorsi bħala kolonna separata.
L-użu ta' format personalizzat huwa ddeterminat bl-użu tal-għażliet:
Tista 'tiddefinixxi kull kolonna tal-ħruġ bħala par <header>:<jsonpath>fejn <header> huwa l-isem tal-kolonna, u <jsonpath> — espressjoni li tiddefinixxi qasam tar-riżorsi.
Ejja nħarsu lejn eżempju sempliċi:
$ kubectl get pods -o custom-columns='NAME:metadata.name'
NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4
L-output fih kolonna waħda bl-ismijiet tal-imżiewed.
L-espressjoni tal-għażla tagħżel l-ismijiet tal-pods mill-qasam metadata.name. Dan għaliex l-isem tal-pod huwa definit fil-qasam tal-isem tat-tifel metadata fid-deskrizzjoni tar-riżorsi tal-pod. Aktar dettalji jistgħu jinstabu fi Gwida tal-API jew ittajpja l-kmand kubectl explain pod.metadata.name.
Issa ejja ngħidu li trid iżżid kolonna żejda mal-output, pereżempju turi n-node li kull pod qed jaħdem fuqu. Biex tagħmel dan, tista 'sempliċement iżżid l-ispeċifikazzjoni tal-kolonna xierqa mal-għażla tal-kolonni tad-dwana:
$ 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
L-espressjoni tagħżel l-isem tan-node minn spec.nodeName — meta pod jiġi assenjat lil node, ismu jinkiteb fil-field spec.nodeName speċifikazzjoni tar-riżorsi pod. Informazzjoni aktar dettaljata tista 'tinstab fl-output kubectl explain pod.spec.nodeName.
Jekk jogħġbok innota li l-oqsma tar-riżorsi tal-Kubernetes huma sensittivi għall-każ.
Tista' tara kwalunkwe qasam tar-riżorsi bħala kolonna. Irrevedi biss l-ispeċifikazzjoni tar-riżorsi u pprovaha bi kwalunkwe qasam li tixtieq.
Imma l-ewwel, ejja nagħtu ħarsa aktar mill-qrib lejn l-espressjonijiet tal-għażla tal-kamp.
JSONPath Espressjonijiet
L-espressjonijiet għall-għażla tal-oqsma tar-riżorsi huma bbażati fuq JSONPath.
JSONPath hija lingwa għall-irkupru tad-dejta minn dokumenti JSON. L-għażla ta 'qasam wieħed huwa l-aktar każ ta' użu sempliċi għal JSONPath. Huwa għandu ħafna aktar possibbiltajiet, inklużi seletturi, filtri u l-bqija.
Kubectl spjega jappoġġa numru limitat ta 'karatteristiċi JSONPath. Il-possibbiltajiet u l-eżempji tal-użu tagħhom huma deskritti hawn taħt:
# Выбрать все элементы списка
$ 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'
L-operatur [] huwa speċjalment importanti. Ħafna oqsma tar-riżorsi Kubernetes huma listi, u dan l-operatur jippermettilek tagħżel membri ta 'dawk il-listi. Ħafna drabi tintuża ma' wildcard bħal [*] biex tagħżel l-elementi kollha ta' lista.
Eżempji ta' applikazzjoni
Il-possibbiltajiet għall-użu ta 'format ta' output tal-kolonna tad-dwana huma bla tmiem, peress li tista 'turi kwalunkwe qasam jew kombinazzjoni ta' oqsma tar-riżorsi fl-output. Hawn huma xi kampjuni ta' apps, imma tħossok liberu li tesplorahom lilek innifsek u ssib applikazzjonijiet li jaħdmu għalik.
Il-wiri ta' stampi tal-kontenituri għall-imżiewed:
$ 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
Dan il-kmand juri l-ismijiet tal-immaġni tal-kontenitur għal kull pod.
Ftakar li pod jista 'jkun fih diversi kontenituri, allura l-ismijiet tal-immaġni se jintwerew fuq linja waħda, separati b'virgoli.
Wiri taż-żoni tad-disponibbiltà tan-nodi:
$ 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
Dan il-kmand huwa utli jekk il-cluster tiegħek ikun ospitat fi sħab pubbliku. Hija turi ż-żona tad-disponibbiltà għal kull nodu.
Iż-żona ta 'disponibbiltà hija kunċett ta' sħab li jillimita ż-żona ta 'replikazzjoni għal reġjun ġeografiku.
Żoni ta 'disponibbiltà għal kull nodu jinkisbu permezz ta' tikketta speċjali - failure-domain.beta.kubernetes.io/zone. Jekk il-cluster ikun qed jaħdem f'sħaba pubblika, din it-tikketta tinħoloq awtomatikament u timtela bl-ismijiet taż-żoni tad-disponibbiltà għal kull nodu.
It-tikketti mhumiex parti mill-ispeċifikazzjoni tar-riżorsi Kubernetes, għalhekk ma ssibx informazzjoni dwarhom fiha Gwida tal-API. Madankollu, jistgħu jidhru (bħal kwalunkwe tikketti oħra) jekk titlob informazzjoni dwar in-nodi fil-format YAML jew JSON:
$ kubectl get nodes -o yaml
# или
$ kubectl get nodes -o json
Dan huwa mod tajjeb ħafna biex titgħallem aktar dwar ir-riżorsi, minbarra l-ispeċifikazzjonijiet tar-riżorsi tat-tagħlim.
4. Aqleb faċilment bejn clusters u namespaces
Meta kubectl jagħmel talba lill-API Kubernetes, l-ewwel jaqra l-fajl kubeconfig biex jikseb il-parametri kollha meħtieġa għall-konnessjoni.
B'mod awtomatiku l-fajl kubeconfig huwa ~/.kube/config. Tipikament dan il-fajl jinħoloq jew jiġi aġġornat minn kmand speċjali.
Meta taħdem ma 'raggruppamenti multipli, il-fajl kubeconfig tiegħek fih settings għall-konnessjoni ma' dawk ir-raggruppamenti kollha. Għandek bżonn mod kif tgħid lill-kmand tal-kubectl liema cluster qed taħdem miegħu.
Fi ħdan cluster, tista 'toħloq namespaces multipli—tip ta' cluster virtwali fi cluster fiżiku. Kubectl jiddetermina wkoll liema namespace tuża abbażi tal-fajl kubeconfig. Dan ifisser li għandek bżonn ukoll mod kif tgħid lill-kmand kubectl liema namespace taħdem bih.
F'dan il-kapitlu se nispjegaw kif taħdem u kif nagħmluha taħdem b'mod effettiv.
Innota li jista' jkollok fajls kubeconfig multipli elenkati fil-varjabbli ambjentali KUBECONFIG. F'dan il-każ, dawn il-fajls kollha se jingħaqdu f'konfigurazzjoni komuni waħda waqt ir-runtime. Tista 'wkoll tibdel il-fajl kubeconfig default billi tħaddem kubectl bil-parametru --kubeconfig. Ħares dokumentazzjoni uffiċjali.
fajls kubeconfig
Ejja naraw x'fih eżattament il-fajl kubeconfig:
Kif tistgħu taraw, il-fajl kubeconfig fih sett ta 'kuntesti. Il-kuntest jikkonsisti fi tliet elementi:
Spazju tal-isem - l-ispazju tal-isem użat meta tingħaqad mal-cluster.
Fil-prattika, ħafna drabi jużaw kuntest wieħed għal kull cluster fil-kubeconfig tagħhom. Madankollu, jista' jkollok kuntesti multipli għal kull cluster, differenzjati skont l-utent jew l-ispazju tal-isem. Madankollu, din il-konfigurazzjoni b'ħafna kuntesti mhix komuni, għalhekk normalment ikun hemm mapping wieħed għal wieħed bejn clusters u kuntesti.
Fi kwalunkwe ħin partikolari, wieħed mill-kuntesti huwa attwali:
Meta kubectl jaqra fajl ta 'konfigurazzjoni, dejjem jieħu informazzjoni mill-kuntest attwali. Fl-eżempju ta 'hawn fuq, kubectl se jgħaqqad mal-cluster Hare.
Għaldaqstant, biex taqleb għal cluster ieħor, trid tibdel il-kuntest attwali fil-fajl kubeconfig:
Issa kubectl se jgħaqqad mal-cluster Fox.
Biex taqleb għal namespace differenti fl-istess cluster, trid tibdel il-valur tal-element namespace għall-kuntest attwali:
Fl-eżempju ta 'hawn fuq, kubectl se juża l-ispazju tal-isem Prod tal-cluster Fox (preċedentement kien issettjat l-ispazju tal-isem tat-Test).
Innota li kubectl jipprovdi wkoll għażliet --cluster, --user, --namespace и --context, li jippermettulek tissostitwixxi elementi individwali u l-kuntest attwali nnifsu, irrispettivament minn dak li huwa stabbilit fil-kubeconfig. Ħares kubectl options.
Fit-teorija, tista 'tbiddel manwalment is-settings fil-kubeconfig. Imma huwa inkonvenjenti. Biex tissimplifika dawn l-operazzjonijiet, hemm diversi utilitajiet li jippermettulek tibdel il-parametri awtomatikament.
Uża kubectx
Utilità popolari ħafna biex taqleb bejn clusters u namespaces.
L-utilità tipprovdi kmandi kubectx и kubens biex tibdel il-kuntest attwali u l-ispazju tal-isem rispettivament.
Kif issemma, li tbiddel il-kuntest attwali tfisser li tbiddel il-cluster jekk għandek kuntest wieħed biss għal kull cluster.
Hawn huwa eżempju ta 'tmexxija ta' dawn il-kmandi:
Essenzjalment, dawn il-kmandi sempliċement jeditjaw il-fajl kubeconfig kif deskritt hawn fuq.
biex tinstalla kubectx, segwi l-istruzzjonijiet fuq Github.
Iż-żewġ kmandi jappoġġaw l-awtokompletazzjoni tal-ismijiet tal-kuntest u tal-ismijiet tal-ismijiet, li jelimina l-ħtieġa li jittajpjahom kompletament. Istruzzjonijiet għat-twaqqif tal-awtokompletazzjoni hawn.
Fattur ieħor utli kubectx huwa mod interattiv. Jaħdem flimkien ma 'l-utilità fzf, li għandhom jiġu installati separatament. L-installazzjoni ta' fzf awtomatikament tagħmel il-mod interattiv disponibbli fi kubectx. B'mod interattiv, tista 'tagħżel il-kuntest u l-ispazju tal-isem permezz tal-interface ta' tfittxija interattiva b'xejn ipprovduta minn fzf.
Bl-użu ta' psewdonimi tal-qoxra
M'għandekx bżonn għodod separati biex tibdel il-kuntest attwali u l-ispazju tal-isem għaliex kubectl jipprovdi wkoll kmandi għal dan. Iva, tim kubectl config jipprovdi subkmandi għall-editjar tal-fajls kubeconfig.
Hawn huma xi wħud minnhom:
kubectl config get-contexts: juri l-kuntesti kollha;
Madankollu, l-użu ta 'dawn il-kmandi direttament mhuwiex konvenjenti ħafna minħabba li huma twal. Tista 'tagħmel psewdonimi tal-qoxra għalihom li huma faċli biex jiġu eżegwiti.
Ħloqt sett ta' psewdonimi bbażati fuq dawn il-kmandi li jipprovdu funzjonalità simili għal kubectx. Hawnhekk tista' tarahom fl-azzjoni:
Innota li psewdonimi jużaw fzf biex jipprovdu interface interattiv ta' tiftix b'xejn (bħall-mod interattiv ta' kubectx). Dan ifisser li għandek bżonn installa fzfbiex tuża dawn il-psewdonimi.
Hawn huma d-definizzjonijiet ta' psewdonimi nfushom:
# Получить текущий контекст
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/^..//")"'
Biex tissettja dawn l-psewdonimi trid iżżid id-definizzjonijiet ta’ hawn fuq mal-fajl tiegħek ~/.bashrc jew ~/.zshrc u reboot qoxra tiegħek.
Uża plugins
Kubectl jippermettilek tagħbija plugins li huma esegwiti bl-istess mod bħall-kmandi bażiċi. Tista ', pereżempju, tinstalla l-plugin kubectl-foo u tħaddem billi tesegwixxi l-kmand kubectl foo.
Ikun konvenjenti li tibdel il-kuntest u l-ispazju tal-isem b'dan il-mod, pereżempju billi taħdem kubectl ctx li jibdel il-kuntest u kubectl ns biex tibdel l-ispazju tal-isem.
Ix-xogħol tal-plugins huwa bbażat fuq psewdonimi mit-taqsima preċedenti.
Hawn kif jaħdmu:
Innota li l-plugins jużaw fzf biex jipprovdu interface interattiv ta' tfittxija b'xejn (bħall-mod interattiv ta' kubectx). Dan ifisser li għandek bżonn installa fzfbiex tuża dawn il-psewdonimi.
Biex tinstalla plugins, għandek bżonn tniżżel skripts tal-qoxra msemmija kubectl-ctx и kubectl-ns għal kwalunkwe direttorju fil-varjabbli PATH tiegħek u tagħmilhom eżekutibbli b'eż. chmod +x. Immedjatament wara dan tkun tista 'tuża kubectl ctx и kubectl ns.
5. Naqqas l-input b'autoaliases
Il-psewdonomi tal-qoxra huma mod tajjeb biex tħaffef l-input. Proġett kubectl-aliases fih madwar 800 shortcuts għal kmandi bażiċi kubectl.
Inti tista 'tistaqsi - kif tiftakar 800 psewdonimu? Imma m'għandekx bżonn tiftakarhom kollha, għax huma mibnija skont skema sempliċi, li tingħata hawn taħt:
Per eżempju:
kgpooyaml - kubectl tikseb imżiewed oyaml
ksysgsvcw — kubectl -n kube-system get svc w
ksysrmcm -kubectl -n kube-system rm cm
kgdepallsl - kubectl tikseb l-iskjerament kollha sl
Kif tistgħu taraw, psewdonimi huma magħmula minn komponenti, li kull wieħed minnhom jirrappreżenta element speċifiku tal-kmand kubectl. Kull alias jista' jkollu komponent wieħed għall-kmand bażi, l-operat, u r-riżorsi, u komponenti multipli għall-parametri. Inti sempliċiment "timla" dawn il-komponenti mix-xellug għal-lemin skont id-dijagramma t'hawn fuq.
Pereżempju, l-alias kgpooyamlall huwa ekwivalenti għall-kmand kubectl get pods -o yaml --all-namespaces.
L-ordni relattiva tal-għażliet mhix importanti: kmand kgpooyamlall huwa ekwivalenti għall-kmand kgpoalloyaml.
M'għandekx għalfejn tuża l-komponenti kollha bħala psewdonimi. Pereżempju k, kg, klo, ksys, kgpo jistgħu jintużaw ukoll. Barra minn hekk, tista 'tgħaqqad psewdonimi u kmandi jew għażliet regolari fuq il-linja tal-kmand:
Per eżempju:
Minflok kubectl proxy tista' tikteb k proxy.
Minflok kubectl get roles tista' tikteb kg roles (bħalissa m'hemm l-ebda alias għar-riżorsa Rwoli).
Biex tikseb data għal pod speċifiku, tista 'tuża l-kmand kgpo my-pod — kubectl get pod my-pod.
Jekk jogħġbok innota li xi psewdonimi jeħtieġu argument tal-linja tal-kmand. Per eżempju, alias kgpol ifisser kubectl get pods -l. Għażla -l teħtieġ argument - speċifikazzjoni tat-tikketta. Jekk tuża alias se tidher qisha kgpol app=ui.
Minħabba li xi psewdonimi jeħtieġu argumenti, psewdonimi a, f, u l għandhom jintużaw l-aħħar.
B'mod ġenerali, ladarba tieħu l-hang ta 'din l-iskema, tista' b'mod intuwittiv tikseb psewdonimi mill-kmandi li trid tesegwixxi u tiffranka ħafna ħin tat-tajpjar.
Installazzjoni
Biex tinstalla kubectl-aliases, trid tniżżel il-fajl .kubectl_aliases minn GitHub u inkludih fil-fajl ~/.bashrc jew ~/.zshrc:
source ~/.kubectl_aliases
Awtokompletazzjoni
Kif għidna qabel, ħafna drabi żżid kliem addizzjonali ma' alias fuq il-linja tal-kmand. Pereżempju:
$ kgpooyaml test-pod-d4b77b989
Jekk tuża t-tlestija tal-kmand kubectl, probabilment użajt l-awtokompletazzjoni għal affarijiet bħall-ismijiet tar-riżorsi. Imma dan jista' jsir meta jintużaw psewdonimi?
Din hija mistoqsija importanti ħafna għaliex jekk l-awtokompletazzjoni ma taħdimx, int titlef xi wħud mill-benefiċċji tal-psewdonimi.
It-tweġiba tiddependi fuq liema qoxra qed tuża:
Għal Zsh, it-tlestija tal-alias taħdem barra mill-kaxxa.
Għal Bash, sfortunatament, huwa meħtieġ xi xogħol biex l-awtokompletazzjoni taħdem.
Jippermetti l-awtokompletazzjoni għal psewdonimi f'Bash
Il-problema b'Bash hija li tipprova tlesti (kull darba li tagħfas Tab) l-alias, mhux il-kmand li jirreferi għalih l-alias (kif jagħmel Zsh, pereżempju). Peress li m'għandekx skripts ta' tlestija għat-800 psewdonimu kollha, l-awtokompletazzjoni ma taħdimx.
Proġett complete-alias jipprovdi soluzzjoni ġenerali għal din il-problema. Huwa jgħaqqad mal-mekkaniżmu ta 'tlestija għall-psewdonimi, internament jespandi l-alias għal kmand, u jirritorna għażliet ta' tlestija għall-kmand komplut. Dan ifisser li l-ikkuttunar għal alias iġib ruħu eżattament l-istess bħal għal kmand sħiħ.
F'dan li ġej, l-ewwel ser nispjega kif tinstalla complete-alias u mbagħad kif tikkonfiguraha biex tippermetti t-tlestija għall-psewdonimi kubectl kollha.
Installazzjoni complete-alias
L-ewwelnett, complete-alias jiddependi fuq bash-tlestija. Għalhekk, qabel ma tinstalla complete-alias, għandek bżonn tiżgura li bash-completion huwa installat. L-istruzzjonijiet tal-installazzjoni ġew ipprovduti qabel għal Linux u MacOS.
Nota Importanti għall-Utenti tal-MacOS: Bħall-kitba ta 'awtocompletion ta' kubectl, complete-alias ma taħdimx ma' Bash 3.2, li huwa l-default fuq MacOS. B'mod partikolari, complete-alias jiddependi fuq bash-completion v2 (brew install bash-completion@2), li teħtieġ mill-inqas Bash 4.1. Dan ifisser li biex tuża complete-alias fuq MacOS għandek bżonn tinstalla verżjoni aktar ġdida ta 'Bash.
Wara li terġa 'tibda l-qoxra, complete-alias se tkun installata kompletament.
Jippermettu l-awtokompletazzjoni għal psewdonimi kubectl
Teknikament complete-alias jipprovdi funzjoni ta 'wrapper _complete_alias. Din il-funzjoni tiċċekkja l-alias u tirritorna ħjiel ta' tlestija għall-kmand tal-alias.
Biex tassoċja funzjoni ma' alias speċifiku, trid tuża l-mekkaniżmu Bash mibni jitlesta, biex tinstalla _complete_alias bħala funzjoni ta' tlestija ta' alias.
Bħala eżempju, ejja nieħdu l-alias k, li tirrappreżenta l-kmand kubectl. biex tinstalla _complete_alias Bħala funzjoni komplementari għal dan l-alias, għandek tmexxi l-kmand li ġej:
$ complete -F _complete_alias k
Ir-riżultat ta 'dan huwa li kull meta timla awtomatikament alias k, il-funzjoni tissejjaħ _complete_alias, li jiċċekkja l-alias u jirritorna ħjiel ta 'tlestija għall-kmand kubectl.
Bħala t-tieni eżempju, ejja nieħdu l-alias kg, li tindika kubectl get:
$ complete -F _complete_alias kg
Eżatt bħal fl-eżempju preċedenti, meta timla l-kg awtomatikament, ikollok l-istess ħjiel ta' tlestija li tirċievi għalihom kubectl get.
Innota li tista' tuża complete-alias għal kwalunkwe alias fis-sistema tiegħek.
Għalhekk, biex tippermetti l-awtokompletazzjoni għall-psewdonimi kubectl kollha, għandek bżonn tmexxi l-kmand ta 'hawn fuq għal kull wieħed minnhom. Is-snippet li ġej jagħmel eżattament dan, sakemm issettjajt kubectl-aliases għal ~/.kubectl-aliases:
for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases);
do
complete -F _complete_alias "$_a"
done
Din il-biċċa kodiċi trid titqiegħed fil tiegħek ~/.bashrc, ibda mill-ġdid il-qoxra tal-kmand u l-awtokompletazzjoni se ssir disponibbli għat-800 psewdonimu kubectl kollha.
6. Estensjoni ta 'kubectl bil-plugins
Nibdew minn verżjoni 1.12, kubectl jappoġġja mekkaniżmu tal-plugin, li jippermettulek tespandi l-funzjonijiet tagħha bi kmandi addizzjonali.
Jekk inti familjari ma Mekkaniżmi tal-plugin Git, allura l-plugins kubectl huma mibnija fuq l-istess prinċipju.
F'dan il-kapitolu, aħna ser inkopru kif tinstalla plugins, fejn issibhom, u kif toħloq plugins tiegħek.
Installazzjoni ta' plugins
Il-plugins Kubectl huma mqassma bħala fajls eżekutibbli sempliċi bl-isem simili kubectl-x. Prefiss kubectl- hija meħtieġa, segwita minn subkmand kubectl ġdid li jippermettilek li ċċempel il-plugin.
Pereżempju, il-plugin hello se jitqassam bħala fajl imsejjaħ kubectl-hello.
Biex tinstalla l-plugin, trid tikkopja l-fajl kubectl-x għal kwalunkwe direttorju fil-PATH tiegħek u tagħmilha eżekutibbli, pereżempju ma chmod +x. Immedjatament wara dan tista 'ċċempel il-plugin bi kubectl x.
Tista' tuża l-kmand li ġej biex telenka l-plugins kollha li bħalissa huma installati fis-sistema tiegħek:
$ kubectl plugin list
Dan il-kmand se juri wkoll twissijiet jekk għandek plugins multipli bl-istess isem, jew jekk hemm fajl tal-plugins li ma jkunx eżekutibbli.
Sib u installazzjoni ta' plugins bl-użu ta' Krew
Il-plugins Kubectl jistgħu jiġu kondiviżi jew użati mill-ġdid bħal pakketti tas-softwer. Imma fejn tista 'ssib plugins li oħrajn qasmu?
Proġett Krew għandu l-għan li jipprovdi soluzzjoni unifikata għall-qsim, it-tiftix, l-installazzjoni u l-ġestjoni tal-plugins kubectl. Il-proġett isejjaħ lilu nnifsu "maniġer tal-pakketti għall-plugins kubectl" (Krew huwa simili għal brew).
Krew hija lista ta 'plugins kubectl li tista' tagħżel u tinstalla. Fl-istess ħin, Krew huwa wkoll plugin għal kubectl.
Dan ifisser li l-installazzjoni ta 'Krew taħdem essenzjalment bħall-installazzjoni ta' kwalunkwe plugin kubectl ieħor. Tista' ssib struzzjonijiet dettaljati fuq Paġna GitHub.
L-iktar kmandi importanti ta' Krew huma:
# Поиск в списке плагинов
$ kubectl krew search [<query>]
# Посмотреть информацию о плагине
$ kubectl krew info <plugin>
# Установить плагин
$ kubectl krew install <plugin>
# Обновить все плагины до последней версии
$ kubectl krew upgrade
# Посмотреть все плагины, установленные через Krew
$ kubectl krew list
# Деинсталлировать плагин
$ kubectl krew remove <plugin>
Jekk jogħġbok innota li l-installazzjoni ta' plugins bl-użu ta' Krew ma tfixkilx l-installazzjoni ta' plugins bl-użu tal-metodu standard deskritt hawn fuq.
Jekk jogħġbok innota li l-kmand kubectl krew list juri biss plugins li ġew installati bl-użu ta 'Krew, filwaqt li l-kmand kubectl plugin list telenka l-plugins kollha, jiġifieri, dawk installati bl-użu ta 'Krew u dawk installati b'metodi oħra.
Tfittxija Plugins X'imkien ieħor
Krew huwa proġett żagħżugħ, li bħalissa jinsab fih il-lista biss madwar 30 plugins. Jekk ma tistax issib dak li għandek bżonn, tista 'ssib plugins x'imkien ieħor, bħal GitHub.
Nirrakkomanda li tħares lejn it-taqsima GitHub kubectl-plugins. Hemmhekk issib għexieren ta’ plugins disponibbli li ta’ min iċċekkjahom.
Tikteb il-plugins tiegħek
inti tista lilek innifsek toħloq plugins - Mhuwiex diffiċli. Ikollok bżonn toħloq eżekutibbli li jagħmel dak li għandek bżonn, isimha bħal kubectl-x u installa kif deskritt hawn fuq.
Il-fajl jista' jkun script bash, script python, jew applikazzjoni GO kkumpilata - ma jimpurtax. L-unika kundizzjoni hija li tista 'tiġi eżegwita direttament fis-sistema operattiva.
Ejja noħolqu plugin eżempju issa. Fit-taqsima preċedenti, użajt il-kmand kubectl biex telenka l-kontenituri għal kull pod. Huwa faċli li tibdel dan il-kmand fi plugin li tista’ ċċempel bi eż. kubectl img.
Oħloq fajl kubectl-img il-kontenut li ġej:
#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
Issa agħmel il-fajl eżekutibbli bi chmod +x kubectl-img u ċċaqlaqha għal kwalunkwe direttorju fil-PATH tiegħek. Immedjatament wara dan tista 'tuża l-plugin kubectl img.
Kif issemma, il-plugins kubectl jistgħu jinkitbu fi kwalunkwe lingwa ta 'programmar jew scripting. Jekk qed tuża skripts tal-qoxra, il-vantaġġ li tkun tista 'faċilment issejjaħ kubectl minn ġewwa l-plugin. Madankollu, tista 'tikteb plugins aktar kumplessi f'lingwi ta' programmar reali bl-użu Librerija tal-klijenti Kubernetes. Jekk qed tuża Go, tista 'wkoll tuża librerija cli-runtime, li teżisti speċifikament għall-kitba ta' plugins kubectl.
Kif taqsam il-plugins tiegħek
Jekk taħseb li l-plugins tiegħek jistgħu jkunu utli għal oħrajn, tħossok liberu li taqsamha fuq GitHub. Kun żgur li żżidhom mas-suġġett kubectl-plugins.
Tista' wkoll titlob li l-plugin tiegħek jiġi miżjud miegħu Lista Krew. L-istruzzjonijiet dwar kif tagħmel dan jinsabu fi Repożitorji GitHub.
Tlestija tal-kmand
Il-plugins bħalissa ma jappoġġjawx l-awtokompletazzjoni. Jiġifieri, trid iddaħħal l-isem sħiħ tal-plugin u l-ismijiet sħaħ tal-argumenti.
Ir-repożitorju tal-kubectl GitHub għal din il-funzjoni għandu talba miftuħa. Għalhekk huwa possibbli li din il-karatteristika tiġi implimentata f'xi żmien fil-futur.