Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Heke hûn bi Kubernetes re dixebitin, wê hingê kubectl belkî yek ji wan karûbarên ku hûn herî zêde bikar tînin e. Û gava ku hûn gelek wextê xwe bi amûrek taybetî re bixebitin, drav dide ku hûn wê baş bixwînin û fêr bibin ka meriv wê çawa bi bandor bikar bîne.

tîma Kubernetes aaS ji Mail.ru gotarek ji hêla Daniel Weibel ve hatî wergerandin ku tê de hûn ê serişte û şîretan bibînin ji bo ku hûn bi kubectl re bi bandor bixebitin. Ew ê di heman demê de ji we re bibe alîkar ku hûn têgihiştinek kûr a Kubernetes bistînin.

Li gorî nivîskar, mebesta gotarê ev e ku hûn xebata weya rojane ya bi Kubernetes re ne tenê bikêrtir, lê di heman demê de xweştir jî bikin!

Destpêk: Kubectl çi ye

Berî ku hûn fêr bibin ku kubectl bi bandortir bikar bînin, hûn hewce ne ku têgihiştinek bingehîn ya ku ew çi ye û çawa dixebite bi dest bixin.

Ji perspektîfa bikarhênerek, kubectl panelek kontrolê ye ku destûrê dide te ku hûn karûbarên Kubernetes pêk bînin.

Ji hêla teknîkî ve, kubectl xerîdarek Kubernetes API ye.

Kubernetes API an HTTP REST API ye. Ev API navbeynkariya bikarhêner a Kubernetes ya rastîn e, ku bi navgîniya wê bi tevahî tê kontrol kirin. Ev tê vê wateyê ku her operasyona Kubernetes wekî xalek dawiya API-ê tê xuyang kirin û dikare bi daxwazek HTTP ji wê xala dawî re were çêkirin.

Ji ber vê yekê, karê sereke ya kubectl ev e ku daxwazên HTTP-ê ji Kubernetes API re bike:

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Kubernetes pergalek bi tevahî çavkanî ye. Ev tê vê wateyê ku ew rewşa navxweyî ya çavkaniyan diparêze û hemî operasyonên Kubernetes operasyonên CRUD ne.

Hûn bi birêvebirina van çavkaniyan Kubernetes bi tevahî kontrol dikin, û Kubernetes li ser bingeha rewşa heyî ya çavkaniyan diyar dike ka çi bike. Ji ber vê yekê, referansa Kubernetes API wekî navnîşek celebên çavkaniyê bi karûbarên wan ên têkildar re têne organîze kirin.

Ka em li mînakekê binêrin.

Ka em bibêjin ku hûn dixwazin çavkaniyek ReplicaSet biafirînin. Ji bo kirina vê yekê, hûn bi navê ReplicaSet-ê di pelê de diyar dikin replicaset.yaml, paşê fermanê bimeşîne:

$ kubectl create -f replicaset.yaml

Ev ê çavkaniyek ReplicaSet biafirîne. Lê li pişt perdeyê çi diqewime?

Kubernetes xwedan operasyonek çêkirina ReplicaSet e. Mîna her operasyonek din, ew wekî xalek dawiya API-ê tê xuyang kirin. Xala dawiya API-ya taybetî ya ji bo vê operasyonê wiha xuya dike:

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

Xalên dawiya API-ê ji bo hemî operasyonên Kubernetes dikarin li wir werin dîtin referansa API (tevlî dawiya jorîn). Ji bo ku hûn daxwazek rastîn ji xalek dawîn re bikin, divê hûn pêşî URL-ya servera API-ê li riyên xala dawiya ku di referansa API-ê de têne navnîş kirin zêde bikin.

Ji ber vê yekê, gava ku hûn fermana jorîn bicîh tînin, kubectl daxwazek HTTP POST ji xala dawî ya API-ya jorîn re dişîne. Pênaseya ReplicaSet ku we di pelê de peyda kiriye replicaset.yaml, di laşê daxwazê ​​de tê şandin.

Bi vî rengî kubectl ji bo hemî fermanên ku bi koma Kubernetes re têkildar in dixebite. Di van hemî rewşan de, kubectl bi tenê daxwazên HTTP-ê ji xalên dawî yên Kubernetes API-ê re dike.

Ji kerema xwe not bikin ku hûn dikarin Kubernetes bi tevahî bi karanîna karûbarek wek mînak birêve bibin curlbi şandina bi destan daxwazên HTTP ji Kubernetes API re. Kubectl bi hêsanî karanîna Kubernetes API-ê hêsantir dike.

Ev bingehên ku kubectl çi ye û çawa dixebite ev e. Lê tiştek din di derbarê Kubernetes API de heye ku divê her bikarhênerek kubectl bizanibe. Ka em bi lez li cîhana hundurîn a Kubernetes binêrin.

Cîhana hundurîn a Kubernetes

Kubernetes ji komek pêkhateyên serbixwe pêk tê ku wekî pêvajoyên cihêreng li ser girêkên komê dimeşin. Hin pêkhate li ser girêkên master dimeşin, yên din li ser girêkên karker dixebitin, her pêkhateyek peywira xwe ya taybetî pêk tîne.

Li vir hêmanên herî girîng ên li ser girêkên sereke hene:

  1. Jûra qasê - pênaseyên çavkaniyê diparêze (bi gelemperî ew hwd).
  2. Pêşkêşkara API - API peyda dike û hilanînê birêve dibe.
  3. Rêveberê Controller - Piştrast dike ku statûyên çavkaniyê bi taybetmendiyan re tevdigerin.
  4. Scheduler - li ser girêkên karkeran potan destnîşan dike.

Û li vir hêmanek herî girîng a li ser girêkên karker heye:

  1. kubelet - destpêkirina konteyneran li ser girêka xebatê birêve dibe.

Ji bo ku fêm bikin ka ev pêkhate çawa bi hev re dixebitin, em li mînakek binêrin.

Ka em bihesibînin ku we nû qedandiye kubectl create -f replicaset.yaml, pişt re kubectl daxwazek HTTP POST kir Xala dawî ya ReplicaSet API (derbaskirina pênaseya çavkaniya ReplicaSet).

Di komê de çi diqewime?

  1. Piştî kirin kubectl create -f replicaset.yaml Pêşkêşkara API-ya weya çavkaniya ReplicaSet di hilanînê de hilîne:

    Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh

  2. Dûv re, kontrolkerê ReplicaSet di rêvebirê kontrolkerê de, ku çêkirin, guherandin û jêbirina çavkaniyên ReplicaSet digire dest tê destpêkirin:

    Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh

  3. Kontrolkerê ReplicaSet ji bo her kopiyek ReplicaSet (li gorî şablonê pod di pênaseya ReplicaSet de) pênaseyek pod diafirîne û wan di hilanînê de hilîne:

    Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh

  4. Plansaz dest pê dike, pêlên ku hîna ji tu girêkên karker re nehatine veqetandin dişopîne:

    Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh

  5. Plansaz ji bo her podek girêkek karkerek guncan hildibijêre û vê agahiyê li pênasekirina pod li firotgehê zêde dike:

    Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh

  6. Li ser girêka karker a ku pod jê re hatî veqetandin, Kubelet tê destpêkirin, ew pêlên ku ji vê nodê re hatine veqetandin dişopîne:

    Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh

  7. Kubelet pênaseya pod ji hilanînê dixwîne û rê dide dema xebitandina konteyneran, wek Docker, ku konteynerên li ser nodê bide destpêkirin:

    Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh

Li jêr guhertoyek nivîsê ya vê şiroveyê heye.

Daxwaza API-ê ya ji bo xala dawiya afirandina ReplicaSet ji hêla servera API-ê ve tête kirin. Pêşkêşkara API daxwazê ​​rast dike û pênase çavkaniya ReplicaSet di hilanînê de hilîne.

Vê bûyerê kontrolkera ReplicaSet, ku binepêvajoyek rêveberê kontrolker e, dest pê dike. Kontrolkerê ReplicaSet çêkirin, nûvekirin û jêbirina çavkaniyên ReplicaSet li dikanê dişopîne û gava ku ev çêbibe agahdariyek bûyerê distîne.

Karê kontrolkerê ReplicaSet ew e ku pê ewle bibe ku hejmara pêdiviya ReplicaSet pods heye. Di mînaka me de, hîna pod tune ne, ji ber vê yekê kontrolkerê ReplicaSet van pênaseyên pod diafirîne (li gorî şablona pod di pênaseya ReplicaSet de) û wan di hilanînê de hilîne.

Afirandina podên nû ji hêla plansaziyek ve tê rêve kirin ku pênaseyên pod-ê yên ku hîn ji bo girêkên karker nehatine plansaz kirin dişopîne. Plansaz ji bo her podek girêkek karkerek guncan hildibijêre û pênaseyên pod di depoyê de nûve dike.

Bala xwe bidinê ku heya vê gavê, tu kodek barkêşiya xebatê li tu deverek komê nedihat xebitandin. Her tiştê ku heta niha hatiye kirin - ev afirandin û nûvekirina çavkaniyên di depoya li ser girêka masterê de ye.

Bûyera paşîn Kubelets destnîşan dike, ku li ser pêlên ku ji bo girêkên xwe yên karker hatine plansaz kirin çavdêrî dikin. Kubelet girêka karker a ku pêlên ReplicaSet-a we li ser hatine saz kirin divê dema xebitandina konteynerê, wek Docker, rêwerde bike ku wêneyên konteynerê yên hewce dakêşîne û wan bimeşîne.

Di vê nuqteyê de, serîlêdana weya ReplicaSet di dawiyê de dixebite!

Rola Kubernetes API

Wekî ku we di mînaka berê de dît, pêkhateyên Kubernetes (ji bilî servera API û hilanînê) li guheztinên çavkaniyên di hilanînê de temaşe dikin û agahdariya li ser çavkaniyên di hilanînê de diguhezînin.

Bê guman, ev pêkhate rasterast bi hilanînê re têkilî nakin, lê tenê bi navgîniya Kubernetes API-yê.

Mînakên jêrîn bifikirin:

  1. Kontrolker ReplicaSet xala dawiya API-ê bikar tîne lîsteya ReplicaSets bi parametre watch ji bo çavdêriya guhertinên çavkaniyên ReplicaSet.
  2. Kontrolker ReplicaSet xala dawiya API-ê bikar tîne Pod çêbikin (pod biafirîne) ji bo afirandina piyan.
  3. Scheduler xala dawiya API-ê bikar tîne patch pod (pod biguherîne) ji bo nûvekirina podan bi agahdariya li ser girêka xebatkarê hilbijartî.

Wekî ku hûn dikarin bibînin, ev heman API-ya ku kubectl digihîje ye. Bikaranîna heman API-ê ji bo pêkhateyên hundurîn û bikarhênerên derveyî di sêwirana Kubernetes de têgehek bingehîn e.

Naha em dikarin kurt bikin ka Kubernetes çawa dixebite:

  1. Firotgehên hilanînê diyar dikin, ango çavkaniyên Kubernetes.
  2. Pêşkêşkara API-ê di forma Kubernetes API-ê de navgînek hilanînê peyda dike.
  3. Hemî pêkhate û bikarhênerên Kubernetes ên din bi navgîniya API-yê dewleta (çavkaniyên) Kubernetes dixwînin, temaşe dikin û manîpule dikin.

Naskirina van têgehan dê ji we re bibe alîkar ku hûn kubectl çêtir fam bikin û herî zêde jê sûd werbigirin.

Naha werin em li hin serişte û hîleyên taybetî binêrin ku dê bibin alîkar ku hilberîna we bi kubectl re çêtir bikin.

1. Bi karanîna temamkirina fermanê têketinê bilezînin

Yek ji teknîkên herî bikêr, lê pir caran ji nedîtî ve tê, ji bo baştirkirina performansê bi kubectl re temamkirina fermanê ye.

Temamkirina fermanê dihêle hûn bi karanîna bişkoka Tabê bixweber beşên fermanên kubectl temam bikin. Ev ji bo bineferman, vebijark û argumanan dixebite, di nav de tiştek wekî navên çavkaniyê tevlihev.

Binêrin ka temamkirina fermana kubectl çawa dixebite:

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Temamkirina fermanê ji bo şêlên Bash û Zsh dixebite.

Rêbernameya fermî rêwerzên hûrgulî ji bo sazkirina temamkirina otomatê dihewîne, lê li jêr em ê kurteyek kurt peyda bikin.

Çawa temamkirina fermanê dixebite

Temamkirina fermanê taybetmendiyek şêlê ye ku bi karanîna skrîptek qedandinê dixebite. Skrîpta dirêjkirinê skrîptek şêlê ye ku tevgerek dirêjkirinê ji bo fermanek taybetî diyar dike.

Kubectl bixweber bi karanîna fermanên jêrîn ji bo Bash û Zsh nivîsarên dirêjkirinê çêdike û derdixe:

$ kubectl completion bash

An:

$ kubectl completion zsh

Di teorîyê de, bes e ku meriv derketina van fermanan bi qalika fermanê ya guncan ve girê bide da ku kubectl karibe fermanan temam bike.

Di pratîkê de, rêbaza girêdanê ji bo Bash (di nav de cûdahiyên di navbera Linux û MacOS de) û Zsh cuda ye. Li jêr em ê li van hemî vebijarkan binêrin.

Bash li Linux

Skrîpta qedandina Bash bi pakêta temamkirina bash ve girêdayî ye, ji ber vê yekê hûn hewce ne ku pêşî wê saz bikin:

$ sudo apt-get install bash-completion

An:

$ yum install bash-completion

Hûn dikarin biceribînin ku pakêt bi serfirazî bi karanîna fermana jêrîn ve hatî saz kirin:

$ type _init_completion

Ger ev koda fonksiyona şêlê derxe, wê hingê bash-temamkirina rast tê saz kirin. Ger ferman xeletiyek "Nehat dîtin" dide, hûn hewce ne ku rêza jêrîn li pelê xwe zêde bikin ~ / .bashrc:

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

Ma pêdivî ye ku meriv vê rêzê li pelê zêde bike ~ / .bashrc an na bi rêvebirê pakêtê ve girêdayî ye ku we ji bo sazkirina bash-temamkirinê bikar aniye. Ev ji bo APT hewce ye, lê ne ji bo YUM.

Piştî sazkirina bash-temamkirinê, hûn hewce ne ku her tiştî mîheng bikin da ku skrîpta qedandina kubectl di hemî danişînên şêlê de were çalak kirin.

Rêyek ji bo vê yekê ev e ku meriv rêzika jêrîn li pelê zêde bike ~ / .bashrc:

source <(kubectl completion bash)

Rêyek din ev e ku meriv skrîpta dirêjkirina kubectl li pelrêçê zêde bike /etc/bash_completion.d (heke tunebe wê biafirîne):

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

Hemî nivîsarên lêzêdekirî yên di katalogê de /etc/bash_completion.d bixweber di bash-temamkirinê de têne girtin.

Her du vebijark bi heman rengî derbasdar in.

Piştî destpêkirina şêlê, temamkirina fermana kubectl dê bixebite.

Bash li MacOS

Li ser MacOS sazkirin hinekî tevlihevtir e. Rastî ev e ku ji hêla xwerû ve, MacOS guhertoya Bash 3.2 bikar tîne, û skrîpta temamkirina otomatîkî ya kubectl guhertoyek Bash ya herî kêm 4.1 hewce dike û di Bash 3.2 de naxebite.

Pirsgirêkên lîsansê hene ku bi karanîna guhertoyek kevnar a Bash-ê li MacOS-ê ve girêdayî ne. Guhertoya Bash 4 di bin GPLv3 de ye, ku ji hêla Apple ve nayê piştgirî kirin.

Ji bo ku hûn temamkirina otomatîkî ya kubectl li MacOS-ê mîheng bikin, hûn hewce ne ku guhertoyek nû ya Bash saz bikin. Her weha hûn dikarin Bash-a nûvekirî wekî şêlê xweya xwerû destnîşan bikin, ku dê di pêşerojê de ji we re gelek pirsgirêkan xilas bike. Ew ne dijwar e, hûrgulî di gotarê de têne dayîn "Nûvekirina Bash li MacOS".

Berî ku bidomînin, pê ewle bin ku hûn guhertoyek nû ya Bash bikar tînin (encamê kontrol bikin bash --version).

Nivîsara qedandina Bash li gorî projeyê diguhere bash-temamkirin, ji ber vê yekê hûn hewce ne ku pêşî saz bikin.

Hûn dikarin bi karanîna bash-temamkirinê saz bikin Homebrew:

$ brew install bash-completion@2

Ev e @2 Ji bo guhertoya bash-temamkirina 2-yê tê wateya. Ji bo temamkirina otomatîkî ya kubectl bash-temamkirina v2, û bash-temamkirina v2 herî kêm guhertoya Bash 4.1 hewce dike.

Encama fermanê brew-install beşa Caveats dihewîne, ku diyar dike ka çi divê li pelê were zêdekirin ~/.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"

Lêbelê, ez pêşniyar dikim ku van rêzan lê zêde nekin ~/.bash_profile, û bi ~/.bashrc. Di vê rewşê de, temamkirina otomatîkî dê ne tenê di sereke, lê di şêlên fermana zarokan de jî peyda bibe.

Piştî destpêkirina şêlê fermanê, hûn dikarin bi karanîna fermana jêrîn verast bikin ku sazkirin rast e:

$ type _init_completion

Ger hûn di encam de fonksiyonek şêlê bibînin, wê hingê her tişt rast hatî mîheng kirin.

Naha pêdivî ye ku em pê ewle bin ku temamkirina otomatîkî ya kubectl di hemî danişînan de çalak e.

Yek rê ev e ku hûn rêzika jêrîn li xwe zêde bikin ~/.bashrc:

source <(kubectl completion bash)

Awayê duyemîn ev e ku meriv li peldankê skrîptek temamker zêde bike /usr/local/etc/bash_completion.d:

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

Ev rêbaz dê tenê bixebite heke we bash-temamkirina bi karanîna Homebrew saz kir. Di vê rewşê de, bash-temamkirina hemî nivîsarên ji vê pelrêçê bar dike.

Ger we saz kir kubectl bi karanîna Homebrew, wê hingê ne hewce ye ku gava berê were bicîh kirin, ji ber ku skrîpta temamkirina xweser dê bixweber di peldankê de were danîn /usr/local/etc/bash_completion.d dema sazkirinê. Di vê rewşê de, gava ku hûn bash-temamkirinê saz bikin, otocompletion kubectl dê dest bi xebatê bike.

Wekî encamek, van hemî vebijarkan wekhev in.

zsh

Skrîpta temamkirina otomatîkî ya ji bo Zsh ti pêwendiyan hewce nake. Tiştê ku divê hûn bikin ev e ku gava ku hûn şêlê fermanê bar dikin wan çalak bikin.

Hûn dikarin vê yekê bi lêzêdekirina rêzek li ser xwe bikin ~/.zshrc dosî:

source <(kubectl completion zsh)

Ger hûn xeletiyek bistînin not found: compdef piştî destpêkirina şêlê xwe, hûn hewce ne ku fonksiyona çêkirî çalak bikin compdef. Hûn dikarin wê bi lê zêdekirina wê li destpêka pelê xwe çalak bikin ~/.zshrc jêrîn:

autoload -Uz compinit
compinit

2. Zû taybetmendiyên çavkaniyê bibînin

Dema ku hûn pênaseyên çavkaniya YAML diafirînin, hûn hewce ne ku zeviyan û wateya wan ji bo wan çavkaniyan zanibin. Cihek ku meriv li vê agahiyê bigere di referansa API-ê de ye, ku ji bo hemî çavkaniyan taybetmendiyên bêkêmasî vedihewîne.

Lêbelê, guheztina geroka webê her gava ku hûn hewce ne ku li tiştek bigerin nerehet e. Ji ber vê yekê kubectl fermanê dide kubectl explain, ku taybetmendiyên hemî çavkaniyan rast di termînala we de nîşan dide.

Forma fermanê wiha ye:

$ kubectl explain resource[.field]...

Ferman dê taybetmendiya çavkaniyê an zeviya daxwazkirî derxe. Agahdariya ku tê xuyang kirin bi ya ku di manuala API-ê de heye yek e.

by default kubectl explain tenê asta yekem a hêlîna zeviyan nîşan dide.

Binêrin ka ew çawa xuya dike dikare li vir be.

Heke hûn vebijarkê lê zêde bikin hûn dikarin tevahiya darê nîşan bidin --recursive:

$ kubectl explain deployment.spec --recursive

Heke hûn tam nizanin ka kîjan çavkaniyan hewce ne, hûn dikarin wan hemî bi fermana jêrîn nîşan bidin:

$ kubectl api-resources

Ev ferman navên çavkaniyê bi pirjimariyê nîşan dide, mînak. deployments li gorî deployment. Ji bo nimûne, navê kurt jî nîşan dide deploy, ji bo wan çavkaniyên ku ew hene. Xem neke ji van cudahiyan. Hemî van vebijarkên binavkirinê ji bo kubectl wekhev in. Ango hûn dikarin yek ji wan ji bo bikar bînin kubectl explain.

Hemî fermanên jêrîn wekhev in:

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

3. Formatek encamek stûna xwerû bikar bînin

Forma derketina fermanê ya xwerû 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

Ev format hêsan e, lê di nav xwe de hejmarek sînorkirî ya agahdariyê heye. Li gorî forma pênasekirina çavkaniyê ya tevahî, tenê çend zevî li vir têne xuyang kirin.

Di vê rewşê de, hûn dikarin formatek hilberîna stûna xwerû bikar bînin. Ew dihêle hûn diyar bikin ka kîjan daneyan derxînin. Hûn dikarin her qada çavkaniyê wekî stûnek veqetandî nîşan bidin.

Bikaranîna formatek xwerû bi karanîna vebijarkan tê destnîşankirin:

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

Hûn dikarin her stûna derketinê wekî cotek pênase bikin <header>:<jsonpath>ko <header> navê stûnê ye, û <jsonpath> - îfadeyek ku qada çavkaniyê diyar dike.

Ka em li mînakek hêsan binêrin:

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

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

Di encam de yek stûnek bi navên potan heye.

Vebêja vebijarkê navên pod ji zeviyê hildibijêre metadata.name. Ji ber ku navê podê di qada navê zarokê de tête diyar kirin metadata di ravekirina çavkaniyê ya pod de. Zêdetir hûrgulî dikarin di nav de werin dîtin Rêber API an fermanê binivîsin kubectl explain pod.metadata.name.

Naha em bibêjin ku hûn dixwazin stûnek zêde li derketinê zêde bikin, mînakî nîşana girêka ku her pod li ser dimeşe. Ji bo kirina vê yekê, hûn dikarin tenê taybetmendiya stûnê ya guncan li vebijarka stûnên xwerû zêde bikin:

$ 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

Îfade navê nodê jê hildibijêre spec.nodeName - Dema ku podek ji girêkekê re tê destnîşankirin, navê wê li zeviyê tê nivîsandin spec.nodeName taybetmendiya çavkaniya pod. Agahiyên berfirehtir dikarin di encam de werin dîtin kubectl explain pod.spec.nodeName.

Ji kerema xwe bala xwe bidin ku zeviyên çavkaniyê yên Kubernetes hesas in.

Hûn dikarin her qada çavkaniyê wekî stûnek bibînin. Tenê taybetmendiya çavkaniyê binirxînin û wê bi her qadên ku hûn hez dikin biceribînin.

Lê pêşî, bila em ji nêz ve li îfadeyên hilbijartina zeviyê binêrin.

JSONPath Expressions

Gotinên ji bo hilbijartina zeviyên çavkaniyê li ser bingehê têne çêkirin JSONPath.

JSONPath zimanek ji bo wergirtina daneyan ji belgeyên JSON e. Hilbijartina yek zeviyê ji bo JSONPath doza karanîna herî hêsan e. Wî pir heye îmkanên zêdetir, di nav de hilbijêr, parzûn û hwd.

Kubectl ravekirina hejmarek sînorkirî ya taybetmendiyên JSONPath piştgirî dike. Derfetên û mînakên bikaranîna wan li jêr hatine diyarkirin:

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

Operatorê [] bi taybetî girîng e. Gelek zeviyên çavkaniyê yên Kubernetes navnîş in, û ev operator dihêle hûn endamên wan lîsteyan hilbijêrin. Ew pir caran bi xiftanek mîna [*] tê bikar anîn da ku hemî hêmanên navnîşek hilbijêrin.

Mînakên sepanê

Derfetên ji bo karanîna formatek derketinê ya stûna xwerû bêdawî ne, ji ber ku hûn dikarin her qad an berhevoka zeviyên çavkaniyê di encam de nîşan bidin. Li vir çend sepanên nimûne hene, lê xwe ji xwe hîs bikin ku wan bikolin û serîlêdanên ku ji we re dixebitin bibînin.

  1. Nîşandana wêneyên konteynerê ji bo 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

    Ev ferman navên wêneya konteynerê ji bo her podê nîşan dide.

    Bînin bîra xwe ku podek dikare çend konteyneran hebin, wê hingê navên wêneyan dê li ser yek rêzê, bi koman veqetandî werin xuyang kirin.

  2. Nîşandana herêmên hebûna 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

    Ev ferman bikêr e ger koma we di ewrek gelemperî de were mêvandar kirin. Ew qada hebûna ji bo her girêk nîşan dide.

    Qada berdestî têgehek ewr e ku qada dubarekirinê li herêmek erdnîgarî sînordar dike.

    Zeviyên berdest ji bo her girêkek bi etîketek taybetî têne wergirtin - failure-domain.beta.kubernetes.io/zone. Ger kom di ewrek gelemperî de dimeşe, ev etîket bixweber tê afirandin û ji bo her girêkek navên deverên berdestiyê dagirtî ye.

    Etîket ne beşek ji taybetmendiya çavkaniya Kubernetes in, ji ber vê yekê hûn ê di derheqê wan de agahdarî nebînin Rêber API. Lêbelê, heke hûn di forma YAML an JSON de agahdariya li ser girêkan bixwazin, ew dikarin werin dîtin (mîna her etîketên din):

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

    Ev rêgezek girîng e ku meriv di derheqê çavkaniyan de bêtir fêr bibe, ji bilî fêrbûna taybetmendiyên çavkaniyê.

4. Di navbera kom û navan de bi hêsanî veguherînin

Dema ku kubectl daxwazek ji Kubernetes API-yê dike, ew yekem pelê kubeconfig dixwîne da ku hemî pîvanên pêwîst ji bo girêdanê bistîne.

Bi xwerû pelê kubeconfig e ~/.kube/config. Bi gelemperî ev pel bi fermanek taybetî tête çêkirin an nûve kirin.

Dema ku hûn bi gelek koman re dixebitin, pelê weya kubeconfig mîhengan vedihewîne ji bo girêdana bi van koman re. Ji we re rêyek hewce ye ku hûn ji fermana kubectl re bibêjin ku hûn bi kîjan komê re dixebitin.

Di nav komekê de, hûn dikarin gelek navan biafirînin - celebek koma virtual di nav komek laşî de. Kubectl di heman demê de diyar dike ka kîjan navan li ser bingeha pelê kubeconfig bikar bîne. Ev tê vê wateyê ku hûn jî rêyek hewce ne ku hûn ji fermana kubectl re bibêjin ku hûn bi kîjan cîhê navan re bixebitin.

Di vê beşê de em ê rave bikin ka ew çawa dixebite û meriv çawa bi bandor kar dike.

Bala xwe bidinê ku dibe ku hûn gelek pelên kubeconfig di guhêrbara jîngehê KUBECONFIG de hatine navnîş kirin hebin. Di vê rewşê de, van hemî pelan dê di dema xebitandinê de di yek veavakirina hevpar de bêne hev kirin. Her weha hûn dikarin pelê kubeconfig-a xwerû bi guheztina kubectl bi parametreyê biguhezînin --kubeconfig. Dîtinî belgeyên fermî.

pelên kubeconfig

Ka em bibînin ka pelê kubeconfig bi rastî çi dihewîne:

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Wekî ku hûn dikarin bibînin, pelê kubeconfig komek konteks dihewîne. Têkilî ji sê hêmanan pêk tê:

  • Cluster - URL-ya API-ya servera komê.
  • Bikarhêner - pêbaweriyên erêkirina bikarhêner di komê de.
  • Cihê navan - cîhê navan ku dema tevlî komê dibe tê bikaranîn.

Di pratîkê de, ew bi gelemperî di kubeconfig-a xwe de ji her komê yek çarçoveyê bikar tînin. Lêbelê, hûn dikarin li her komê gelek kontekstan hebin, ji hêla bikarhêner an cîhê navan ve têne cûda kirin. Lêbelê, ev veavakirina pir-tewre ne asayî ye, ji ber vê yekê bi gelemperî nexşeyek yek-bi-yek di navbera kom û çarçowe de heye.

Di her demê de, yek ji van şertan niha ye:

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Dema ku kubectl pelek vesazkirinê dixwîne, ew her gav agahdariya ji rewşa heyî digire. Di mînaka li jor de, kubectl dê bi koma Hare ve girêbide.

Li gorî vê yekê, ji bo veguheztina komek din, hûn hewce ne ku di pelê kubeconfig de rewşa heyî biguhezînin:

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Naha kubectl dê bi koma Fox-ê ve girêbide.

Ji bo ku hûn di heman komê de li cîhek navekî din veguherînin, hûn hewce ne ku nirxa hêmana navnavê ji bo rewşa heyî biguhezînin:

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Di mînaka jorîn de, kubectl dê cîhê navên Prod-ê yên Fox-ê bikar bîne (berê qada navên Testê hate danîn).

Têbînî ku kubectl jî vebijarkan peyda dike --cluster, --user, --namespace и --context, ku destûrê dide te ku hûn hêmanên kesane û çarçoweya heyî bixwe binivîsînin, bêyî ku di kubeconfig de çi hatî danîn. Dîtinî kubectl options.

Di teoriyê de, hûn dikarin bi destan mîhengên di kubeconfig de biguhezînin. Lê nerehet e. Ji bo hêsankirina van operasyonan, amûrên cihêreng hene ku dihêle hûn bixweber parametreyan biguherînin.

Kubectx bikar bînin

Ji bo guheztina di navbera kom û navan de amûrek pir populer.

Karûbar fermanan peyda dike kubectx и kubens bi rêzê ve çarçoweya heyî û cîhê navan biguherînin.

Wekî ku hate behs kirin, guheztina çarçoweya heyî tê wateya guheztina komê heke we tenê yek çarçoveyek ji her komê hebe.

Li vir mînakek xebitandina van fermanan heye:

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Di bingeh de, van fermanan bi tenê pelê kubeconfig wekî ku li jor hatî destnîşan kirin biguherînin.

saz kirin kubectx, talîmatên li ser bişopînin Github

Her du ferman piştgirîya oto-temamkirina navên navok û navan dikin, ku hewcedariya nivîsandina wan bi tevahî ji holê radike. Talîmatên ji bo sazkirina temamkirina otomatîkî vir.

Taybetmendiyek din a kêrhatî kubectx Ev e moda înteraktîf. Ew bi karûbar re bi hev re dixebite fzf, ku divê cuda bê sazkirin. Sazkirina fzf bixweber moda înteraktîf tê de peyda dike kubectx. Bi înteraktîf, hûn dikarin bi navgîniya navbeynkariya lêgerîna belaş a înteraktîf a ku ji hêla fzf ve hatî peyda kirin, navgîn û cîhê navan hilbijêrin.

Bikaranîna navên şêlê

Ji bo guherandina çarçowe û cîhê navên heyî hûn ne hewceyî amûrên cihê ne ji ber ku kubectl ji bo vê yekê jî fermanan peyda dike. Erê, tîm kubectl config ji bo guherandina pelên kubeconfig binfermanan peyda dike.

Li vir hinekan in:

  • kubectl config get-contexts: nîşana hemî kontekstan;
  • kubectl config current-context: naveroka heyî bistînin;
  • kubectl config use-context: guherîna rewşa heyî;
  • kubectl config set-context: Hêmana çarçoveyê biguherînin.

Lêbelê, karanîna van fermanan rasterast ne pir hêsan e ji ber ku ew dirêj in. Hûn dikarin navên şêlê ji bo wan çêbikin ku hêsan têne darve kirin.

Min li ser bingeha van fermanan komek navdêr afirandin ku fonksiyonên mîna kubectx peyda dikin. Li vir hûn dikarin wan di çalakiyê de bibînin:

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Bala xwe bidinê ku navnav fzf bikar tînin da ku pêwendiyek lêgerîna belaş a înteraktîf peyda bikin (mîna moda danûstendinê ya kubectx). Ev tê wateya ku hûn hewce ne fzf saz bikinvan navan bikar bînin.

Li vir pênaseyên navdêran bi xwe hene:

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

Ji bo danîna van navdêran hûn hewce ne ku pênaseyên jorîn li pelê xwe zêde bikin ~/.bashrc an ~/.zshrc û qalikê xwe ji nû ve saz bikin.

Bikaranîna pêvekan

Kubectl dihêle hûn pêvekên ku bi heman awayê fermanên bingehîn têne darve kirin bar bikin. Mînakî, hûn dikarin pêveka kubectl-foo saz bikin û bi pêkanîna fermanê ve wê bimeşînin kubectl foo.

Dê rehet be ku meriv bi vî rengî navgîn û cîhê navan biguhezîne, mînakî bi xebitandinê kubectl ctx ji bo guhertina çarçoveyê û kubectl ns ji bo guhertina cîhê navan.

Min du pêvekên ku vê yekê dikin nivîsandine:

Karê pêvekan li ser navên ji beşa berê ye.

Li vir e ku ew çawa dixebitin:

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Têbînî ku pêvek fzf bikar tînin da ku navgînek lêgerîna belaş a înteraktîf peyda bikin (mîna moda danûstendinê ya kubectx). Ev tê wateya ku hûn hewce ne fzf saz bikinvan navan bikar bînin.

Ji bo sazkirina pêvekan, hûn hewce ne ku skrîptên şêlê bi navê dakêşin kubectl-ctx и kubectl-ns li her pelrêça di guhêrbara PATH-a xwe de bigerin û wan bikin wek mînak. chmod +x. Di cih de piştî vê hûn ê bikaribin bikar bînin kubectl ctx и kubectl ns.

5. Kêmkirina input bi autoaliases

Navnavên Shell ji bo bilezkirina têketinê rêyek baş in. Rêvename kubectl-navdêr ji bo emrên bingehîn ên kubectl nêzî 800 kurtebiran dihewîne.

Dibe ku hûn bipirsin - hûn çawa 800 navdêran bi bîr tînin? Lê hûn ne hewce ne ku hemî wan bi bîr bînin, ji ber ku ew li gorî nexşeyek hêsan têne çêkirin, ku li jêr tê dayîn:

Meriv çawa kubectl bi bandortir bikar tîne: rêbernameyek berfireh
Bo nimûne:

  1. kgpooyaml - kubectl get pods oyaml
  2. ksysgsvcw — kubectl -n kube-pergala svc w bigire
  3. ksysrmcm -kubectl -n kube-sîstema rm cm
  4. kgdepallsl - kubectl hemî sl bicîhkirinê bistînin

Wekî ku hûn dibînin, navdêr ji pêkhateyan pêk tên, ku her yek ji wan hêmanek taybetî ya fermana kubectl temsîl dike. Her navek dikare ji bo fermana bingehîn, xebitandin û çavkaniyê yek pêkhateyek, û ji bo parametreyan jî gelek beşan hebe. Hûn bi tenê li gorî diyagrama li jor van pêkhateyan ji çepê ber bi rastê "dicivînin".

Diyagrama hûrgulî ya heyî li ser e GitHub. Li wir jî hûn dikarin bibînin lîsteya tam ya navên.

Mînakî, navnavê kgpooyamlall bi fermanê re hevwate ye kubectl get pods -o yaml --all-namespaces.

Rêza têkildar a vebijarkan ne girîng e: ferman kgpooyamlall hevwateya fermanê ye kgpoalloyaml.

Hûn ne hewce ne ku hemî pêkhateyan wekî navnav bikar bînin. Bo nimûne k, kg, klo, ksys, kgpo jî dikare were bikaranîn. Digel vê yekê, hûn dikarin nav û fermanên birêkûpêk an vebijarkên li ser rêzika fermanê berhev bikin:

Bo nimûne:

  1. Li şûna kubectl proxy tu dikarî binivîsî k proxy.
  2. Li şûna kubectl get roles tu dikarî binivîsî kg roles (Niha ji bo çavkaniya Rolan navnav tune).
  3. Ji bo ku hûn daneyên ji bo podek taybetî bistînin, hûn dikarin fermanê bikar bînin kgpo my-pod — kubectl get pod my-pod.

Ji kerema xwe bala xwe bidin ku hin navdêran argumanek rêzika fermanê hewce dikin. Ji bo nimûne, nasnav kgpol wateya kubectl get pods -l. Dibe -l argûmanek hewce dike - taybetmendiyek labelê. Ger hûn navekî bikar bînin ew ê wusa xuya bike kgpol app=ui.

Ji ber ku hin navdêran argumanan hewce dikin, divê navên a, f û l herî dawî bên bikaranîn.

Bi gelemperî, gava ku hûn vê plansaziyê bi dest bixin, hûn dikarin bi têgihîştî navnavên ji fermanên ku hûn dixwazin bicîh bikin derxînin û gelek wextê nivîsandinê xilas bikin.

Lêkirinî

Ji bo sazkirina kubectl-navdêran, hûn hewce ne ku pelê dakêşin .kubectl_aliases ji GitHub û di pelê de têxin ~/.bashrc an ~/.zshrc:

source ~/.kubectl_aliases

Xwe temamkirin

Wekî ku me berê jî got, hûn bi gelemperî li ser rêzika fermanê peyvên din li navnavek zêde dikin. Bo nimûne:

$ kgpooyaml test-pod-d4b77b989

Ger hûn temamkirina fermana kubectl bikar bînin, belkî we ji bo tiştên wekî navên çavkaniyê temamkirina otomatîk bikar aniye. Lê dema ku navnav têne bikar anîn ev dikare were kirin?

Ev pirsek pir girîng e ji ber ku ger temamkirina otomatîkî nexebite, hûn ê hin feydeyên navnavan winda bikin.

Bersiv bi kîjan şêlê hûn bikar tînin ve girêdayî ye:

  1. Ji bo Zsh, temamkirina alias ji qutiyê dixebite.
  2. Ji bo Bash, mixabin, hin xebat hewce ye ku oto-temamkirinê bixebite.

Ji bo navnavên di Bash de temamkirina otomatîk çalak dike

Pirsgirêka Bash ev e ku ew hewl dide ku (her gava ku hûn Tab-ê pê dixin) navnavê temam bike, ne fermana ku navnav jê re vedibêje (wek mînak Zsh dike). Ji ber ku hûn ji bo hemî 800 navên navdêrên skrîptên temamkirinê nînin, temamkirina otomatîkî naxebite.

Projeyê temam-navdêr ji bo vê pirsgirêkê çareseriyek giştî dide. Ew bi mekanîzmaya temamkirina navnavan ve girêdide, di hundurê navnavê de fermanek berfireh dike, û vebijarkên qedandinê ji bo fermana qedandî vedigerîne. Ev tê vê wateyê ku peldanka ji bo navekî tam mîna fermanek tevahî tevdigere.

Di jêrîn de, ez ê pêşî rave bikim ka meriv çawa bi tevahî-navnav saz dike û dûv re meriv wê çawa mîheng dike da ku temamkirina hemî navên kubectl çalak bike.

Sazkirina temam-navdêr

Berî her tiştî, bi tevahî-navnav girêdayî ye bash-temamkirin. Ji ber vê yekê, berî ku hûn bi tevahî-navnav saz bikin, hûn hewce ne ku pê ewle bibin ku bash-temamî hatî saz kirin. Rêbernameyên sazkirinê berê ji bo Linux û MacOS hatine peyda kirin.

Nîşe Girîng ji bo Bikarhênerên MacOS: Mîna skrîpta temamkirina otomatîkî ya kubectl, tev-navnav bi Bash 3.2, ku li MacOS-ê xwerû ye, naxebite. Bi taybetî, bi tevahî-navdêr bi bash-temamkirina v2 ve girêdayî ye (brew install bash-completion@2), ku bi kêmî ve Bash 4.1 hewce dike. Ev tê vê wateyê ku ji bo ku hûn bi tevahî-navnavên MacOS-ê bikar bînin hûn hewce ne ku guhertoyek nû ya Bash saz bikin.

Pêdivî ye ku hûn skrîptê dakêşin bash_completion.sh ji depoya GitHub û wê têxin nav dosyaya xwe ~/.bashrc:

source ~/bash_completion.sh

Piştî ji nû ve destpêkirina şêlê, bi tevahî-navnav dê bi tevahî were saz kirin.

Ji bo navên kubectl-ê temamkirina otomatîk çalak dike

Ji hêla teknîkî ve temam-navnav fonksiyonek wrapper peyda dike _complete_alias. Ev fonksîyon navnavê kontrol dike û ji bo fermana alias îşaretên temamkirinê vedigerîne.

Ji bo ku fonksiyonek bi navekî taybetî re têkildar bike, hûn hewce ne ku mekanîzmaya Bash-ya çêkirî bikar bînin tevî, saz kirin _complete_alias wekî fonksiyonek temamkirina nasnav.

Weke nimûne, em navnavê k, ku ji bo fermana kubectl radiweste, bigirin. saz kirin _complete_alias Wekî fonksiyonek temamker ji bo vê navnavê, divê hûn fermana jêrîn bimeşînin:

$ complete -F _complete_alias k

Encama vê yekê ev e ku gava ku hûn navekî k bixwe temam bikin, fonksiyon tê gotin _complete_alias, ku navnavê kontrol dike û ji bo fermanê îşaretên temamkirinê vedigerîne kubectl.

Wekî mînakek duyemîn, em navnavê bigirin kg, ku destnîşan dike kubectl get:

$ complete -F _complete_alias kg

Mîna di mînaka berê de, gava ku hûn kg-ê bixweber temam dikin, hûn heman îşaretên temamkirinê yên ku hûn ê ji bo wan bistînin distînin. kubectl get.

Bala xwe bidinê ku hûn dikarin ji bo her navekî li ser pergala xwe bi tevahî-navnas bikar bînin.

Ji ber vê yekê, ji bo çalakkirina xweseriya hemî navên kubectl-ê, hûn hewce ne ku emrê jorîn ji bo her yek ji wan bimeşînin. Parçeya jêrîn tam vê yekê dike, bi şertê ku we kubectl-navdêrên xwe danîne ~/.kubectl-aliases:

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

Pêdivî ye ku ev perçeya kodê di nav we de were danîn ~/.bashrc, şelê fermanê ji nû ve bidin destpêkirin û temamkirina otomotîk dê ji bo hemî navên 800 kubectl peyda bibe.

6. Berfirehkirina kubectl bi pêvekan

Ji dest guhertoya 1.12, kubectl piştgirî dike mekanîzmaya pêvekê, ku dihêle hûn fonksiyonên wê bi fermanên din re berfireh bikin.

Heke hûn pê dizanin Mekanîzmayên pêveka Git, paşê pêvekên kubectl li ser heman prensîbê têne çêkirin.

Di vê beşê de, em ê vebêjin ka meriv çawa pêvekan saz dike, li ku derê wan bibîne, û meriv çawa pêvekên xwe biafirîne.

Sazkirina pêvekan

Pêvekên Kubectl wekî pelên bikêrhatî yên hêsan bi navên mîna têne belav kirin kubectl-x. Pêşkîte kubectl- pêdivî ye, li dûv jêr fermanek kubectl ya nû ku destûrê dide te ku gazî pêvekê bike.

Mînakî, pêveka hello dê wekî pelek ku jê re tê gotin were belav kirin kubectl-hello.

Ji bo sazkirina pêvekê, hûn hewce ne ku pelê kopî bikin kubectl-x li her pelrêça li PATH-a xwe bidin û wê bikin îcrakar, mînakî bi chmod +x. Yekser piştî vê yekê hûn dikarin pêvekê pê re bang bikin kubectl x.

Hûn dikarin fermana jêrîn bikar bînin da ku hemî pêvekên ku niha li ser pergala we hatine saz kirin navnîş bikin:

$ kubectl plugin list

Ger çend pêvekên we yên bi heman navî hebin, an jî pelek pêvekan hebe ku ne pêkan e, ev ferman dê hişyariyan jî nîşan bide.

Dîtin û sazkirina pêvekan bi karanîna Krew

Pêvekên Kubectl dikarin wekî pakêtên nermalavê werin parve kirin an ji nû ve werin bikar anîn. Lê hûn li ku derê dikarin pêvekên ku yên din parve kirine bibînin?

Projeya Krew armanc dike ku çareseriyek yekgirtî ji bo parvekirin, lêgerîn, sazkirin û birêvebirina pêvekên kubectl peyda bike. Proje xwe wekî "rêveberê pakêtê ji bo pêvekên kubectl" bi nav dike (Krew dişibihe Bîrameyandin).

Krew navnîşek pêvekên kubectl ye ku hûn dikarin hilbijêrin û saz bikin. Di heman demê de, Krew ji bo kubectl jî pêvekek e.

Ev tê vê wateyê ku sazkirina Krew bi bingehîn mîna sazkirina pêveka din a kubectl dixebite. Hûn dikarin rêwerzên berfireh li ser bibînin Rûpelê GitHub.

Fermanên herî girîng ên Krew ev in:

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

Ji kerema xwe not bikin ku sazkirina pêvekên bi karanîna Krew-ê bi sazkirina pêvekan bi karanîna rêbaza standard a ku li jor hatî destnîşan kirin destwerdanê nake.

Ji kerema xwe bîr bînin ku emrê kubectl krew list tenê pêvekên ku bi karanîna Krew hatine saz kirin, lê emrê nîşan dide kubectl plugin list Hemî pêvekan navnîş dike, ango, yên ku bi karanîna Krew hatine saz kirin û yên ku bi rêbazên din ve hatine saz kirin.

Dîtina Pêvekên Cihê Din

Krew projeyek ciwan e, ku niha di wê de ye navnîş tenê li ser 30 pêvekên. Heke hûn nekarin tiştê ku hûn hewce ne bibînin, hûn dikarin pêvekan li cîhek din bibînin, wek GitHub.

Ez pêşniyar dikim ku li beşa GitHub bigerim kubectl-pêvekên. Li wir hûn ê bi dehan pêvekên berdest ên ku hêjayî kontrolê ne bibînin.

Pêvekên xwe binivîsin

tu dikarî bi xwe pêvekan çêbikin - Ne zehmet e. Pêdivî ye ku hûn hilberek ku hûn hewcedariya we dike biafirînin, wekî navê wê bikin kubectl-x û wekî ku li jor hatî destnîşan kirin saz bikin.

Pelê dibe ku skrîptek bash, nivîsarek python, an serîlêdana GO ya berhevkirî be - ne girîng e. Tenê şert ev e ku ew rasterast di pergala xebitandinê de were darve kirin.

Ka em niha pêvekek mînakek çêbikin. Di beşa berê de, we fermana kubectl bikar anî da ku konteynerên ji bo her podê navnîş bike. Hêsan e ku hûn vê fermanê veguherînin pêvekek ku hûn dikarin pê re bang bikin, mînakî. kubectl img.

Pelê çêbikin kubectl-img naveroka jêrîn:

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

Naha pelê bi wan re çêbike chmod +x kubectl-img û wê biguhezînin her pelrêça di RIYA xwe de. Yekser piştî vê yekê hûn dikarin pêvekê bikar bînin kubectl img.

Wekî ku hate gotin, pêvekên kubectl dikarin bi her zimanek bernamesaziyê an nivîsandinê bêne nivîsandin. Heke hûn nivîsarên şêlê bikar tînin, avantaja ku hûn dikarin bi hêsanî ji hundurê pêvekê gazî kubectl bikin. Lêbelê, hûn dikarin bi karanîna zimanên bernamesaziya rastîn pêvekên tevlihevtir binivîsin Pirtûkxaneya muwekîlê Kubernetes. Heke hûn Go bikar tînin, hûn dikarin jî bikar bînin pirtûkxaneya cli-runtime, ku bi taybetî ji bo nivîsandina pêvekên kubectl heye.

Meriv çawa pêvekên xwe parve dike

Heke hûn difikirin ku pêvekên we dikarin ji yên din re bikêr bin, bi dilxwazî ​​wê li ser GitHub parve bikin. Bawer bikin ku wan li mijarê zêde bikin kubectl-pêvekên.

Her weha hûn dikarin daxwaz bikin ku pêveka we were zêdekirin lîsteya Krew. Talîmatên li ser vê yekê çawa tê kirin hene Depoyên GitHub.

Temamkirina fermanê

Plugin niha oto-temamkirinê piştgirî nakin. Ango divê hûn navê tevahî pêvekê û navên tam ên argumanan binivîsin.

Ji bo vê fonksiyonê depoya kubectl ya GitHub heye daxwaza vekirî. Ji ber vê yekê mimkun e ku ev taybetmendî dê di pêşerojê de were bicîh kirin.

Good luck !!!

Çi din li ser mijarê bixwînin:

  1. Di Kubernetes de sê astên xweseriya xweseriyê û meriv çawa wan bi bandor bikar tîne.
  2. Kubernetes di ruhê korsaniyê de bi şablonek ji bo pêkanîna.
  3. Kanala me li dora Kubernetes di Telegram de.

Source: www.habr.com

Add a comment