Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
Ma tha thu ag obair le Kubernetes, is dòcha gur e kubectl aon de na goireasan as motha a chleachdas tu. Agus nuair a chaitheas tu tòrr ùine ag obair le inneal sònraichte, bidh e na phàigheadh ​​​​airson a sgrùdadh gu math agus ionnsachadh mar a chleachdas tu e gu h-èifeachdach.

sgioba Kubernetes aaS bho Mail.ru eadar-theangaichte artaigil le Daniel Weibel anns am faigh thu molaidhean agus cleasan airson a bhith ag obair gu h-èifeachdach le kubectl. Cuidichidh e thu cuideachd gus tuigse nas doimhne fhaighinn air Kubernetes.

A rèir an ùghdair, is e amas an artaigil do chuid obrach làitheil le Kubernetes a dhèanamh chan ann a-mhàin nas èifeachdaiche, ach cuideachd nas tlachdmhoire!

Ro-ràdh: Dè a th’ ann an kubectl

Mus urrainn dhut ionnsachadh mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche, feumaidh tu tuigse bhunaiteach fhaighinn air dè a th’ ann agus mar a tha e ag obair.

Bho shealladh neach-cleachdaidh, tha kubectl na phannal smachd a leigeas leat gnìomhachd Kubernetes a dhèanamh.

Gu teicnigeach, tha kubectl na neach-dèiligidh Kubernetes API.

Tha Kubernetes API na HTTP REST API. Is e an API seo am fìor eadar-aghaidh cleachdaiche Kubernetes, tro bheil e gu tur fo smachd. Tha seo a ’ciallachadh gu bheil a h-uile gnìomhachd Kubernetes fosgailte mar phuing crìochnachaidh API agus faodar a dhèanamh le iarrtas HTTP chun a’ phuing crìochnachaidh sin.

Mar sin, is e prìomh obair kubectl iarrtasan HTTP a dhèanamh gu Kubernetes API:

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
Tha Kubernetes na shiostam gu tur stèidhichte air goireasan. Tha seo a’ ciallachadh gu bheil e a’ cumail suas staid nan goireasan a-staigh agus tha gnìomhachd Kubernetes gu lèir nan obair CRUD.

Tha làn smachd agad air Kubernetes le bhith a’ stiùireadh nan goireasan sin, agus tha Kubernetes a’ faighinn a-mach dè a nì thu a rèir staid nan goireasan aig an àm seo. Air an adhbhar seo, tha iomradh Kubernetes API air a chuir air dòigh mar liosta de sheòrsan ghoireasan leis na h-obraichean co-cheangailte riutha.

Bheir sinn sùil air eisimpleir.

Canaidh sinn gu bheil thu airson goireas ReplicaSet a chruthachadh. Gus seo a dhèanamh, bidh thu a’ toirt cunntas air an ReplicaSet ann am faidhle le ainm replicaset.yaml, an uairsin ruith an àithne:

$ kubectl create -f replicaset.yaml

Cruthaichidh seo goireas ReplicaSet. Ach dè thachras air cùl na seallaidhean?

Tha gnìomhachd cruthachaidh ReplicaSet aig Kubernetes. Coltach ri gnìomhachd sam bith eile, tha e fosgailte mar phuing crìochnachaidh API. Tha an ìre crìochnachaidh API sònraichte airson na h-obrach seo a’ coimhead mar seo:

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

Gheibhear puingean crìochnachaidh API airson a h-uile gnìomhachd Kubernetes aig Iomradh API (a ’toirt a-steach an ceann-uidhe gu h-àrd). Gus fìor iarrtas a dhèanamh gu puing crìochnachaidh, feumaidh tu an toiseach URL an fhrithealaiche API a chuir ris na slighean crìochnachaidh a tha air an liostadh ann an iomradh API.

Mar sin, nuair a chuireas tu an àithne gu h-àrd an gnìomh, bidh kubectl a’ cur iarrtas HTTP POST chun cheann-uidhe API gu h-àrd. Am mìneachadh ReplicaSet a thug thu seachad san fhaidhle replicaset.yaml, air a chuir ann an corp an iarrtais.

Seo mar a bhios kubectl ag obair airson a h-uile àithne a bhios ag eadar-obrachadh le cruinneachadh Kubernetes. Anns a h-uile suidheachadh sin, bidh kubectl dìreach a ’dèanamh iarrtasan HTTP gu na puingean crìochnachaidh Kubernetes API iomchaidh.

Thoir an aire gun urrainn dhut Kubernetes a riaghladh gu h-iomlan a’ cleachdadh goireas leithid curlle bhith a’ cur iarrtasan HTTP le làimh gu Kubernetes API. Tha Kubectl dìreach ga dhèanamh nas fhasa an Kubernetes API a chleachdadh.

Is e seo bunaitean dè a th’ ann an kubectl agus mar a tha e ag obair. Ach tha rudeigin eile ann mu API Kubernetes a bu chòir fios a bhith aig a h-uile neach-cleachdaidh kubectl. Bheir sinn sùil aithghearr air saoghal a-staigh Kubernetes.

An saoghal a-staigh de Kubernetes

Tha Kubernetes air a dhèanamh suas de sheata de phàirtean neo-eisimeileach a bhios a’ ruith mar phròiseasan fa leth air nodan cnuasachaidh. Bidh cuid de cho-phàirtean a’ ruith air prìomh nodan, cuid eile air nodan luchd-obrach, gach pàirt a’ coileanadh a ghnìomh sònraichte fhèin.

Seo na pàirtean as cudromaiche de na prìomh nodan:

  1. repository - a’ stòradh mhìneachaidhean ghoireasan (mar as trice tha e etc).
  2. frithealaiche API - a’ toirt seachad API agus a’ riaghladh stòradh.
  3. Manaidsear stiùiridh - A’ dèanamh cinnteach gu bheil inbhean ghoireasan a rèir nan sònrachaidhean.
  4. Clàr-ama - clàran pods air nodan luchd-obrach.

Agus seo aon phàirt as cudromaiche de nodan an neach-obrach:

  1. Ciùb - a’ riaghladh cur air bhog shoithichean air an nód obrach.

Gus tuigsinn mar a tha na co-phàirtean sin ag obair còmhla, leig dhuinn sùil a thoirt air eisimpleir.

Gabhamaid ris gu bheil thu dìreach air a chrìochnachadh kubectl create -f replicaset.yaml, às deidh sin rinn kubectl iarrtas HTTP POST gu ReplicaSet API crìochnachaidh (a’ dol seachad air mìneachadh goireas ReplicaSet).

Dè tha dol air adhart anns a’ chòmhlan?

  1. An dèidh a dhèanamh kubectl create -f replicaset.yaml Bidh am frithealaiche API a’ stòradh do mhìneachadh goireas ReplicaSet ann an stòradh:

    Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach

  2. An ath rud, thèid an rianadair ReplicaSet a chuir air bhog anns a’ mhanaidsear rianadair, a làimhsicheas cruthachadh, atharrachadh agus cuir às do ghoireasan ReplicaSet:

    Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach

  3. Bidh an rianadair ReplicaSet a’ cruthachadh mìneachadh pod airson gach mac-samhail ReplicaSet (a rèir an teamplaid pod anns a’ mhìneachadh ReplicaSet) agus gan stòradh ann an stòradh:

    Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach

  4. Tha an clàr-ama air a chuir air bhog, a’ cumail sùil air pods nach deach a shònrachadh do nodan neach-obrach sam bith fhathast:

    Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach

  5. Bidh an clàr-ama a’ taghadh nód neach-obrach iomchaidh airson gach pod agus a’ cur am fiosrachadh seo ris a’ mhìneachadh pod sa bhùth:

    Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach

  6. Air an nód neach-obrach dha bheil am pod air a shònrachadh, thèid Kubelet a chuir air bhog, bidh e a ’cumail sùil air na pods a chaidh a shònrachadh don nód seo:

    Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach

  7. Bidh an Kubelet a’ leughadh mìneachadh pod bho stòradh agus ag òrdachadh ùine ruith soithichean, leithid Docker, gus soithichean a chuir air bhog air an nód:

    Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach

Gu h-ìosal tha dreach teacsa den tuairisgeul seo.

Tha an t-iarrtas API gu puing crìochnachaidh cruthachaidh ReplicaSet air a phròiseasadh leis an t-seirbheisiche API. Bidh am frithealaiche API a’ dearbhadh an iarrtais agus a’ stòradh mìneachadh goireas ReplicaSet ann an stòradh.

Bidh an tachartas seo a’ tòiseachadh rianadair ReplicaSet, a tha na fho-phròiseas de mhanaidsear an rianadair. Bidh an rianadair ReplicaSet a’ cumail sùil air cruthachadh, ùrachadh, agus cuir às do ghoireasan ReplicaSet anns a’ bhùth agus gheibh e fios tachartais nuair a thachras seo.

Is e obair rianadair ReplicaSet dèanamh cinnteach gu bheil an àireamh riatanach de pods ReplicaSet ann. Anns an eisimpleir againn, chan eil pods ann fhathast, agus mar sin bidh an rianadair ReplicaSet a’ cruthachadh na mìneachaidhean pod sin (a rèir an teamplaid pod ann am mìneachadh ReplicaSet) agus gan stòradh ann an stòradh.

Tha cruthachadh pods ùra air a bhrosnachadh le clàr-ama a chumas sùil air mìneachaidhean pod nach eil fhathast clàraichte airson nodan luchd-obrach. Bidh an clàr-ama a’ taghadh nód neach-obrach iomchaidh airson gach pod agus ag ùrachadh na mìneachaidhean pod san stòr.

Thoir an aire gu ruige seo, nach robh còd eallach obrach a’ ruith àite sam bith sa bhuidheann. A h-uile càil a chaidh a dhèanamh gu ruige seo - is e seo cruthachadh agus ùrachadh ghoireasan anns an stòr air a’ phrìomh nód.

Bidh an tachartas mu dheireadh a’ piobrachadh Kubelets, a bhios a’ cumail sùil air na pods a tha clàraichte airson na nodan luchd-obrach aca. Feumaidh an nód Kubelet den neach-obrach air a bheil na pods ReplicaSet agad a chuir a-steach ùine ruith an t-soithich, leithid Docker, na h-ìomhaighean soitheach riatanach a luchdachadh sìos agus an ruith.

Aig an ìre seo, tha an tagradh ReplicaSet agad a’ ruith mu dheireadh!

Dreuchd an Kubernetes API

Mar a chunnaic thu san eisimpleir roimhe, bidh co-phàirtean Kubernetes (ach a-mhàin am frithealaiche API agus stòradh) a 'coimhead airson atharrachaidhean air goireasan ann an stòradh agus ag atharrachadh fiosrachadh mu ghoireasan ann an stòradh.

Gu dearbh, chan eil na co-phàirtean sin ag eadar-obrachadh leis an stòradh gu dìreach, ach dìreach tro Kubernetes API.

Beachdaich air na h-eisimpleirean a leanas:

  1. Bidh an rianadair ReplicaSet a’ cleachdadh puing crìochnachaidh API liosta ReplicSets le paramadair watch gus sùil a chumail air atharrachaidhean air goireasan ReplicaSet.
  2. Bidh an rianadair ReplicaSet a’ cleachdadh puing crìochnachaidh API cruthaich Pod (cruthaich pod) gus pods a chruthachadh.
  3. Bidh an clàr-ama a’ cleachdadh puing crìochnachaidh API pod paiste (deasaich am pod) gus pods ùrachadh le fiosrachadh mun nód neach-obrach taghte.

Mar a chì thu, is e seo an aon API a gheibh kubectl. Tha cleachdadh an aon API airson co-phàirtean a-staigh agus luchd-cleachdaidh taobh a-muigh na bhun-bheachd bunaiteach ann an dealbhadh Kubernetes.

A-nis is urrainn dhuinn geàrr-chunntas a dhèanamh air mar a tha Kubernetes ag obair:

  1. Tha na stòran stòraidh ag ràdh, is e sin, goireasan Kubernetes.
  2. Bidh am frithealaiche API a’ toirt seachad eadar-aghaidh don stòradh ann an cruth Kubernetes API.
  3. Bidh a h-uile co-phàirt agus neach-cleachdaidh Kubernetes eile a’ leughadh, a’ coimhead, agus a’ làimhseachadh stàite Kubernetes (goireasan) tron ​​API.

Cuidichidh eòlas air na bun-bheachdan sin thu gus kubectl a thuigsinn nas fheàrr agus a’ chuid as fheàrr fhaighinn às.

A-nis leig dhuinn sùil a thoirt air cuid de mholaidhean agus chleasan sònraichte a chuidicheas le bhith ag adhartachadh do chinneasachd le kubectl.

1. Luathaich cuir a-steach a’ cleachdadh crìochnachadh àithne

Is e aon de na dòighean as fheumaile, ach gu tric air a dearmad, airson coileanadh a leasachadh le kubectl crìochnachadh àithne.

Leigidh crìochnachadh àithne leat pàirtean de òrdughan kubectl a chrìochnachadh gu fèin-ghluasadach a’ cleachdadh an iuchair Tab. Bidh seo ag obair airson fo-òrdughan, roghainnean, agus argamaidean, a’ toirt a-steach rudeigin cho iom-fhillte ri ainmean ghoireasan.

Faic mar a tha crìochnachadh àithne kubectl ag obair:

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
Obraichean crìochnachaidh àithne airson sligean Bash agus Zsh.

Leabhar-iùil Oifigeil tha stiùireadh mionaideach ann airson fèin-chrìochnachadh a stèidheachadh, ach gu h-ìosal bheir sinn seachad earrann ghoirid.

Mar a tha crìochnachadh àithne ag obair

Tha crìochnachadh àithne na fheart slige a bhios ag obair a’ cleachdadh sgriobt crìochnachaidh. Is e sgriobt slige a th’ ann an sgriobt leudachaidh a tha a’ mìneachadh giùlan leudachaidh airson àithne sònraichte.

Bidh Kubectl gu fèin-obrachail a’ gineadh agus a’ toirt a-mach sgriobtaichean leudachaidh airson Bash agus Zsh a’ cleachdadh nan òrduighean a leanas:

$ kubectl completion bash

No:

$ kubectl completion zsh

Ann an teòiridh, tha e gu leòr toradh nan òrdughan sin a cheangal ris an t-slige àithne iomchaidh gus an urrainn do kubectl na h-òrdughan a lìonadh.

Ann an cleachdadh, tha an dòigh ceangail eadar-dhealaichte airson Bash (a 'gabhail a-steach eadar-dhealachaidhean eadar Linux agus MacOS) agus Zsh. Gu h-ìosal bheir sinn sùil air na roghainnean sin uile.

Bash airson Linux

Tha an sgriobt crìochnachaidh Bash an urra ris a’ phacaid crìochnachaidh bash, mar sin feumaidh tu a stàladh an-toiseach:

$ sudo apt-get install bash-completion

No:

$ yum install bash-completion

Faodaidh tu dearbhadh gu bheil am pasgan air a chuir a-steach gu soirbheachail leis an àithne a leanas:

$ type _init_completion

Ma bheir seo a-mach còd gnìomh shligean, tha crìoch bash air a chuir a-steach gu ceart. Ma bheir an àithne mearachd “Cha deach a lorg”, feumaidh tu an loidhne a leanas a chur ris an fhaidhle agad ~ / .bashrc:

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

A bheil feum air an loidhne seo a chur ris an fhaidhle ~ / .bashrc no chan eil e an urra ris a’ mhanaidsear pacaid a chleachd thu airson bash-completion a stàladh. Tha seo riatanach airson APT, ach chan ann airson YUM.

Às deidh dhut bash-crìochnachadh a chuir a-steach, feumaidh tu a h-uile càil a rèiteachadh gus am bi an sgriobt crìochnachaidh kubectl air a chomasachadh anns a h-uile seisean slige.

Is e aon dòigh air seo a dhèanamh an loidhne a leanas a chur ris an fhaidhle ~ / .bashrc:

source <(kubectl completion bash)

Is e dòigh eile an sgriobt leudachaidh kubectl a chur ris an eòlaire /etc/bash_completion.d (cruthaich e mura h-eil e ann):

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

A h-uile sgriobt add-on sa chatalog /etc/bash_completion.d air an toirt a-steach gu fèin-ghluasadach ann an crìochnachadh bash.

Tha an dà roghainn a cheart cho iomchaidh.

Às deidh an t-slige ath-thòiseachadh, obraichidh crìochnachadh àithne kubectl.

Bash air macOS

Air MacOS tha an rèiteachadh beagan nas iom-fhillte. Is e an fhìrinn gu bheil MacOS gu gnàthach a’ cleachdadh Bash dreach 3.2, agus feumaidh an sgriobt fèin-choileanadh kubectl dreach Bash de 4.1 co-dhiù agus chan eil e ag obair ann am Bash 3.2.

Tha cùisean ceadachd co-cheangailte ri bhith a’ cleachdadh dreach seann-fhasanta de Bash air MacOS. Tha cead aig Bash dreach 4 fo GPLv3, nach eil a’ faighinn taic bho Apple.

Gus fèin-chrìochnachadh kubectl a rèiteachadh air MacOS, feumaidh tu dreach nas ùire de Bash a stàladh. Faodaidh tu cuideachd am Bash ùraichte a shuidheachadh mar an t-slige bunaiteach agad, a shàbhaileas tu tòrr dhuilgheadasan san àm ri teachd. Chan eil e duilich, tha mion-fhiosrachadh air a thoirt seachad san artaigil “Ag ùrachadh Bash air MacOS".

Mus lean thu air adhart, dèan cinnteach gu bheil thu a’ cleachdadh dreach o chionn ghoirid de Bash (seall an toradh bash --version).

Bidh sgriobt crìochnachaidh Bash ag atharrachadh a rèir pròiseact bash-crìochnachadh, mar sin feumaidh tu a stàladh an toiseach.

Faodaidh tu bash-crìochnachadh a stàladh a 'cleachdadh Homebrew:

$ brew install bash-completion@2

tha e @2 a’ seasamh airson dreach bash-completion 2. Feumaidh fèin-choileanadh kubectl bash-completion v2, agus feumaidh bash-completion v2 co-dhiù dreach Bash 4.1.

Toradh àithne brew-install tha earrann Caveats ann, a tha a 'sònrachadh dè dh'fheumar a chur ris an fhaidhle ~/.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"

Ach, tha mi a 'moladh gun a bhith a' cur ris na loidhnichean sin ~/.bash_profile, agus a-steach ~/.bashrc. Anns a 'chùis seo, bidh fèin-chrìochnachadh ri fhaighinn chan ann a-mhàin sa mhòr-chuid, ach cuideachd ann an sligean òrdugh chloinne.

Às deidh dhut an t-slige àithne ath-thòiseachadh, faodaidh tu dearbhadh gu bheil an stàladh ceart leis an àithne a leanas:

$ type _init_completion

Ma chì thu gnìomh slige san toradh, tha a h-uile dad air a rèiteachadh gu ceart.

A-nis feumaidh sinn dèanamh cinnteach gu bheil fèin-choileanadh kubectl air a chomasachadh anns a h-uile seisean.

Is e aon dòigh an loidhne a leanas a chur ris an loidhne agad ~/.bashrc:

source <(kubectl completion bash)

Is e an dàrna dòigh sgriobt fèin-choileanta a chuir ris a’ phasgan /usr/local/etc/bash_completion.d:

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

Chan obraich an dòigh seo ach ma chuir thu a-steach crìoch bash a’ cleachdadh Homebrew. Anns a 'chùis seo, bidh crìoch bash a' luchdachadh a h-uile sgriobt bhon eòlaire seo.

Ma stàlaich thu kubectl a’ cleachdadh Homebrew, an uairsin chan eil feum air a’ cheum roimhe a dhèanamh, oir thèid an sgriobt fèin-chrìochnachaidh a chuir gu fèin-ghluasadach sa phasgan /usr/local/etc/bash_completion.d rè an stàladh. Anns a 'chùis seo, tòisichidh fèin-choileanadh kubectl ag obair cho luath' sa stàlaicheas tu bash-completion.

Mar thoradh air an sin, tha na roghainnean sin uile co-ionann.

Zsh

Chan fheum sgriobtaichean fèin-choileanadh airson Zsh eisimeileachd sam bith. Chan eil agad ach a dhèanamh ach an comas nuair a luchdaicheas tu an slige àithne.

Faodaidh tu seo a dhèanamh le bhith a’ cur loidhne ris an loidhne agad ~/.zshrc faidhle:

source <(kubectl completion zsh)

Ma gheibh thu mearachd not found: compdef às deidh dhut do shlige ath-thòiseachadh, feumaidh tu an gnìomh togte a chomasachadh compdef. Faodaidh tu a chomasachadh le bhith ga chur ri toiseach do fhaidhle ~/.zshrc a leanas:

autoload -Uz compinit
compinit

2. Seall gu luath air sònrachaidhean ghoireasan

Nuair a chruthaicheas tu mìneachaidhean ghoireasan YAML, feumaidh fios a bhith agad air na raointean agus an ciall airson na goireasan sin. Tha aon àite airson am fiosrachadh seo a lorg anns an iomradh API, anns a bheil mion-chomharrachadh iomlan airson a h-uile goireas.

Ach, tha e mì-ghoireasach atharrachadh chun bhrobhsair lìn a h-uile uair a dh’ fheumas tu rudeigin a lorg. Mar sin tha kubectl a’ toirt seachad an àithne kubectl explain, a sheallas mion-chomharrachadh a h-uile goireas ceart anns a’ chrìoch agad.

Tha an cruth àithne mar a leanas:

$ kubectl explain resource[.field]...

Bheir an àithne a-mach sònrachadh a’ ghoireas no an raon a chaidh iarraidh. Tha am fiosrachadh a tha air a thaisbeanadh co-ionann ris an fhiosrachadh a tha ann an leabhar-làimhe API.

bho thùs kubectl explain a 'sealltainn a-mhàin a' chiad ìre de neadachadh achaidhean.

Faic cò ris a tha e coltach urrainn a bhith an seo.

Faodaidh tu an craobh gu lèir a thaisbeanadh ma chuireas tu an roghainn ris --recursive:

$ kubectl explain deployment.spec --recursive

Mura h-eil fios agad dè na goireasan a tha a dhìth, faodaidh tu iad uile a thaisbeanadh leis an òrdugh a leanas:

$ kubectl api-resources

Tha an àithne seo a’ taisbeanadh ainmean ghoireasan ann an cruth iolra, m.e. deployments an àite deployment. Bidh e cuideachd a’ taisbeanadh an ainm ghoirid, mar eisimpleir deploy, airson nan goireasan sin aig a bheil e. Na gabh dragh mu na h-eadar-dhealachaidhean sin. Tha na roghainnean ainmeachaidh sin uile co-ionann airson kubectl. Is e sin, faodaidh tu gin dhiubh a chleachdadh airson kubectl explain.

Tha na h-òrdughan a leanas uile co-ionann:

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

3. Cleachd cruth toradh colbh àbhaisteach

Cruth toraidh àithne bunaiteach 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

Tha an cruth seo goireasach, ach tha beagan fiosrachaidh ann. An coimeas ris a’ chruth làn-mhìneachaidh ghoireasan, chan eil ach beagan raointean air an taisbeanadh an seo.

Anns a 'chùis seo, faodaidh tu cruth toradh colbh àbhaisteach a chleachdadh. Leigidh e leat faighinn a-mach dè an dàta a thèid a thoirt a-mach. Faodaidh tu raon ghoireasan sam bith a thaisbeanadh mar cholbh air leth.

Tha cleachdadh cruth gnàthaichte air a dhearbhadh leis na roghainnean:

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

Faodaidh tu gach colbh toraidh a mhìneachadh mar phaidhir <header>:<jsonpath>càite <header> is e ainm a' cholbh, agus <jsonpath> - abairt a’ mìneachadh raon ghoireasan.

Bheir sinn sùil air eisimpleir shìmplidh:

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

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

Anns an toradh tha aon cholbh le ainmean nam pods.

Bidh an abairt roghainn a’ taghadh ainmean nam pod bhon raon metadata.name. Tha seo air sgàth gu bheil ainm a’ phoit air a mhìneachadh anns an raon ainm pàiste metadata ann an tuairisgeul goireas a’ phoit. Gheibhear tuilleadh mion-fhiosrachaidh ann an Stiùireadh API no cuir a-steach an àithne kubectl explain pod.metadata.name.

A-nis canaidh sinn gu bheil thu airson colbh a bharrachd a chur ris an toradh, mar eisimpleir a’ sealltainn an nód air a bheil gach pod a’ ruith. Gus seo a dhèanamh, faodaidh tu dìreach an sònrachadh colbh iomchaidh a chur ris an roghainn colbhan àbhaisteach:

$ 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

Bidh an abairt a’ taghadh ainm an nód bho spec.nodeName - nuair a thèid pod a shònrachadh do nód, tha an t-ainm sgrìobhte san raon spec.nodeName sònrachadh goireas pod. Gheibhear fiosrachadh nas mionaidiche anns an toradh kubectl explain pod.spec.nodeName.

Thoir an aire gu bheil raointean ghoireasan Kubernetes mothachail air cùisean.

Faodaidh tu raon ghoireasan sam bith fhaicinn mar cholbh. Dìreach dèan lèirmheas air an t-sònrachadh ghoireasan agus feuch e le raon sam bith a thogras tu.

Ach an toiseach, leig dhuinn sùil nas mionaidiche a thoirt air abairtean taghadh achaidh.

JSONPath Expressions

Tha abairtean airson raointean ghoireasan a thaghadh stèidhichte air JSONPath.

Tha JSONPath na chànan airson dàta fhaighinn air ais bho sgrìobhainnean JSON. Is e taghadh aon raon a’ chùis cleachdaidh as sìmplidh airson JSONPath. Tha mòran aige barrachd chothroman, a’ toirt a-steach luchd-taghaidh, sìoltachain is mar sin air adhart.

Tha mìneachadh Kubectl a’ toirt taic do àireamh chuingealaichte de fheartan JSONPath. Tha na cothroman agus na h-eisimpleirean air an cleachdadh air am mìneachadh gu h-ìosal:

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

Tha an gnìomhaiche [] gu sònraichte cudromach. Tha mòran de raointean ghoireasan Kubernetes nan liostaichean, agus leigidh an gnìomhaiche seo leat buill de na liostaichean sin a thaghadh. Bithear ga chleachdadh gu tric le cairt-fhiadhaich mar [*] gus gach eileamaid de liosta a thaghadh.

Eisimpleirean tagraidh

Tha na cothroman airson cruth toraidh colbh àbhaisteach a chleachdadh gun chrìoch, oir is urrainn dhut raon no measgachadh sam bith de raointean stòrais a thaisbeanadh san toradh. Seo cuid de na h-aplacaidean sampaill, ach faodaidh tu an sgrùdadh leat fhèin agus lorg aplacaidean a bhios ag obair dhut.

  1. A’ taisbeanadh ìomhaighean container airson 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

    Bidh an àithne seo a’ taisbeanadh ainmean ìomhaigh nan soithichean airson gach pod.

    Cuimhnich gum faod grunn shoithichean a bhith ann am pod, agus an uairsin thèid ainmean nan ìomhaighean a thaisbeanadh air aon loidhne, air an sgaradh le cromagan.

  2. A’ taisbeanadh sònaichean ruigsinneachd nod:
    $ 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

    Tha an àithne seo feumail ma tha do bhuidheann air aoigheachd ann an sgòth poblach. Bidh e a’ taisbeanadh an raon ruigsinneachd airson gach nód.

    Is e bun-bheachd sgòth a th’ ann an sòn ri fhaighinn a tha a’ cuingealachadh an sòn ath-riochdachadh gu sgìre cruinn-eòlasach.

    Gheibhear sònaichean rim faighinn airson gach nód tro leubail sònraichte - failure-domain.beta.kubernetes.io/zone. Ma tha an cruinneachadh a’ ruith ann an sgòth poblach, thèid an leubail seo a chruthachadh gu fèin-obrachail agus a lìonadh le ainmean nan sònaichean a tha rim faighinn airson gach nód.

    Chan eil bileagan mar phàirt de shònrachadh goireas Kubernetes, agus mar sin chan fhaigh thu fiosrachadh mun deidhinn Stiùireadh API. Ach, chithear iad (mar leubail sam bith eile) ma dh’iarras tu fiosrachadh mu na nodan ann an cruth YAML no JSON:

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

    Is e deagh dhòigh a tha seo airson barrachd ionnsachadh mu ghoireasan, a bharrachd air mion-chomharrachadh ghoireasan ionnsachaidh.

4. Gluais gu furasta eadar cruinneachaidhean agus ainmean-àite

Nuair a nì kubectl iarrtas gu Kubernetes API, bidh e an-toiseach a’ leughadh am faidhle kubeconfig gus na paramadairean riatanach uile fhaighinn airson a’ cheangail.

Gu gnàthach tha am faidhle kubeconfig ~/.kube/config. Mar as trice bidh am faidhle seo air a chruthachadh no air ùrachadh le òrdugh sònraichte.

Nuair a bhios tu ag obair le grunn bhuidhnean, tha roghainnean anns an fhaidhle kubeconfig agad airson ceangal ris na cruinneachaidhean sin uile. Feumaidh tu dòigh gus innse don àithne kubectl dè an cruinneachadh leis a bheil thu ag obair.

Taobh a-staigh cruinneachadh, faodaidh tu iomadh àite ainm a chruthachadh - seòrsa de bhuidheann brìgheil taobh a-staigh buidheann fiosaigeach. Bidh Kubectl cuideachd a’ dearbhadh dè an t-ainm-àite a chleachdas tu stèidhichte air an fhaidhle kubeconfig. Tha seo a’ ciallachadh gu bheil feum agad cuideachd air dòigh gus innse don àithne kubectl dè an t-ainm-àite airson obrachadh leis.

Anns a’ chaibideil seo mìnichidh sinn mar a tha e ag obair agus mar a bheir sinn air obrachadh gu h-èifeachdach.

Thoir an aire gur dòcha gu bheil grunn fhaidhlichean kubeconfig agad air an liostadh ann an caochladair àrainneachd KUBECONFIG. Anns a 'chùis seo, thèid na faidhlichean sin uile a chur còmhla ann an aon rèiteachadh cumanta aig àm ruith. Faodaidh tu cuideachd am faidhle kubeconfig bunaiteach atharrachadh le bhith a’ ruith kubectl leis a’ pharamadair --kubeconfig. Seall sgrìobhainnean oifigeil.

faidhlichean kubeconfig

Chì sinn dè dìreach a tha anns an fhaidhle kubeconfig:

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
Mar a chì thu, tha seata de cho-theacsan anns an fhaidhle kubeconfig. Tha co-theacsa air a dhèanamh suas de thrì eileamaidean:

  • Cluster - URL API an fhrithealaiche brabhsair.
  • Teisteanasan dearbhaidh cleachdaiche-cleachdaidh anns a’ bhuidheann.
  • Namespace - an t-ainm-fànais a thathar a’ cleachdadh nuair a thèid thu dhan bhuidheann.

Ann an cleachdadh, bidh iad gu tric a’ cleachdadh aon cho-theacsa gach brabhsair anns an kubeconfig aca. Ach, faodaidh grunn cho-theacsan a bhith agad airson gach brabhsair, air an eadar-dhealachadh a rèir neach-cleachdaidh no àite-ainm. Ach, tha an rèiteachadh ioma-cho-theacsa seo neo-àbhaisteach, agus mar sin mar as trice bidh mapadh aon-ri-aon eadar cruinneachaidhean agus co-theacsan.

Aig àm sam bith, tha aon de na co-theacsan gnàthach:

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
Nuair a leughas kubectl faidhle rèiteachaidh, bidh e an-còmhnaidh a’ toirt fiosrachadh bhon cho-theacsa làithreach. Anns an eisimpleir gu h-àrd, bidh kubectl a 'ceangal ris a' bhuidheann Hare.

Mar sin, gus atharrachadh gu brabhsair eile, feumaidh tu an co-theacsa gnàthach atharrachadh anns an fhaidhle kubeconfig:

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
A-nis ceangailidh kubectl ri brabhsair Fox.

Gus atharrachadh gu àite ainm eile san aon bhuidheann, feumaidh tu luach an eileamaid namespace atharrachadh airson a’ cho-theacsa làithreach:

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
Anns an eisimpleir gu h-àrd, cleachdaidh kubectl ainm-àite Prod brabhsair Fox (chaidh an t-ainm Test namespace a shuidheachadh roimhe seo).

Thoir an aire gu bheil kubectl cuideachd a’ toirt seachad roghainnean --cluster, --user, --namespace и --context, a leigeas leat ath-sgrìobhadh a dhèanamh air eileamaidean fa leth agus an co-theacsa gnàthach fhèin, ge bith dè a tha suidhichte anns an kubeconfig. Seall kubectl options.

Ann an teòiridh, faodaidh tu na roghainnean anns an kubeconfig atharrachadh le làimh. Ach tha e mì-ghoireasach. Gus na h-obraichean sin a dhèanamh nas sìmplidhe, tha grunn ghoireasan ann a leigeas leat paramadairean atharrachadh gu fèin-ghluasadach.

Cleachd kubectx

Goireas mòr-chòrdte airson gluasad eadar cruinneachaidhean agus àiteachan ainmean.

Bidh an goireas a’ toirt seachad òrdughan kubectx и kubens gus an co-theacs làithreach agus an t-ainm-àite atharrachadh fa leth.

Mar a chaidh ainmeachadh, tha atharrachadh a’ cho-theacsa gnàthach a’ ciallachadh atharrachadh a’ bhuidheann mura h-eil agad ach aon cho-theacsa airson gach brabhsair.

Seo eisimpleir de bhith a’ ruith nan òrduighean seo:

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
Gu bunaiteach, tha na h-òrdughan sin dìreach a’ deasachadh am faidhle kubeconfig mar a chaidh a mhìneachadh gu h-àrd.

a stàladh kubectx, lean an stiùireadh air Github.

Bidh an dà àithne a’ toirt taic do fèin-choileanadh ainmean co-theacsa agus ainmean-àite, a chuireas às don fheum air an sgrìobhadh gu tur. Stiùireadh airson stèidheachadh fèin-choileanadh an seo.

Feart feumail eile kubectx tha e modh eadar-ghnìomhach. Bidh e ag obair ann an co-bhonn ris a’ ghoireas fzf, a dh'fheumas a bhith air a stàladh air leth. Le bhith a’ stàladh fzf gu fèin-obrachail bidh am modh eadar-ghnìomhach ri fhaighinn ann an kubectx. Gu h-eadar-ghnìomhach, faodaidh tu co-theacsa agus àite-ainm a thaghadh tron ​​​​eadar-aghaidh sgrùdaidh an-asgaidh eadar-ghnìomhach a thug fzf seachad.

A 'cleachdadh ailias sligean

Chan fheum thu innealan fa leth gus an co-theacs làithreach agus an t-ainm-àite atharrachadh oir tha kubectl cuideachd a' toirt seachad òrdughan airson seo. Tha, sgioba kubectl config a’ toirt seachad fo-òrdughan airson faidhlichean kubeconfig a dheasachadh.

Seo cuid de na leanas:

  • kubectl config get-contexts: a h-uile suidheachadh a thaisbeanadh;
  • kubectl config current-context: faigh co-theacs làithreach;
  • kubectl config use-context: atharraich an co-theacs làithreach;
  • kubectl config set-context: Atharraich an eileamaid co-theacsa.

Ach, chan eil e glè ghoireasach na h-òrdughan sin a chleachdadh gu dìreach oir tha iad fada. Faodaidh tu ailias sligean a dhèanamh dhaibhsan a tha furasta an cur an gnìomh.

Chruthaich mi seata de ailias stèidhichte air na h-òrdughan sin a bheir seachad comas-gnìomh coltach ri kubectx. An seo chì thu iad ann an gnìomh:

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
Thoir an aire gu bheil ailias a’ cleachdadh fzf gus eadar-aghaidh sgrùdaidh eadar-ghnìomhach an-asgaidh a thoirt seachad (mar mhodh eadar-ghnìomhach kubectx). Tha seo a 'ciallachadh gu bheil feum agad air stàlaich fzfna h-ailiannan sin a chleachdadh.

Seo na mìneachaidhean air ailias iad fhèin:

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

Gus na h-ailiasan sin a shuidheachadh feumaidh tu na mìneachaidhean gu h-àrd a chur ris an fhaidhle agad ~/.bashrc no ~/.zshrc agus ath-nuadhaich do shlige.

A 'cleachdadh plugins

Leigidh Kubectl leat plugins a luchdachadh a thèid a chuir gu bàs san aon dòigh ri òrdughan bunaiteach. Faodaidh tu, mar eisimpleir, am plugan kubectl-foo a stàladh agus a ruith le bhith a’ cur an gnìomh an àithne kubectl foo.

Bhiodh e goireasach an co-theacsa agus an t-ainm-àite atharrachadh san dòigh seo, mar eisimpleir le bhith a’ ruith kubectl ctx gus an co-theacsa atharrachadh agus kubectl ns gus an t-ainm-àite atharrachadh.

Tha mi air dà plugan a sgrìobhadh a nì seo:

Tha obair plugins stèidhichte air alias bhon roinn roimhe.

Seo mar a tha iad ag obair:

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
Thoir an aire gu bheil na plugins a’ cleachdadh fzf gus eadar-aghaidh sgrùdaidh eadar-ghnìomhach an-asgaidh a sholarachadh (mar mhodh eadar-ghnìomhach kubectx). Tha seo a 'ciallachadh gu bheil feum agad air stàlaich fzfna h-ailiannan sin a chleachdadh.

Gus plugins a stàladh, feumaidh tu sgriobtaichean shligean ainmichte a luchdachadh sìos cubectl-ctx и cubectl-ns gu eòlaire sam bith anns a’ chaochladair PATH agad agus dèan iad so-ghnìomhaichte le m.e. chmod +x. Dìreach às deidh seo bidh e comasach dhut a chleachdadh kubectl ctx и kubectl ns.

5. Lùghdaich cur a-steach le autoaliases

Tha ailias slige na dhòigh math air cuir a-steach a luathachadh. Pròiseact kubectl-alias tha timcheall air 800 ath-ghoirid ann airson òrdughan bunaiteach kubectl.

Is dòcha gu bheil thu a’ faighneachd - ciamar a chuimhnicheas tu air 800 ailias? Ach chan fheum thu cuimhneachadh orra uile, oir tha iad air an togail a rèir sgeama sìmplidh, a tha air a thoirt seachad gu h-ìosal:

Mar a chleachdas tu kubectl ann an dòigh nas èifeachdaiche: stiùireadh mionaideach
Mar eisimpleir:

  1. kgpooyaml - kubectl faigh pods oyaml
  2. ksysgsvcw - kubectl -n kube-system faigh svc w
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. kgdepallsl - kubectl faigh cleachdadh uile sl

Mar a chì thu, tha aliasan air an dèanamh suas de cho-phàirtean, agus tha gach fear dhiubh a’ riochdachadh eileamaid shònraichte den àithne kubectl. Faodaidh aon phàirt a bhith aig gach alias airson an àithne bunaiteach, obrachadh, agus goireas, agus grunn phàirtean airson paramadairean. Bidh thu dìreach “a’ “àireamhachadh” na co-phàirtean sin bho chlì gu deas a rèir an dealbh gu h-àrd.

Tha an diagram mionaideach làithreach aig GitHub. An sin faodaidh tu cuideachd a lorg liosta iomlan de ailias.

Mar eisimpleir, tha an alias kgpooyamlall co-ionann ris an àithne kubectl get pods -o yaml --all-namespaces.

Chan eil òrdugh coimeasach nan roghainnean cudromach: àithne kgpooyamlall co-ionann ris an àithne kgpoalloyaml.

Chan fheum thu a h-uile pàirt a chleachdadh mar ailias. Mar eisimpleir k, kg, klo, ksys, kgpo faodar a chleachdadh cuideachd. A bharrachd air an sin, faodaidh tu aliases agus òrdughan no roghainnean cunbhalach a chur còmhla air an loidhne-àithne:

Mar eisimpleir:

  1. An àite sin kubectl proxy faodaidh tu sgrìobhadh k proxy.
  2. An àite sin kubectl get roles faodaidh tu sgrìobhadh kg roles (chan eil ailias ann an-dràsta airson goireas Roles).
  3. Gus dàta fhaighinn airson pod sònraichte, faodaidh tu an àithne a chleachdadh kgpo my-pod — kubectl get pod my-pod.

Thoir an aire gu bheil cuid de ailias a’ feumachdainn argamaid loidhne-àithne. Mar eisimpleir, alias kgpol ciallachadh kubectl get pods -l. Roghainn -l tha feum air argamaid - sònrachadh leubail. Ma chleachdas tu alias bidh e coltach kgpol app=ui.

Leis gu bheil cuid de aliases ag iarraidh argamaidean, feumar alias a, f, agus l a chleachdadh mu dheireadh.

San fharsaingeachd, aon uair ‘s gum faigh thu an crochadh air an sgeama seo, faodaidh tu aliases fhaighinn gu intuitive bho na h-òrdughan a tha thu airson a chuir an gnìomh agus tòrr ùine clò-sgrìobhaidh a shàbhaladh.

Stàladh

Gus kubectl-aliases a stàladh, feumaidh tu am faidhle a luchdachadh sìos .kubectl_alias bho GitHub agus cuir a-steach e san fhaidhle ~/.bashrc no ~/.zshrc:

source ~/.kubectl_aliases

Fèin-chrìochnachadh

Mar a thuirt sinn roimhe, bidh thu gu tric a’ cur faclan a bharrachd ri ailias air an loidhne-àithne. Mar eisimpleir:

$ kgpooyaml test-pod-d4b77b989

Ma chleachdas tu crìochnachadh àithne kubectl, is dòcha gu bheil thu air fèin-chrìochnachadh a chleachdadh airson rudan mar ainmean ghoireasan. Ach an gabh seo a dhèanamh nuair a thèid alias a chleachdadh?

Is e ceist air leth cudromach a tha seo oir mura obraich fèin-chrìochnachadh, caillidh tu cuid de na buannachdan bho ailias.

Tha am freagairt an urra ris an t-slige a tha thu a’ cleachdadh:

  1. Airson Zsh, bidh crìochnachadh alias ag obair a-mach às a’ bhogsa.
  2. Airson Bash, gu mì-fhortanach, tha feum air beagan obrach gus fèin-chrìochnachadh a dhèanamh.

A’ comasachadh fèin-chrìochnachadh airson ailias ann am Bash

Is e an duilgheadas le Bash gu bheil e a’ feuchainn ri crìoch a chuir air (gach uair a bhrùthas tu Tab) an alias, chan e an àithne air a bheil an alias a’ toirt iomradh (mar a bhios Zsh a’ dèanamh, mar eisimpleir). Leis nach eil sgriobtaichean crìochnachaidh agad airson na 800 aliases gu lèir, chan obraich fèin-chrìochnachadh.

Am pròiseact iomlan-alias a’ toirt seachad fuasgladh coitcheann don duilgheadas seo. Bidh e a’ ceangal ris an uidheamachd crìochnachaidh airson ailias, a’ leudachadh an ailias gu àithne a-staigh, agus a’ tilleadh roghainnean crìochnachaidh airson an àithne chrìochnaichte. Tha seo a’ ciallachadh gu bheil am pleadhag airson alias gad ghiùlan fhèin dìreach mar a tha e airson làn àithne.

Anns na leanas, mìnichidh mi an toiseach mar a stàlaicheas tu coileanta-alias agus an uairsin mar a rèiticheas tu e gus crìoch a chuir air a h-uile ailias kubectl.

Stàladh coileanta-alias

Sa chiad àite, iomlan-alias an crochadh air bash-crìochnachadh. Mar sin, mus cuir thu a-steach coileanta-alias, feumaidh tu dèanamh cinnteach gu bheil crìoch bash air a chuir a-steach. Chaidh stiùireadh stàlaidh a thoirt seachad roimhe seo airson Linux agus macOS.

Nota Cudromach airson Luchd-cleachdaidh MacOS: Coltach ris an sgriobt fèin-choileanadh kubectl, chan eil complete-alias ag obair le Bash 3.2, a tha mar an àbhaist air MacOS. Gu sònraichte, tha coileanta-alias an urra ri crìochnachadh bash v2 (brew install bash-completion@2), a dh’ fheumas co-dhiù Bash 4.1. Tha seo a’ ciallachadh gum feum thu tionndadh nas ùire de Bash a chuir a-steach gus alias coileanta a chleachdadh air MacOS.

Feumaidh tu an sgriobt a luchdachadh sìos bash_completion.sh bho Stòr-tasgaidh GitHub agus cuir a-steach e san fhaidhle agad ~/.bashrc:

source ~/bash_completion.sh

Às deidh an t-slige ath-thòiseachadh, thèid coileanta-alias a chuir a-steach gu h-iomlan.

A’ comasachadh fèin-chrìochnachadh airson aliases kubectl

Tha alias coileanta gu teicnigeach a’ toirt seachad gnìomh fillte _complete_alias. Bidh an gnìomh seo a’ sgrùdadh an alias agus a’ tilleadh molaidhean crìochnachaidh airson an àithne alias.

Gus gnìomh a cheangal ri alias sònraichte, feumaidh tu an uidheamachd Bash togte a chleachdadh crìochnaichte, a stàladh _complete_alias mar ghnìomh crìochnachaidh alias.

Mar eisimpleir, gabhamaid an alias k, a tha a 'seasamh airson an àithne kubectl. a stàladh _complete_alias Mar ghnìomh co-phàirteach airson an ailias seo, bu chòir dhut an òrdugh a leanas a ruith:

$ complete -F _complete_alias k

Is e toradh seo, nuair a chuireas tu crìoch air alias k gu fèin-ghluasadach, canar an gnìomh ris _complete_alias, a nì sgrùdadh air an alias agus a thilleas molaidhean crìochnachaidh airson an àithne kubectl.

Mar dàrna eisimpleir, gabhamaid an alias kg, a tha 'comharrachadh kubectl get:

$ complete -F _complete_alias kg

Dìreach mar anns an eisimpleir roimhe, nuair a chuireas tu kg gu fèin-obrachail, gheibh thu na h-aon sanasan crìochnachaidh a gheibheadh ​​​​tu kubectl get.

Thoir an aire gun urrainn dhut coileanta-alias a chleachdadh airson alias sam bith air an t-siostam agad.

Mar sin, gus fèin-choileanadh a chomasachadh airson a h-uile ailias kubectl, feumaidh tu an àithne gu h-àrd a ruith airson gach fear dhiubh. Nì a’ chriomag a leanas dìreach seo, cho fad ‘s a tha thu air kubectl-aliases a shuidheachadh ~/.kubectl-aliases:

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

Feumaidh am pìos còd seo a chuir nad do ~/.bashrc, ath-thòisich an t-slige àithne agus bidh fèin-chrìochnachadh ri fhaighinn airson a h-uile alias 800 kubectl.

6. Leudachadh kubectl le plugins

A ’tòiseachadh bho dreach 1.12, taic kubectl inneal plugan, a leigeas leat na gnìomhan aige a leudachadh le òrdughan a bharrachd.

Ma tha thu eòlach air Innealan plugan git, an uairsin tha plugins kubectl air an togail air an aon phrionnsapal.

Anns a’ chaibideil seo, bruidhnidh sinn mar a stàlaicheas tu plugins, càite an lorg thu iad, agus mar a chruthaicheas tu na plugins agad fhèin.

A stàladh plugins

Tha plugins Kubectl air an sgaoileadh mar fhaidhlichean so-ghnìomhaichte sìmplidh leis an ainm mar kubectl-x. Ro-leasachan kubectl- Tha feum air, agus an uairsin fo-òrdugh kubectl ùr a leigeas leat am plugan a ghairm.

Mar eisimpleir, thèid am plugan hello a sgaoileadh mar fhaidhle ris an canar kubectl-hello.

Gus am plugan a stàladh, feumaidh tu am faidhle a chopaigeadh kubectl-x gu eòlaire sam bith nad PATH agus dèan e so-ghnìomhaichte, mar eisimpleir le chmod +x. Dìreach às deidh seo faodaidh tu am plugan a ghairm le kubectl x.

Faodaidh tu an àithne a leanas a chleachdadh gus liosta a dhèanamh de na plugins uile a tha air an stàladh air an t-siostam agad an-dràsta:

$ kubectl plugin list

Seallaidh an àithne seo rabhaidhean cuideachd ma tha grunn plugins agad leis an aon ainm, no ma tha faidhle plugins ann nach gabh a chuir an gnìomh.

Lorg agus stàlaich plugins a’ cleachdadh Krew

Faodar plugins Kubectl a cho-roinn no ath-chleachdadh mar phasganan bathar-bog. Ach càite an lorg thu plugins a tha daoine eile air a roinn?

Pròiseact Krew ag amas air fuasgladh aonaichte a sholarachadh airson roinneadh, lorg, stàladh agus stiùireadh plugins kubectl. Tha am pròiseact ga ainmeachadh fhèin mar “mhanaidsear pacaid airson plugins kubectl” (tha Krew coltach ri Brew).

Tha Krew na liosta de plugins kubectl as urrainn dhut a thaghadh agus a stàladh. Aig an aon àm, tha Krew cuideachd na plugan airson kubectl.

Tha seo a’ ciallachadh gu bheil stàladh Krew ag obair gu bunaiteach mar a bhith a’ stàladh plugan kubectl sam bith eile. Gheibh thu stiùireadh mionaideach aig Duilleag GitHub.

Is iad na h-òrdughan Krew as cudromaiche:

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

Thoir an aire nach cuir stàladh plugins a’ cleachdadh Krew bacadh air stàladh plugins a’ cleachdadh an dòigh àbhaisteach a tha air a mhìneachadh gu h-àrd.

Thoir an aire gu bheil an àithne kubectl krew list a 'taisbeanadh plugins a chaidh a stàladh a' cleachdadh Krew a-mhàin, ach tha an àithne kubectl plugin list a 'liostadh a h-uile plugan, is e sin, an fheadhainn a chaidh a stàladh a' cleachdadh Krew agus an fheadhainn a chaidh a stàladh le dòighean eile.

Lorg plugain an àite eile

Is e pròiseact òg a th’ ann an Krew, a tha an-dràsta na phròiseact an liosta dìreach mu 30 plugins. Mura h-urrainn dhut na tha a dhìth ort a lorg, gheibh thu plugins ann an àiteachan eile, leithid GitHub.

Tha mi a’ moladh coimhead air an roinn GitHub kubectl-plugins. An sin gheibh thu dusanan de plugins a tha rim faighinn as fhiach sgrùdadh a dhèanamh.

Sgrìobhadh na plugins agad fhèin

faodaidh tu fhèin cruthaich plugins - Chan eil e doirbh. Feumaidh tu gnìomhaiche a chruthachadh a nì na tha a dhìth ort, ainmich mar a tha e kubectl-x agus stàlaich mar a chaidh a mhìneachadh gu h-àrd.

Dh’ fhaodadh am faidhle a bhith na sgriobt bash, sgriobt python, no tagradh GO cruinnichte - chan eil e gu diofar. Is e an aon chumha gum faodar a chuir gu bàs gu dìreach san t-siostam obrachaidh.

Nach cruthaich sinn plugan eisimpleir an-dràsta. Anns an earrainn roimhe seo, chleachd thu an àithne kubectl gus na soithichean airson gach pod a liostadh. Tha e furasta an àithne seo a thionndadh gu bhith na plugan as urrainn dhut a ghairm e. kubectl img.

Cruthaich faidhle kubectl-img an susbaint a leanas:

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

A-nis dèan am faidhle so-ghnìomhaichte le chmod +x kubectl-img agus gluais e gu eòlaire sam bith nad PATH. Dìreach às deidh seo faodaidh tu am plugan a chleachdadh kubectl img.

Mar a chaidh ainmeachadh, faodar plugins kubectl a sgrìobhadh ann an cànan prògramadh no sgrìobhaidh sam bith. Ma tha thu a’ cleachdadh sgriobtaichean shligean, tha a’ bhuannachd ann a bhith comasach air kubectl a ghairm gu furasta bhon taobh a-staigh den plugan. Ach, faodaidh tu plugins nas iom-fhillte a sgrìobhadh ann an cànanan prògramadh fìor a’ cleachdadh Leabharlann luchd-cleachdaidh Kubernetes. Ma tha thu a’ cleachdadh Go, faodaidh tu cuideachd a chleachdadh leabharlann cli-runtime, a tha ann gu sònraichte airson plugins kubectl a sgrìobhadh.

Mar a roinn thu na plugins agad

Ma tha thu den bheachd gum faodadh na plugins agad a bhith feumail do dhaoine eile, faodaidh tu a roinn air GitHub. Dèan cinnteach gun cuir thu iad ris a’ chuspair kubectl-plugins.

Faodaidh tu cuideachd iarraidh gun cuir thu ris a’ plugan agad Clàr creige. Tha stiùireadh air mar a nì thu seo ann an Stòran GitHub.

Crìochnachadh àithne

Chan eil plugins a' cur taic ri fèin-chrìochnachadh an-dràsta. Is e sin, feumaidh tu ainm slàn a’ phlugan agus ainmean slàn nan argamaidean a chur a-steach.

Tha an stòr GitHub kubectl airson a’ ghnìomh seo iarrtas fosgailte. Mar sin tha e comasach gun tèid am feart seo a chuir an gnìomh uaireigin san àm ri teachd.

Beannachd leat!!!

Dè eile a leughas tu air a’ chuspair:

  1. Trì ìrean de fèin-sgèileadh ann an Kubernetes agus mar a chleachdas tu iad gu h-èifeachdach.
  2. Kubernetes ann an spiorad spùinneadaireachd le teamplaid airson a bhuileachadh.
  3. An sianal againn timcheall air Kubernetes ann an Telegram.

Source: www.habr.com

Cuir beachd ann