Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata

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:

Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata
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:

  1. repożitorju - jaħżen id-definizzjonijiet tar-riżorsi (normalment huwa etcd).
  2. Server API — jipprovdi API u jimmaniġġja l-ħażna.
  3. Maniġer tal-Kontrollur — Jiżgura li l-istatus tar-riżorsi jikkonformaw mal-ispeċifikazzjonijiet.
  4. Scheduler — iskedi pods fuq nodi tal-ħaddiema.

U hawn huwa komponent wieħed mill-aktar importanti fuq in-nodi tal-ħaddiema:

  1. 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?

  1. 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:

    Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata

  2. 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:

    Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata

  3. 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:

    Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata

  4. Jiġi mniedi l-iskedar, li jsegwi l-imżiewed li għadhom ma ġewx assenjati lil xi nodi tal-ħaddiema:

    Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata

  5. 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:

    Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata

  6. Fuq in-nodu tal-ħaddiem li għalih huwa assenjat il-pod, jitnieda Kubelet, isegwi l-pods assenjati lil dan in-nodu:

    Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata

  7. 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:

    Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata

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:

  1. Il-kontrollur ReplicaSet juża l-endpoint tal-API lista ReplicaSets bil-parametru watch biex tissorvelja l-bidliet fir-riżorsi ReplicaSet.
  2. Il-kontrollur ReplicaSet juża l-endpoint tal-API toħloq Pod (create pod) to create pods.
  3. 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:

  1. Il-ħwienet tal-ħażna jiddikjaraw, jiġifieri r-riżorsi Kubernetes.
  2. Is-server tal-API jipprovdi interface għall-ħażna fil-forma tal-API Kubernetes.
  3. 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:

Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata
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:

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

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):

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

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.

Tista 'tinstalla bash-completion bl-użu homebrew:

$ brew install bash-completion@2

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:

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"

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:

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

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.

Ara kif jidher jista 'jkun hawn.

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:

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

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.

  1. 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.

  2. 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 tuża kubectl b'mod aktar effettiv: gwida dettaljata
Kif tistgħu taraw, il-fajl kubeconfig fih sett ta 'kuntesti. Il-kuntest jikkonsisti fi tliet elementi:

  • Cluster — URL tal-API tas-server tal-cluster.
  • Utent - kredenzjali tal-awtentikazzjoni tal-utent fil-cluster.
  • 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:

Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata
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:

Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata
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:

Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata
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:

Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata
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;
  • kubectl config current-context: tikseb il-kuntest attwali;
  • kubectl config use-context: tibdel il-kuntest attwali;
  • kubectl config set-context: Ibdel l-element tal-kuntest.

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:

Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata
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.

Jien ktibt żewġ plugins li jagħmlu dan:

Ix-xogħol tal-plugins huwa bbażat fuq psewdonimi mit-taqsima preċedenti.

Hawn kif jaħdmu:

Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata
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:

Kif tuża kubectl b'mod aktar effettiv: gwida dettaljata
Per eżempju:

  1. kgpooyaml - kubectl tikseb imżiewed oyaml
  2. ksysgsvcw — kubectl -n kube-system get svc w
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. 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.

Id-dijagramma dettaljata attwali hija fuq GitHub. Hemmhekk tista 'ssib ukoll lista sħiħa ta' psewdonimi.

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:

  1. Minflok kubectl proxy tista' tikteb k proxy.
  2. Minflok kubectl get roles tista' tikteb kg roles (bħalissa m'hemm l-ebda alias għar-riżorsa Rwoli).
  3. 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:

  1. Għal Zsh, it-tlestija tal-alias taħdem barra mill-kaxxa.
  2. 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.

Għandek bżonn tniżżel l-iskrittura bash_completion.sh ta ' Repożitorju GitHub u inkludiha fil-fajl tiegħek ~/.bashrc:

source ~/bash_completion.sh

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.

Ix-xorti t-tajba!!!

X'iktar li taqra fuq is-suġġett:

  1. Tliet livelli ta 'autoscaling f'Kubernetes u kif tużahom b'mod effettiv.
  2. Kubernetes fl-ispirtu tal-piraterija b'mudell għall-implimentazzjoni.
  3. Il-kanal tagħna Madwar Kubernetes f'Telegram.

Sors: www.habr.com

Żid kumment