Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Haddii aad la shaqeyso Kubernetes, markaa kubectl waxay u badan tahay inay tahay mid ka mid ah yutiilitida aad isticmaasho. Mar kasta oo aad wakhti badan ku bixiso la shaqaynta qalab gaar ah, waxa ku baxaysa inaad si fiican u barato oo aad barato sida si hufan loogu isticmaalo.

kooxda Kubernetes aaS ka Mail.ru waxaa turjumay maqaal uu qoray Daniel Weibel kaas oo aad ka heli doonto talooyin iyo tabaha si wax ku ool ah loogu shaqeeyo kubectl. Waxay sidoo kale kaa caawin doontaa inaad si qoto dheer u fahanto Kubernetes.

Sida laga soo xigtay qoraaga, hadafka maqaalku waa in aad ka dhigto shaqadaada maalinlaha ah ee Kubernetes ma aha oo kaliya mid waxtar leh, laakiin sidoo kale aad u xiiso badan!

Hordhac: Waa maxay kubectl

Kahor intaadan baran inaad si wax ku ool ah u isticmaasho kubectl, waxaad u baahan tahay inaad hesho faham aasaasi ah waxa ay tahay iyo sida ay u shaqeyso.

Marka laga eego dhinaca isticmaalaha, kubectl waa guddi koontarool oo kuu ogolaanaya inaad qabato hawlaha Kubernetes.

Farsamo ahaan, kubectl waa macmiilka Kubernetes API.

Kubernetes API waa HTTP REST API. API-gani waa isku-xidhka isticmaale ee saxda ah ee Kubernetes, kaas oo si buuxda loo xakameeyo. Tani waxay ka dhigan tahay in hawlgal kasta oo Kubernetes ah uu u bannaan yahay API-da dhamaadka waxaana lagu samayn karaa codsi HTTP ah ilaa dhamaadkaas.

Sidaa darteed, shaqada ugu weyn ee kubectl waa in la sameeyo codsiyada HTTP ee Kubernetes API:

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Kubernetes waa hab dhammaystiran oo ku jihaysan kheyraadka. Tani waxay ka dhigan tahay inay ilaalinayso xaaladda gudaha ee ilaha iyo dhammaan hawlgallada Kubernetes waa hawlgallada CRUD.

Waxaad si buuxda gacanta ugu haysaa Kubernetes adiga oo maareynaya kheyraadkan, Kubernetes-na waxa ay tilmaantaa waxa la sameeyo iyada oo ku saleysan xaaladda kheyraadka ee hadda. Sababtan awgeed, tixraaca Kubernetes API waxaa loo habeeyey sidii liiska noocyada kheyraadka ee hawlahooda la xidhiidha.

Bal aan tusaale u soo qaadano.

Aynu nidhaahno waxaad doonaysaa inaad abuurto agab ReplicaSet. Si tan loo sameeyo, waxaad ku qeexday ReplicaSet ee faylka magaca replicaset.yaml, dabadeed socodsii amarka:

$ kubectl create -f replicaset.yaml

Tani waxay abuuri doontaa kheyraadka ReplicaSet. Laakiin maxaa dhacaya daaha gadaashiisa?

Kubernetes waxa uu leeyahay hawl abuurka ReplicaSet. Sida hawlgal kasta oo kale, waxa loo qaawiyey sidii barta dhamaadka API. Meesha gaarka ah ee API ee hawlgalkan ayaa u eg sidan:

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

Qodobbada API ee dhammaan hawlaha Kubernetes waxaa laga heli karaa at Tixraaca API (oo ay ku jiraan dhamaadka sare). Si aad codsi dhab ah u samayso barta dhamaadka, waa inaad marka hore ku darto URL server-ka API dariiqyada dhamaadka ee ku taxan tixraaca API.

Sidaa darteed, markaad fuliso amarka kore, kubectl waxay u dirtaa codsi HTTP POST barta dhamaadka API ee kore. Qeexida ReplicaSet ee aad ku bixisay faylka replicaset.yaml, waxaa loo diraa jirka codsiga.

Tani waa sida uu kubectl ugu shaqeeyo dhammaan amarrada la falgala kooxda Kubernetes. Dhammaan kiisaskan, kubectl waxay si fudud u sameysaa codsiyada HTTP ku habboon ee Kubernetes API.

Fadlan la soco in aad si buuxda u maareyn karto Kubernetes adiga oo isticmaalaya utility sida curladoo gacanta ugu diraya codsiyada HTTP Kubernetes API. Kubectl ayaa si fudud u fududaynaysa adeegsiga Kubernetes API.

Tani waa aasaaska waxa kubectl yahay iyo sida ay u shaqeyso. Laakiin waxaa jira wax kale oo ku saabsan Kubernetes API oo isticmaale kasta oo kubectl ah waa inuu ogaadaa. Aynu si degdeg ah u eegno dunida gudaha ee Kubernetes.

Dunida gudaha ee Kubernetes

Kubernetes wuxuu ka kooban yahay qaybo madax-banaan oo u shaqeeya sidii habab kala gaar ah oo ku yaal qanjidhada kooxda. Qaybaha qaarkood waxay ku shaqeeyaan qanjidhada sare, kuwa kalena waxay ku shaqeeyaan qanjidhada shaqaalaha, qayb kastaa waxay fulinaysaa hawsheeda gaarka ah.

Waa kuwan qaybaha ugu muhiimsan ee qanjidhada waaweyn:

  1. bakhaar - waxay kaydisaa qeexitaannada kheyraadka (badiyaa waa iwm).
  2. server API - waxay bixisaa API waxayna maamushaa kaydinta
  3. Maareeyaha Xakamaynta - Waxay xaqiijisaa in heerarka kheyraadku ay waafaqsan yihiin tilmaamaha.
  4. Jadwalka - waxay jadwal u samaysaa godadka noodhka shaqaalaha.

Oo halkan waa mid ka mid ah qaybaha ugu muhiimsan ee qanjidhada shaqaalaha:

  1. kubelet - waxay maamushaa soo saarida weelasha ee ulaha shaqada.

Si aan u fahamno sida qaybahaas ay u wada shaqeeyaan, aan eegno tusaale.

Aynu ka soo qaadno inaad hadda dhammaatay kubectl create -f replicaset.yaml, ka dib kubectl wuxuu sameeyay codsi HTTP POST ah ReplicaSet API dhamaadka ( gudbinta qeexida khayraadka ReplicaSet).

Maxaa ka socda kooxda?

  1. Ka dib markii la sameeyo kubectl create -f replicaset.yaml Serfarka API waxa uu kaydiyaa qeexida agabkaaga ReplicaSet kaydinta:

    Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan

  2. Marka xigta, kontaroolaha ReplicaSet waxaa lagu bilaabay maamulaha kontoroolka, kaas oo wax ka qabta abuurista, wax ka beddelka iyo tirtirka ilaha ReplicaSet:

    Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan

  3. Xakameeyaha ReplicaSet wuxuu u abuuraa qeexitaan boodh ah nuqul kasta oo ReplicaSet ah (sida ku cad template pod ee qeexitaanka ReplicaSet) oo ku kaydiyaa kaydinta:

    Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan

  4. Jadwalka ayaa la bilaabay, la socoshada godad aan wali lagu qorin qanjidhada shaqaalaha:

    Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan

  5. Jadwaliyehu waxa uu u doortaa noodhka shaqalaha ku haboon boodh kasta waxaanu ku daraa macluumaadkan qeexida boodhka dukaanka:

    Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan

  6. Dusha shaqalaha ee boodhka loo qoondeeyay, Kubelet ayaa la bilaabay, waxay la socotaa galalka loo qoondeeyay noodhkan:

    Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan

  7. Kubelet-ku waxa uu akhriyaa qeexida boodhka ee kaydinta oo waxa uu farayaa wakhtiga haynta weelka, sida Docker, in uu soo saaro weelasha xagasha:

    Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan

Hoos waxaa ku yaal nooca qoraalka ee tilmaantan.

Codsiga API ee barta ugu dambaysa abuurista ReplicaSet waxaa habeeya server-ka API. Serverka API waxa uu xaqiijiyaa codsiga oo waxa uu kaydiyaa qeexida khayraadka ReplicaSet ee kaydinta.

Dhacdadani waxa ay bilawday kontoroolka ReplicaSet, kaas oo ah hab-hoosaad hoosaadka maamulaha. Xakamaynta ReplicaSet waxay la socotaa abuurista, cusboonaysiinta, iyo tirtirka agabka ReplicaSet ee dukaanka oo hela ogeysiin dhacdo marka tani dhacdo.

ReplicaSet kontaroolaha shaqadiisu waa inuu hubiyo in tirada loo baahan yahay ee ReplicaSet pods ay jiraan. Tusaalahayaga, ma jiraan wax gadmo ah oo wali jira, sidaa darteed koontaroolaha ReplicaSet wuxuu abuuraa qeexitaannada boodhka (sida ku cad template pods ee qeexida ReplicaSet) oo ku kaydiyaa kaydinta.

Abuuritaanka tufaaxyo cusub waxaa kiciyay jadwal-haye si joogto ah ula socda qeexitaannada boodhka ee aan weli loo qorsheyn noodhka shaqaalaha. Jadwaliyehu waxa uu u doortaa noodhka shaqaalaha ee ku haboon boodh kasta waxaanu cusboonaysiiyaa qeexitaannada gafka ee kaydka.

Ogow ilaa hadda, ma jiro koodka culayska shaqada ee ka shaqaynayay meel kasta oo kutlada ah. Wax kasta oo ilaa hadda la qabtay - tani waa abuurista iyo cusboonaysiinta agabka kaydka ku yaal noodhka sayidkiisa.

Dhacdadii ugu dambaysay waxay kicisaa Kubelets, kuwaas oo la socda boodhadhka loo qorsheeyay qanjidhada shaqaalahooda. Kubelet-ka noodhka shaqaalaha ee ay ku rakiban yihiin galalkaaga ReplicaSet waa in ay tilmaamaan wakhtiga weelka, sida Docker, si loo soo dejiyo sawirada weelka loo baahan yahay oo uu maamulo.

Halkaa marka ay marayso, codsigaaga ReplicaSet ayaa ugu dambeyntii socda!

Doorka Kubernetes API

Sidaad ku aragtay tusaalihii hore, qaybaha Kubernetes (marka laga reebo server-ka API iyo kaydinta) waxay daawadaan isbeddelada ilaha kaydinta oo beddela macluumaadka ku saabsan agabka kaydinta.

Dabcan, qaybahani si toos ah ulama falgalaan kaydinta, laakiin kaliya iyada oo loo marayo Kubernetes API.

Tixgeli tusaalooyinka soo socda:

  1. Xakamaynta ReplicaSet waxay isticmaashaa barta dhamaadka API liiska ReplicaSets oo leh halbeeg watch si loola socdo isbedelada ilaha ReplicaSet.
  2. Xakamaynta ReplicaSet waxay isticmaashaa barta dhamaadka API abuur Pod (abuur pods) si aad u abuurto pods.
  3. Jadwalka wuxuu adeegsadaa API dhamaadka barta balastar boorash (wax ka beddel boodhka) si aad u cusboonaysiiso gad-yada macluumaadka ku saabsan noodhka shaqaalaha ee la doortay.

Sida aad arki karto, kani waa isla API uu kubectl galo. Isticmaalka API isku mid ah qaybaha gudaha iyo isticmaalayaasha dibadda waa fikradda aasaasiga ah ee naqshadeynta Kubernetes.

Hadda waxaan soo koobi karnaa sida uu u shaqeeyo Kubernetes:

  1. Bakhaarku waxay sheegaan, taasi waa, ilaha Kubernetes.
  2. Serverka API waxa uu bixiyaa isku xidhka kaydinta qaabka Kubernetes API.
  3. Dhammaan qaybaha kale ee Kubernetes iyo isticmaalayaashu waxay akhriyaan, fiirsadaan, oo ay maamulaan gobolka Kubernetes (khayraadka) iyada oo loo marayo API.

Ogaanshaha fikradahan ayaa kaa caawin doona inaad si fiican u fahanto kubectl oo aad ka faa'iidaysato.

Hadda aan eegno qaar ka mid ah tabaha iyo tabaha gaarka ah ee kaa caawin doona horumarinta wax soo saarkaaga kubectl.

1. Dardar geli gelinta adigoo isticmaalaya dhamaystirka amarka

Mid ka mid ah kuwa ugu faa'iido badan, laakiin inta badan la iska indho-tiro, farsamooyinka lagu hagaajinayo waxqabadka kubectl waa dhamaystirka amarka.

Dhamaystirka amarku wuxuu kuu ogolaanayaa inaad si toos ah u dhamaystirto qaybaha amarrada kubectl adoo isticmaalaya furaha Tab. Tani waxay u shaqeysaa amar-hoosaadyo, xulashooyin, iyo doodo, oo ay ku jiraan wax u adag sida magacyada kheyraadka.

Fiiri sida dhamaystirka amarka kubectl u shaqeeyo:

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Dhamaystirka amarku wuxuu u shaqeeyaa Bash iyo Zsh qolofka.

Tilmaamaha Rasmiga ah waxaa ku jira tilmaamo faahfaahsan oo ku saabsan dejinta otomatiga, laakiin hoos waxaan ku siin doonaa qayb gaaban.

Sida dhamaystirka amarku u shaqeeyo

Dhamaystirka talisku waa qaab qolof ah oo ku shaqaynaysa qoraalka dhamaystirka. Qoraalka kordhintu waa qoraal qolof ah oo qeexaysa habdhaqanka kordhinta amar gaar ah.

Kubectl waxay si toos ah u soo saartaa oo soo saartaa qoraallada kordhinta ee Bash iyo Zsh iyadoo la adeegsanayo amarrada soo socda:

$ kubectl completion bash

Ama:

$ kubectl completion zsh

Aragti ahaan, way ku filan tahay in lagu xiro wax soo saarka amarradan qolofka taliska ku habboon si kubectl uu u buuxiyo amarrada.

Ficil ahaan, habka isku xirka ayaa ka duwan Bash (oo ay ku jiraan faraqa u dhexeeya Linux iyo MacOS) iyo Zsh. Hoos waxaan eegi doonaa dhammaan xulashooyinkan.

Bash ee Linux

Qoraalka dhammaystirka Bash wuxuu ku xiran yahay xirmada dhamaystirka bash, markaa waxaad u baahan tahay inaad marka hore rakibto:

$ sudo apt-get install bash-completion

Ama:

$ yum install bash-completion

Waxaad tijaabin kartaa in xirmada si guul leh loo rakibay adoo isticmaalaya amarka soo socda:

$ type _init_completion

Haddii tani ay soo saarto koodka shaqada qolofka, ka dib bash-completion si sax ah ayaa loo rakibay. Haddii amarku bixiyo qalad "Lama helin", waxaad u baahan tahay inaad ku darto xariiqda soo socota faylkaaga ~ / .bashrc:

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

Ma lagama maarmaan ma tahay in khadkan lagu daro faylka ~ / .bashrc ama kuma xirna maareeyaha xirmada ee aad isticmaashay inaad ku rakibto bash-completion. Tani waxay lagama maarmaan u tahay APT, laakiin maaha YUM.

Kadib rakibidda bash-completion, waxaad u baahan tahay inaad wax walba dejiso si qoraalka dhammaystirka kubectl uu awood u yeesho dhammaan fadhiyada qolofka.

Hal dariiqo oo tan lagu sameeyo ayaa ah in lagu daro khadadka soo socda faylka ~ / .bashrc:

source <(kubectl completion bash)

Si kale ayaa ah in lagu daro qoraalka kubectl ee hagaha /etc/bash_completion.d (abuur haddii aysan jirin):

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

Dhammaan qoraallada wax-ku-kordhinta ee buug-yaraha /etc/bash_completion.d si toos ah ayaa loogu daraa dhamaystirka bash

Labada doorasho si isku mid ah ayaa loo dabaqi karaa.

Ka dib marka dib loo bilaabo qolofka, kubectl dhamaystirka amarka ayaa shaqayn doona.

Bash ku yaal MacOS

On MacOS dejinta waa wax yar ka dhib badan. Xaqiiqdu waxay tahay in sida caadiga ah, MacOS ay isticmaasho nooca Bash 3.2, iyo qoraalka kubectl autocompletion script wuxuu u baahan yahay nooca Bash ee ugu yaraan 4.1 mana ka shaqeeyo Bash 3.2.

Waxaa jira arrimo shati-siin ah oo la xidhiidha adeegsiga nooca duugoobay ee Bash ee MacOS. Nooca Bash 4 waxa uu shati ku hoos imanayaa GPLv3, kaas oo aanu taageerin Apple.

Si loo habeeyo kubectl autocompletion on MacOS, waxaad u baahan tahay inaad ku rakibto nooc cusub oo Bash ah. Waxa kale oo aad u dejin kartaa Bash-ka la cusboonaysiiyay sidii qolofkaaga caadiga ah, kaas oo kaa badbaadin doona dhibaatooyin badan mustaqbalka. Ma aha wax adag, faahfaahinta waxaa lagu bixiyaa maqaalka "Ku cusboonaysiinta Bash ee MacOS".

Kahor intaadan sii wadin, hubi inaad isticmaalayso nooc dhawaan ah Bash (hubi wax soo saarka bash --version).

Qoraalka dhammaystirka Bash waa ku kala duwan yahay mashruuc ahaan bash-dhameystir, marka waxaad u baahan tahay inaad marka hore ku rakibto.

Waxaad ku rakibi kartaa bash-completion addoo isticmaalaya Homebrew:

$ brew install bash-completion@2

waa @2 waxay u taagan tahay bash-completion version 2. kubectl autocompletion waxay u baahan tahay bash-completion v2, iyo bash-completion v2 waxay u baahan tahay ugu yaraan nooca Bash 4.1.

Soo saarista amarka brew-install waxa ku jira qayb Caveats, kaas oo qeexaya waxa loo baahan yahay in lagu daro faylka ~/.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"

Si kastaba ha ahaatee, waxaan ku talinayaa in aan ku darin khadadkan ~/.bash_profile, halka ~/.bashrc. Xaaladdan oo kale, dhamaystirka otomaatiga ayaa la heli doonaa ma aha oo kaliya kuwa ugu muhiimsan, laakiin sidoo kale waxaa laga heli karaa qolofka amarka ilmaha.

Ka dib markaad dib u bilowdo qolofka taliska, waxaad xaqiijin kartaa rakibiddu inay sax tahay adoo isticmaalaya amarka soo socda:

$ type _init_completion

Haddii aad aragto shaqada qolofka ee wax soo saarka, markaa wax walba si sax ah ayaa loo habeeyey.

Hadda waxaan u baahanahay inaan hubinno in kubectl autocompletion uu karti u yeesho dhammaan kulammada.

Hal dariiq ayaa ah in aad ku darto xariiqda soo socota ~/.bashrc:

source <(kubectl completion bash)

Dariiqa labaad waa in lagu daro galka qoraalka oo dhammaystiran /usr/local/etc/bash_completion.d:

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

Habkani wuxuu shaqayn doonaa oo kaliya haddii aad ku rakibtay bash-completion addoo isticmaalaya Homebrew. Xaaladdan oo kale, bash-dhammaystirka ayaa ka raraya dhammaan qoraallada buuggan.

Haddii aad rakibtay kubectl adoo isticmaalaya Homebrew, markaa looma baahna in la sameeyo tallaabadii hore, maadaama qoraalka otomaatiga ah si toos ah loogu dhejin doono galka /usr/local/etc/bash_completion.d inta lagu jiro rakibidda. Xaaladdan oo kale, kubectl autocompletion wuxuu bilaabi doonaa inuu shaqeeyo isla markaad rakibto bash-completion.

Natiijo ahaan, dhammaan xulashooyinkan waa u dhigma.

Zsh

Qoraallada otomaatiga ah ee Zsh uma baahna wax ku tiirsanaan ah. Waxa kaliya ee aad u baahan tahay inaad sameyso waa inaad awood u yeelatid markaad buuxinayso qolofka amarka.

Waxa aad tan samayn kartaa adiga oo ku dara laynkaaga ~/.zshrc faylka:

source <(kubectl completion zsh)

Haddii aad hesho qalad not found: compdef ka dib markaad dib u bilowdo qolofkaaga, waxaad u baahan tahay inaad karti u yeelato shaqada la dhisay compdef. Waxaad awood u siin kartaa adigoo ku daraya bilowga faylkaaga ~/.zshrc soo socda:

autoload -Uz compinit
compinit

2. Si degdeg ah u eeg qeexida ilaha

Markaad abuurto qeexitaannada kheyraadka YAML, waxaad u baahan tahay inaad ogaato beeraha iyo macnaha ay u leeyihiin kheyraadkaas. Hal meel oo laga raadiyo macluumaadkan waxay ku taal tixraaca API, kaas oo ka kooban faahfaahin dhammaystiran dhammaan agabyada.

Si kastaba ha noqotee, u beddelashada biraawsarkaaga mar kasta oo aad u baahan tahay inaad wax raadiso waa dhib. Sidaa darteed kubectl waxay bixisaa amarka kubectl explain, kaas oo tusinaya qeexida dhammaan agabyada saxda ah ee ku yaal terminaalkaaga.

Qaabka amarku waa sidatan:

$ kubectl explain resource[.field]...

Talisku wuxuu soo saari doonaa qeexida kheyraadka ama goobta la codsaday. Macluumaadka la soo bandhigay waxay la mid yihiin kuwa ku jira buug-gacmeedka API.

by default kubectl explain waxay muujinaysaa kaliya heerka ugu horeeya ee buul ee beeraha.

Eeg sida ay u egtahay Waxaad markaa awood.

Waxaad soo bandhigi kartaa geedka oo dhan haddii aad ku darto ikhtiyaarka --recursive:

$ kubectl explain deployment.spec --recursive

Haddii aadan si sax ah u garanayn agabka loo baahan yahay, waxaad ku soo bandhigi kartaa dhamaantood amarka soo socda:

$ kubectl api-resources

Amarkani wuxuu soo bandhigayaa magacyada kheyraadka qaab jamac ah, tusaale. deployments halkii deployment. Waxay sidoo kale soo bandhigaysaa magaca gaaban, tusaale ahaan deploy, loogu talagalay kheyraadkaas leh. Ha ka welwelin kala duwanaanshahan. Dhammaan xulashooyinkan magac-bixineed waxay u dhigmaan kubectl. Taasi waa, waxaad u isticmaali kartaa mid kasta oo iyaga ka mid ah kubectl explain.

Dhammaan amarradan soo socdaa waa u dhigma:

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

3. Isticmaal qaabka wax soo saarka tiirarka gaarka ah

Qaabka soo saarista amarka caadiga ah 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

Habkani waa mid ku habboon, laakiin waxa uu ka kooban yahay qadar kooban oo macluumaad ah. Marka la barbar dhigo qaabka qeexida kheyraadka buuxa, kaliya dhowr goobood ayaa halkan lagu soo bandhigay.

Xaaladdan oo kale, waxaad isticmaali kartaa qaab wax soo saarka column caadadii. Waxay kuu ogolaaneysaa inaad go'aamiso xogta aad soo saarayso. Waxaad u soo bandhigi kartaa goob kasta oo kheyraad ah sidii tiir gooni ah.

Isticmaalka qaabka gaarka ah waxaa lagu go'aamiyaa iyadoo la isticmaalayo fursadaha:

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

Waxaad u qeexi kartaa tiir kasta oo wax soo saar ah inuu yahay lammaane <header>:<jsonpath>halkaas oo <header> waa magaca tiirka, iyo <jsonpath> - odhaah qeexaysa goobta kheyraadka.

Aynu eegno tusaale fudud:

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

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

Wax-soo-saarku waxa uu ka kooban yahay hal tiir oo ay ku qoran yihiin magacyada galalka.

Tibaaxda ikhtiyaarka ah ayaa ka doorata magacyada boodhka goobta metadata.name. Tani waa sababta oo ah magaca boodhka ayaa lagu qeexay goobta magaca ilmaha metadata ee sharaxaadda kheyraadka ee boodhka. Faahfaahin dheeraad ah ayaa laga heli karaa API Guide ama ku qor amarka kubectl explain pod.metadata.name.

Hadda aan nidhaahno waxaad rabtaa inaad ku darto tiir dheeraad ah wax soo saarka, tusaale ahaan muujinta noodhka mid kastaa uu ku socdo. Si tan loo sameeyo, waxaad si fudud ugu dari kartaa qeexitaanka tiirarka ku habboon ikhtiyaarka tiirarka gaarka ah:

$ 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

Odhaahdu waxay ka doorataa magaca noodhka spec.nodeName - marka boodhka loo qoondeeyo noodhka, magaceeda waxaa lagu qoraa goobta spec.nodeName qeexida khayraadka pod. Macluumaad faahfaahsan oo dheeraad ah ayaa laga heli karaa soo-saarka kubectl explain pod.spec.nodeName.

Fadlan ogow in goobaha kheyraadka ee Kubernetes ay yihiin kuwo xasaasi ah.

Waxaad u arki kartaa goob kasta oo kheyraad ah sidii tiir. Kaliya dib u eeg qeexida ilaha oo ku tijaabi goob kasta oo aad jeceshahay.

Laakiin marka hore, aan si dhow u eegno tibaaxaha xulashada goobta.

JSONPath Odhaahyada

Odhaahyada xulashada goobaha kheyraadka waxay ku saleysan yihiin JSONPath.

JSONPath waa luuqad lagu soo ceshado xogta dukumeentiyada JSON. Doorashada hal goob waa kiiska ugu fudud ee isticmaalka JSONPath. Wax badan buu hayaa fursado badan, oo ay ku jiraan xulashada, filtarrada iyo wixii la mid ah.

Kubectl wuxuu sharxayaa inay taageerto tiro xaddidan ee sifooyinka JSONPath. Fursadaha iyo tusaalooyinka isticmaalkooda ayaa lagu qeexay hoos:

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

Hawlwadeenka [] ayaa si gaar ah muhiim u ah. Meelo badan oo kheyraadka Kubernetes ah ayaa ah liisas, hawlwadeenna wuxuu kuu ogolaanayaa inaad doorato xubnaha liisaskaas. Inta badan waxaa loo adeegsadaa kaarka duurjoogta ah sida [*] si loo xusho dhammaan walxaha liiska.

Tusaalooyinka codsiga

Suurtagalnimada isticmaalka qaabka wax-soo-saarka tiirka caadada ah waa kuwo aan dhammaad lahayn, maadaama aad muujin karto goob kasta ama isku-darka goobaha kheyraadka ee soo-saarka. Waa kuwan qaar ka mid ah abka muunada ah, laakiin xor u noqo inaad adigu baadho oo aad hesho codsiyada adiga ku shaqaynaya.

  1. Soo bandhigida sawirada weelka ee galalka:
    $ 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

    Amarkani wuxuu muujinayaa magacyada sawirka weelka ee boos kasta.

    Xasuusnoow in boodhku uu ka koobnaan karo weel badan, ka dib magacyada sawirka waxaa lagu soo bandhigi doonaa hal sadar, oo ay kala soocaan rido.

  2. Muujinaya meelaha laga heli karo qanjirada:
    $ 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

    Amarkani waa mid faa'iido leh haddii kooxdaadu ay ku jirto daruur dadweyne. Waxay muujinaysaa aagga la heli karo ee nood kasta.

    Aagga la heli karo waa fikrad daruur ah oo xaddidaysa aagga ku-noqoshada gobol juqraafi ah.

    Aagagga la heli karo ee nood kasta waxaa lagu helaa calaamad gaar ah - failure-domain.beta.kubernetes.io/zone. Haddii kooxdu ay ku dhex socoto daruur dadweyne, summadan si toos ah ayaa loo abuuray waxaana ka buuxsamay magacyada meelaha la heli karo ee nood kasta.

    Calaamaduhu maaha qayb ka mid ah qeexitaanka ilaha Kubernetes, markaa kama heli doontid macluumaad iyaga ku saabsan API Guide. Si kastaba ha ahaatee, waa la arki karaa (sida calaamado kale) haddii aad codsato macluumaadka ku saabsan noodhka qaabka YAML ama JSON:

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

    Tani waa hab fiican oo aad wax badan uga baran karto agabka, marka lagu daro barashada qeexitaannada kheyraadka.

4. Si sahal ah u kala beddel kooxaha iyo meelaha magacyadooda

Marka kubectl uu codsi u diro Kubernetes API, wuxuu marka hore akhriyaa faylka kubeconfig si uu u helo dhammaan xuduudaha lagama maarmaanka u ah isku xirka.

Sida caadiga ah faylka kubeconfig waa ~/.kube/config. Caadi ahaan faylkan waxaa la sameeyay ama lagu cusboonaysiiyay amar gaar ah.

Marka aad la shaqeyso kooxo badan, faylkaaga kubeconfig waxa uu ka kooban yahay habayn lagu xidho dhammaan kooxahaas. Waxaad u baahan tahay hab aad ugu sheegto taliska kubectl kooxda aad la shaqaynayso.

Kutlada dhexdeeda, waxaad samayn kartaa meelo badan oo magacyo ah-nooc ka mid ah kutlada farsamada ee kutlada jireed. Kubectl ayaa sidoo kale go'aamisa meesha magaca la isticmaalayo iyadoo lagu saleynayo faylka kubeconfig. Tani waxay ka dhigan tahay inaad sidoo kale u baahan tahay hab aad ugu sheegto taliska kubectl waxa magaca boos ee aad ku shaqaynayso.

Cutubkan waxaan ku sharxi doonaa sida ay u shaqeyso iyo sida looga dhigo mid si hufan u shaqeyso.

Ogsoonow in laga yaabo inaad haysato faylal badan oo kubeconfig ah oo ku taxan doorsoomiyaha deegaanka KUBECONFIG. Xaaladdan oo kale, dhammaan faylashan waxaa lagu dari doonaa hal qaabayn oo caadi ah wakhtiga runtime. Waxa kale oo aad bedeli kartaa faylka kubeconfig ee caadiga ah adiga oo ku ordaya kubectl oo leh parameter --kubeconfig. Fiiri dukumeenti rasmi ah.

kubeconfig files

Aynu aragno waxa dhabta ah ee faylka kubeconfig ka kooban yahay:

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Sida aad arki karto, faylka kubeconfig waxa uu ka kooban yahay dhawr arrimood. Macnuhu wuxuu ka kooban yahay saddex walxood:

  • Kutlada β€” API URL server-ka kooxda
  • Isticmaale - aqoonsiga isticmaale ee kutlada
  • Meel magaceed - booska magaca ee la isticmaalo marka kooxda lagu biirayo.

Ficil ahaan, waxay inta badan adeegsadaan hal jumlad koox walba kubeconfig. Si kastaba ha ahaatee, waxaad yeelan kartaa xaalado badan koox kasta, oo ay ku kala duwan yihiin isticmaale ama meel magaceed. Si kastaba ha ahaatee, qaabayntan mawduucyada badan waa mid aan caadi ahayn, sidaas darteed waxaa badanaa jira khariidad mid-mid ah oo u dhaxaysa rucubyada iyo mawduucyada.

Waqti kasta, mid ka mid ah xaaladaha hadda jira waa:

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Marka kubectl akhriyo faylka qaabeynta, had iyo jeer waxay ka qaadataa macluumaadka macnaha guud. Tusaalaha kore, kubectl waxay ku xidhmi doontaa kooxda Hare.

Sidaa darteed, si aad ugu wareegtid koox kale, waxaad u baahan tahay inaad bedesho macnaha hadda ku jira faylka kubeconfig:

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Hadda kubectl waxay ku xidhmi doontaa kooxda Fox.

Si aad ugu beddelato meel magaceed oo ka duwan isla kooxdaas, waxaad u baahan tahay inaad bedesho qiimaha xubinta meelaynta magaca macnaha guud:

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Tusaalaha kor ku xusan, kubectl waxay isticmaali doontaa meelaynta magaca kooxda Fox cluster's Prod (horey waxaa loo dejiyay booska tijaabada).

Ogsoonow in kubectl ay sidoo kale bixiso doorashooyin --cluster, --user, --namespace ΠΈ --context, kaas oo kuu ogolaanaya inaad dib u qorto walxaha shakhsi ahaaneed iyo macnaha hadda jira laftiisa, iyada oo aan loo eegin waxa lagu dhejiyay kubeconfig. Fiiri kubectl options.

Aragti ahaan, waxaad gacanta ku beddeli kartaa dejinta kubeconfig. Laakiin waa dhib. Si loo fududeeyo hawlgalladan, waxaa jira adeegyo kala duwan oo kuu oggolaanaya inaad si toos ah u beddesho cabbirrada.

Isticmaal kubectx

Utility aad caan u ah u kala beddelashada rucubyada iyo meelaha magacyada

Utility wuxuu bixiyaa amarro kubectx ΠΈ kubens in la beddelo macnaha hadda jira iyo meelaynta magaca siday u kala horreeyaan.

Sida ku xusan, beddelidda macnaha guud waxay la macno tahay beddelka kutlada haddii aad leedahay hal macnaha guud ee koox kasta.

Waa kan tusaale ahaan socodsiinta amaradan:

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Asal ahaan, amarradan ayaa si fudud u tafatir faylka kubeconfig sida kor lagu sharaxay.

si loo rakibo kubectx, raac tilmaamaha ku yaal Github.

Labada amarba waxay taageerayaan dhammaystirka dhammaystirka macnaha guud iyo magacyada magacyada, taas oo meesha ka saaraysa baahida loo qabo in si buuxda loo qoro. Tilmaamaha dejinta otomaatiga halkan.

Muuqaal kale oo faa'iido leh kubectx Waa hab is-dhexgal. Waxa ay la shaqeysaa utility-ga fzf, kaas oo ay tahay in si gaar ah loo rakibo. Ku rakibida fzf waxay si toos ah uga dhigaysaa hab is-dhexgal ah oo la heli karo kubectx. Si dhexgal ah, waxaad dooran kartaa macnaha guud iyo meelaynta magaca adoo adeegsanaya is-dhexgal raadinta bilaashka ah ee ay bixiso fzf.

Isticmaalka magacyo qolof ah

Uma baahnid qalab kala duwan si aad u bedesho macnaha guud iyo meelaynta magaca sababtoo ah kubectl waxa kale oo ay bixisaa amarro tan. Haa, kooxda kubectl config wuxuu bixiyaa amar-hoosaadyo loogu talagalay tafatirka faylasha kubeconfig.

Waa kuwan qaar ka mid ah:

  • kubectl config get-contexts: soo bandhig dhammaan macnaha guud;
  • kubectl config current-context: hel macnaha hadda jira;
  • kubectl config use-contextBeddel macnaha hadda jira;
  • kubectl config set-contextBeddel macnaha guud.

Si kastaba ha ahaatee, isticmaalka amarradan si toos ah maaha mid aad u habboon sababtoo ah way dheer yihiin. Waxaad u samayn kartaa magacyo qolof ah kuwaas oo ay fududahay in la fuliyo.

Waxaan sameeyay magacyo magacyo ah oo ku saleysan amarradan bixiya shaqeyn la mid ah kubectx. Halkan waxaad ku arki kartaa iyaga oo ficil ah:

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Ogsoonow in aliases ay isticmaalaan fzf si ay u bixiyaan is dhexgal isdhexgal bilaash ah (sida habka isdhexgalka kubectx). Tani waxay ka dhigan tahay inaad u baahan tahay ku rakib fzfsi ay u isticmaalaan magacyadooda.

Waa kuwan qeexitaannada magacyadooda:

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

Si aad u dejiso magacyadan waxaad u baahan tahay inaad ku darto qeexitaannada sare ee faylkaaga ~/.bashrc ama ~/.zshrc oo dib u bilow qolofkaaga.

Isticmaalka plugins

Kubectl wuxuu kuu ogolaanayaa inaad ku shubto plugins kuwaas oo loo fuliyo si la mid ah amarrada aasaasiga ah. Waxaad, tusaale ahaan, ku rakibi kartaa plugin kubectl-foo oo aad ku socodsiiso fulinta amarka kubectl foo.

Way ku habboonaan lahayd in sidatan loo beddelo macnaha guud iyo meelaynta magaca, tusaale ahaan adigoo ordaya kubectl ctx in la beddelo macnaha guud iyo kubectl ns in la beddelo meesha magaca.

Waxaan qoray laba plugin oo tan sameeya:

Shaqada plugins waxay ku salaysan tahay magacyo laga soo qaatay qaybta hore.

Waa kan sida ay u shaqeeyaan:

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Ogsoonow in plugins-yadu ay isticmaalaan fzf si ay u bixiyaan is-dhexgal raadin bilaash ah (sida habka is-dhexgalka kubectx). Tani waxay ka dhigan tahay inaad u baahan tahay ku rakib fzfsi ay u isticmaalaan magacyadooda.

Si aad u rakibto plugins, waxaad u baahan tahay inaad soo dejiso qoraallada qolofka ee magacaaban kubectl-ctx ΠΈ kubectl-ns Hagaha kasta oo ku jira doorsoomiyaha PATH oo ka dhig kuwo lagu fulin karo tusaale ahaan. chmod +x. Isla markiiba ka dib waxaad awoodi doontaa inaad isticmaasho kubectl ctx ΠΈ kubectl ns.

5. Iska yaree wax-ku-gelinta is-difaaca

Magacyada Shell waa hab wanaagsan oo lagu dedejiyo wax gelinta. Mashruuca kubectl-aliases wuxuu ka kooban yahay ilaa 800 gaagaaban oo loogu talagalay amarrada kubectl ee aasaasiga ah.

Waxaa laga yaabaa inaad la yaabto - sidee baad u xasuusataa 800 oo magacyo ah? Laakiin uma baahnid inaad xasuusato dhammaantood, sababtoo ah waxay ku dhisan yihiin nidaam fudud, kaas oo hoos ku qoran:

Sida loo isticmaalo kubectl si waxtar leh: hage faahfaahsan
Tusaale ahaan:

  1. kgpooyaml - kubectl heli pods oyaml
  2. ksysgsvcw β€” kubectl -n kube-nidaamka heli svc w
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. kgdepallsl - kubectl waa la geynayaa dhammaan sl

Sida aad arki karto, magacyadu waxay ka kooban yihiin qaybo, kuwaas oo mid kastaa uu matalayo qayb gaar ah oo ka mid ah amarka kubectl. Magac kastaa wuxuu yeelan karaa hal qayb oo ka mid ah taliska saldhigga, hawlgalka, iyo kheyraadka, iyo qaybo badan oo cabbirro ah. Waxaad si fudud uga "guudaysaa" qaybahan bidix ilaa midig sida ku cad jaantuska kore.

Jaantuska tafatiran ee hadda jira ayaa jooga GitHub. Halkaa waxa kale oo aad ka heli kartaa liiska buuxa ee magacyo.

Tusaale ahaan, alias kgpooyamlall wuxuu u dhigmaa amarka kubectl get pods -o yaml --all-namespaces.

Nidaamka qaraabada ah ee xulashooyinka muhiim maaha: amarka kgpooyamlall waxay u dhigantaa amarka kgpoalloyaml.

Uma baahnid inaad dhammaan qaybaha u isticmaasho magac ahaan. Tusaale ahaan k, kg, klo, ksys, kgpo sidoo kale waa la isticmaali karaa. Waxaa intaa dheer, waxaad isku dari kartaa magacyo iyo amarrada caadiga ah ama ikhtiyaarrada khadka taliska:

Tusaale ahaan:

  1. Bedelkii kubectl proxy waad qori kartaa k proxy.
  2. Bedelkii kubectl get roles waad qori kartaa kg roles (hadda ma jiro magac loogu magac daray kheyraadka Doorarka).
  3. Si aad xogta u hesho boodh gaar ah, waxaad isticmaali kartaa amarka kgpo my-pod β€” kubectl get pod my-pod.

Fadlan ogow in magacyo qaarkood ay u baahan yihiin dood khadka taliska. Tusaale ahaan, loo yaqaan kgpol macnaheedu waa kubectl get pods -l. Ikhtiyaarka -l waxay u baahan tahay dood - tilmaamid calaamad. Haddii aad isticmaasho alias waxay u ekaan doontaa kgpol app=ui.

Sababtoo ah magacyada qaar waxay u baahan yihiin doodo, magacyo a, f, iyo l waa in la isticmaalo ugu dambeyn.

Guud ahaan, mar alla markii aad heshid nidaamkan, waxaad si dareen leh uga soo qaadan kartaa magacyo amarrada aad rabto inaad fuliso oo aad kaydsato waqti badan oo wax qoris ah.

rakibidda

Si aad u rakibto kubectl-aliases, waxaad u baahan tahay inaad soo dejiso faylka .kubectl_aliases ka GitHub oo ku dar faylka ~/.bashrc ama ~/.zshrc:

source ~/.kubectl_aliases

Dhameystirka

Sidii aan horay u sheegnay, waxaad inta badan ku darsataa kelmado dheeraad ah naaneyska khadka taliska. Tusaale ahaan:

$ kgpooyaml test-pod-d4b77b989

Haddii aad isticmaasho dhamaystirka amarka kubectl, waxay u badan tahay inaad u isticmaashay dhamaystirka waxyaabaha sida magacyada ilaha. Laakiin tan ma la samayn karaa marka magacyo la isticmaalo?

Tani waa su'aal aad muhiim u ah sababtoo ah haddii otomaatiggu shaqeyn waayo, waxaad waayi doontaa qaar ka mid ah faa'iidooyinka magacyada.

Jawaabtu waxay kuxirantahay qolofka aad isticmaalayso:

  1. Wixii Zsh ah, dhamaystirka naanaysta waxay ka shaqeysaa meel ka baxsan sanduuqa.
  2. Bash, nasiib daro, shaqo qaar ayaa loo baahan yahay si loo helo dhamaystirka shaqada.

Awood u yeelashada dhamaystirka magacyada magacyada Bash

Dhibaatada Bash ayaa ah in ay isku daydo in ay dhamaystirto (mar kasta oo aad riixdo Tab) alias, ma aha amarka uu naanaysigu tilmaamayo (sida Zsh sameeyo, tusaale ahaan). Mar haddii aanad haysan qoraalo dhammaystiran oo dhan 800 oo magacyo ah, dhammaystirku ma shaqaynayo.

Mashruuca dhammays-tirnaan wuxuu bixiyaa xal guud oo dhibaatadan ah. Waxay ku xidhaa habka dhamaystirka magacyada naanaysaha, gudaha waxay ku fidinaysaa naanaysta amarka, waxayna soo celinaysaa ikhtiyaarada dhamaystirka amarka la dhamaystiray. Tani waxay ka dhigan tahay in suufka magaciisu yahay inuu u dhaqmo si la mid ah amar buuxa.

Kuwa soo socda, waxaan marka hore ku sharixi doonaa sida loo rakibo complete-alias ka dibna sida loo habeeyo si aan awood ugu yeesho dhamaystirka dhammaan aliases kubectl.

Ku rakibida magacyo dhammaystiran

First of dhan, complete-alias waxay ku xiran tahay bash-dhameystir. Sidaa darteed, ka hor inta aanad rakibin dhamaystiran-alias, waxaad u baahan tahay inaad hubiso in bash-completion la rakibay. Tilmaamaha rakibidda ayaa horay loogu bixiyay Linux iyo MacOS.

Xusuusin muhiim u ah Isticmaalayaasha MacOSSida qoraalka kubectl autocompletion , complete-alias kuma shaqeeyo Bash 3.2, taas oo ah asalka MacOS. Gaar ahaan, dhamaystiran-alias waxay kuxirantahay dhamaystirka v2 (brew install bash-completion@2), oo u baahan ugu yaraan Bash 4.1. Tani waxay ka dhigan tahay in si aad u isticmaasho macOS dhamaystiran waxaad u baahan tahay inaad ku rakibto nooc cusub oo Bash ah.

Waxaad u baahan tahay inaad soo dejiso qoraalka bash_dhameystiran.sh ka Kaydka GitHub oo ku dar faylkaaga ~/.bashrc:

source ~/bash_completion.sh

Ka dib dib-u-kicinta qolofka, magacyo dhammaystiran ayaa si buuxda loo rakibayaa.

Awood u yeelashada dhamaystirka otomaatiga ee magacyada kubectl

Farsamo ahaan dhammaystiran-alias waxay bixisaa shaqada duubista _complete_alias. Shaqadani waxay hubisaa naanaysta waxayna soo celisaa tilmaamihii dhammaystirka ee amarka naanaysiga.

Si aad shaqada ula xidhiidho magacyo gaar ah, waxaad u baahan tahay inaad isticmaasho habka Bash-ku-dhisan complete, si loo rakibo _complete_alias sida shaqada dhamaystirka magac ahaan.

Tusaale ahaan, aan soo qaadanno alias k, oo u taagan amarka kubectl. si loo rakibo _complete_alias Sida shaqada dhamaystirka ee naanaystan, waa inaad socodsiisaa amarka soo socda:

$ complete -F _complete_alias k

Natiijadu waxay tahay in mar kasta oo aad dhammaystirto alias k, shaqada ayaa loo yaqaan _complete_alias, kaas oo hubiya naanaysta oo soo celisa dhammaystirka tilmaamaha kubectl.

Tusaale labaad, aan soo qaadanno magaca loo yaqaanno kg, taas oo tilmaamaysa kubectl get:

$ complete -F _complete_alias kg

Si la mid ah tusaalihii hore, marka aad si otomaatig ah u dhammaystirto kg, waxaad helaysaa tilmaamihii dhammaystirka ee aad heli lahayd kubectl get.

Ogsoonow inaad u isticmaali karto naanaysta dhammaystiran ee naanaysta kasta oo nidaamkaaga ah.

Sidaa darteed, si aad awood ugu yeelatid dhammaystirka dhammaan magacyada kubectl, waxaad u baahan tahay inaad ku socodsiiso amarka kor ku xusan mid kasta oo iyaga ka mid ah. Qaybta soo socota ayaa si sax ah tan u samaynaysa, waa haddii aad u dejisay kubectl-aliases ~/.kubectl-aliases:

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

Koodhkan wuxuu u baahan yahay in la geliyo kaaga ~/.bashrc, dib u bilaabo qolofka taliska iyo dhamaystirka otomaatiga ayaa diyaar u noqon doona dhammaan magacyada kubectl 800.

6. Kordhinta kubectl oo leh plugins

Laga bilaabo nooca 1.12, kubectl taageertaa habka plugin, kaas oo kuu ogolaanaya inaad ku balaadhiso shaqadeeda oo leh amarro dheeraad ah.

Haddaad aqoon u leedahay Hababka plugin Git, ka dibna kubectl plugins ayaa lagu dhisay isla mabda'a.

Cutubkan, waxaan ku dabooli doonaa sida loo rakibo plugins, halka laga helo, iyo sida loo abuuro plugins adiga kuu gaar ah.

Ku rakibida plugins

Kubectl plugins waxaa loo qaybiyaa sidii faylal fudud oo la fulin karo oo leh magaca sida kubectl-x. Horgale kubectl- ayaa loo baahan yahay, oo ay ku xigto amar-hoosaad cusub oo kubectl kaas oo kuu ogolaanaya inaad wacdo plugin.

Tusaale ahaan, plugin hello waxaa loo qaybin doonaa sida fayl la yiraahdo kubectl-hello.

Si aad u rakibto plugin, waxaad u baahan tahay inaad nuqul ka sameyso faylka kubectl-x Buug kasta oo ku yaal PATH-gaaga oo ka dhig mid la fulin karo, tusaale ahaan chmod +x. Isla markiiba ka dib waxaad wici kartaa plugin leh kubectl x.

Waxaad isticmaali kartaa amarka soo socda si aad u taxdo dhammaan plugins-yada hadda lagu rakibay nidaamkaaga:

$ kubectl plugin list

Amarkani waxa kale oo uu muujin doonaa digniino haddii aad leedahay plugins badan oo isku magac ah, ama haddii uu jiro fayl plugins ah oo aan la fulin karin.

Helitaanka iyo ku rakibida plugins iyadoo la adeegsanayo Krew

Kubectl plugins waa la wadaagi karaa ama dib ayaa loo isticmaali karaa sida xirmooyinka software. Laakiin halkee ka heli kartaa plugins in kuwa kale la wadaago?

Mashruuca Crew ujeedadeedu tahay inay bixiso xal midaysan wadaagga, raadinta, ku rakibida iyo maaraynta plugins kubectl. Mashruucu wuxuu naftiisa ugu yeeraa "maamulaha xirmada ee kubectl plugins" (Krew wuxuu la mid yahay Brew).

Krew waa liiska kubectl plugins oo aad dooran karto oo rakibi karto. Isla mar ahaantaana, Krew sidoo kale waa plugin loogu talagalay kubectl.

Tani waxay ka dhigan tahay in rakibidda Krew ay u shaqeyso asal ahaan sida ku rakibida kubectl kasta oo kale. Waxaad ka heli kartaa tilmaamo faahfaahsan halkan Bogga GitHub.

Amarrada ugu muhiimsan ee Krew waa:

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

Fadlan la soco in rakibidda plugins iyadoo la adeegsanayo Krew aysan faragelin ku dhejinta plugins iyadoo la adeegsanayo habka caadiga ah ee kor lagu sharraxay.

Fadlan ogow in amarka kubectl krew list kaliya waxay soo bandhigaysaa plugins lagu rakibay iyadoo la adeegsanayo Krew, halka amarka kubectl plugin list wuxuu taxayaa dhammaan plugins, taas oo ah, kuwa lagu rakibay iyadoo la adeegsanayo Krew iyo kuwa lagu rakibay habab kale.

Helitaanka Plugins Meel kale

Krew waa mashruuc da'yar, oo hadda ku jira liiska kaliya 30 plugins. Haddii aadan heli karin waxaad u baahan tahay, waxaad ka heli kartaa plugins meel kale, sida GitHub.

Waxaan ku talinayaa in la eego qaybta GitHub kubectl-plugins. Halkaa waxaad ka heli doontaa daraasiin plugins ah oo la heli karo oo mudan in la hubiyo.

Qorista plugins adiga kuu gaar ah

adaa awoodaa abuur plugins - Ma adka. Waxaad u baahan tahay inaad abuurto mid fulin kara oo qabanaya waxaad u baahan tahay, u magacow sida kubectl-x oo ku rakib sida kor lagu sharaxay.

Faylku wuxuu noqon karaa qoraal bash ah, qoraal python ah, ama codsi GO la soo ururiyey - dhib ma leh. Shuruudda kaliya ayaa ah in si toos ah loogu fulin karo nidaamka hawlgalka.

Aynu abuurno plugin tusaale hadda. Qaybtii hore, waxaad isticmaashay amarka kubectl si aad u taxdo weelasha boodhka kasta. Way fududahay in amarkan loo rogo plugin aad wici karto tusaale ahaan. kubectl img.

Samee fayl kubectl-img nuxurka soo socda:

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

Hadda ka dhig faylka lagu fulin karo chmod +x kubectl-img oo u wareeji hage kasta oo PATH ah. Isla markiiba ka dib waxaad isticmaali kartaa plugin kubectl img.

Sida ku xusan, kubectl plugins waxaa lagu qori karaa barnaamij kasta ama luqad qoraal ah. Haddii aad isticmaalayso qoraallada qolofka, faa'iidada aad u leedahay inaad si fudud uga soo wacdo kubectl gudaha plugin. Si kastaba ha ahaatee, waxaad ku qori kartaa plugins aad u adag oo ku qoran luqadaha barnaamijka dhabta ah adoo isticmaalaya Kubernetes maktabadda macmiilka. Haddii aad isticmaalayso Go, waxaad sidoo kale isticmaali kartaa cli-runtime maktabadda, kaas oo si gaar ah u jira qorista kubectl plugins.

Sida loo wadaago plugins-yadaada

Haddii aad u malaynayso in pluginsadu ay faa'iido u yeelan karaan kuwa kale, xor u noqo inaad ku wadaagto GitHub. Hubi inaad ku darto mawduuca kubectl-plugins.

Waxa kale oo aad codsan kartaa in pluginkaaga lagu daro Liiska krew. Tilmaamaha sida tan loo sameeyo ayaa ku jira Goobaha GitHub.

Dhamaystirka amarka

Plugins hadda ma taageeraan dhamaystirka otomaatiga. Taasi waa, waa inaad gelisaa magaca buuxa ee plugin iyo magacyada buuxa ee doodaha.

Kaydka GitHub kubectl ee hawshan ayaa leh codsi furan. Markaa waxa suurtogal ah in sifadan la hirgelin doono wakhti mustaqbalka ah.

Nasiib wacan!!!

Maxaa kale oo laga akhriyi mawduuca:

  1. Saddex heer oo autoscaling gudaha Kubernetes iyo sida loo isticmaalo si wax ku ool ah.
  2. Kubernetes oo ku jira niyadda budhcad-badeednimada oo wata hab-raac dhaqangelineed.
  3. Kanaalkayaga Kubernetes ee Telegram.

Source: www.habr.com

Add a comment