Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
Ọ bụrụ na ị na-arụ ọrụ na Kubernetes, mgbe ahụ kubectl nwere ike ịbụ otu n'ime akụrụngwa ị na-ejikarị. Na mgbe ọ bụla ị na-etinye oge buru ibu na otu ngwá ọrụ na-arụ ọrụ, ọ ga-abara gị uru ịmụ ya nke ọma ma mụta ka esi eji ya eme ihe nke ọma.

otu Kubernetes aaS sitere na Mail.ru sụgharịa akụkọ Daniel Weibel nke ị ga-ahụ ndụmọdụ na usoro maka ịrụ ọrụ nke ọma na kubectl. Ọ ga-enyekwara gị aka inweta nghọta miri emi banyere Kubernetes.

Dị ka onye edemede si kwuo, ihe mgbaru ọsọ nke isiokwu ahụ bụ ime ka ọrụ gị na Kubernetes na-arụ ọrụ kwa ụbọchị ọ bụghị nanị na-arụ ọrụ nke ọma, kamakwa ọ na-atọ ụtọ karị!

Okwu mmalite: Gịnị bụ kubectl

Tupu ị mụta iji kubectl rụọ ọrụ nke ọma, ịkwesịrị ịnweta nghọta bụ isi nke ihe ọ bụ yana otu o si arụ ọrụ.

Site n'echiche onye ọrụ, kubectl bụ njikwa njikwa na-enye gị ohere ịrụ ọrụ Kubernetes.

N'ikwu okwu na teknụzụ, kubectl bụ onye ahịa Kubernetes API.

Kubernetes API bụ HTTP REST API. API a bụ ezigbo onye ọrụ Kubernetes, nke a na-ejikwa ya kpamkpam. Nke a pụtara na arụ ọrụ Kubernetes ọ bụla ekpughere dị ka njedebe API ma enwere ike iji arịrịọ HTTP mee ya na njedebe ahụ.

Ya mere, isi ọrụ nke kubectl bụ ime arịrịọ HTTP na Kubernetes API:

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
Kubernetes bụ sistemụ dabere na akụrụngwa. Nke a pụtara na ọ na-edobe ọnọdụ akụrụngwa yana ọrụ Kubernetes niile bụ ọrụ CRUD.

Ị na-achịkwa Kubernetes kpamkpam site na ijikwa ihe ndị a, na Kubernetes na-achọpụta ihe ị ga-eme dabere na ọnọdụ ihe onwunwe ugbu a. N'ihi nke a, a na-ahazi ntụaka Kubernetes API dị ka ndepụta nke ụdị akụrụngwa yana ọrụ ha jikọtara ya.

Ka anyị lee otu ihe atụ.

Ka anyị kwuo na ịchọrọ ịmepụta akụrụngwa ReplicaSet. Iji mee nke a, ị na-akọwa ReplicaSet na faịlụ site na aha replicaset.yaml, wee mee iwu a:

$ kubectl create -f replicaset.yaml

Nke a ga-emepụta akụrụngwa ReplicaSet. Ma gịnị na-eme n'azụ ihe nkiri ahụ?

Kubernetes nwere ọrụ okike ReplicaSet. Dị ka ọrụ ọ bụla ọzọ, a na-ekpughe ya dị ka njedebe API. Ebe njedebe API akọwapụtara maka ọrụ a dị ka nke a:

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

Enwere ike ịchọta ebe njedebe API maka ọrụ Kubernetes niile na Ntuziaka API (gụnyere ebe njedebe dị n'elu). Iji mee arịrịọ n'ezie na njedebe njedebe, ị ga-ebu ụzọ tinye URL nkesa API na ụzọ njedebe nke edepụtara na ntụnye aka API.

N'ihi ya, mgbe ịmechara iwu dị n'elu, kubectl na-eziga arịrịọ HTTP POST na njedebe API dị n'elu. Nkọwa ReplicaSet ị nyere na faịlụ ahụ replicaset.yaml, na-eziga na ahụ nke arịrịọ.

Otu a ka kubectl si arụ ọrụ maka iwu niile na-emekọrịta ihe na ụyọkọ Kubernetes. N'okwu ndị a niile, kubectl na-eme naanị arịrịọ HTTP na njedebe Kubernetes API kwesịrị ekwesị.

Biko mara na ị nwere ike ijikwa Kubernetes n'ụzọ zuru oke site na iji akụrụngwa dịka curlsite na iji aka na-eziga arịrịọ HTTP na Kubernetes API. Kubectl na-eme ka ọ dị mfe iji Kubernetes API.

Nke a bụ isi ihe kubectl bụ yana otu o si arụ ọrụ. Mana enwere ihe ọzọ gbasara Kubernetes API nke onye ọrụ kubectl ọ bụla kwesịrị ịma. Ka anyị leba anya ngwa ngwa n'ime ụwa Kubernetes.

Ụwa dị n'ime Kubernetes

Kubernetes nwere usoro ihe ndị nwere onwe ha na-agba ọsọ dị ka usoro dị iche iche na ọnụ ụyọkọ. Akụkụ ụfọdụ na-arụ ọrụ na ọnụ ụlọ, ndị ọzọ na ọnụ ọnụ ndị ọrụ, akụkụ nke ọ bụla na-arụ ọrụ nke ya.

Nke a bụ ihe ndị kachasị mkpa na ọnụ ọnụ:

  1. Vault - na-echekwa nkọwa akụrụngwa (na-emekarị ọ bụ etcd).
  2. Ihe nkesa API - na-enye API ma na-ejikwa nchekwa.
  3. Onye njikwa njikwa - Gbaa mbọ hụ na ọkwa akụrụngwa na-akwado nkọwapụta.
  4. Onye nhazi oge - na-ahazi oghere n'ọnụ ọnụ ndị ọrụ.

Na ebe a bụ otu akụkụ kachasị mkpa na nodes ndị ọrụ:

  1. kubelet - na-achịkwa mmalite nke arịa na ọnụ na-arụ ọrụ.

Iji ghọta otú ihe ndị a si arụkọ ọrụ ọnụ, ka anyị lee otu ihe atụ.

Ka anyị were na ị ka gụchara kubectl create -f replicaset.yaml, emesia kubectl rịọrọ HTTP POST arịrịọ Ebe njedebe API ReplicaSet (na-agafe nkọwa akụrụngwa ReplicaSet).

Kedu ihe na-eme na ụyọkọ ahụ?

  1. Mgbe emechara kubectl create -f replicaset.yaml Ihe nkesa API na-echekwa nkọwa akụrụngwa ReplicaSet gị na nchekwa:

    Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu

  2. Na-esote, a na-ewepụta onye njikwa ReplicaSet n'ime onye njikwa njikwa, nke na-ahụ maka imepụta, mgbanwe na ihichapụ akụrụngwa ReplicaSet:

    Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu

  3. Onye njikwa ReplicaSet na-emepụta nkọwapụta pọd maka oyiri ReplicaSet ọ bụla (dị ka ndebiri pod na nkọwapụta ReplicaSet) wee chekwaa ha na nchekwa:

    Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu

  4. Emebela onye nhazi oge, na-enyocha pọd ndị a na-ekenyebeghị na ọnụ ndị ọrụ ọ bụla:

    Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu

  5. Onye nhazi oge na-ahọrọ ọnụ ọnụ onye ọrụ kwesịrị ekwesị maka pọd ọ bụla wee tinye ozi a na nkọwa nkọwa n'ime ụlọ ahịa:

    Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu

  6. N'elu ọnụ ọnụ onye ọrụ nke ekenyere pọd ahụ, a na-ewepụta Kubelet, ọ na-enyocha pọd ndị e kenyere ọnụ a:

    Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu

  7. Kubelet na-agụ nkọwa nke pọd site na nchekwa wee nye ndụmọdụ oge ịgba ọsọ, dị ka Docker, ka ọ malite arịa na ọnụ:

    Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu

N'okpuru bụ ụdị ederede nkọwa a.

Ihe nkesa API na-ahazi arịrịọ API maka ebe njedebe okike ReplicaSet. Ihe nkesa API na-akwado arịrịọ ahụ ma na-echekwa nkọwa akụrụngwa ReplicaSet na nchekwa.

Ihe omume a na-amalite onye njikwa ReplicaSet, nke bụ obere usoro nke njikwa njikwa. Onye na-ahụ maka ReplicaSet na-enyocha mmepụta, na-emelite na ihichapụ akụrụngwa ReplicaSet na ụlọ ahịa wee nata ọkwa mmemme mgbe nke a mere.

Ọrụ ReplicaSet njikwa bụ ịhụ na ọnụ ọgụgụ achọrọ nke pọd ReplicaSet dị. N'ihe atụ anyị, ọnweghị pọd dị ugbu a, yabụ onye njikwa ReplicaSet na-emepụta nkọwapụta pọd ndị a (dị ka ndebiri pod na nkọwapụta ReplicaSet) wee chekwaa ha na nchekwa.

Ihe okike nke pọd ọhụrụ na-akpalite site na onye na-ahazi nhazi nke na-edobe nkọwa nkọwa ndị na-emebebeghị maka ọnụ ndị ọrụ. Onye nhazi oge na-ahọrọ ọnụ ọnụ onye ọrụ kwesịrị ekwesị maka pọd ọ bụla ma na-emelite nkọwa pọd na ebe nchekwa.

Rịba ama na ruo oge a, ọ nweghị koodu ibu ọrụ na-agba ọsọ n'ebe ọ bụla na ụyọkọ ahụ. Ihe niile emerela ugbua - nke a bụ ihe e kere eke na imelite ihe onwunwe na ebe nchekwa na ọnụ ụlọ nna ukwu.

Ihe omume ikpeazụ na-akpali Kubelets, nke na-enyocha pọd ndị ahaziri maka ọnụ ndị ọrụ ha. Kubelet nke ọnụ onye ọrụ nke etinyere pọd ReplicaSet gị ga-agwarịrị oge ịgba ọsọ nke akpa, dị ka Docker, ka ibudata onyonyo akpa achọrọ wee mee ha.

N'oge a, ngwa ReplicaSet gị na-agba ọsọ n'ikpeazụ!

Ọrụ nke Kubernetes API

Dị ka ị hụrụ na ihe atụ gara aga, akụkụ Kubernetes (ma e wezụga maka ihe nkesa API na nchekwa) na-ekiri maka mgbanwe na akụrụngwa na nchekwa ma gbanwee ozi gbasara akụrụngwa na nchekwa.

N'ezie, ihe ndị a anaghị emekọrịta ihe na nchekwa ahụ ozugbo, mana naanị site na Kubernetes API.

Tụlee ihe atụ ndị a:

  1. Onye njikwa ReplicaSet na-eji njedebe API ndepụta ReplicaSets na oke watch iji nyochaa mgbanwe na akụrụngwa ReplicaSet.
  2. Onye njikwa ReplicaSet na-eji njedebe API mepụta Pod (mepụta pọd) iji mepụta pọd.
  3. Onye nhazi oge na-eji njedebe API mpe mpe akwa (dezie pod) iji kwalite pọd na ozi gbasara ọnụ ọnụ onye ọrụ ahọpụtara.

Dị ka ị pụrụ ịhụ, nke a bụ otu API ahụ kubectl na-enweta. Iji otu API maka ihe ndị dị n'ime yana ndị ọrụ mpụga bụ echiche bụ isi na imewe Kubernetes.

Ugbu a, anyị nwere ike ichikota ka Kubernetes si arụ ọrụ:

  1. Ebe nchekwa ahụ kwuru, ya bụ, akụrụngwa Kubernetes.
  2. Ihe nkesa API na-enye interface maka nchekwa ahụ n'ụdị Kubernetes API.
  3. Ngwa Kubernetes ndị ọzọ na ndị ọrụ na-agụ, lelee ma na-emegharị Kubernetes steeti (akụrụngwa) site na API.

Ịmara echiche ndị a ga-enyere gị aka ịghọta kubectl nke ọma ma nweta ihe kacha mma na ya.

Ugbu a, ka anyị leba anya na ụfọdụ ndụmọdụ na usoro ga-enyere aka melite mmepụta gị na kubectl.

1. Tinye ngwa ngwa site na iji mmecha iwu

Otu n'ime ihe bara uru, mana a na-elegharakarị ya anya, usoro maka imeziwanye arụmọrụ na kubectl bụ ịmecha iwu.

Mmecha iwu na-enye gị ohere ịmecha akụkụ nke iwu kubectl na-akpaghị aka site na iji igodo Tab. Nke a na-arụ ọrụ maka subcommands, nhọrọ, na arụmụka, gụnyere ihe dị mgbagwoju anya dị ka akụ aha.

Hụ ka mmecha iwu kubectl si arụ ọrụ:

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
Mmecha iwu na-arụ ọrụ maka shells Bash na Zsh.

Akwụkwọ ntuziaka nwere ntuziaka zuru ezu maka ịtọlite ​​​​autocompletion, mana n'okpuru anyị ga-ewepụta obere ihe.

Kedu ka mmecha iwu si arụ ọrụ

Mmecha iwu bụ atụmatụ shei na-arụ ọrụ site na iji edemede mmecha. Ederede ndọtị bụ script shei na-akọwapụta omume ndọtị maka otu iwu.

Kubectl na-ewepụta ma wepụta edemede ndọtị maka Bash na Zsh na-akpaghị aka site na iji iwu ndị a:

$ kubectl completion bash

Ma ọ bụ:

$ kubectl completion zsh

Na tiori, o zuru ezu ijikọ mmepụta nke iwu ndị a na shei iwu kwesịrị ekwesị ka kubectl nwee ike imeju iwu ahụ.

Na omume, usoro njikọ dị iche maka Bash (gụnyere ọdịiche dị n'etiti Linux na MacOS) na Zsh. N'okpuru ebe a, anyị ga-eleba anya na nhọrọ ndị a niile.

Bash na Linux

Ederede mmecha Bash dabere na ngwugwu bash-emecha, yabụ ị ga-ebu ụzọ tinye ya:

$ sudo apt-get install bash-completion

Ma ọ bụ:

$ yum install bash-completion

Ị nwere ike nwalee na arụnyere ngwugwu ahụ nke ọma site na iji iwu a:

$ type _init_completion

Ọ bụrụ na nke a wepụta koodu ọrụ shei, mgbe ahụ arụnyere bash-emecha nke ọma. Ọ bụrụ na iwu ahụ nyere njehie "Achọtaghị", ịkwesịrị ịgbakwunye ahịrị na-esote na faịlụ gị ~ / .bashrc:

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

Ọ dị mkpa ịgbakwunye ahịrị a na faịlụ ahụ ~ / .bashrc ma ọ bụ na ọ dabereghị na njikwa ngwugwu ị jiri wụnye bash-completion. Nke a dị mkpa maka APT, mana ọ bụghị maka YUM.

Mgbe ị wụnyechara bash-completion, ị ga-ahazi ihe niile ka e wee mee ka ederede kubectl rụọ ọrụ na oge shei niile.

Otu ụzọ isi mee nke a bụ ịgbakwunye ahịrị na-esonụ na faịlụ ahụ ~ / .bashrc:

source <(kubectl completion bash)

Ụzọ ọzọ bụ ịgbakwunye script kubectl ndọtị na ndekọ /etc/bash_completion.d (mepụta ya ma ọ bụrụ na ọ dịghị):

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

Ederede mgbakwunye niile dị na katalọgụ /etc/bash_completion.d na-akpaghị aka na-etinye na bash-emecha.

Nhọrọ abụọ a dịkwa n'otu aka ahụ.

Mgbe ịmalitegharịrị shei ahụ, mmecha iwu kubectl ga-arụ ọrụ.

Bash na MacOS

Na MacOS nhazi ahụ dị ntakịrị mgbagwoju anya. Nke bụ eziokwu bụ na site na ndabara, MacOS na-eji ụdị Bash 3.2, na kubectl autocompletion script chọrọ ụdị Bash opekata mpe 4.1 na anaghị arụ ọrụ na Bash 3.2.

Enwere okwu ikike metụtara iji ụdị Bash emechiela na MacOS. Ụdị Bash 4 nwere ikikere n'okpuru GPLv3, nke Apple na-akwadoghị.

Iji hazie kubectl autocompletion na MacOS, ịkwesịrị ịwụnye ụdị Bash ọhụrụ na-adịbeghị anya. Ị nwekwara ike ịtọ Bash emelitere ka ọ bụrụ shei ndabere gị, nke ga-azọpụta gị ọtụtụ nsogbu n'ọdịnihu. Ọ naghị esiri ike, a na-enye nkọwa n'isiokwu ahụ "Na-emelite Bash na MacOS".

Tupu ịga n'ihu, gbaa mbọ hụ na ị na-eji ụdị Bash ọhụrụ na-adịbeghị anya (lelee mmepụta bash --version).

Ederede mmecha bash dịgasị iche site na oru ngo bash-emecha, yabụ ịkwesịrị ibu ụzọ wụnye ya.

Ị nwere ike ịwụnye bash-completion iji Homebrew:

$ brew install bash-completion@2

ọ bụ @2 na-anọchi anya ụdị mmecha bash 2. kubectl autocompletion chọrọ bash-completion v2, na bash-completion v2 chọrọ opekempe nke ụdị Bash 4.1.

Mbupute iwu brew-install nwere ngalaba Caveats, nke na-akọwapụta ihe achọrọ ịgbakwunye na faịlụ ahụ ~/.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"

Agbanyeghị, ana m akwado ịgbakwunye ahịrị ndị a ka ọ bụghị ~/.bash_profile, na n’ime ~/.bashrc. N'okwu a, mmecha akpaaka ga-adị ọ bụghị naanị na isi, kamakwa na shells iwu ụmụaka.

Mgbe ịmalitegharịa shei iwu, ị nwere ike ịchọpụta na nrụnye ahụ ziri ezi site na iji iwu a:

$ type _init_completion

Ọ bụrụ na ị hụ ọrụ shei na mmepụta, mgbe ahụ, a na-ahazi ihe niile nke ọma.

Ugbu a, anyị kwesịrị ịhụ na agbanyere kubectl autocompletion na nnọkọ niile.

Otu ụzọ bụ ịgbakwunye ahịrị ndị a na nke gị ~/.bashrc:

source <(kubectl completion bash)

Ụzọ nke abụọ bụ ịgbakwunye edemede akpaaka na nchekwa /usr/local/etc/bash_completion.d:

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

Usoro a ga-arụ ọrụ naanị ma ọ bụrụ na ị wụnye bash-completion site na iji Homebrew. N'okwu a, bash-completion na-ebu script niile sitere na ndekọ a.

Ọ bụrụ na ị wụnyere kubectl na-eji Homebrew, mgbe ahụ ọ dịghị mkpa ịme nzọụkwụ gara aga, ebe ọ bụ na a ga-edobe edemede mmecha akpaaka na folda ahụ ozugbo. /usr/local/etc/bash_completion.d n'oge echichi. N'okwu a, kubectl autocompletion ga-amalite ịrụ ọrụ ozugbo ị rụnyere bash-completion.

N'ihi ya, nhọrọ ndị a niile bụ otu.

zsh

Ederede mmecha akpaaka maka Zsh achọghị ndabere ọ bụla. Naanị ihe ị ga - eme bụ ime ka ha nwee ike mgbe ị na-ebu shei iwu.

Ị nwere ike ime nke a site na ịgbakwunye ahịrị na nke gị ~/.zshrc faịlụ:

source <(kubectl completion zsh)

Ọ bụrụ na ị nwetara mperi not found: compdef mgbe ịmalitegharịa shea gị, ịkwesịrị ịme ka arụ ọrụ wuru n'ime ya rụọ ọrụ compdef. Ị nwere ike ime ya site na ịgbakwunye ya na mmalite faịlụ gị ~/.zshrc ndị a:

autoload -Uz compinit
compinit

2. Lelee ngwa ngwa nkọwapụta akụrụngwa

Mgbe ị mepụtara nkọwa akụrụngwa YAML, ịkwesịrị ịma ubi na ihe ha pụtara maka akụrụngwa ndị ahụ. Otu ebe ị ga-achọ ozi a dị na ntụnye aka API, nke nwere nkọwapụta zuru oke maka akụrụngwa niile.

Agbanyeghị, ịgagharị na ihe nchọgharị weebụ oge ọ bụla ịchọrọ ịchọ ihe adịghị mma. Ya mere kubectl na-enye iwu kubectl explain, nke na-egosi nkọwapụta nke akụrụngwa niile dị na ọdụ gị.

Usoro iwu bụ nke a:

$ kubectl explain resource[.field]...

Iwu ahụ ga-ewepụta nkọwapụta nke akụrụngwa ma ọ bụ ubi achọrọ. Ozi egosiri na nke dị na ntuziaka API.

ndabara kubectl explain na-egosi naanị ọkwa mbụ nke nesting nke ubi.

Hụ ka ọ dị nwere ike ịbụ ebe a.

Ị nwere ike igosipụta osisi ahụ dum ma ọ bụrụ na ị gbakwunye nhọrọ --recursive:

$ kubectl explain deployment.spec --recursive

Ọ bụrụ na ịmaghị nke ọma akụrụngwa achọrọ, ị nwere ike igosipụta ha niile site na iji iwu a:

$ kubectl api-resources

Iwu a na-egosiputa aha akụrụngwa n'ụdị ọtụtụ, dịka. deployments kama nke deployment. Ọ na-egosiputa aha dị mkpụmkpụ, dịka ọmụmaatụ deploy, maka akụrụngwa ndị nwere ya. Echegbula onwe gị maka ọdịiche ndị a. Nhọrọ ịkpọ aha ndị a niile dabara maka kubectl. Ya bụ, ị nwere ike iji nke ọ bụla n'ime ha kubectl explain.

Iwu niile ndị a bụ otu:

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

3. Jiri usoro mmepụta kọlụm omenala

Ọkpụkpọ mmepụta iwu ndabara 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

Usoro a dabara adaba, mana ọ nwere ozi nwere oke. Tụnyere usoro nkọwa akụrụngwa zuru oke, ọ bụ naanị mpaghara ole na ole ka egosiri ebe a.

N'okwu a, ị nwere ike iji usoro mmepụta kọlụm omenala. Ọ na-enye gị ohere ikpebi ihe data ị ga-emepụta. Ị nwere ike igosipụta mpaghara akụrụngwa ọ bụla dị ka kọlụm dị iche.

A na-ekpebi iji usoro omenala site na iji nhọrọ ndị a:

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

Ị nwere ike ịkọwa kọlụm mmepụta ọ bụla dị ka otu ụzọ <header>:<jsonpath>ebe <header> bụ aha kọlụm, na <jsonpath> - okwu na-akọwa mpaghara akụ.

Ka anyị lee ihe atụ dị mfe:

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

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

Mmepụta nwere otu kọlụm nwere aha pọd.

Okwu nhọrọ na-ahọpụta aha pọd site na ubi metadata.name. Nke a bụ n'ihi na a na-akọwapụta aha pọd na mpaghara aha ụmụaka metadata na nkọwa akụrụngwa nke pọd. Enwere ike ịchọta nkọwa ndị ọzọ na Ntuziaka API ma ọ bụ pịnye iwu kubectl explain pod.metadata.name.

Ugbu a, ka anyị kwuo na ịchọrọ ịgbakwunye kọlụm mgbakwunye na mmepụta, dịka ọmụmaatụ na-egosi ọnụ ọnụ nke ọ bụla pod na-agba ọsọ. Iji mee nke a, ị nwere ike ịgbakwunye nkọwa kọlụm kwesịrị ekwesị na nhọrọ kọlụm omenala:

$ 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

Okwu ahụ na-ahọrọ aha ọnụ site na spec.nodeName — mgbe e kenyere pọd n’ọnụ ọnụ, a na-ede aha ya n’ọhịa spec.nodeName nkọwapụta akụ akụ. Enwere ike ịchọta ozi zuru ezu na mmepụta kubectl explain pod.spec.nodeName.

Biko mara na mpaghara akụrụngwa Kubernetes nwere mmetụta ikpe.

Ị nwere ike ịlele mpaghara akụrụngwa ọ bụla dị ka kọlụm. Naanị lelee nkọwapụta akụrụngwa wee jiri mpaghara ọ bụla masịrị gị nwalee ya.

Mana nke mbụ, ka anyị lebakwuo anya n'okwu nhọrọ mpaghara.

Okwu JSONPath

Okwu maka ịhọrọ mpaghara akụrụngwa dabere na JSONPath.

JSONPath bụ asụsụ maka iweghachite data sitere na dọkụmentị JSON. Ịhọrọ otu ubi bụ ikpe kachasị mfe maka JSONPath. O nwere ọtụtụ ihe ohere ọzọ, gụnyere ndị nhọpụta, nzacha na ihe ndị ọzọ.

Kubectl kọwara na-akwado obere njirimara JSONPath. A kọwapụtara ohere na ihe atụ nke ojiji ha n'okpuru:

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

Onye ọrụ [] dị mkpa karịsịa. Ọtụtụ mpaghara akụrụngwa Kubernetes bụ ndepụta, onye ọrụ a na-enye gị ohere ịhọrọ ndị otu ndetu ndị ahụ. A na-ejikarị kaadị dị ka [*] họrọ ihe niile dị na ndepụta.

Ọmụmaatụ ngwa

Ohere maka iji usoro mmepụta kọlụm omenala enweghị njedebe, ebe ị nwere ike igosipụta mpaghara ọ bụla ma ọ bụ ngwakọta nke mpaghara akụ na mmepụta. Nke a bụ ụfọdụ ngwa nlele, mana nweere onwe gị inyocha ha n'onwe gị wee chọta ngwa na-arụ ọrụ maka gị.

  1. Na-egosipụta onyonyo akpa maka pọd:
    $ 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

    Iwu a na-egosiputa aha onyonyo akpa maka pọd ọ bụla.

    Cheta na pọd nwere ike ịnwe ọtụtụ arịa, mgbe ahụ, a ga-egosipụta aha onyonyo n'otu ahịrị, nke rịkọm kewapụrụ.

  2. Na-egosipụta mpaghara nnweta ọnụ:
    $ 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

    Iwu a bara uru ma ọ bụrụ na akwadoro ụyọkọ gị na igwe ojii. Ọ na-egosiputa mpaghara nnweta maka ọnụ ọ bụla.

    Mpaghara nnweta bụ echiche igwe ojii na-amachi mpaghara mmegharị ahụ na mpaghara mpaghara.

    A na-enweta mpaghara nnweta maka ọnụ ọ bụla site na akara pụrụ iche - failure-domain.beta.kubernetes.io/zone. Ọ bụrụ na ụyọkọ ahụ na-agba n'ígwé ojii ọha, a na-emepụta akara a na-akpaghị aka ma jupụta na aha mpaghara nnweta maka ọnụ ọ bụla.

    Aha aha abụghị akụkụ nke nkọwapụta akụrụngwa Kubernetes, yabụ ị gaghị ahụ ozi gbasara ha na ya Ntuziaka API. Agbanyeghị, enwere ike ịhụ ha (dị ka akara ọ bụla ọzọ) ma ọ bụrụ na ị rịọ ozi gbasara ọnụ ọnụ na usoro YAML ma ọ bụ JSON:

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

    Nke a bụ ụzọ dị mma isi mụtakwuo maka akụrụngwa, na mgbakwunye na mmụta nkọwapụta akụrụngwa.

4. Gbanwee ngwa ngwa n'etiti ụyọkọ na oghere aha

Mgbe kubectl na-arịọ arịrịọ na Kubernetes API, ọ na-ebu ụzọ gụọ faịlụ kubeconfig iji nweta ihe niile dị mkpa maka njikọ ahụ.

Na ndabara faịlụ kubeconfig bụ ~/.kube/config. A na-emepụta ma ọ bụ na-emelite faịlụ a site na iwu pụrụ iche.

Mgbe ị na-arụ ọrụ na ọtụtụ ụyọkọ, faịlụ kubeconfig gị nwere ntọala maka ijikọ na ụyọkọ ndị ahụ niile. Ị ga-achọ ụzọ iji gwa kubectl iwu ụyọkọ ị na-arụ ọrụ.

N'ime ụyọkọ, ị nwere ike ịmepụta ọtụtụ oghere aha-ụdị ụyọkọ mebere n'ime ụyọkọ anụ ahụ. Kubectl na-ekpebikwa oghere aha ị ga-eji dabere na faịlụ kubeconfig. Nke a pụtara na ị ga-achọkwa ụzọ ị ga-esi gwa kubectl iwu aha ebe ị ga-arụ ọrụ.

N'isiakwụkwọ a, anyị ga-akọwa otú o si arụ ọrụ na otu esi eme ka ọ rụọ ọrụ nke ọma.

Mara na ị nwere ike ịnwe ọtụtụ faịlụ kubeconfig depụtara na mgbanwe gburugburu KUBECONFIG. N'okwu a, a ga-ejikọta faịlụ ndị a niile n'otu nhazi oge na-agba ọsọ. Ị nwekwara ike ịgbanwe faịlụ kubeconfig ndabara site na iji kubectl jiri paramita na-agba ọsọ --kubeconfig. Lee anya akwụkwọ ikike.

kubeconfig faịlụ

Ka anyị hụ ihe kpọmkwem faịlụ kubeconfig nwere:

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
Dị ka ị na-ahụ, faịlụ kubeconfig nwere nhazi nke ọnọdụ. Ọdịnihu nwere ihe atọ:

  • Ụyọkọ - URL API nke sava ụyọkọ.
  • Onye ọrụ - nzere njirimara onye ọrụ na ụyọkọ.
  • Oghere aha - oghere aha a na-eji mgbe ị na-esonye na ụyọkọ.

Na omume, ha na-ejikarị otu ọnọdụ kwa ụyọkọ na kubeconfig ha. Agbanyeghị, ịnwere ike ịnwe ọtụtụ ọnọdụ kwa ụyọkọ, dị iche site na onye ọrụ ma ọ bụ oghere aha. Otú ọ dị, nhazi ọtụtụ ọnọdụ a bụ ihe a na-adịghị ahụkebe, n'ihi ya, a na-enwekarị maapụ otu na otu n'etiti ụyọkọ na ọnọdụ.

N'oge ọ bụla, otu n'ime ihe ndị gbara ya gburugburu dị ugbu a:

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
Mgbe kubectl na-agụ faịlụ nhazi, ọ na-ewekarị ozi site na ọnọdụ dị ugbu a. N'ihe atụ dị n'elu, kubectl ga-ejikọta na ụyọkọ Hare.

N'ihi ya, ka ịgbanwee gaa na ụyọkọ ọzọ, ịkwesịrị ịgbanwe ọnọdụ dị ugbu a na faịlụ kubeconfig:

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
Ugbu a kubectl ga-ejikọta na ụyọkọ Fox.

Ka ịgbanwee gaa na oghere aha dị iche n'otu ụyọkọ ahụ, ị ​​ga-agbanwe uru nke ihe oghere aha maka ọnọdụ dị ugbu a:

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
N'ihe atụ a dị n'elu, kubectl ga-eji Fox cluster's Prod namespace (na mbụ edobere oghere aha ule).

Mara na kubectl na-enyekwa nhọrọ --cluster, --user, --namespace и --context, nke na-enye gị ohere idegharị ihe ndị dị n'otu n'otu na ihe dị ugbu a n'onwe ya, n'agbanyeghị ihe edobere na kubeconfig. Lee anya kubectl options.

Na tiori, ị nwere ike iji aka gbanwee ntọala na kubeconfig. Ma ọ dịghị mfe. Iji mee ka ọrụ ndị a dị mfe, enwere ọrụ dị iche iche na-enye gị ohere ịgbanwe parampat ozugbo.

Jiri kubectx

Ngwa ama ama nke ukwuu maka ịgbanwee n'etiti ụyọkọ na oghere aha.

Ngwa ahụ na-enye iwu kubectx и kubens ịgbanwe ọnọdụ dị ugbu a na oghere aha n'otu n'otu.

Dịka ekwuru, ịgbanwe ọnọdụ dị ugbu a pụtara ịgbanwe ụyọkọ ma ọ bụrụ na ị nwere naanị otu okirikiri n'otu ụyọkọ.

Nke a bụ ọmụmaatụ nke ịme iwu ndị a:

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
N'ikpeazụ, iwu ndị a na-edezi faịlụ kubeconfig dị ka akọwara n'elu.

iji wụnye kubectx, soro ntuziaka na Github.

Iwu abụọ a na-akwado imecha ọnọdụ gburugburu na aha oghere aha, nke na-ewepụ mkpa ọ dị ịpịnye ha kpamkpam. Ntuziaka maka ịtọ nrụpụta akpaaka ebe a.

Akụkụ ọzọ bara uru kubectx Ọ bụ mmekọrịta mode. Ọ na-arụ ọrụ na njikọ na ịba uru fzf, nke a ga-etinyerịrị iche. Ịwụnye fzf na-eme ka ọnọdụ mmekọrịta dị na-akpaghị aka kubectx. Na mmekọrịta, ị nwere ike họrọ ọnọdụ na oghere aha site na nchọta nchọta n'efu nke fzf nyere.

Iji aliases shell

Ịchọghị ngwaọrụ dị iche iche iji gbanwee ọnọdụ dị ugbu a na ohere aha n'ihi na kubectl na-enyekwa iwu maka nke a. Ee, otu kubectl config na-enye subcommands maka edezi kubeconfig faịlụ.

Lee ụfọdụ n'ime ha:

  • kubectl config get-contexts: gosipụta ọnọdụ niile;
  • kubectl config current-context: nweta ọnọdụ dị ugbu a;
  • kubectl config use-context: gbanwee ọnọdụ dị ugbu a;
  • kubectl config set-context: Gbanwee ihe gbara ya gburugburu.

Agbanyeghị, iji iwu ndị a ozugbo adịghị mma maka na ha dị ogologo. Ị nwere ike ịme ha aliases nke dị mfe iji gbuo ha.

M mepụtara otu aha aha dabere na iwu ndị a na-enye ọrụ yiri kubectx. Ebe ị nwere ike ịhụ ka ha na-arụ ọrụ:

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
Mara na utu aha na-eji fzf wepụta interface nchọgharị n'efu (dị ka ọnọdụ mmekọrịta kubectx). Nke a pụtara na ị chọrọ tinye fzfiji ndị a aliases.

Nke a bụ nkọwa nke utu aha n'onwe ha:

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

Iji tọọ utu aha ndị a, ịkwesịrị ịgbakwunye nkọwa ndị dị n'elu na faịlụ gị ~/.bashrc ma ọ bụ ~/.zshrc ma malitegharịa shei gị.

Iji plugins

Kubectl na-enye gị ohere ịkwanye plugins ndị a na-eme n'otu ụzọ ahụ dị ka iwu ndị bụ isi. Ị nwere ike, dịka ọmụmaatụ, wụnye ngwa mgbakwunye kubectl-foo wee mee ya site na ịme iwu ahụ kubectl foo.

Ọ ga-adaba adaba ịgbanwe ọnọdụ na oghere aha n'ụzọ dị otú a, dịka ọmụmaatụ site na ịgba ọsọ kubectl ctx ịgbanwe ọnọdụ na kubectl ns ịgbanwe oghere aha.

Edela m plugins abụọ na-eme nke a:

Ọrụ nke plugins dabere na utu aha sitere na ngalaba gara aga.

Nke a bụ ka ha si arụ ọrụ:

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
Rịba ama na plugins na-eji fzf iji nye interface ọchụchọ efu na-emekọrịta ihe (dị ka ọnọdụ mmekọrịta kubectx). Nke a pụtara na ị chọrọ tinye fzfiji ndị a aliases.

Iji wụnye plugins, ịkwesịrị ibudata scripts shei aha kubectl-ctx и kubectl-ns na ndekọ ọ bụla dị na mgbanwe PATH gị ma mee ka ha nwee ike iji dịka ọmụmaatụ. chmod +x. Ozugbo nke a gachara, ị ga-enwe ike iji kubectl ctx и kubectl ns.

5. Belata ntinye na autoaliases

Shell aliases bụ ụzọ dị mma isi mee ka ntinye ọsọ ọsọ. Ihe oru ngo kubectl - aha nwere ihe dị ka ụzọ mkpirisi 800 maka iwu kubectl bụ isi.

Ị nwere ike ịnọ na-eche - kedu ka ị ga-esi cheta aha 800? Mana ịkwesighi icheta ha niile, n'ihi na a na-ewu ha dịka atụmatụ dị mfe, nke enyere n'okpuru:

Otu esi eji kubectl rụọ ọrụ nke ọma: ntuziaka zuru ezu
Dịka ọmụmaatụ:

  1. kgpooyaml - kubectl nweta pods oyaml
  2. ksysgsvcw - kubectl -n kube-sistemu nweta svc w
  3. ksysrmcm -kubectl -n kube-sistemu rm cm
  4. kgdepallsl - kubectl nweta ntinye niile sl

Dị ka ị na-ahụ, aliases bụ ihe mejupụtara, nke ọ bụla n'ime ha na-anọchi anya otu akụkụ nke iwu kubectl. Utu aha ọ bụla nwere ike ịnwe otu akụrụngwa maka isi iwu, ọrụ, na akụrụngwa, yana ọtụtụ ihe maka paramita. Naanị ị 'mejupụta' ihe ndị a site n'aka ekpe gaa n'aka nri dịka eserese dị n'elu.

Eserese zuru ezu ugbu a dị na GitHub. N'ebe ahụ ị nwekwara ike ịhụ ndepụta utu aha zuru oke.

Dịka ọmụmaatụ, utu aha kgpooyamlall dabara na iwu ahụ kubectl get pods -o yaml --all-namespaces.

Usoro ikwu nke nhọrọ adịghị mkpa: iwu kgpooyamlall dabara na iwu kgpoalloyaml.

Ịkwesighi iji ihe niile dị ka aha aha. Ọmụmaatụ k, kg, klo, ksys, kgpo nwekwara ike iji. Ọzọkwa, ị nwere ike ijikọta aliases na iwu mgbe niile ma ọ bụ nhọrọ na ahịrị iwu:

Dịka ọmụmaatụ:

  1. Kama nke kubectl proxy ị nwere ike dee k proxy.
  2. Kama nke kubectl get roles ị nwere ike dee kg roles (enweghị utu aha maka akụrụngwa ọrụ ugbu a).
  3. Iji nweta data maka otu pọd, ị nwere ike iji iwu ahụ kgpo my-pod — kubectl get pod my-pod.

Biko mara na ụfọdụ utu aha chọrọ arụmụka ahịrị iwu. Dịka ọmụmaatụ, utu aha kgpol pụtara kubectl get pods -l. Nhọrọ -l chọrọ arụmụka - nkọwa akara. Ọ bụrụ na ị na-eji alias ọ ga-adị ka kgpol app=ui.

N'ihi na ụfọdụ utu aha chọrọ arụmụka, a ga-eji utu aha a, f na l mee ihe ikpeazụ.

N'ozuzu, ozugbo ị nwetara atụmatụ a, ị nwere ike nweta aha njirimara site na iwu ịchọrọ ịme wee chekwaa oge ederede.

Nwụnye

Iji wụnye kubectl-aliases, ịkwesịrị ibudata faịlụ ahụ .kubectl_aliases site na GitHub ma tinye ya na faịlụ ~/.bashrc ma ọ bụ ~/.zshrc:

source ~/.kubectl_aliases

Mmecha akpaaka

Dịka anyị kwuru na mbụ, ị na-agbakwunyekarị mkpụrụokwu na utu aha na ahịrị iwu. Ọmụmaatụ:

$ kgpooyaml test-pod-d4b77b989

Ọ bụrụ na ị na-eji mmecha iwu kubectl, ikekwe ị jirila mmecha akpaaka maka ihe ndị dị ka aha akụrụngwa. Mana enwere ike ime nke a mgbe ejiri utu aha?

Nke a bụ ajụjụ dị oke mkpa n'ihi na ọ bụrụ na mmecha akpaaka anaghị arụ ọrụ, ị ga-atụfu ụfọdụ uru nke utu aha.

Azịza ya dabere na shei ị na-eji:

  1. Maka Zsh, mmecha utu aha na-arụ ọrụ n'ime igbe.
  2. Maka Bash, ọ dị mwute ikwu, a chọrọ ụfọdụ ọrụ iji nweta mmecha akpaaka iji rụọ ọrụ.

Na-eme ka mmecha akpaaka maka utu aha na Bash

Nsogbu Bash bụ na ọ na-agbalị imezu (mgbe ọ bụla ị pịa Tab) utu aha, ọ bụghị iwu nke utu aha na-ezo aka (dị ka Zsh na-eme, dịka ọmụmaatụ). Ebe ị nweghị script mmecha maka aha aha 800 niile, mmecha akpaaka anaghị arụ ọrụ.

Ọrụ ahụ ezu-utu na-enye ngwọta zuru oke maka nsogbu a. Ọ na-ejikọ na usoro mmecha maka utu aha, n'ime na-agbasa utu aha ahụ na iwu, wee weghachi nhọrọ mmecha maka iwu emechara. Nke a pụtara na padding maka utu aha na-eme otu ihe ahụ maka iwu zuru oke.

Na ndị na-esonụ, m ga-ebu ụzọ kọwaa otú e si wụnye complete-alias na otú e si hazie ya iji mee ka mmecha maka niile kubectl aliases.

Ịwụnye utu aha zuru oke

Nke mbụ, complete-alias na-adabere bash-emecha. Ya mere, tupu ịwụnye complete-alias, ị kwesịrị ijide n'aka na arụnyere bash-completion. Enyerela ntuziaka nwụnye na mbụ maka Linux na MacOS.

Ihe ndetu dị mkpa maka ndị ọrụ MacOS: Dị ka kubectl autocompletion script, complete-alias anaghị arụ ọrụ na Bash 3.2, nke bụ ndabara na MacOS. Karịsịa, utu aha zuru oke dabere na bash-emecha v2 (brew install bash-completion@2), nke chọrọ opekata mpe Bash 4.1. Nke a pụtara na iji zuru-utu aha na MacOS ịkwesịrị ịwụnye ụdị Bash ọhụrụ.

Ịkwesịrị ibudata edemede ahụ bash_emecha.sh si Ebe nchekwa GitHub ma tinye ya na faịlụ gị ~/.bashrc:

source ~/bash_completion.sh

Mgbe ịmalitegharịa shea ahụ, a ga-etinye ya kpamkpam.

Na-eme ka mmecha akpaaka maka aha aha kubectl

Teknụzụ zuru oke-alias na-enye ọrụ ihe mkpuchi _complete_alias. Ọrụ a na-enyocha utu aha wee weghachi nkọwa mmecha maka iwu utu aha ahụ.

Iji jikọta ọrụ na utu aha a kapịrị ọnụ, ịkwesịrị iji usoro Bash arụnyere n'ime ya zuru ezu, iji wụnye _complete_alias dị ka utu aha mmecha ọrụ.

Dịka ọmụmaatụ, ka anyị were utu aha k, nke na-anọchi anya kubectl iwu. iji wụnye _complete_alias Dịka ọrụ mmeju maka utu aha a, ị ga-agbarịrị iwu a:

$ complete -F _complete_alias k

Ihe si na nke a pụta bụ na mgbe ọ bụla ị dechara aha k, a na-akpọ ọrụ ahụ _complete_alias, nke na-enyocha utu aha wee weghachi nkọwa mmecha maka iwu ahụ kubectl.

Dị ka ihe atụ nke abụọ, ka anyị were utu aha kg, nke pụtara kubectl get:

$ complete -F _complete_alias kg

Dịka n'atụmatụ gara aga, mgbe ị na-emeju kilogram, ị ga-enweta otu ihe ngosi mmecha nke ị ga-enweta. kubectl get.

Mara na ị nwere ike iji utu aha zuru oke maka utu aha ọ bụla na sistemụ gị.

Ya mere, iji mee ka mmecha autocompletion maka aha aha kubectl niile, ịkwesịrị ịme iwu dị n'elu maka nke ọ bụla n'ime ha. Snippet na-esonụ na-eme nke a kpọmkwem, ma ọ bụrụhaala na ị debere kubectl-aliases na ~/.kubectl-aliases:

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

Ekwesịrị itinye mpempe koodu a n'ime gị ~/.bashrc, Malitegharịa ekwentị ahụ shei na autocompletion ga-adị maka niile 800 kubectl aliases.

6. Na-agbatị kubectl na plugins

Kemgbe mbipute 1.12, kubectl na-akwado ngwa mgbakwunye usoro, nke na-enye gị ohere iji iwu ndị ọzọ gbasaa ọrụ ya.

Ọ bụrụ na ị maara nke ọma Usoro ngwa mgbakwunye Git, mgbe ahụ, kubectl plugins na-ewu n'otu ụkpụrụ ahụ.

N'isiakwụkwọ a, anyị ga-ekpuchi otu esi etinye plugins, ebe ị ga-achọta ha, yana otu esi emepụta plugins nke gị.

Ịwụnye plugins

A na-ekesa plugins Kubectl dị ka faịlụ dị mfe nwere ike iji aha dị ka kubectl-x. Prefix kubectl- achọrọ, sochiri subcommand kubectl ọhụrụ nke na-enye gị ohere ịkpọ ngwa mgbakwunye ahụ.

Dịka ọmụmaatụ, a ga-ekesa ngwa mgbakwunye hello dị ka faịlụ a na-akpọ kubectl-hello.

Iji wụnye ngwa mgbakwunye, ịkwesịrị iṅomi faịlụ ahụ kubectl-x na ndekọ ọ bụla dị na PATH gị wee mee ka ọ rụọ ọrụ, dịka ọmụmaatụ na chmod +x. Ozugbo nke a gasịrị, ị nwere ike ịkpọ ngwa mgbakwunye na kubectl x.

Ị nwere ike iji iwu a ka ịdepụta plugins niile arụnyere ugbu a na sistemụ gị:

$ kubectl plugin list

Iwu a ga-egosipụtakwa ịdọ aka ná ntị ma ọ bụrụ na ị nwere ọtụtụ plugins nwere otu aha, ma ọ bụ ọ bụrụ na enwere faịlụ plugins na-enweghị ike ime ya.

Ịchọta na ịwụnye plugins site na iji Krew

Enwere ike ikesa Kubectl plugins ma ọ bụ jiri ya mee ihe dịka ngwugwu ngwanrọ. Mana ebee ka ị ga-ahụ plugins ndị ọzọ kesara?

Project Krew bu n'obi inye ngwọta dị n'otu maka ịkekọrịta, ịchọ, ịwụnye na ijikwa plugins kubectl. Ihe oru ngo a na-akpọ onwe ya "onye njikwa ngwugwu maka kubectl plugins" (Krew yiri Brew).

Krew bụ ndepụta plugins kubectl ị nwere ike họrọ ma wụnye. N'otu oge ahụ, Krew bụkwa ngwa mgbakwunye maka kubectl.

Nke a pụtara na ịwụnye Krew na-arụ ọrụ dị ka ịwụnye ngwa mgbakwunye kubectl ọ bụla. Ị nwere ike ịhụ ntuziaka zuru ezu na GitHub ibe.

Iwu Krew kacha mkpa bụ:

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

Biko mara na ịwụnye plugins site na iji Krew anaghị egbochi gị ịwụnye plugins site na iji usoro ọkọlọtọ akọwara n'elu.

Biko mara na iwu ahụ kubectl krew list naanị na-egosiputa plugins arụnyere na iji Krew, ebe iwu ahụ kubectl plugin list depụtara plugins niile, ya bụ, ndị arụnyere na iji Krew na ndị ejiri ụzọ ndị ọzọ arụnyere.

Ịchọta ngwa mgbakwunye n'ebe ọzọ

Krew bụ ọrụ na-eto eto, ugbu a na ya ndepụta ahụ naanị ihe dị ka 30 plugins. Ọ bụrụ na ịnweghị ike ịchọta ihe ịchọrọ, ị nwere ike ịchọta plugins ebe ọzọ, dị ka GitHub.

Ana m akwado ile anya na ngalaba GitHub kubectl-plugins. N'ebe ahụ ị ga-ahụ ọtụtụ plugins dịnụ nke kwesịrị ịlele.

Na-ede plugins nke gị

ị nwere ike onwe gị mepụta plugins - Ọ dịghị ike. Ịkwesịrị ịmepụta onye na-arụ ọrụ nke na-eme ihe ịchọrọ, kpọọ ya dị ka ya kubectl-x ma wụnye dị ka akọwara n'elu.

Faịlụ nwere ike ịbụ script bash, script Python script, ma ọ bụ ngwa GO agbakọtara - ọ baghị uru. Naanị ọnọdụ bụ na enwere ike igbu ya ozugbo na sistemụ arụmọrụ.

Ka anyị mepụta ngwa mgbakwunye ihe atụ ugbu a. Na ngalaba gara aga, i jiri iwu kubectl depụta arịa maka pọd ọ bụla. Ọ dị mfe ịtụgharị iwu a ka ọ bụrụ ngwa mgbakwunye ị nwere ike ịkpọ dịka ọmụmaatụ. kubectl img.

Mepụta faịlụ kubectl-img ọdịnaya ndị a:

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

Ugbu a mee ka faịlụ ahụ rụọ ọrụ na chmod +x kubectl-img ma bugharịa ya na ndekọ ndekọ ọ bụla dị na PATH gị. Ozugbo nke a gasịrị, ị nwere ike iji ngwa mgbakwunye kubectl img.

Dị ka ekwuru, kubectl plugins nwere ike dee n'asụsụ mmemme ọ bụla ma ọ bụ ederede. Ọ bụrụ na ị na-eji scripts shei, uru nke inwe ike ịkpọ kubectl ngwa ngwa site na ngwa mgbakwunye. Agbanyeghị, ị nwere ike dee plugins dị mgbagwoju anya na asụsụ mmemme n'ezie site na iji Ọbá akwụkwọ ndị ahịa Kubernetes. Ọ bụrụ na ị na-eji Go, ị nwekwara ike iji cli-oge ọbá akwụkwọ, nke dị kpọmkwem maka ide kubectl plugins.

Otu esi ekekọrịta plugins gị

Ọ bụrụ na ị chere na plugins gị nwere ike ịba uru nye ndị ọzọ, nweere onwe gị ịkekọrịta ya na GitHub. Jide n'aka na itinye ha na isiokwu kubectl-plugins.

Ị nwekwara ike ịrịọ ka agbakwunye ngwa mgbakwunye gị na Ndepụta Krew. Ntuziaka maka otu esi eme nke a dị Ebe nchekwa GitHub.

Mmecha iwu

Ngwa mgbakwunye anaghị akwado mmecha akpaaka ugbu a. Ya bụ, ị ga-etinyerịrị aha ngwa mgbakwunye na aha arụmụka niile.

Ebe nchekwa GitHub kubectl maka ọrụ a nwere arịrịọ mepere emepe. Ya mere, ọ ga-ekwe omume na a ga-emejuputa atụmatụ a n'ọdịnihu.

Jisie ike!!!

Kedu ihe ọzọ ị ga-agụ na isiokwu ahụ:

  1. Ọkwa atọ nke autoscaling na Kubernetes yana otu esi eji ha nke ọma.
  2. Kubernetes na mmụọ nke piracy nwere ndebiri maka mmejuputa.
  3. Ọwa anyị gburugburu Kubernetes na Telegram.

isi: www.habr.com

Tinye a comment