Nola erabili kubectl eraginkorrago: gida zehatza

Nola erabili kubectl eraginkorrago: gida zehatza
Kubernetesekin lan egiten baduzu, kubectl izango da ziurrenik gehien erabiltzen dituzun utilitateetako bat. Eta tresna jakin batekin lanean denbora asko ematen duzun bakoitzean, ondo aztertzea eta modu eraginkorrean erabiltzen ikastea merezi du.

Team Kubernetes aaS Mail.ru-tik Daniel Weibel-en artikulu bat itzuli du eta bertan kubectl-ekin modu eraginkorrean lan egiteko aholkuak eta trikimailuak aurkituko dituzu. Gainera, Kubernetes-en ulermen sakonagoa lortzen lagunduko dizu.

Egilearen arabera, artikuluaren helburua da eguneroko lana Kubernetesekin eraginkorragoa izateaz gain, atseginagoa izatea ere!

Sarrera: Zer da kubectl

Kubectl modu eraginkorragoan erabiltzen ikasi aurretik, zer den eta nola funtzionatzen duen ulertzeko oinarrizko ezagutza lortu behar duzu.

Erabiltzailearen ikuspegitik, kubectl Kubernetes eragiketak egiteko aukera ematen duen kontrol-panela da.

Teknikoki hitz eginez, kubectl Kubernetes API bezero bat da.

Kubernetes API HTTP REST API bat da. API hau Kubernetesen benetako erabiltzailearen interfazea da, eta horren bidez guztiz kontrolatzen da. Horrek esan nahi du Kubernetes-en eragiketa bakoitza API amaierako puntu gisa azaltzen dela eta HTTP eskaera batekin egin daitekeela amaiera-puntu horretara.

Hori dela eta, kubectl-en lan nagusia Kubernetes APIari HTTP eskaerak egitea da:

Nola erabili kubectl eraginkorrago: gida zehatza
Kubernetes guztiz baliabideetara bideratutako sistema da. Horrek esan nahi du baliabideen barne-egoera mantentzen duela eta Kubernetes-en eragiketa guztiak CRUD eragiketak direla.

Baliabide hauek kudeatuz Kubernetes-en erabateko kontrola duzu, eta Kubernetes-ek baliabideen uneko egoeraren arabera egiten du zer egin. Hori dela eta, Kubernetes API-ren erreferentzia baliabide-moten zerrenda gisa antolatuta dago lotutako eragiketekin.

Ikus dezagun adibide bat.

Demagun ReplicaSet baliabide bat sortu nahi duzula. Horretarako, ReplicaSet deskribatzen duzu fitxategi batean izenarekin replicaset.yaml, gero exekutatu komandoa:

$ kubectl create -f replicaset.yaml

Honek ReplicaSet baliabide bat sortuko du. Baina zer gertatzen da eszenaren atzean?

Kubernetes-ek ReplicaSet sortzeko eragiketa bat du. Beste edozein eragiketa bezala, API amaierako puntu gisa azaltzen da. Eragiketa honen API amaierako puntu espezifikoak honelako itxura du:

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

Kubernetes eragiketa guztietarako API amaierako puntuak hemen aurki daitezke API erreferentzia (barne goiko amaierako puntua). Amaiera-puntu bati benetako eskaera bat egiteko, lehenik eta behin API zerbitzariaren URLa gehitu behar duzu API-ren erreferentzian zerrendatutako amaiera-puntuaren bideetan.

Horregatik, goiko komandoa exekutatzen duzunean, kubectl-ek HTTP POST eskaera bat bidaltzen du goiko API amaierako puntura. Fitxategian emandako ReplicaSet definizioa replicaset.yaml, eskaeraren gorputzean bidaltzen da.

Honela funtzionatzen du kubectl-ek Kubernetes klusterrekin elkarreragiten duten komando guztietan. Kasu hauetan guztietan, kubectl-ek HTTP eskaerak besterik ez ditu egiten Kubernetes APIaren amaiera-puntu egokietara.

Kontuan izan Kubernetes guztiz kudeatu dezakezula erabilgarritasun bat erabiliz curlHTTP eskaerak eskuz bidaliz Kubernetes APIra. Kubectl-ek Kubernetes APIa erabiltzea errazten du.

Hau da kubectl zer den eta nola funtzionatzen duen. Baina Kubernetes APIari buruz beste zerbait dago kubectl-eko erabiltzaile bakoitzak jakin beharko lukeena. Ikus dezagun azkar Kubernetesen barne-munduari.

Kubernetesen barne mundua

Kubernetes kluster-nodoetan prozesu bereizi gisa exekutatzen diren osagai independente multzo batek osatzen du. Osagai batzuk nodo nagusietan exekutatzen dira, beste batzuk lan-nodoetan, osagai bakoitzak bere zeregin zehatza betetzen du.

Hona hemen nodo nagusietako osagai garrantzitsuenak:

  1. Ganga - baliabideen definizioak gordetzen ditu (normalean etcd da).
  2. API zerbitzaria β€” API bat eskaintzen du eta biltegiratzea kudeatzen du.
  3. Kontrolatzailearen kudeatzailea β€” Baliabideen egoerak zehaztapenak betetzen dituela ziurtatzen du.
  4. Antolatzailea β€” Langile-nodoetan pod-ak programatzen ditu.

Eta hona hemen langile-nodoen osagai garrantzitsuen bat:

  1. kubelet β€” laneko nodoan edukiontziak abian jartzea kudeatzen du.

Osagai hauek elkarrekin nola funtzionatzen duten ulertzeko, ikus dezagun adibide bat.

Demagun amaitu berri duzula kubectl create -f replicaset.yaml, ondoren kubectl-ek HTTP POST eskaera egin zion ReplicaSet API amaiera-puntua (ReplicaSet baliabideen definizioa gaindituz).

Zer gertatzen da klusterrean?

  1. Egin ondoren kubectl create -f replicaset.yaml API zerbitzariak zure ReplicaSet baliabideen definizioa biltegian gordetzen du:

    Nola erabili kubectl eraginkorrago: gida zehatza

  2. Ondoren, ReplicaSet kontrolatzailea kontroladorearen kudeatzailean abiarazten da, eta horrek ReplicaSet baliabideak sortzea, aldatzea eta ezabatzea kudeatzen du:

    Nola erabili kubectl eraginkorrago: gida zehatza

  3. ReplicaSet kontrolagailuak ReplicaSet erreplika bakoitzerako pod definizio bat sortzen du (ReplicaSet definizioko pod txantiloiaren arabera) eta biltegian gordetzen ditu:

    Nola erabili kubectl eraginkorrago: gida zehatza

  4. Antolatzailea abiarazten da, oraindik inongo langile-nodotara esleitu ez diren pod-ak jarraituz:

    Nola erabili kubectl eraginkorrago: gida zehatza

  5. Antolatzaileak langile-nodo egoki bat hautatzen du pod bakoitzerako eta informazio hau gehitzen du dendako podaren definizioan:

    Nola erabili kubectl eraginkorrago: gida zehatza

  6. Pod-a esleituta dagoen langile-nodoan, Kubelet abiarazten da, nodo honi esleitutako poden jarraipena egiten du:

    Nola erabili kubectl eraginkorrago: gida zehatza

  7. Kubelet-ek ontziaren definizioa biltegiratzetik irakurtzen du eta edukiontzien exekuzio-denbora bati agintzen dio, Dockerri adibidez, nodoan edukiontziak abiarazteko:

    Nola erabili kubectl eraginkorrago: gida zehatza

Jarraian, deskribapen honen testu-bertsio bat dago.

ReplicaSet sortzeko amaierako APIaren eskaera API zerbitzariak prozesatzen du. API zerbitzariak eskaera autentifikatzen du eta ReplicaSet baliabideen definizioa biltegian gordetzen du.

Gertaera honek ReplicaSet kontrolatzailea abiarazten du, hau da, kontroladorearen kudeatzailearen azpiprozesua. ReplicaSet kontrolagailuak dendako ReplicaSet baliabideak sortzea, eguneratzea eta ezabatzea kontrolatzen du eta gertaeren jakinarazpena jasotzen du hori gertatzen denean.

ReplicaSet kontrolagailuaren lana da ReplicaSet-en behar den lek kopurua existitzen dela ziurtatzea. Gure adibidean, oraindik ez dago podrik, beraz, ReplicaSet kontrolatzaileak pod definizio hauek sortzen ditu (ReplicaSet definizioko pod txantiloiaren arabera) eta biltegian gordetzen ditu.

Pod berriak sortzea langile-nodoetarako oraindik programatuta ez dauden pod definizioen jarraipena egiten duen programatzaile batek abiarazten du. Antolatzaileak langile-nodo egoki bat hautatzen du pod bakoitzerako eta biltegiko pod definizioak eguneratzen ditu.

Kontuan izan puntu honetara arte ez zegoela lan-karga-koderik klusterrean inon exekutatzen. Orain arte egin dena - hau nodo nagusiko biltegian baliabideak sortzea eta eguneratzea da.

Azken gertaerak Kubelets abiarazten du, beren langile-nodoetarako programatutako podak kontrolatzen dituztenak. Zure ReplicaSet pod-ak instalatuta dauden langile-nodoaren Kubelet-ek edukiontziaren exekuzio-denborari agindu behar dio, Dockerri adibidez, beharrezko edukiontzi-irudiak deskargatu eta exekutatzeko.

Une honetan, zure ReplicaSet aplikazioa abian da azkenean!

Kubernetes APIaren eginkizuna

Aurreko adibidean ikusi zenuten bezala, Kubernetes-eko osagaiek (API zerbitzaria eta biltegiratzea izan ezik) biltegiratzeko baliabideen aldaketak ikusten dituzte eta biltegiratuko baliabideei buruzko informazioa aldatzen dute.

Jakina, osagai hauek ez dute biltegiratzearekin zuzenean elkarreragiten, Kubernetes APIaren bidez baizik.

Kontuan izan honako adibide hauek:

  1. ReplicaSet kontrolagailuak API amaierako puntua erabiltzen du zerrenda ReplicaSets parametroarekin watch ReplicaSet baliabideen aldaketak kontrolatzeko.
  2. ReplicaSet kontrolagailuak API amaierako puntua erabiltzen du sortu Pod (create pod) lekak sortu.
  3. Scheduler-ek API amaierako puntua erabiltzen du adabaki leka (editatu pod) aukeratutako langile-nodoari buruzko informazioarekin pod-ak eguneratzeko.

Ikus dezakezunez, kubectl-ek atzitzen duen API bera da. Barneko osagaietarako eta kanpoko erabiltzaileetarako API bera erabiltzea oinarrizko kontzeptua da Kubernetesen diseinuan.

Orain Kubernetes-ek nola funtzionatzen duen laburtu dezakegu:

  1. Biltegiratze biltegien egoera, hau da, Kubernetes baliabideak.
  2. API zerbitzariak biltegiratzeko interfaze bat eskaintzen du Kubernetes API moduan.
  3. Kuberneteseko gainerako osagaiek eta erabiltzaileek Kubernetesen egoera (baliabideak) irakurtzen, behatzen eta manipulatzen dute APIaren bidez.

Kontzeptu hauek ezagutzeak kubectl hobeto ulertzen lagunduko dizu eta horri etekinik handiena ateratzen lagunduko dizu.

Ikus ditzagun kubectl-ekin zure produktibitatea hobetzen lagunduko dizuten aholku eta trikimailu zehatz batzuk.

1. Bizkortu sarrera komandoak osatzea erabiliz

Kubectl-ekin errendimendua hobetzeko teknika erabilgarrienetako bat, baina askotan ahaztu gabe, komandoak osatzea da.

Komandoak osatzeak kubectl komandoen zatiak automatikoki osatzeko aukera ematen du Tab tekla erabiliz. Honek azpikomando, auker eta argumentuetarako funtzionatzen du, baliabideen izenak bezain konplexuak barne.

Ikusi kubectl komandoak osatzea nola funtzionatzen duen:

Nola erabili kubectl eraginkorrago: gida zehatza
Komandoak osatzea Bash eta Zsh shell-etarako funtzionatzen du.

Gida ofiziala osatze automatikoa konfiguratzeko argibide zehatzak ditu, baina jarraian pasarte labur bat emango dugu.

Komandoak osatzea nola funtzionatzen duen

Komandoa osatzea osatzeko script bat erabiliz funtzionatzen duen shell-en eginbide bat da. Luzapen script bat komando zehatz baterako luzapen baten portaera definitzen duen shell script bat da.

Kubectl-ek automatikoki sortu eta ateratzen ditu Bash eta Zsh-entzako luzapen-scriptak komando hauek erabiliz:

$ kubectl completion bash

edo:

$ kubectl completion zsh

Teorian, nahikoa da komando horien irteera dagokion komando-shellera konektatzea, kubectl komandoak osatzeko.

Praktikan, konexio-metodoa desberdina da Bash-en (Linux eta MacOSen arteko desberdintasunak barne) eta Zsh-en. Jarraian aukera hauek guztiak aztertuko ditugu.

Bash Linux-en

Bash osatzeko script-a bash-completion paketearen araberakoa da, beraz, lehenik instalatu behar duzu:

$ sudo apt-get install bash-completion

edo:

$ yum install bash-completion

Paketea ongi instalatuta dagoela probatu dezakezu komando hau erabiliz:

$ type _init_completion

Honek shell funtzioaren kodea ateratzen badu, bash-completion behar bezala instalatuta dago. Komandoak "Ez aurkitu" errorea ematen badu, hurrengo lerroa gehitu behar duzu zure fitxategian ~ / .bashrc:

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

Beharrezkoa al da lerro hau fitxategian gehitzea ~ / .bashrc edo ez bash-completion instalatzeko erabili duzun pakete-kudeatzailearen araberakoa da. Hau beharrezkoa da APTrako, baina ez YUMrako.

Bash-completion instalatu ondoren, guztia konfiguratu behar duzu kubectl osatzeko scripta shell saio guztietan gaituta egon dadin.

Horretarako modu bat hurrengo lerroa fitxategian gehitzea da ~ / .bashrc:

source <(kubectl completion bash)

Beste modu bat kubectl luzapen script-a direktoriora gehitzea da /etc/bash_completion.d (sortu existitzen ez bada):

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

Katalogoko gehigarrien script guztiak /etc/bash_completion.d automatikoki sartzen dira bash-osatzean.

Bi aukerak berdin aplikatzen dira.

Shell berrabiarazi ondoren, kubectl komandoa osatzea funtzionatuko du.

Bash MacOS-en

MacOS-en konfigurazioa pixka bat zailagoa da. Kontua da, lehenespenez, MacOS-ek Bash 3.2 bertsioa erabiltzen duela eta kubectl osatze automatikoaren gidoiak gutxienez 4.1 Bash bertsioa behar duela eta ez duela Bash 3.2-n funtzionatzen.

MacOS-en Bash-en bertsio zaharkitu bat erabiltzearekin lotutako lizentzia-arazoak daude. Bash 4 bertsioak GPLv3-ren lizentzia du, Apple-k onartzen ez duena.

Kubectl osatze automatikoa MacOS-en konfiguratzeko, Bash-en bertsio berriagoa instalatu behar duzu. Bash eguneratua zure shell lehenetsi gisa ere ezar dezakezu, eta horrek arazo asko aurreztuko ditu etorkizunean. Ez da zaila, xehetasunak artikuluan ematen dira "Bash eguneratzen MacOS-en'.

Jarraitu aurretik, ziurtatu Bash-en azken bertsioa erabiltzen ari zarela (ikusi irteera bash --version).

Bash osatzeko gidoia aldatu egiten da proiektuaren arabera bash-osaketa, beraz, lehenik instalatu behar duzu.

Bash-completion instalatu dezakezu erabiliz Homebrew:

$ brew install bash-completion@2

Hemen @2 bash-completion 2 bertsioa adierazten du. kubectl autocompletion-ek bash-completion v2 behar du, eta bash-completion v2-ek Bash 4.1 bertsioa behar du gutxienez.

Komandoaren irteera brew-install Oharra atal bat dauka, fitxategiari zer gehitu behar zaion zehazten duena ~/.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"

Hala ere, lerro hauek ez gehitzea gomendatzen dut ~/.bash_profileeta ~/.bashrc. Kasu honetan, osatze automatikoa nagusietan ez ezik, haurren komando-shelletan ere eskuragarri egongo da.

Komando shell-a berrabiarazi ondoren, instalazioa zuzena dela egiaztatu dezakezu komando hau erabiliz:

$ type _init_completion

Irteeran shell funtzio bat ikusten baduzu, dena behar bezala konfiguratuta dago.

Orain ziurtatu behar dugu kubectl osatze automatikoa gaituta dagoela saio guztietan.

Modu bat hurrengo lerroa gehitzea da ~/.bashrc:

source <(kubectl completion bash)

Bigarren modua karpetari osatze automatikoko script bat gehitzea da /usr/local/etc/bash_completion.d:

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

Metodo honek bash-completion Homebrew erabiliz instalatu baduzu bakarrik funtzionatuko du. Kasu honetan, bash-completion-ek direktorio honetako script guztiak kargatzen ditu.

Instalatu baduzu kubectl Homebrew erabiliz, orduan ez dago aurreko urratsa egin beharrik, automatikoki osatzeko gidoia karpetan jarriko baita /usr/local/etc/bash_completion.d instalazioan zehar. Kasu honetan, kubectl osatze automatikoa bash-completion instalatu bezain laster hasiko da lanean.

Ondorioz, aukera hauek guztiak baliokideak dira.

Zsh

Zsh-rako osatze automatikoko scriptek ez dute inolako menpekotasunik behar. Egin behar duzun guztia gaitzea da komando-shella kargatzen duzunean.

Hau egin dezakezu lerro bat gehituz zure ~/.zshrc fitxategia:

source <(kubectl completion zsh)

Errore bat jasotzen baduzu not found: compdef shell berrabiarazi ondoren, integratutako funtzioa gaitu behar duzu compdef. Gaitu dezakezu zure fitxategiaren hasieran gehituz ~/.zshrc honako hau:

autoload -Uz compinit
compinit

2. Azkar ikusi baliabideen zehaztapenak

YAML baliabideen definizioak sortzen dituzunean, eremuak eta baliabide horien esanahia ezagutu behar dituzu. Informazio hori bilatzeko leku bat API erreferentzian dago, baliabide guztien zehaztapen osoak dituena.

Hala ere, zerbait bilatu behar duzun bakoitzean web arakatzailera aldatzea deserosoa da. Beraz, kubectl-ek komandoa ematen du kubectl explain, baliabide guztien zehaztapenak zure terminalean bertan erakusten dituena.

Komando formatua honakoa da:

$ kubectl explain resource[.field]...

Komandoak eskatutako baliabide edo eremuaren zehaztapena aterako du. Bistaratzen den informazioa APIaren eskuliburuan jasotakoaren berdina da.

Lehenespenez kubectl explain soroen habia-maila baino ez du erakusten.

Ikusi nolakoa den orduan dezakezu.

Zuhaitz osoa bistaratu dezakezu aukera gehitzen baduzu --recursive:

$ kubectl explain deployment.spec --recursive

Ez badakizu zein baliabide behar diren zehatz-mehatz, denak bistaratu ditzakezu komando honekin:

$ kubectl api-resources

Komando honek baliabideen izenak pluralean bistaratzen ditu, adibidez. deployments ordez deployment. Izen laburra ere bistaratzen du, adibidez deploy, duten baliabide horietarako. Ez kezkatu desberdintasun horietaz. Izendatzeko aukera hauek guztiak kubectl-en baliokideak dira. Hau da, horietako edozein erabil dezakezu kubectl explain.

Ondorengo komando guztiak baliokideak dira:

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

3. Erabili zutabeen irteera formatu pertsonalizatua

Komandoaren irteerako formatu lehenetsia 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

Formatu hau erosoa da, baina informazio kopuru mugatua dauka. Baliabideen definizio osoko formatuarekin alderatuta, eremu batzuk bakarrik bistaratzen dira hemen.

Kasu honetan, zutabeen irteera formatu pertsonalizatua erabil dezakezu. Zein datu atera behar diren zehazteko aukera ematen du. Edozein baliabide-eremu bistaratu dezakezu zutabe bereizi gisa.

Formatu pertsonalizatu baten erabilera aukera hauek erabiliz zehazten da:

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

Irteerako zutabe bakoitza bikote gisa defini dezakezu <header>:<jsonpath>Non <header> zutabearen izena da, eta <jsonpath> β€” baliabide-eremu bat definitzen duen adierazpena.

Ikus dezagun adibide sinple bat:

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

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

Irteerak zutabe bat dauka leken izenekin.

Aukera-adierazpenak eremuko lekaren izenak hautatzen ditu metadata.name. Hau da podaren izena haurraren izenaren eremuan definituta dagoelako metadata lekaren baliabideen deskribapenean. Xehetasun gehiago hemen aurki daitezke API Gida edo idatzi komandoa kubectl explain pod.metadata.name.

Orain demagun zutabe gehigarri bat gehitu nahi duzula irteeran, adibidez, pod bakoitza exekutatzen ari den nodoa erakutsiz. Horretarako, zutabeen zehaztapen egokia gehi dezakezu zutabe pertsonalizatuen aukeran:

$ 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

Adierazpenak nodoaren izena hautatzen du spec.nodeName β€” Pod bat nodo bati esleitzen zaionean, bere izena eremuan idazten da spec.nodeName pod baliabideen zehaztapena. Irteeran informazio zehatzagoa aurki daiteke kubectl explain pod.spec.nodeName.

Kontuan izan Kubernetes baliabideen eremuek maiuskulak eta minuskulak bereizten dituztela.

Edozein baliabide-eremu ikus dezakezu zutabe gisa. Berrikusi baliabideen zehaztapena eta probatu nahi dituzun eremuekin.

Baina lehenik eta behin, ikus ditzagun eremuen hautapenaren esamoldeak.

JSONPath adierazpenak

Baliabide-eremuak hautatzeko adierazpenak oinarritzen dira JSONPath.

JSONPath JSON dokumentuetatik datuak berreskuratzeko hizkuntza bat da. Eremu bakarra hautatzea JSONPath-en erabilera kasurik errazena da. Asko dauka aukera gehiago, hautatzaileak, iragazkiak eta abar barne.

Kubectl-ek JSONPath funtzio kopuru mugatu bat onartzen du. Hauen erabileraren aukerak eta adibideak deskribatzen dira jarraian:

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

[] operadorea bereziki garrantzitsua da. Kubernetes-eko baliabide-eremu asko zerrendak dira, eta operadore honek zerrenda horietako kideak hautatzeko aukera ematen dizu. Sarritan [*] bezalako komodin batekin erabiltzen da zerrenda bateko elementu guztiak hautatzeko.

Aplikazio-adibideak

Zutabeen irteerako formatu pertsonalizatua erabiltzeko aukerak amaigabeak dira, irteerako edozein eremu edo baliabide-eremuen konbinazio bistara dezakezu eta. Hona hemen aplikazio lagin batzuk, baina lasai arakatu eta aurkitu zuretzako funtzionatzen duten aplikazioak.

  1. Leketarako edukiontzien irudiak bistaratzea:
    $ 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

    Komando honek ontzi bakoitzaren edukiontzi-irudien izenak bistaratzen ditu.

    Gogoratu ontzi batek hainbat edukiontzi izan ditzakeela, orduan irudien izenak lerro batean agertuko dira, komaz bereizita.

  2. Nodoen erabilgarritasun-eremuak bistaratzen:
    $ 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

    Komando hau erabilgarria da zure cluster hodei publiko batean ostatatuta badago. Nodo bakoitzaren erabilgarritasun-eremua erakusten du.

    Erabilgarritasun-gunea hodei-kontzeptu bat da, erreplikazio-eremua eskualde geografiko batera mugatzen duena.

    Nodo bakoitzaren erabilgarritasun-eremuak etiketa berezi baten bidez lortzen dira - failure-domain.beta.kubernetes.io/zone. Klusterra hodei publiko batean exekutatzen ari bada, etiketa hau automatikoki sortzen da eta nodo bakoitzaren erabilgarritasun-eremuen izenekin betetzen da.

    Etiketak ez dira Kubernetes baliabideen zehaztapenaren parte, beraz, ez duzu haiei buruzko informaziorik aurkituko API Gida. Hala ere, ikus daitezke (beste edozein etiketa bezala) YAML edo JSON formatuan nodoei buruzko informazioa eskatzen baduzu:

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

    Baliabideei buruz gehiago ikasteko modu bikaina da, baliabideen zehaztapenak ikasteaz gain.

4. Erraz aldatu klusterren eta izen-espazioen artean

Kubectl-ek Kubernetes APIari eskaera bat egiten dionean, lehenik kubeconfig fitxategia irakurtzen du konexiorako beharrezko parametro guztiak lortzeko.

Lehenespenez kubeconfig fitxategia da ~/.kube/config. Normalean, fitxategi hau komando berezi baten bidez sortzen edo eguneratzen da.

Hainbat klusterrekin lan egiten duzunean, kubeconfig fitxategiak kluster guztietara konektatzeko ezarpenak ditu. Kubectl komandoari zein clusterrekin lan egiten ari zaren esateko modu bat behar duzu.

Kluster baten barruan, hainbat izen-espazio sor ditzakezu, kluster fisiko baten barruan dagoen kluster birtual mota bat. Kubectl-ek ere zehazten du zein izen-espazio erabili kubeconfig fitxategian oinarrituta. Horrek esan nahi du kubectl komandoari zein izen-espaziorekin lan egin behar den esateko modu bat ere behar duzula.

Kapitulu honetan nola funtzionatzen duen eta modu eraginkorrean funtzionatzen duen azalduko dugu.

Kontuan izan kubeconfig fitxategi anitz izan ditzakezula KUBECONFIG ingurune-aldagaian zerrendatuta. Kasu honetan, fitxategi hauek guztiak konfigurazio komun batean konbinatuko dira exekuzioan. Kubeconfig fitxategi lehenetsia ere alda dezakezu kubectl parametroarekin exekutatuz --kubeconfig. Begira dokumentazio ofiziala.

kubeconfig fitxategiak

Ikus dezagun zer daukan zehazki kubeconfig fitxategiak:

Nola erabili kubectl eraginkorrago: gida zehatza
Ikus dezakezunez, kubeconfig fitxategiak testuinguru multzo bat dauka. Testuinguruak hiru elementu ditu:

  • Cluster β€” Cluster zerbitzariaren API URLa.
  • Erabiltzailea - erabiltzailearen autentifikazio-kredentzialak klusterrean.
  • Izen-espazioa - clusterra sartzean erabiltzen den izen-espazioa.

Praktikan, sarritan kluster bakoitzeko testuinguru bat erabiltzen dute kubeconfig-en. Hala ere, hainbat testuinguru izan ditzakezu cluster bakoitzeko, erabiltzaileen edo izen-espazioaren arabera bereizita. Dena den, testuinguru anitzeko konfigurazio hau ez da ohikoa, beraz, normalean klusterren eta testuinguruen arteko bat-bateko mapa bat egon ohi da.

Une bakoitzean, testuinguruetako bat egungoa da:

Nola erabili kubectl eraginkorrago: gida zehatza
Kubectl-ek konfigurazio fitxategi bat irakurtzen duenean, uneko testuinguruko informazioa hartzen du beti. Goiko adibidean, kubectl Hare klusterera konektatuko da.

Horren arabera, beste kluster batera aldatzeko, uneko testuingurua aldatu behar duzu kubeconfig fitxategian:

Nola erabili kubectl eraginkorrago: gida zehatza
Orain kubectl Fox klusterera konektatuko da.

Kluster berean izen-espazio ezberdin batera aldatzeko, uneko testuingururako izen-eremuaren elementuaren balioa aldatu behar duzu:

Nola erabili kubectl eraginkorrago: gida zehatza
Goiko adibidean, kubectl-ek Fox klusterraren Prod izen-espazioa erabiliko du (lehen Test izen-espazioa ezarri zen).

Kontuan izan kubectl-ek aukerak ere eskaintzen dituela --cluster, --user, --namespace ΠΈ --context, elementu indibidualak eta uneko testuingurua bera gainidazteko aukera ematen dutenak, kubeconfig-en ezarrita dagoena kontuan hartu gabe. Begira kubectl options.

Teorian, kubeconfig-en ezarpenak eskuz alda ditzakezu. Baina deserosoa da. Eragiketa hauek errazteko, parametroak automatikoki aldatzeko aukera ematen duten hainbat utilitate daude.

Erabili kubectx

Klusterren eta izen-eremuen artean aldatzeko oso erabilgarritasun ezaguna.

Utilitateak komandoak eskaintzen ditu kubectx ΠΈ kubens uneko testuingurua eta izen-espazioa aldatzeko.

Esan bezala, uneko testuingurua aldatzeak clusterra aldatzea esan nahi du, kluster bakoitzeko testuinguru bakarra baduzu.

Hona hemen komando hauek exekutatzearen adibide bat:

Nola erabili kubectl eraginkorrago: gida zehatza
Funtsean, komando hauek kubeconfig fitxategia editatu besterik ez dute goian azaldu bezala.

instalatzeko kubectx, jarraitu argibideak Github.

Bi komandoek testuinguruaren eta izen-eremuen izenak automatikoki osatzea onartzen dute, eta horrek guztiz idazteko beharra ezabatzen du. Osaketa automatikoa konfiguratzeko argibideak Hemen.

Beste ezaugarri erabilgarria kubectx da modu interaktiboa. Erabilgarritasunarekin batera funtzionatzen du fzf, bereizita instalatu behar dena. fzf instalatzeak automatikoki modu interaktiboa eskuragarri jartzen du kubectx. Interaktiboki, testuingurua eta izen-espazioa hauta ditzakezu fzf-k eskaintzen duen doako bilaketa interfaze interaktiboaren bidez.

Shell aliasak erabiliz

Ez duzu tresna bereizirik behar uneko testuingurua eta izen-espazioa aldatzeko, kubectl-ek horretarako komandoak ere eskaintzen dituelako. Bai, taldea kubectl config kubeconfig fitxategiak editatzeko azpikomandoak eskaintzen ditu.

Hona hemen horietako batzuk:

  • kubectl config get-contexts: testuinguru guztiak bistaratu;
  • kubectl config current-context: egungo testuingurua lortu;
  • kubectl config use-context: egungo testuingurua aldatu;
  • kubectl config set-context: Aldatu testuinguruaren elementua.

Hala ere, komando hauek zuzenean erabiltzea ez da oso erosoa, luzeak direlako. Exekutatu errazak diren shell aliasak egin ditzakezu.

Kubectx-en antzeko funtzionalitateak eskaintzen dituzten komando hauetan oinarritutako alias multzo bat sortu dut. Hemen ikus ditzakezu ekintzan:

Nola erabili kubectl eraginkorrago: gida zehatza
Kontuan izan ezizenek fzf erabiltzen dutela doako bilaketa interfaze interaktibo bat eskaintzeko (kubectx-en modu interaktiboa bezala). Horrek esan nahi du behar duzula instalatu fzfezizena hauek erabiltzeko.

Hona hemen ezizenen definizioak beraiek:

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

Alias ​​hauek ezartzeko goiko definizioak gehitu behar dituzu zure fitxategian ~/.bashrc edo ~/.zshrc eta berrabiarazi zure shell.

Pluginak erabiliz

Kubectl-ek oinarrizko komandoen modu berean exekutatzen diren pluginak kargatzeko aukera ematen du. Adibidez, kubectl-foo plugina instalatu eta exekutatu dezakezu komandoa exekutatuz kubectl foo.

Testuingurua eta izen-espazioa horrela aldatzea komenigarria litzateke, exekutatuz adibidez kubectl ctx testuingurua aldatzeko eta kubectl ns izen-eremua aldatzeko.

Hau egiten duten bi plugin idatzi ditut:

Pluginen lana aurreko ataleko aliasetan oinarritzen da.

Hona hemen nola funtzionatzen duten:

Nola erabili kubectl eraginkorrago: gida zehatza
Kontuan izan pluginek fzf erabiltzen dutela bilaketa libreko interfaze interaktibo bat eskaintzeko (kubectx-en modu interaktiboa bezala). Horrek esan nahi du behar duzula instalatu fzfezizena hauek erabiltzeko.

Pluginak instalatzeko, izendatutako shell script-ak deskargatu behar dituzu kubectl-ctx ΠΈ kubectl-ns Zure PATH aldagaiko edozein direktoriotara eta egin exekutagarriak adibidez. chmod +x. Horren ondoren berehala erabili ahal izango duzu kubectl ctx ΠΈ kubectl ns.

5. Murriztu sarrera autoaliasekin

Shell aliasak sarrera bizkortzeko modu ona dira. Proiektua kubectl-aliasak Kubectl oinarrizko komandoetarako 800 lasterbide inguru ditu.

Galdetuko zara agian: nola gogoratzen dituzu 800 ezizena? Baina ez dituzu guztiak gogoratu behar, behean azaltzen den eskema sinple baten arabera eraikitzen direlako:

Nola erabili kubectl eraginkorrago: gida zehatza
Adibidez:

  1. kgpooyaml - kubectl lortu lekak oyaml
  2. ksysgsvcw β€” kubectl -n kube-system get svc w
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. kgdepallsl - kubectl lortu inplementazio guztia sl

Ikus dezakezunez, aliasak osagaiez osatuta daude, eta horietako bakoitzak kubectl komandoaren elementu zehatz bat adierazten du. Alias ​​bakoitzak osagai bat izan dezake oinarrizko komando, eragiketa eta baliabiderako, eta osagai anitz parametroetarako. Osagai hauek ezkerretik eskuinera "betetzea" besterik ez duzu goiko diagramaren arabera.

Uneko diagrama zehatza hemen dago GitHub. Bertan ere aurki dezakezu ezizenen zerrenda osoa.

Adibidez, kgpooyamlall ezizena komandoaren baliokidea da kubectl get pods -o yaml --all-namespaces.

Aukeren ordena erlatiboa ez da garrantzitsua: komandoa kgpooyamlall komandoaren baliokidea da kgpoalloyaml.

Ez dituzu osagai guztiak alias gisa erabili behar. Adibidez k, kg, klo, ksys, kgpo ere erabil daiteke. Gainera, aliasak eta ohiko komandoak edo aukerak konbina ditzakezu komando lerroan:

Adibidez:

  1. Horren ordez kubectl proxy idatz dezakezu k proxy.
  2. Horren ordez kubectl get roles idatz dezakezu kg roles (Gaur egun ez dago Roles baliabiderako aliasik).
  3. Pod zehatz baterako datuak lortzeko, komandoa erabil dezakezu kgpo my-pod β€” kubectl get pod my-pod.

Kontuan izan ezizena batzuek komando-lerroko argumentua behar dutela. Adibidez, ezizena kgpol esan nahi du kubectl get pods -l. Aukera -l argumentu bat eskatzen du - etiketa zehaztapen bat. Alias ​​bat erabiltzen baduzu, itxura izango du kgpol app=ui.

Ezizen batzuek argumentuak behar dituztenez, a, f eta l ezizenak erabili behar dira azkena.

Orokorrean, eskema hau ikasi ondoren, exekutatu nahi dituzun komandoetatik aliasak era intuitiboki atera ditzakezu eta idazteko denbora asko aurreztu.

instalazioa

Kubectl-aliases instalatzeko, fitxategia deskargatu behar duzu .kubectl_aliases GitHub-etik eta sartu fitxategian ~/.bashrc edo ~/.zshrc:

source ~/.kubectl_aliases

Osaketa automatikoa

Lehen esan dugun bezala, askotan hitz gehigarriak gehitzen dizkiozu komando lerroko alias bati. Adibidez:

$ kgpooyaml test-pod-d4b77b989

Kubectl komandoa osatzea erabiltzen baduzu, ziurrenik baliabideen izenak bezalako gauzetarako osatze automatikoa erabili duzu. Baina hori egin al daiteke aliasak erabiltzen direnean?

Oso galdera garrantzitsua da, osatze automatikoak funtzionatzen ez badu, ezizenen abantaila batzuk galduko dituzulako.

Erantzuna erabiltzen ari zaren shell-aren araberakoa da:

  1. Zsh-entzat, alias-a osatzea kaxatik kanpo funtzionatzen du.
  2. Bash-entzat, zoritxarrez, lan batzuk behar dira osatze automatikoa funtziona dezan.

Bash-en ezizenen osatze automatikoa gaitzen

Bash-en arazoa da (Tab sakatzen duzun bakoitzean) ezizena osatzen saiatzen dela, ezizena aipatzen duen komandoa baino (Zsh-ek egiten duen bezala, adibidez). 800 alias guztietarako osatze-scriptik ez duzunez, osatze automatikoak ez du funtzionatzen.

Proiektu ezizena osoa arazo honi irtenbide orokorra ematen dio. Aliasetarako osatze-mekanismora konektatzen da, barrutik aliasa komando batera zabaltzen du eta osatzeko aukerak itzultzen ditu osatutako komandoa. Horrek esan nahi du alias baten betegarriak komando oso baten antzera jokatzen duela.

Jarraian, lehenik complete-alias nola instalatu eta gero nola konfiguratu kubectl ezizena guztien osaketa gaitzeko azalduko dut.

Complete-alias instalatzen

Lehenik eta behin, ezizena osoa araberakoa da bash-osaketa. Hori dela eta, complete-alias instalatu aurretik, bash-completion instalatuta dagoela ziurtatu behar duzu. Instalazio argibideak aurretik eman dira Linux eta MacOSentzat.

Ohar garrantzitsua MacOS erabiltzaileentzat: kubectl osatze automatikoaren script-a bezala, complete-alias-ek ez du funtzionatzen Bash 3.2-rekin, hau da, MacOSen lehenetsia. Bereziki, complete-alias bash-completion v2-ren araberakoa da (brew install bash-completion@2), gutxienez Bash 4.1 behar duena. Horrek esan nahi du MacOSen full-alias erabiltzeko Bash-en bertsio berriagoa instalatu behar duzula.

Gidoia deskargatu behar duzu bash_completion.sh - GitHub biltegia eta sartu zure fitxategian ~/.bashrc:

source ~/bash_completion.sh

Shell-a berrabiarazi ondoren, complete-alias guztiz instalatuko da.

Kubectl ezizenen osatze automatikoa gaitzen

Teknikoki complete-alias-ek bilgarri funtzioa eskaintzen du _complete_alias. Funtzio honek aliasa egiaztatzen du eta alias komandoa osatzeko aholkuak itzultzen ditu.

Funtzio bat alias zehatz batekin lotzeko, integratutako Bash mekanismoa erabili behar duzu bete, instalatzeko _complete_alias alias osatzeko funtzio gisa.

Adibide gisa, har dezagun k ezizena, kubectl komandoa adierazten duena. instalatzeko _complete_alias Alias ​​honen osagarri funtzio gisa, komando hau exekutatu beharko zenuke:

$ complete -F _complete_alias k

Horren emaitza da k ezizena automatikoki osatzean, funtzioari deitzen zaiola _complete_alias, aliasa egiaztatzen duena eta komandoa osatzeko aholkuak itzultzen dituena kubectl.

Bigarren adibide gisa, har dezagun ezizena kg, adierazten duena kubectl get:

$ complete -F _complete_alias kg

Aurreko adibidean bezala, kg automatikoki osatzean, lortuko zenituzkeen osatzeko aholku berdinak jasoko dituzu. kubectl get.

Kontuan izan complete-alias erabil dezakezula zure sistemako edozein ezizenarentzat.

Hori dela eta, kubectl ezizena guztien osatze automatikoa gaitzeko, goiko komandoa exekutatu behar duzu horietako bakoitzarentzat. Hurrengo zatiak horixe egiten du, baldin eta kubectl-aliasak ezarri badituzu ~/.kubectl-aliases:

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

Kode zati hau zurean jarri behar da ~/.bashrc, berrabiarazi komando-shella eta osatze automatikoa erabilgarri egongo da 800 kubectl ezizena guztientzat.

6. Kubectl pluginekin zabaltzea

Noiztik hasita 1.12. bertsioa, kubectl-ek onartzen du plugin mekanismoa, bere funtzioak komando gehigarriekin zabaltzeko aukera ematen duena.

Ezagutzen baduzu Git pluginen mekanismoak, orduan kubectl pluginak printzipio berdinean eraikitzen dira.

Kapitulu honetan, pluginak nola instalatu, non aurkitu eta zure pluginak nola sortu azalduko dugu.

Pluginak instalatzea

Kubectl pluginak fitxategi exekutagarri soil gisa banatzen dira, antzeko izenarekin kubectl-x. Aurrizkia kubectl- beharrezkoa da, eta ondoren pluginari deitzeko aukera ematen duen kubectl azpikomando berri bat dago.

Adibidez, kaixo plugina izeneko fitxategi gisa banatuko da kubectl-hello.

Plugin-a instalatzeko, fitxategia kopiatu behar duzu kubectl-x zure PATH-eko edozein direktoriotara eta egin exekutagarria, adibidez chmod +x. Honen ondoren berehala dei dezakezu plugin-era kubectl x.

Komando hau erabil dezakezu zure sisteman instalatuta dauden plugin guztiak zerrendatzeko:

$ kubectl plugin list

Komando honek abisuak ere bistaratuko ditu izen bereko hainbat plugin badituzu edo exekutagarria ez den plugin-fitxategi bat badago.

Krew erabiliz pluginak aurkitzea eta instalatzea

Kubectl pluginak software paketeen antzera partekatu edo berrerabili daitezke. Baina non aurki ditzakezu besteek partekatu dituzten pluginak?

Krew proiektua kubectl pluginak partekatzeko, bilatzeko, instalatzeko eta kudeatzeko irtenbide bateratua eskaintzea du helburu. Proiektuak "kubectl pluginen pakete kudeatzailea" deitzen du bere burua (Krew-en antzekoa da Brew).

Krew hautatu eta instala ditzakezun kubectl pluginen zerrenda da. Aldi berean, Krew kubectl-erako plugin bat ere bada.

Horrek esan nahi du Krew instalatzeak funtsean beste edozein kubectl plugin instalatzeak bezala funtzionatzen duela. Jarraibide zehatzak helbidean aurki ditzakezu GitHub orria.

Krew-eko komando garrantzitsuenak hauek dira:

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

Kontuan izan Krew erabiliz pluginak instalatzeak ez duela oztopatzen goian azaldutako metodo estandarra erabiliz pluginak instalatzea.

Kontuan izan komandoa kubectl krew list Krew erabiliz instalatutako pluginak soilik bistaratzen ditu, komandoak, berriz kubectl plugin list plugin guztiak zerrendatzen ditu, hau da, Krew erabiliz instalatutakoak eta beste metodo batzuekin instalatutakoak.

Pluginak beste nonbait aurkitzea

Krew proiektu gaztea da, gaur egun bere baitan zerrenda 30 plugin inguru bakarrik. Ezin baduzu aurkitu behar duzuna, pluginak aurki ditzakezu beste nonbait, GitHub adibidez.

GitHub atalean ikustea gomendatzen dut kubectl-pluginak. Bertan kontsultatu beharreko dozenaka plugin eskuragarri aurkituko dituzu.

Zure pluginak idazten

zuk zeuk ahal duzu pluginak sortu - Ez da zaila. Behar duzuna egiten duen exekutagarri bat sortu behar duzu, izena eman kubectl-x eta instalatu goian azaldu bezala.

Fitxategia bash script bat, python script bat edo konpilatutako GO aplikazio bat izan daiteke - berdin du. Baldintza bakarra sistema eragilean zuzenean exekutatu ahal izatea da.

Sortu dezagun plugin adibide bat oraintxe bertan. Aurreko atalean, kubectl komandoa erabili duzu pod bakoitzeko edukiontziak zerrendatzeko. Erraza da komando hau dei dezakezun plugin batean bihurtzea adibidez. kubectl img.

Sortu fitxategi bat kubectl-img honako eduki hau:

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

Orain egin fitxategia exekutagarri honekin chmod +x kubectl-img eta eraman ezazu zure PATH-eko edozein direktoriotara. Honen ondoren berehala plugina erabil dezakezu kubectl img.

Esan bezala, kubectl pluginak edozein programazio edo script-lengoaian idatz daitezke. Shell script-ak erabiltzen ari bazara, pluginaren barruan kubectl erraz deitzeko aukera izatearen abantaila. Hala ere, plugin konplexuagoak idatz ditzakezu benetako programazio-lengoaia erabiliz Kubernetes bezeroen liburutegia. Go erabiltzen ari bazara, ere erabil dezakezu cli-runtime liburutegia, kubectl pluginak idazteko bereziki existitzen dena.

Nola partekatu zure pluginak

Zure pluginak besteentzat erabilgarriak izan daitezkeela uste baduzu, anima zaitez GitHub-en partekatu. Ziurtatu gaiari gehitzea kubectl-pluginak.

Zure plugina gehitzeko ere eska dezakezu Krew zerrenda. Hau nola egin jakiteko argibideak daude GitHub biltegiak.

Agindua osatzea

Pluginek ez dute osatze automatikoa onartzen. Hau da, pluginaren izen osoa eta argumentuen izen osoa sartu behar dituzu.

Funtzio honen GitHub kubectl biltegia du eskaera irekia. Beraz, baliteke funtzio hau etorkizunean noizbait inplementatzea.

Zorte on!!!

Zer gehiago irakurri gaiari buruz:

  1. Kubernetesen hiru autoeskalatze maila eta nola erabili eraginkortasunez.
  2. Kubernetes pirateria izpirituan inplementatzeko txantiloi batekin.
  3. Gure kanala Around Kubernetes Telegram-en.

Iturria: www.habr.com

Gehitu iruzkin berria