Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Haeba u sebetsa le Kubernetes, mohlomong kubectl ke e 'ngoe ea lisebelisoa tseo u li sebelisang haholo. 'Me neng kapa neng ha u qeta nako e ngata u sebetsa ka sesebelisoa se itseng, ho lefella ho ithuta hantle le ho ithuta ho se sebelisa ka katleho.

sehlopha Kubernetes aaS ho tsoa ho Mail.ru e fetoletsoeng ke sengoloa sa Daniel Weibel moo u tla fumana malebela le maqheka a ho sebetsa ka katleho ka kubectl. E tla boela e u thuse ho fumana kutloisiso e tebileng ea Kubernetes.

Ho ea ka mongoli, sepheo sa sengoloa ke ho etsa hore mosebetsi oa hau oa letsatsi le letsatsi le Kubernetes o se ke oa sebetsa hantle feela, empa hape o be monate!

Selelekela: Bectl ke eng

Pele u ka ithuta ho sebelisa kubectl ka katleho, u hloka ho fumana kutloisiso ea mantlha ea hore na ke eng le hore na e sebetsa joang.

Ho latela pono ea mosebelisi, kubectl ke karolo ea taolo e u lumellang ho etsa ts'ebetso ea Kubernetes.

Ha re bua ka botekgeniki, kubectl ke moreki oa Kubernetes API.

Kubernetes API ke HTTP REST API. API ena ke sebopeho sa 'nete sa Kubernetes, seo ka sona se laoloang ka botlalo. Sena se bolela hore ts'ebetso e 'ngoe le e' ngoe ea Kubernetes e pepesitsoe e le pheletso ea API mme e ka etsoa ka kopo ea HTTP ho fihlela pheletsong eo.

Ka hona, mosebetsi oa mantlha oa kubectl ke ho etsa likopo tsa HTTP ho Kubernetes API:

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Kubernetes ke sistimi e shebaneng le lisebelisoa ka botlalo. Sena se bolela hore e boloka boemo ba ka hare ba lisebelisoa le mesebetsi eohle ea Kubernetes ke mesebetsi ea CRUD.

U taolong e felletseng ea Kubernetes ka ho laola lisebelisoa tsena, 'me Kubernetes o tseba seo a lokelang ho se etsa ho latela maemo a hajoale a lisebelisoa. Ka lebaka lena, referense ea Kubernetes API e hlophisitsoe e le lethathamo la mefuta ea lisebelisoa tse amanang le ts'ebetso ea tsona.

A re hlahlobeng mohlala.

Ha re re u batla ho theha sesebelisoa sa ReplicaSet. Ho etsa sena, o hlalosa ReplicaSet faeleng ka mabitso replicaset.yaml, ebe u tsamaisa taelo:

$ kubectl create -f replicaset.yaml

Sena se tla theha sesebelisoa sa ReplicaSet. Empa ho etsahala'ng ka mor'a liketsahalo?

Kubernetes e na le ts'ebetso ea ho theha ReplicaSet. Joalo ka ts'ebetso efe kapa efe, e pepesoa joalo ka pheletso ea API. Qetello e ikhethileng ea API bakeng sa ts'ebetso ena e shebahala tjena:

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

Lintlha tsa API bakeng sa ts'ebetso eohle ea Kubernetes li ka fumanoa ho Referense ea API (ho kenyelletsa ntlha e ka hodimo). Ho etsa kopo ea 'nete sebakeng sa ho qetela, u tlameha ho qala ka ho eketsa URL ea seva sa API litseleng tsa ho qetela tse thathamisitsoeng ho API.

Kahoo, ha o phethahatsa taelo e ka holimo, kubectl e romela kopo ea HTTP POST ho qetellong ea API. Tlhaloso ea ReplicaSet eo u faneng ka eona faeleng replicaset.yaml, e romeloa ka 'mele oa kopo.

Ena ke tsela eo kubectl e sebetsang ka eona bakeng sa litaelo tsohle tse sebelisanang le sehlopha sa Kubernetes. Maemong ana kaofela, kubectl e mpa e etsa likopo tsa HTTP ho li-endpoints tse nepahetseng tsa Kubernetes API.

Ka kopo elelloa hore o ka khona ho laola Kubernetes ka botlalo o sebelisa lisebelisoa tse kang curlka ho romella likopo tsa HTTP ka letsoho ho Kubernetes API. Kubectl e nolofaletsa ho sebelisa Kubernetes API.

Ena ke metheo ea hore na kubectl ke eng le hore na e sebetsa joang. Empa ho na le ho hong hape ka Kubernetes API eo mosebelisi e mong le e mong oa kubectl a lokelang ho e tseba. Ha re shebeng kapele lefatše le ka hare la Kubernetes.

Lefatše le ka hare la Kubernetes

Kubernetes e na le sete ea likarolo tse ikemetseng tse sebetsang e le lits'ebetso tse arohaneng ho li-cluster node. Likarolo tse ling li sebetsa ho li-master node, tse ling li sebetsa ho li-node tsa basebetsi, karolo ka 'ngoe e etsa mosebetsi oa eona o ikhethileng.

Mona ke likarolo tsa bohlokoa ka ho fetisisa li-node tse kholo:

  1. polokelo - litlhaloso tsa lisebelisoa tsa mabenkele (hangata ke joalo-joalo).
  2. Seva ea API - e fana ka API mme e laola polokelo.
  3. Mookameli oa Mookameli - E netefatsa hore maemo a lisebelisoa a lumellana le litlhaloso.
  4. Mohlophisi - E hlophisa li-pods ho li-node tsa basebetsi.

Mona ke karolo e 'ngoe ea bohlokoahali ho li-node tsa basebetsi:

  1. kubelet - e laola ho qalisoa ha lijana sebakeng sa ho sebetsa.

Ho utloisisa hore na likarolo tsena li sebelisana joang, a re shebeng mohlala.

A re nke hore u sa tsoa qeta kubectl create -f replicaset.yaml, ka mor'a moo kubectl e ile ea etsa kopo ea HTTP POST ho ReplicaSet API endpoint (ho fetisa tlhaloso ea mohloli oa ReplicaSet).

Ho etsahalang sehlopheng?

  1. Kamora ho etsa kubectl create -f replicaset.yaml Seva ea API e boloka tlhaloso ea sesebelisoa sa ReplicaSet polokelong:

    Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng

  2. Ka mor'a moo, molaoli oa ReplicaSet o hlahisoa ho mookameli oa molaoli, ea sebetsanang le pōpo, phetoho le ho tlosoa ha lisebelisoa tsa ReplicaSet:

    Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng

  3. Selaoli sa ReplicaSet se etsa tlhaloso ea pod bakeng sa replica e 'ngoe le e' ngoe ea ReplicaSet (ho ea ka setšoantšo sa pod tlhaloso ea ReplicaSet) 'me e li boloka polokelong:

    Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng

  4. Sehlophisi se qalisoa, ho latela li-pods tse e-so abeloe li-node life kapa life tsa basebetsi:

    Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng

  5. Mohlophisi o khetha node e loketseng ea basebetsi bakeng sa pod e 'ngoe le e' ngoe ebe o eketsa tlhahisoleseding ena ho tlhaloso ea pod lebenkeleng:

    Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng

  6. Sebakeng sa basebetsi moo pod e abetsoeng teng, Kubelet e qalisoa, e latela li-pods tse abetsoeng node ena:

    Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng

  7. Kubelet e bala tlhaloso ea pod ho tloha polokelong mme e laela nako ea ho sebetsa ea setshelo, joalo ka Docker, ho qala lijana sebakeng sa node:

    Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng

Ka tlase ke mongolo oa tlhaloso ena.

Kopo ea API ho ea qetellong ea tlhahiso ea ReplicaSet e sebetsoa ke seva sa API. Seva ea API e netefatsa kopo mme e boloka tlhaloso ea lisebelisoa tsa ReplicaSet polokelong.

Ketsahalo ena e qala ReplicaSet controller, e leng subprocess ea mookameli oa molaoli. Molaoli oa ReplicaSet o beha leihlo ho theoa, ho nchafatsa, le ho hlakoloa ha lisebelisoa tsa ReplicaSet lebenkeleng mme o fumana tsebiso ea ketsahalo ha sena se etsahala.

Mosebetsi oa molaoli oa ReplicaSet ke ho netefatsa hore palo e hlokahalang ea li-pods tsa ReplicaSet li teng. Mohlala oa rona, ha ho na li-pods tse ntseng li le teng, kahoo molaoli oa ReplicaSet o etsa litlhaloso tsena tsa pod (ho latela template ea pod ho tlhaloso ea ReplicaSet) mme o li boloka polokelong.

Ho thehoa ha li-pods tse ncha ho hlahisoa ke mohlophisi ea bolokang tlaleho ea litlhaloso tsa pod tse e-s'o hlophisoe li-node tsa basebetsi. Mohlophisi o khetha sebaka se loketseng sa basebetsi bakeng sa pod e 'ngoe le e 'ngoe ebe o ntlafatsa litlhaloso tsa pod sebakeng sa polokelo.

Hlokomela hore ho fihlela joale, ha ho na khoutu ea mosebetsi o sebetsang kae kapa kae sehlopheng. Tsohle tse entsoeng ho fihlela joale - hona ke ho theha le ho nchafatsa lisebelisoa sebakeng sa polokelo ho node e kholo.

Ketsahalo ea ho qetela e baka Kubelets, e shebileng li-pods tse hlophisitsoeng bakeng sa li-node tsa bona tsa basebetsi. Kubelet ea node ea basebetsi moo li-pods tsa hau tsa ReplicaSet li kentsoeng li tlameha ho laela nako ea ho sebetsa ea setshelo, joalo ka Docker, ho khoasolla litšoantšo tse hlokahalang tsa setshelo le ho li tsamaisa.

Mothating ona, kopo ea hau ea ReplicaSet e se e sebetsa!

Karolo ea Kubernetes API

Joalokaha u bone mohlaleng o fetileng, likarolo tsa Kubernetes (ntle le seva sa API le polokelo) shebella liphetoho ho mehloli ea polokelo le ho fetola tlhahisoleseding mabapi le mehloli ea polokelo.

Ha e le hantle, likarolo tsena ha li sebelisane le polokelo ka ho toba, empa feela ka Kubernetes API.

Nahana ka mehlala e latelang:

  1. Molaoli oa ReplicaSet o sebelisa pheletso ea API thathamisa ReplicaSets e nang le parameter watch ho beha leihlo liphetoho ho lisebelisoa tsa ReplicaSet.
  2. Molaoli oa ReplicaSet o sebelisa pheletso ea API etsa Pod (create pod) ho bopa diphotjana.
  3. Scheduler e sebelisa API endpoint patch pod (edit pod) ho nchafatsa li-pods tse nang le tlhaiso-leseling mabapi le node e khethiloeng ea basebetsi.

Joalokaha u bona, ena ke eona API eo kubectl e fihlang ho eona. Ho sebelisa API e tšoanang bakeng sa likarolo tsa ka hare le basebelisi ba kantle ke mohopolo oa bohlokoa ho moralo oa Kubernetes.

Joale re ka akaretsa hore na Kubernetes e sebetsa joang:

  1. Mabenkele a polokelo a bolela, ke hore, lisebelisoa tsa Kubernetes.
  2. Seva ea API e fana ka sebopeho sa polokelo ka mokhoa oa Kubernetes API.
  3. Likarolo tse ling tsohle tsa Kubernetes le basebelisi ba bala, ba shebella, 'me ba qhekella boemo ba Kubernetes (lisebelisoa) ka API.

Ho tseba mehopolo ena ho tla u thusa ho utloisisa kubectl betere le ho fumana molemo ho eona.

Joale ha re shebeng malebela le maqheka a tla u thusa ho ntlafatsa tlhahiso ea hau ka kubectl.

1. Potlakisa ho kenya ka ho tlatsa taelo

E 'ngoe ea mekhoa e sebetsang haholo, empa e atisang ho hlokomolohuoa, ea ho ntlafatsa ts'ebetso ka kubectl ke ho phethela taelo.

Ho phethela taelo ho u fa monyetla oa ho tlatsa likarolo tsa litaelo tsa kubectl u sebelisa konopo ea Tab. Sena se sebetsa bakeng sa subcommands, likhetho, le likhang, ho kenyelletsa le ntho e thata joalo ka mabitso a lisebelisoa.

Bona hore na ho phethela taelo ea kubectl ho sebetsa joang:

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Ho phethela taelo ho sebetsa bakeng sa likhetla tsa Bash le Zsh.

Tataiso ea Semolao e na le litaelo tse qaqileng tsa ho theha boitlamo bo ikemetseng, empa ka tlase re tla fana ka tlhaloso e khutšoanyane.

Kamoo ho phethela taelo ho sebetsang kateng

Ho phethela taelo ke karolo ea khetla e sebetsang ho sebelisa mongolo oa ho tlatsa. Script ea katoloso ke script ea khetla e hlalosang boitšoaro ba katoloso bakeng sa taelo e itseng.

Kubectl e iketsetsa le ho hlahisa mangolo a katoloso bakeng sa Bash le Zsh e sebelisa litaelo tse latelang:

$ kubectl completion bash

Kapa:

$ kubectl completion zsh

Ka khopolo, ho lekane ho hokahanya tlhahiso ea litaelo tsena ho khetla e nepahetseng ea taelo e le hore kubectl e ka tlatsana le litaelo.

Ha e le hantle, mokhoa oa ho hokahanya o fapane bakeng sa Bash (ho kenyeletsoa phapang pakeng tsa Linux le MacOS) le Zsh. Ka tlase re tla sheba likhetho tsena kaofela.

Bash ho Linux

Sengoloa sa ho tlatsa Bash se ipapisitse le sephutheloana sa ho tlatsa bash, kahoo o hloka ho se kenya pele:

$ sudo apt-get install bash-completion

Kapa:

$ yum install bash-completion

U ka hlahloba hore na sephutheloana se kentsoe ka katleho ho sebelisa taelo e latelang:

$ type _init_completion

Haeba sena se hlahisa khoutu ea ts'ebetso ea khetla, joale bash-completion e kentsoe ka nepo. Haeba taelo e fana ka phoso ea "Ha e Fumane", o hloka ho kenyelletsa mola o latelang faeleng ea hau ~ / .bashrc:

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

Na hoa hlokahala ho kenya mohala ona faeleng ~ / .bashrc kapa che ho ipapisitse le molaoli oa sephutheloana oo u o sebelisitseng ho kenya bash-completion. Sena se hlokahala bakeng sa APT, empa eseng bakeng sa YUM.

Kamora ho kenya bash-completion, o hloka ho hlophisa ntho e ngoe le e ngoe e le hore sengoloa sa ho tlatsa kubectl se nolofalloe linakong tsohle tsa likhetla.

Mokhoa o mong oa ho etsa sena ke ho eketsa mola o latelang faeleng ~ / .bashrc:

source <(kubectl completion bash)

Tsela e 'ngoe ke ho kenyelletsa script ea katoloso ea kubectl bukeng /etc/bash_completion.d (e etse haeba e le sieo):

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

Lingoliloeng tsohle tse kenyelletsoeng lethathamong la libuka /etc/bash_completion.d li kenyellelitsoe ka bo eona ho bash-completion.

Likhetho ka bobeli li sebetsa ka ho lekana.

Kamora ho qala khetla hape, ho phethela taelo ea kubectl ho tla sebetsa.

Bash ho MacOS

Ho MacOS ho seta ho thata haholoanyane. 'Nete ke hore ka ho sa feleng, MacOS e sebelisa Bash version 3.2,' me kubectl autocompletion script e hloka phetolelo ea Bash ea bonyane 4.1 mme ha e sebetse ho Bash 3.2.

Ho na le litaba tsa laesense tse amanang le ho sebelisa mofuta oa khale oa Bash ho MacOS. Bash version 4 e na le tumello tlas'a GPLv3, e sa tšehetsoeng ke Apple.

Ho hlophisa autocompletion ea kubectl ho MacOS, o hloka ho kenya mofuta oa morao-rao oa Bash. U ka boela ua beha Bash e ntlafalitsoeng e le khetla ea hau ea kamehla, e tla u bolokela mathata a mangata nakong e tlang. Ha ho thata, lintlha li fanoe sehloohong se reng "Ho ntlafatsa Bash ho MacOS".

Pele o tsoela pele, etsa bonnete ba hore o sebelisa mofuta oa morao-rao oa Bash (sheba tlhahiso bash --version).

Sengoloa sa ho phethela Bash se fapana ho ea ka morero bash-qetello, kahoo o hloka ho e kenya pele.

U ka kenya bash-completion u sebelisa Homebrew:

$ brew install bash-completion@2

ke @2 e emetse bash-completion version 2. kubectl autocompletion e hloka bash-completion v2, le bash-completion v2 e hloka bonyane ba Bash version 4.1.

Tlhahiso ea taelo brew-install e na le karolo ea Caveats, e hlalosang se lokelang ho kenngoa faeleng ~/.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"

Leha ho le joalo, ke khothaletsa ho eketsa mela ena hore e se ke ea ~/.bash_profilele ho ~/.bashrc. Tabeng ena, autocompletion e ke ke ea fumaneha feela ka sehloohong, empa hape le ka likhetla tsa litaelo tsa bana.

Kamora ho qala hape khetla ea taelo, o ka netefatsa hore ho kengoa ho nepahetse ho sebelisa taelo e latelang:

$ type _init_completion

Haeba u bona ts'ebetso ea khetla ho tlhahiso, joale ntho e 'ngoe le e' ngoe e hlophisitsoe ka nepo.

Joale re hloka ho etsa bonnete ba hore ho phethela ha kubectl hoa khoneha linakong tsohle.

Tsela e 'ngoe ke ho eketsa mola o latelang ho hau ~/.bashrc:

source <(kubectl completion bash)

Mokhoa oa bobeli ke ho kenyelletsa mongolo o felletseng ho foldara /usr/local/etc/bash_completion.d:

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

Mokhoa ona o tla sebetsa feela haeba o kentse bash-completion o sebelisa Homebrew. Tabeng ena, bash-completion e jara lingoloa tsohle ho tsoa bukeng ena.

Haeba u kentse kubectl o sebelisa Homebrew, joale ha ho na tlhoko ea ho etsa mohato o fetileng, kaha mongolo oa autocompletion o tla beoa ka bohona foldareng. /usr/local/etc/bash_completion.d nakong ea ho kenya. Tabeng ena, kubectl autocompletion e tla qala ho sebetsa hang ha o kenya bash-completion.

Ka lebaka leo, likhetho tsena kaofela lia lekana.

zsh

Lingoliloeng tsa ho tlatsa Zsh ha li hloke ho its'etleha. Seo u hlokang ho se etsa feela ke ho li nolofalletsa ha u kenya khetla ea taelo.

U ka etsa sena ka ho eketsa line ho ea hau ~/.zshrc faele:

source <(kubectl completion zsh)

Haeba o fumana phoso not found: compdef Kamora ho qala khetla ea hau hape, o hloka ho nolofalletsa ts'ebetso ea buildin compdef. U ka e nolofalletsa ka ho e kenyelletsa qalong ea faele ea hau ~/.zshrc e latelang:

autoload -Uz compinit
compinit

2. Sheba litlhaloso tsa lisebelisoa ka potlako

Ha o theha litlhaloso tsa lisebelisoa tsa YAML, o hloka ho tseba masimo le moelelo oa ona bakeng sa lisebelisoa tseo. Sebaka se le seng sa ho batla tlhahisoleseling ena ke ho API, e nang le litlhaloso tse felletseng tsa lisebelisoa tsohle.

Leha ho le joalo, ho fetohela ho sebatli sa marang-rang nako le nako ha u hloka ho batla ho hong ha ho bonolo. Ka hona, kubectl e fana ka taelo kubectl explain, e bonts'ang lintlha tsa lisebelisoa tsohle ho terminal ea hau.

Sebopeho sa taelo ke se latelang:

$ kubectl explain resource[.field]...

Taelo e tla hlahisa lintlha tsa mohloli kapa tšimo e batloang. Lintlha tse hlahang li tšoana le tse hlahang bukeng ea API.

ke default kubectl explain e bonts'a feela boemo ba pele ba sehlaha sa masimo.

Bona hore na e shebahala joang e ka ba mona.

U ka bonts'a sefate kaofela haeba u eketsa khetho --recursive:

$ kubectl explain deployment.spec --recursive

Haeba u sa tsebe hantle hore na ke lisebelisoa life tse hlokahalang, u ka li bontša kaofela ka taelo e latelang:

$ kubectl api-resources

Taelo ena e bonts'a mabitso a lisebelisoa ka bongata, mohlala. deployments sebakeng sa deployment. E boetse e hlahisa lebitso le lekgutshwane, mohlala deploy, bakeng sa mehloli e nang le eona. U se ke ua tšoenyeha ka liphapang tsena. Likhetho tsena kaofela tsa mabitso li lekana bakeng sa kubectl. Ke hore, u ka sebelisa leha e le efe ea tsona bakeng sa kubectl explain.

Litaelo tse latelang kaofela lia lekana:

$ kubectl explain deployments.spec
# или
$ kubectl explain deployment.spec
# или        
$ kubectl explain deploy.spec

3. Sebelisa sebopeho se tloaelehileng sa kholomo

Sebopeho sa taelo ea kamehla 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

Sebopeho sena se bonolo, empa se na le boitsebiso bo fokolang. Ha ho bapisoa le mokhoa o felletseng oa tlhaloso ea lisebelisoa, ke likarolo tse 'maloa feela tse bontšitsoeng mona.

Tabeng ena, o ka sebelisa mokhoa o tloaelehileng oa tlhahiso ea kholomo. E u lumella hore u tsebe hore na u tla fumana data efe. O ka hlahisa sebaka sefe kapa sefe sa lisebelisoa joalo ka kholomo e arohaneng.

Tšebeliso ea sebopeho sa tloaelo e khethoa ho sebelisa likhetho:

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

O ka hlalosa kholomo e 'ngoe le e 'ngoe ea tlhahiso e le para <header>:<jsonpath>kae <header> ke lebitso la kholomo, le <jsonpath> - polelo e hlalosang sebaka sa mohlodi.

Ha re shebeng mohlala o bonolo:

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

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

Sephetho se na le kholomo e le 'ngoe e nang le mabitso a li-pods.

Polelo ea khetho e khetha mabitso a pod ho tloha tšimong metadata.name. Sena ke hobane lebitso la pod le hlalosoa tšimong ea lebitso la ngoana metadata tlhalosong ea mohloli oa pod. Lintlha tse ling li ka fumanoa ho Tataiso ea API kapa ngola taelo kubectl explain pod.metadata.name.

Joale ha re re u batla ho eketsa kholomo e eketsehileng ho sephetho, mohlala, ho bonts'a node e 'ngoe le e' ngoe e ntseng e tsoela pele. Ho etsa sena, o ka eketsa litlhaloso tse nepahetseng tsa kholomo ho khetho ea li-columns tse tloaelehileng:

$ 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

Polelo e khetha lebitso la node ho tloha ho spec.nodeName - ha pod e abeloa node, lebitso la eona le ngotsoe tšimong spec.nodeName tlhahiso ea lisebelisoa tsa pod. Boitsebiso bo eketsehileng bo ka fumanoa ho sehlahisoa kubectl explain pod.spec.nodeName.

Ka kopo hlokomela hore libaka tsa lisebelisoa tsa Kubernetes li na le maemo a thata.

O ka sheba karolo efe kapa efe ea lisebelisoa joalo ka kholomo. Sheba feela lintlha tsa lisebelisoa 'me u li leke ka likarolo life kapa life tseo u li ratang.

Empa pele, a re hlahlobisiseng lipolelo tsa khetho ea tšimo.

Litlhaloso tsa JSONPath

Lipolelo tsa ho khetha likarolo tsa lisebelisoa li thehiloe ho JSONPath.

JSONPath ke puo ea ho khutlisa data ho tsoa litokomaneng tsa JSON. Ho khetha tšimo e le 'ngoe ke mokhoa o bonolo ka ho fetisisa oa ho sebelisa JSONPath. O na le tse ngata menyetla e mengata, ho kenyelletsa le ba khethang, li-filters joalo-joalo.

Kubectl e hlalosa e tšehetsa palo e lekanyelitsoeng ea likarolo tsa JSONPath. Menyetla le mehlala ea tšebeliso ea tsona li hlalositsoe ka tlase:

# Выбрать все элементы списка
$ 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'

[] opareitara e bohlokoa haholo. Libaka tse ngata tsa lisebelisoa tsa Kubernetes ke manane, 'me opereishene ena e u lumella ho khetha litho tsa manane ao. Hangata e sebelisoa le wildcard joaloka [*] ho khetha likarolo tsohle tsa lenane.

Mehlala ea ts'ebeliso

Monyetla oa ho sebelisa mokhoa o tloaelehileng oa tlhahiso ea kholomo ha o fele, kaha o ka bonts'a tšimo leha e le efe kapa motsoako oa masimo a lisebelisoa ho tlhahiso. Mehlala ea lisebelisoa ke tsena, empa ikutloe u lokolohile ho itlhahloba le ho fumana lits'ebetso tse u sebeletsang.

  1. Ho hlahisa litšoantšo tsa setshelo bakeng sa li-pods:
    $ kubectl get pods 
      -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
    
    NAME                        IMAGES
    engine-544b6b6467-22qr6     rabbitmq:3.7.8-management,nginx
    engine-544b6b6467-lw5t8     rabbitmq:3.7.8-management,nginx
    engine-544b6b6467-tvgmg     rabbitmq:3.7.8-management,nginx
    web-ui-6db964458-8pdw4      wordpress

    Taelo ena e bonts'a mabitso a setšoantšo sa setshelo bakeng sa pod ka 'ngoe.

    Hopola hore pod e ka ba le lijana tse 'maloa, ebe mabitso a setšoantšo a tla hlahisoa moleng o le mong, a arohanngoa ke li-commas.

  2. E bonts'a libaka tse fumanehang:
    $ 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

    Taelo ena e na le thuso haeba sehlopha sa hau se tšoaretsoe lerung la sechaba. E bonts'a sebaka sa ho fumaneha bakeng sa node ka 'ngoe.

    Sebaka sa ho fumaneha ke mohopolo oa maru o lekanyetsang sebaka sa ho ikatisa ho sebaka sa geographic.

    Libaka tse fumanehang bakeng sa node ka 'ngoe li fumanoa ka label e khethehileng - failure-domain.beta.kubernetes.io/zone. Haeba sehlopha se sebetsa ka har'a leru la sechaba, leibole ena e iketsetsa ka bo eona 'me e tlatsitsoe ka mabitso a libaka tse fumanehang bakeng sa node ka 'ngoe.

    Li-Labels ha se karolo ea litlhaloso tsa lisebelisoa tsa Kubernetes, kahoo u ke ke ua fumana leseli ka tsona Tataiso ea API. Leha ho le joalo, li ka bonoa (joalo ka lileibole tse ling) haeba u kopa tlhahisoleseling mabapi le li-node ka sebopeho sa YAML kapa JSON:

    $ kubectl get nodes -o yaml
    # или
    $ kubectl get nodes -o json

    Ena ke tsela e ntle ea ho ithuta ho eketsehileng ka lisebelisoa, ho phaella ho litlhaloso tsa lisebelisoa tsa ho ithuta.

4. Fetola habonolo lipakeng tsa lihlopha le libaka tsa mabitso

Ha kubectl e etsa kopo ho Kubernetes API, e qala ka ho bala faele ea kubeconfig ho fumana liparamente tsohle tse hlokahalang bakeng sa khokahano.

Ka ho feletseng faele ea kubeconfig e ~/.kube/config. Ka tloaelo faele ena e entsoe kapa e ntlafatsoa ka taelo e khethehileng.

Ha o sebetsa ka lihlopha tse ngata, faele ea hau ea kubeconfig e na le litlhophiso tsa ho hokela lihlopha tseo kaofela. U hloka mokhoa oa ho bolella taelo ea kubectl hore na u sebetsa le sehlopha sefe.

Ka har'a sehlopha, o ka theha libaka tse ngata tsa mabitso-mofuta oa sehlopha se fumanehang ka har'a sehlopha sa 'mele. Kubectl e boetse e etsa qeto ea hore na o tla sebelisa sebaka sefe sa mabitso ho latela faele ea kubeconfig. Sena se bolela hore o hloka le mokhoa oa ho bolella taelo ea kubectl hore na o sebetsa ka sebaka sefe sa mabitso.

Khaolong ena re tla hlalosa hore na e sebetsa joang le hore na e ka sebetsa joang ka katleho.

Hlokomela hore o kanna oa ba le lifaele tse ngata tsa kubeconfig tse thathamisitsoeng ho KUBECONFIG tikoloho e fapaneng. Tabeng ena, lifaele tsena kaofela li tla kopanngoa hore e be tlhophiso e le 'ngoe e tloaelehileng ka nako ea ho sebetsa. U ka boela ua fetola faele ea kamehla ea kubeconfig ka ho matha kubectl ka parameter --kubeconfig. Sheba litokomane tsa molao.

kubeconfig lifaele

Ha re boneng hore na hantle-ntle faele ea kubeconfig e na le eng:

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Joalokaha u ka bona, faele ea kubeconfig e na le maemo a mangata. Moelelo o na le lintlha tse tharo:

  • Sehlopha - API URL ea seva sa sehlopha.
  • Lintlha tsa netefatso ea mosebelisi sehlopheng.
  • Sebaka sa mabitso - sebaka sa mabitso se sebelisoang ha ho kopanngoa sehlopha.

Ha e le hantle, hangata ba sebelisa moelelo o le mong sehlopheng ka seng ho kubeconfig ea bona. Leha ho le joalo, o ka ba le maemo a mangata sehlopheng ka seng, a aroloa ka mosebelisi kapa sebaka sa mabitso. Leha ho le joalo, tlhophiso ena ea maemo a mangata ha e ea tloaeleha, kahoo hangata ho na le 'mapa oa motho a le mong pakeng tsa lihlopha le maemo.

Ka nako efe kapa efe, e 'ngoe ea maemo ke ea morao-rao:

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Ha kubectl e bala faele ea tlhophiso, e lula e nka tlhahisoleseling ho tsoa maemong a hajoale. Mohlaleng o ka holimo, kubectl e tla hokela ho sehlopha sa Hare.

Ka hona, ho fetohela sehlopheng se seng, o hloka ho fetola maemo a hajoale faeleng ea kubeconfig:

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Joale kubectl e tla hokela ho sehlopha sa Fox.

Ho fetohela sebakeng se fapaneng sa mabitso sehlopheng se le seng, o hloka ho fetola boleng ba karolo ea sebaka sa mabitso bakeng sa moelelo oa hajoale:

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Mohlaleng o ka holimo, kubectl e tla sebelisa sebaka sa mabitso sa Fox cluster's Prod (pele ho ne ho setiloe sebaka sa mabitso sa Test).

Hlokomela hore kubectl e boetse e fana ka likhetho --cluster, --user, --namespace и --context, e leng se u lumellang hore u ngole lintlha ka bomong le maemo a hona joale ka boeona, ho sa tsotellehe hore na ke eng e behiloeng ho kubeconfig. Sheba kubectl options.

Ka khopolo, u ka fetola litlhophiso ka letsoho ho kubeconfig. Empa ha ho bonolo. Ho nolofatsa ts'ebetso ena, ho na le lisebelisoa tse fapaneng tse u lumellang hore u fetole liparamente ka bohona.

Sebelisa kubectx

Sesebelisoa se tsebahalang haholo sa ho fetola lipakeng tsa lihlopha le libaka tsa mabitso.

Sesebelisoa se fana ka litaelo kubectx и kubens ho fetola maemo a hajoale le sebaka sa mabitso ka ho latellana.

Joalokaha ho boletsoe, ho fetola maemo a hona joale ho bolela ho fetola sehlopha haeba u na le moelelo o le mong sehlopheng ka seng.

Mona ke mohlala oa ho tsamaisa litaelo tsena:

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Ha e le hantle, litaelo tsena li hlophisa feela faele ea kubeconfig joalokaha e hlalositsoe ka holimo.

ho kenya kubectx, latela litaelo ho Github.

Litaelo ka bobeli li tšehetsa ho phetheloa ha moelelo oa moelelo le mabitso a sebaka sa mabitso, e leng se felisang tlhoko ea ho li ngola ka botlalo. Litaelo tsa ho theha ho phethela ka boits'oaro mona.

Tšobotsi e 'ngoe ea bohlokoa kubectx ho mokgoa wa kopanelo. E sebetsa hammoho le lisebelisoa fzf, e lokelang ho kenngoa ka thoko. Ho kenya fzf ka bohona ho etsa hore mokhoa oa ho sebelisana o fumanehe ho kubectx. Ka mokhoa o ts'oanang, o ka khetha moelelo le sebaka sa mabitso ka sebopeho sa patlo sa mahala se fanoeng ke fzf.

Ho sebelisa li-aliases tsa shell

Ha o hloke lisebelisoa tse arohaneng ho fetola maemo a hajoale le sebaka sa mabitso hobane kubectl e fana ka litaelo bakeng sa sena. E, sehlopha kubectl config e fana ka litaelo tse tlase bakeng sa ho hlophisa lifaele tsa kubeconfig.

Tse ling tsa tsona ke tsena:

  • kubectl config get-contexts: hlahisa maemo ohle;
  • kubectl config current-context: fumana maemo a hajoale;
  • kubectl config use-context: fetola maemo a hona joale;
  • kubectl config set-context: Fetola moelelo oa taba.

Leha ho le joalo, ho sebelisa litaelo tsena ka kotloloho ha ho bonolo haholo hobane li telele. U ka etsa li-aliases tsa shell bakeng sa bona tseo ho leng bonolo ho li etsa.

Ke thehile li-aliases tse thehiloeng ho litaelo tsena tse fanang ka ts'ebetso e ts'oanang le kubectx. Mona u ka li bona ha li sebetsa:

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Hlokomela hore li-aliase li sebelisa fzf ho fana ka sebopeho sa mahala sa ho sheba (joalo ka mokhoa oa ho sebelisana oa kubectx). Sena se bolela hore oa hloka kenya fzfho sebelisa li-aliases tsena.

Mona ke litlhaloso tsa li-aliases ka botsona:

# Получить текущий контекст
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/^..//")"'

Ho beha li-alias tsena o hloka ho kenyelletsa litlhaloso tse kaholimo faeleng ea hau ~/.bashrc kapa ~/.zshrc ebe o qala khetla ea hau bocha.

Ho sebelisa li-plugins

Kubectl e u lumella ho kenya li-plugins tse etsoang ka tsela e tšoanang le ea litaelo tsa motheo. Ka mohlala, u ka kenya kubectl-foo plugin 'me u e tsamaise ka ho phethahatsa taelo kubectl foo.

Ho ka ba bonolo ho fetola moelelo le sebaka sa mabitso ka tsela ena, mohlala ka ho matha kubectl ctx ho fetola maemo le kubectl ns ho fetola sebaka sa mabitso.

Ke ngotse li-plugins tse peli tse etsang sena:

Mosebetsi oa li-plugins o ipapisitse le li-aliases tse tsoang karolong e fetileng.

Mona ke kamoo li sebetsang kateng:

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Hlokomela hore li-plugins li sebelisa fzf ho fana ka sebopeho sa ho batla sa mahala (joalo ka mokhoa oa ho sebelisana oa kubectx). Sena se bolela hore oa hloka kenya fzfho sebelisa li-aliases tsena.

Ho kenya li-plugins, o hloka ho khoasolla likhetla tse ngotsoeng ka mabitso kubectl-ctx и kubectl-ns ho bukana efe kapa efe e feto-fetohang ea PATH 'me u e etse hore e phethahale ka mohlala. chmod +x. Hang ka mor'a sena u tla khona ho sebelisa kubectl ctx и kubectl ns.

5. Fokotsa ho kenya letsoho ka li-autoaliases

Li-aliases tsa likhetla ke mokhoa o motle oa ho potlakisa ho kenya. Morero kubectl-aliases e na le likhutšoane tse ka bang 800 bakeng sa litaelo tsa motheo tsa kubectl.

U ka 'na ua ipotsa - u hopola joang mabitso a 800? Empa ha ho hlokahale hore u li hopole kaofela, hobane li hahiloe ho latela morero o bonolo, o fanoeng ka tlase:

Mokhoa oa ho sebelisa kubectl ka mokhoa o atlehileng haholoanyane: tataiso e qaqileng
Ka mohlala:

  1. kgpooyaml - kubectl fumana pods oyaml
  2. ksysgsvcw - kubectl -n kube-system fumana svc w
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. kgdepallsl - kubectl fumana deployment all sl

Joalokaha u bona, li-aliase li entsoe ka likarolo, tseo e 'ngoe le e' ngoe e emelang karolo e itseng ea taelo ea kubectl. Lebitso le leng le le leng le ka ba le karolo e le 'ngoe bakeng sa taelo ea motheo, ts'ebetso, le lisebelisoa, le likarolo tse ngata bakeng sa liparamente. U "tlatsa" likarolo tsena ho tloha ho le letšehali ho ea ho le letona ho latela setšoantšo se ka holimo.

Setšoantšo se qaqileng sa hajoale se ho GitHub. U ka boela ua fumana moo lenane le felletseng la mabitso a mabitso.

Mohlala, lebitso la alias kgpooyamlall le lekana le taelo kubectl get pods -o yaml --all-namespaces.

Taelo e lekanyelitsoeng ea likhetho ha e bohlokoa: taelo kgpooyamlall e lekana le taelo kgpoalloyaml.

Ha ua tlameha ho sebelisa likarolo tsohle joalo ka li-aliases. Ka mohlala k, kg, klo, ksys, kgpo e ka boela ea sebelisoa. Ho feta moo, o ka kopanya li-alias le litaelo tse tloaelehileng kapa likhetho moleng oa taelo:

Ka mohlala:

  1. Sebakeng seo kubectl proxy o ka ngola k proxy.
  2. Sebakeng seo kubectl get roles o ka ngola kg roles (hajoale ha ho na lebitso la mohlodi wa Dikarolo).
  3. Ho fumana data bakeng sa pod e itseng, o ka sebelisa taelo kgpo my-pod — kubectl get pod my-pod.

Ka kopo hlokomela hore li-aliases tse ling li hloka khang ea mola oa taelo. Ka mohlala, alias kgpol e bolela kubectl get pods -l. Khetho -l e hloka khang - tlhaloso ea label. Haeba u sebelisa alias e tla shebahala joalo kgpol app=ui.

Hobane mabitso a mang a hloka likhang, mabitso a mabitso a, f, le l a tlameha ho sebelisoa qetellong.

Ka kakaretso, hang ha u fumana letoto la morero ona, u ka fumana li-aliase ka mokhoa o hlakileng ho tsoa ho litaelo tseo u batlang ho li phetha le ho boloka nako e ngata ea ho thaepa.

Kenya

Ho kenya li-kubectl-aliases, o hloka ho khoasolla faele .kubectl_aliases ho tsoa ho GitHub 'me u e kenye ka har'a faele ~/.bashrc kapa ~/.zshrc:

source ~/.kubectl_aliases

Ho phethela ka ho iketsa

Joalokaha re boletse pejana, hangata o eketsa mantsoe a mang ho lebitso la moleng oa taelo. Ka mohlala:

$ kgpooyaml test-pod-d4b77b989

Haeba u sebelisa ho tlatsa taelo ea kubectl, mohlomong u sebelisitse ho tlatsa ka boits'oaro bakeng sa lintho tse kang mabitso a lisebelisoa. Empa na see se ka etsoa ha ho sebelisoa mabitso a mang?

Ena ke potso ea bohlokoa haholo hobane haeba ho qetela ho sa sebetse, u tla lahleheloa ke melemo ea li-aliases.

Karabo e itšetlehile ka hore na u sebelisa khetla efe:

  1. Bakeng sa Zsh, ho phethoa ha lebitso ho sebetsa ka ntle ho lebokose.
  2. Bakeng sa Bash, ka bomalimabe, mosebetsi o mong oa hlokahala ho fumana autocompletion ho sebetsa.

E nolofalletsa ho phethela li-aliases ho Bash

Bothata ka Bash ke hore e leka ho tlatsa (nako le nako ha u tobetsa Tab) li-alias, ho fapana le taelo eo lebitso le bolelang (joalo ka Zsh, mohlala). Kaha ha u na mangolo a tlatsetso bakeng sa mabitso ohle a 800, ho tlatsa ka bohona ha ho sebetse.

Morero tse felletseng e fana ka tharollo e akaretsang bothateng bona. E hokahana le mokhoa oa ho phethela li-aliases, ka hare e holisa li-alias ho taelo, 'me e khutlisa likhetho tsa ho phethela taelo e phethiloeng. Sena se bolela hore padding bakeng sa alias e sebetsa hantle joalo ka taelo e felletseng.

Ho tse latelang, ke tla qala ka ho hlalosa mokhoa oa ho kenya li-alias tse felletseng ebe ke li hlophisa joang ho etsa hore ho phetheloe li-alias tsohle tsa kubectl.

Ho kenya li-alias tse felletseng

Pele ho tsohle, li-alias tse felletseng li ipapisitse le bash-qetello. Ka hona, pele o kenya li-alias tse felletseng, o hloka ho etsa bonnete ba hore bash-completion e kentsoe. Litaelo tsa ho kenya li fanoe pejana bakeng sa Linux le MacOS.

Keletso ea Bohlokoa bakeng sa Basebelisi ba MacOS: Joalo ka sengoloa sa ho tlatsa autocompletion ea kubectl, li-alias tse felletseng ha li sebetse le Bash 3.2, e leng eona ea kamehla ho MacOS. Haholo-holo, li-alias tse felletseng li ipapisitse le ho phethela bash v2 (brew install bash-completion@2), e hlokang bonyane Bash 4.1. Sena se bolela hore ho sebelisa li-alias tse felletseng ho MacOS o hloka ho kenya mofuta o mocha oa Bash.

U hloka ho khoasolla script bash_completion.sh ho tswa Sebaka sa polokelo ea GitHub 'me u e kenye faeleng ea hau ~/.bashrc:

source ~/bash_completion.sh

Kamora ho qala khetla, li-alias tse felletseng li tla kengoa ka botlalo.

E nolofalletsa ho phethela ka boits'oaro bakeng sa li-aliases tsa kubectl

Lits'ebetso tse felletseng tsa tekheniki li fana ka ts'ebetso ea wrapper _complete_alias. Ts'ebetso ena e lekola li-alias mme e khutlisa lintlha tsa ho qetela bakeng sa taelo ea alias.

Ho amahanya ts'ebetso le lebitso le itseng, o hloka ho sebelisa mochini oa Bash o hahelletsoeng ka ho feletseng, ho kenya _complete_alias joalo ka ts'ebetso ea ho phethela alias.

E le mohlala, ha re nke alias k, e emelang taelo ea kubectl. ho kenya _complete_alias E le ts'ebetso ea tlatsetso bakeng sa alias ena, o lokela ho tsamaisa taelo e latelang:

$ complete -F _complete_alias k

Sephetho sa sena ke hore neng kapa neng ha u tlatsa lebitso la alias k, mosebetsi o bitsoa _complete_alias, e hlahlobang li-alias le ho khutlisa lintlha tsa ho qetela bakeng sa taelo kubectl.

E le mohlala oa bobeli, ha re nke li-alias kg, e bolelang kubectl get:

$ complete -F _complete_alias kg

Joalo ka mohlala o fetileng, ha o tlatsa kg, o fumana lintlha tse tšoanang tsa ho phethela tseo o ka li fumanang. kubectl get.

Hlokomela hore o ka sebelisa li-alias tse felletseng bakeng sa alias efe kapa efe ho sistimi ea hau.

Ka hona, ho nolofalletsa ho phethela li-aliase tsohle tsa kubectl, o hloka ho tsamaisa taelo e kaholimo bakeng sa e 'ngoe le e 'ngoe ea tsona. Snippet e latelang e etsa sena hantle, ha feela u setelletse li-kubectl-aliases ho ~/.kubectl-aliases:

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

Sekhechana sena sa khoutu se hloka ho beoa sebakeng sa hau ~/.bashrc, qala hape khetla ea taelo mme ho phethela ka boits'oaro ho tla fumaneha bakeng sa li-aliase tsohle tse 800 tsa kubectl.

6. Ho atolosa kubectl ka li-plugins

Ho qala ho mofuta 1.12, kubectl e tšehetsa mochine oa plugin, e u lumellang ho atolosa mesebetsi ea eona ka litaelo tse eketsehileng.

Haeba u tloaelane le Mekhoa ea plugin ea Git, ebe li-plugins tsa kubectl li hahiloe holim'a molao-motheo o tšoanang.

Khaolong ena, re tla bua ka mokhoa oa ho kenya li-plugins, hore na u ka li fumana hokae, le mokhoa oa ho iketsetsa li-plugins.

Ho kenya li-plugins

Li-plugins tsa Kubectl li ajoa e le lifaele tse bonolo tse sebetsang tse nang le lebitso le joalo kubectl-x. Sehlongoapele kubectl- ea hlokahala, e lateloe ke taelo e nyane ea kubectl e u lumellang ho letsetsa plugin.

Ka mohlala, hello plugin e tla ajoa joalo ka faele e bitsoang kubectl-hello.

Ho kenya plugin, o hloka ho kopitsa faele kubectl-x ho bukana efe kapa efe e ho PATH ea hau 'me u e etse hore e phethahale, mohlala ka chmod +x. Hang ka mor'a sena u ka letsetsa plugin ka kubectl x.

U ka sebelisa taelo e latelang ho thathamisa li-plugins tsohle tse kentsoeng tsamaisong ea hau:

$ kubectl plugin list

Taelo ena e tla boela e bonts'a litemoso haeba u na le li-plugins tse ngata tse nang le lebitso le le leng, kapa haeba ho na le faele ea li-plugins e sa sebetseng.

Ho fumana le ho kenya li-plugins ho sebelisa Krew

Li-plugins tsa Kubectl li ka arolelanoa kapa tsa sebelisoa hape joalo ka liphutheloana tsa software. Empa u ka fumana li-plugins hokae tseo ba bang ba li arolelaneng?

Project Krew e ikemiselitse ho fana ka tharollo e kopaneng ea ho arolelana, ho batla, ho kenya le ho laola li-plugins tsa kubectl. Morero o ipitsa "mookameli oa sephutheloana oa kubectl plugins" (Krew e tšoana le Brew).

Krew ke lethathamo la li-plugins tsa kubectl tseo u ka li khethang le ho li kenya. Ka nako e ts'oanang, Krew le eona ke plugin ea kubectl.

Sena se bolela hore ho kenya Krew ho sebetsa joalo ka ho kenya plugin efe kapa efe ea kubectl. U ka fumana litaelo tse qaqileng ho Leqephe la GitHub.

Litaelo tsa bohlokoa ka ho fetisisa tsa Krew ke:

# Поиск в списке плагинов
$ kubectl krew search [<query>]
# Посмотреть информацию о плагине
$ kubectl krew info <plugin>
# Установить плагин
$ kubectl krew install <plugin>
# Обновить все плагины до последней версии
$ kubectl krew upgrade
# Посмотреть все плагины, установленные через Krew
$ kubectl krew list
# Деинсталлировать плагин
$ kubectl krew remove <plugin>

Ka kopo hlokomela hore ho kenya li-plugins ka Krew ha ho sitise ho kenya li-plugins ka mokhoa o tloaelehileng o hlalositsoeng ka holimo.

Ka kopo hlokomela hore taelo kubectl krew list e bonts'a feela li-plugins tse kentsoeng ho sebelisoa Krew, athe taelo kubectl plugin list e thathamisa li-plugins tsohle, ke hore, tse kentsoeng ho sebelisoa Krew le tse kentsoeng ke mekhoa e meng.

Ho Fumana Li-plugins Libakeng Tse Ling

Krew ke projeke e nyane, eo hajoale e leng ho eona lenane ke li-plugins tse ka bang 30 feela. Haeba u sa fumane seo u se hlokang, u ka fumana li-plugins libakeng tse ling, joalo ka GitHub.

Ke khothaletsa ho sheba karolo ea GitHub kubectl-plugins. Ha u le moo u tla fumana li-plugins tse ngata tse fumanehang tseo u lokelang ho li hlahloba.

Ho ngola li-plugins tsa hau

Le uena u ka khona etsa li-plugins - Ha ho thata. U hloka ho theha e phethisoang e etsang seo u se hlokang, e rehe joalo ka kubectl-x le kenya joalokaha ho hlalositsoe ka holimo.

Faele e ka ba bash script, python script, kapa kopo e hlophisitsoeng ea GO - ha ho na taba. Boemo feela ke hore e ka etsoa ka kotloloho tsamaisong ea ts'ebetso.

Ha re theheng mohlala oa plugin hona joale. Karolong e fetileng, u sebelisitse taelo ea kubectl ho thathamisa lijana tsa pod ka 'ngoe. Ho bonolo ho fetola taelo ena hore e be plugin eo u ka e letsetsang ka mohlala. kubectl img.

Etsa faele kubectl-img litaba tse latelang:

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

Joale etsa hore faele e phethahale ka chmod +x kubectl-img 'me u e ise bukeng efe kapa efe ho PATH ea hau. Hang ka mor'a sena u ka sebelisa plugin kubectl img.

Joalokaha ho boletsoe, li-plugins tsa kubectl li ka ngoloa ka puo efe kapa efe ea lenaneo kapa ea mongolo. Haeba u sebelisa li-shell scripts, molemo oa ho khona ho letsetsa kubectl habonolo ho tsoa ka har'a plugin. Leha ho le joalo, o ka ngola li-plugins tse rarahaneng ka lipuo tsa 'nete tsa lenaneo u sebelisa Laeborari ea bareki ba Kubernetes. Haeba u sebelisa Go, u ka sebelisa hape cli-runtime library, e teng ka ho khetheha bakeng sa ho ngola li-plugins tsa kubectl.

Mokhoa oa ho arolelana li-plugins tsa hau

Haeba u nahana hore li-plugins tsa hau li ka ba molemo ho ba bang, ikutloe u lokolohile ho li arolelana ho GitHub. Etsa bonnete ba hore u li kenyelletsa sehloohong kubectl-plugins.

U ka boela ua kopa hore plugin ea hau e kenngoe ho Lenane la Krew. Litaelo tsa ho etsa sena li ka har'a GitHub polokelo.

Ho phethela taelo

Li-plugins ha joale ha li tšehetse ho phethela ka bohona. Ke hore, o tlameha ho kenya lebitso le felletseng la plugin le mabitso a felletseng a likhang.

Sebaka sa polokelo ea GitHub kubectl bakeng sa ts'ebetso ena se na le kopo e bulehileng. Kahoo ho ka etsahala hore tšobotsi ena e tla kengoa tšebetsong nako e tlang.

Mahlohonolo!!!

Ke eng hape eo u lokelang ho e bala ka sehlooho:

  1. Methati e meraro ea autoscaling ho Kubernetes le mokhoa oa ho e sebelisa ka nepo.
  2. Kubernetes ka moea oa piracy ka template bakeng sa ts'ebetsong.
  3. Seteishene sa rona se Around Kubernetes ho Telegraph.

Source: www.habr.com

Eketsa ka tlhaloso