Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Yog tias koj ua haujlwm nrog Kubernetes, ces kubectl yog ib qho ntawm cov khoom siv uas koj siv feem ntau. Thiab thaum twg koj siv sijhawm ntau ua haujlwm nrog ib qho cuab yeej, nws them nyiaj los kawm nws kom zoo thiab kawm paub siv nws zoo.

pab neeg Kubernetes aaS los ntawm Mail.ru txhais ib tsab xov xwm los ntawm Daniel Weibel nyob rau hauv uas koj yuav pom cov lus qhia thiab tricks rau kev ua hauj lwm zoo nrog kubectl. Nws tseem yuav pab koj nkag siab tob txog Kubernetes.

Raws li tus kws sau ntawv, lub hom phiaj ntawm tsab xov xwm yog ua kom koj txoj haujlwm niaj hnub nrog Kubernetes tsis yog tsuas yog siv tau zoo dua, tab sis kuj muaj txiaj ntsig zoo dua!

Taw qhia: kubectl yog dab tsi

Ua ntej koj tuaj yeem kawm siv kubectl zoo dua, koj yuav tsum tau nkag siab txog qhov nws yog dab tsi thiab nws ua haujlwm li cas.

Los ntawm tus neeg siv txoj kev xav, kubectl yog lub vaj huam sib luag tswj uas tso cai rau koj ua haujlwm Kubernetes.

Kev hais lus, kubectl yog Kubernetes API tus thov kev pab.

Kubernetes API yog HTTP REST API. Qhov API no yog qhov tseeb Kubernetes tus neeg siv interface, los ntawm qhov nws tau tswj hwm tag nrho. Qhov no txhais tau tias txhua qhov haujlwm Kubernetes raug nthuav tawm raws li API qhov kawg thiab tuaj yeem ua nrog HTTP thov rau qhov kawg.

Yog li, txoj haujlwm tseem ceeb ntawm kubectl yog ua HTTP thov rau Kubernetes API:

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Kubernetes yog ib qho kev pab cuam-taw qhia tag nrho. Qhov no txhais tau hais tias nws tswj hwm lub xeev ntawm cov peev txheej thiab tag nrho cov haujlwm Kubernetes yog CRUD cov haujlwm.

Koj tau tswj hwm tag nrho Kubernetes los ntawm kev tswj hwm cov peev txheej no, thiab Kubernetes txheeb xyuas seb yuav ua li cas raws li lub xeev tam sim no ntawm cov peev txheej. Vim li no, Kubernetes API siv tau teeb tsa raws li cov npe ntawm cov peev txheej nrog lawv cov haujlwm cuam tshuam.

Cia peb saib ib qho piv txwv.

Wb hais tias koj xav tsim ib ReplicaSet peev txheej. Ua li no, koj piav qhia txog ReplicaSet hauv cov ntaub ntawv los ntawm lub npe replicaset.yaml, ces khiav qhov hais kom ua:

$ kubectl create -f replicaset.yaml

Qhov no yuav tsim ib qhov chaw ReplicaSet. Tab sis dab tsi tshwm sim tom qab scenes?

Kubernetes muaj ReplicaSet tsim ua haujlwm. Zoo li lwm yam kev ua haujlwm, nws raug nthuav tawm raws li API qhov kawg. Qhov tshwj xeeb API kawg rau kev ua haujlwm no zoo li no:

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

API kawg rau txhua qhov haujlwm Kubernetes tuaj yeem pom ntawm API siv (suav nrog saum toj kawg nkaus). Txhawm rau ua qhov kev thov tiag tiag rau qhov kawg, koj yuav tsum xub ntxiv API server URL rau qhov kawg ntawm txoj hauv kev uas tau teev tseg hauv API siv.

Li no, thaum koj ua raws li cov lus txib saum toj no, kubectl xa HTTP POST thov mus rau API qhov kawg. ReplicaSet txhais koj muab rau hauv cov ntaub ntawv replicaset.yaml, yog xa mus rau hauv lub cev ntawm qhov kev thov.

Qhov no yog li cas kubectl ua haujlwm rau txhua cov lus txib uas cuam tshuam nrog Kubernetes pawg. Hauv txhua qhov xwm txheej no, kubectl tsuas yog ua HTTP thov rau Kubernetes API qhov kawg.

Thov nco ntsoov tias koj tuaj yeem tswj hwm Kubernetes tag nrho siv cov khoom siv xws li curllos ntawm manually xa HTTP thov mus rau Kubernetes API. Kubectl tsuas yog ua kom yooj yim dua los siv Kubernetes API.

Qhov no yog lub hauv paus ntawm kubectl yog dab tsi thiab nws ua haujlwm li cas. Tab sis muaj lwm yam hais txog Kubernetes API uas txhua tus neeg siv kubectl yuav tsum paub. Cia peb saib sai ntawm lub ntiaj teb sab hauv ntawm Kubernetes.

Lub ntiaj teb sab hauv ntawm Kubernetes

Kubernetes muaj cov txheej txheem ywj pheej uas khiav raws li cov txheej txheem cais ntawm pawg nodes. Qee cov khoom siv ua haujlwm ntawm tus tswv nodes, lwm tus ntawm cov neeg ua haujlwm ntawm cov neeg ua haujlwm, txhua yam ua nws txoj haujlwm tshwj xeeb.

Ntawm no yog cov khoom tseem ceeb tshaj plaws ntawm lub ntsiab nodes:

  1. Vault - khaws cov ntaub ntawv txhais lus (feem ntau nws yog etcd).
  2. API server - muab API thiab tswj kev cia.
  3. Tswj Tus Tswj - Xyuas kom meej tias cov xwm txheej ntawm cov peev txheej ua tau raws li cov lus qhia tshwj xeeb.
  4. Teem sijhawm - teem sijhawm pods ntawm cov neeg ua haujlwm nodes.

Thiab ntawm no yog ib qho tseem ceeb tshaj plaws ntawm cov neeg ua haujlwm nodes:

  1. Kubelet - tswj kev tso tawm cov ntim ntawm cov haujlwm ua haujlwm.

Yuav kom nkag siab tias cov khoom no ua haujlwm ua ke li cas, cia peb saib ib qho piv txwv.

Cia peb xav tias koj nyuam qhuav ua tiav kubectl create -f replicaset.yaml, tom qab uas kubectl tau thov HTTP POST rau ReplicaSet API endpoint (dhau qhov ReplicaSet resource txhais).

Dab tsi tshwm sim hauv pawg?

  1. Tom qab ua kubectl create -f replicaset.yaml API server khaws koj ReplicaSet cov lus txhais hauv kev cia:

    Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws

  2. Tom ntej no, ReplicaSet maub los yog launched nyob rau hauv tus maub los tus tswj, uas tswj kev tsim, hloov kho thiab tshem tawm ntawm ReplicaSet cov peev txheej:

    Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws

  3. Lub ReplicaSet maub los tsim cov ntsiab lus ntawm lub plhaub rau txhua qhov ReplicaSet replica (raws li cov qauv pod hauv ReplicaSet txhais) thiab khaws cia rau hauv:

    Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws

  4. Lub sijhawm teem sijhawm tau pib, taug qab cov pods uas tseem tsis tau raug xa mus rau ib qho ntawm cov neeg ua haujlwm:

    Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws

  5. Tus neeg teem sijhawm xaiv tus neeg ua haujlwm tsim nyog rau txhua lub pod thiab ntxiv cov ntaub ntawv no rau cov ntsiab lus ntawm lub plhaub hauv khw:

    Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws

  6. Ntawm tus neeg ua haujlwm node uas lub plhaub tau txais, Kubelet tau pib, nws taug qab cov pods tau muab rau cov node:

    Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws

  7. Lub Kubelet nyeem cov ntsiab lus ntawm lub plhaub los ntawm kev khaws cia thiab qhia lub sijhawm ua haujlwm ntawm lub thawv, xws li Docker, kom tso cov thawv rau ntawm lub pob:

    Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws

Hauv qab no yog cov ntawv nyeem ntawm qhov kev piav qhia no.

Qhov kev thov API rau ReplicaSet tsim qhov kawg yog ua tiav los ntawm API server. API server authenticates qhov kev thov thiab khaws cov ReplicaSet cov lus txhais hauv kev cia.

Qhov kev tshwm sim no pib lub ReplicaSet maub los, uas yog ib qho kev ua haujlwm ntawm tus tswj tswj. Lub ReplicaSet maub los saib xyuas kev tsim, hloov kho, thiab tshem tawm ntawm ReplicaSet cov peev txheej hauv khw thiab tau txais kev ceeb toom xwm txheej thaum qhov no tshwm sim.

Lub ReplicaSet maub los txoj haujlwm yog los xyuas kom meej tias qhov xav tau ntawm ReplicaSet pods muaj nyob. Hauv peb qhov piv txwv, tsis muaj pods tseem muaj, yog li tus tswj hwm ReplicaSet tsim cov ntsiab lus ntawm cov pods (raws li cov qauv pods hauv ReplicaSet txhais) thiab khaws cia rau hauv qhov chaw cia.

Kev tsim cov pods tshiab yog tshwm sim los ntawm lub sijhawm teem sijhawm uas ua raws cov ntsiab lus ntawm cov pods uas tseem tsis tau teem sijhawm rau cov neeg ua haujlwm nodes. Tus teem sijhawm xaiv tus neeg ua haujlwm tsim nyog rau txhua lub pods thiab hloov kho cov ntsiab lus ntawm cov pods hauv qhov chaw cia khoom.

Nco ntsoov tias mus txog rau thaum lub sijhawm no, tsis muaj cov lej ua haujlwm tau ua haujlwm nyob qhov twg hauv pawg. Txhua yam uas tau ua los txog tam sim no - qhov no yog kev tsim thiab hloov kho cov peev txheej hauv qhov chaw khaws cia ntawm tus tswv node.

Qhov kawg tshwm sim ua rau Kubelets, uas saib xyuas cov pods teem rau lawv cov neeg ua haujlwm ntawm cov neeg ua haujlwm. Lub Kubelet ntawm tus neeg ua haujlwm node uas koj lub ReplicaSet pods tau teeb tsa yuav tsum qhia lub sijhawm ntim khoom, xws li Docker, txhawm rau rub tawm cov duab ntim uas xav tau thiab khiav lawv.

Lub sijhawm no, koj daim ntawv thov ReplicaSet thaum kawg ua haujlwm!

Lub luag haujlwm ntawm Kubernetes API

Raws li koj tau pom hauv qhov piv txwv dhau los, Kubernetes cov khoom (tshwj tsis yog rau API server thiab chaw cia khoom) saib rau kev hloov pauv cov peev txheej hauv kev khaws cia thiab hloov cov ntaub ntawv hais txog cov peev txheej hauv kev khaws cia.

Tau kawg, cov khoom no tsis cuam tshuam nrog kev cia ncaj qha, tab sis tsuas yog los ntawm Kubernetes API.

Xav txog cov piv txwv hauv qab no:

  1. Tus tswj hwm ReplicaSet siv API kawg npe ReplicaSets nrog parameter watch los saib xyuas cov kev hloov pauv rau ReplicaSet cov peev txheej.
  2. Tus tswj hwm ReplicaSet siv API kawg tsim Pod (tsim pods) los tsim pods.
  3. Scheduler siv API endpoint thaj pod (hloov pods) los hloov cov pods nrog cov ntaub ntawv hais txog cov neeg ua haujlwm xaiv ntawm node.

Raws li koj tuaj yeem pom, qhov no yog tib API uas kubectl nkag. Siv tib API rau cov khoom siv sab hauv thiab cov neeg siv sab nraud yog lub tswv yim tseem ceeb hauv Kubernetes tsim.

Tam sim no peb tuaj yeem xaus li cas Kubernetes ua haujlwm:

  1. Cov chaw khaws cia hauv xeev, uas yog, Kubernetes cov peev txheej.
  2. API server muab kev sib txuas rau kev khaws cia hauv daim ntawv ntawm Kubernetes API.
  3. Tag nrho lwm yam Kubernetes Cheebtsam thiab cov neeg siv nyeem, saib, thiab tswj xyuas Kubernetes xeev (peev txheej) los ntawm API.

Paub cov ntsiab lus no yuav pab koj nkag siab kubectl zoo dua thiab tau txais txiaj ntsig zoo tshaj plaws.

Tam sim no cia saib qee cov lus qhia tshwj xeeb thiab kev ua kom yuam kev uas yuav pab txhim kho koj cov khoom lag luam nrog kubectl.

1. Ceev cov tswv yim siv cov lus txib ua kom tiav

Ib qho tseem ceeb tshaj plaws, tab sis feem ntau tsis saib xyuas, cov tswv yim los txhim kho kev ua haujlwm nrog kubectl yog kev ua tiav.

Kev hais kom ua tiav tso cai rau koj tuaj yeem ua tiav qhov chaw ntawm kubectl cov lus txib siv tus yuam sij Tab. Qhov no ua haujlwm rau cov lus txib, cov kev xaiv, thiab cov lus sib cav, suav nrog qee yam nyuaj xws li cov npe cov ntaub ntawv.

Saib yuav ua li cas kubectl hais kom ua tiav ua haujlwm:

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Kev hais kom ua tiav ua haujlwm rau Bash thiab Zsh plhaub.

Phau Ntawv Qhia muaj cov lus qhia ntxaws ntxaws rau kev teeb tsa autocompletion, tab sis hauv qab no peb yuav muab luv luv excerpt.

Yuav ua li cas hais kom ua tiav

Kev hais kom ua tiav yog lub plhaub feature uas ua haujlwm siv cov ntawv ua tiav. Ib tsab ntawv txuas ntxiv yog daim ntawv plhaub uas txhais cov cwj pwm ntawm qhov txuas ntxiv rau ib qho lus txib tshwj xeeb.

Kubectl cia li tsim thiab tso tawm cov ntawv txuas ntxiv rau Bash thiab Zsh siv cov lus txib hauv qab no:

$ kubectl completion bash

Los yog:

$ kubectl completion zsh

Hauv txoj kev xav, nws txaus los txuas cov zis ntawm cov lus txib no mus rau lub plhaub uas tsim nyog kom kubectl tuaj yeem ua tiav cov lus txib.

Hauv kev xyaum, txoj kev sib txuas yog txawv rau Bash (xws li qhov sib txawv ntawm Linux thiab MacOS) thiab Zsh. Hauv qab no peb yuav saib tag nrho cov kev xaiv no.

Bash ntawm Linux

Cov ntawv sau tiav Bash nyob ntawm pob bash-ua tiav, yog li koj yuav tsum tau nruab nws ua ntej:

$ sudo apt-get install bash-completion

Los yog:

$ yum install bash-completion

Koj tuaj yeem kuaj tau tias lub pob tau teeb tsa tiav siv cov lus txib hauv qab no:

$ type _init_completion

Yog hais tias qhov no outputs plhaub muaj nuj nqi code, ces bash-ua tiav yog ntsia kom raug. Yog tias cov lus txib muab qhov yuam kev "Tsis Pom", koj yuav tsum ntxiv cov kab hauv qab no rau koj cov ntaub ntawv ~ / .bashrc:

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

Puas yog nws tsim nyog ntxiv kab no rau hauv cov ntaub ntawv ~ / .bashrc los yog tsis nyob ntawm tus thawj tswj pob uas koj siv los nruab bash-ua tiav. Qhov no yog qhov tsim nyog rau APT, tab sis tsis yog rau YUM.

Tom qab txhim kho bash-ua tiav, koj yuav tsum teeb tsa txhua yam kom cov ntawv ua tiav kubectl tau qhib rau hauv txhua lub plhaub ntu.

Ib txoj hauv kev ua qhov no yog ntxiv cov kab hauv qab no rau cov ntaub ntawv ~ / .bashrc:

source <(kubectl completion bash)

Lwm txoj hauv kev yog ntxiv cov ntawv txuas ntxiv kubectl rau hauv phau ntawv teev npe /etc/bash_completion.d (tsim nws yog tias nws tsis muaj):

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

Tag nrho cov add-on scripts hauv catalog /etc/bash_completion.d tau cia li suav nrog hauv bash-ua tiav.

Ob qho kev xaiv yog sib npaug.

Tom qab rov pib lub plhaub, kubectl hais kom ua tiav yuav ua haujlwm.

Bash ntawm macOS

Ntawm MacOS qhov teeb tsa yog qhov nyuaj me ntsis. Qhov tseeb yog tias los ntawm lub neej ntawd, MacOS siv Bash version 3.2, thiab cov ntawv kubectl autocompletion yuav tsum muaj Bash version tsawg kawg 4.1 thiab tsis ua haujlwm hauv Bash 3.2.

Muaj cov teeb meem kev tso cai cuam tshuam nrog kev siv cov ntawv qub ntawm Bash ntawm MacOS. Bash version 4 muaj ntawv tso cai raws li GPLv3, uas tsis txhawb nqa los ntawm Apple.

Txhawm rau teeb tsa kubectl autocompletion ntawm macOS, koj yuav tsum nruab ib qho tshiab ntawm Bash. Koj tuaj yeem teeb tsa qhov hloov tshiab Bash li koj lub plhaub qub, uas yuav cawm koj ntau yam teeb meem yav tom ntej. Nws tsis yooj yim, cov ntsiab lus tau muab rau hauv kab lus "Hloov kho Bash ntawm MacOS".

Ua ntej txuas ntxiv, xyuas kom tseeb tias koj tab tom siv qhov tsis ntev los no ntawm Bash (xyuas cov zis bash --version).

Bash ua tiav tsab ntawv txawv ntawm qhov project bash-ua tiav, yog li koj yuav tsum tau nruab nws ua ntej.

Koj tuaj yeem nruab bash-ua tiav siv Homebrew:

$ brew install bash-completion@2

nws yog @2 stands for bash-completion version 2. kubectl autocompletion yuav tsum tau bash-completion v2, thiab bash-completion v2 yuav tsum muaj tsawg kawg nkaus ntawm Bash version 4.1.

Hais kom tso zis brew-install muaj ntu Caveats, uas qhia txog yam yuav tsum tau muab ntxiv rau hauv cov ntaub ntawv ~/.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"

Txawm li cas los xij, kuv pom zoo kom ntxiv cov kab no tsis txhob ~/.bash_profile, thiab hauv ~/.bashrc. Nyob rau hauv cov ntaub ntawv no, autocompletion yuav muaj tsis tau tsuas yog nyob rau hauv lub ntsiab, tab sis kuj nyob rau hauv cov me nyuam cov lus txib shells.

Tom qab rov pib dua lub plhaub hais kom ua, koj tuaj yeem txheeb xyuas qhov kev teeb tsa muaj tseeb siv cov lus txib hauv qab no:

$ type _init_completion

Yog tias koj pom lub plhaub ua haujlwm hauv cov zis, ces txhua yam yog teeb tsa kom raug.

Tam sim no peb yuav tsum xyuas kom meej tias kubectl autocompletion yog enabled nyob rau hauv tag nrho cov zaug.

Ib txoj hauv kev yog ntxiv cov kab hauv qab no rau koj ~/.bashrc:

source <(kubectl completion bash)

Qhov thib ob txoj kev yog ntxiv ib tsab ntawv autocomplete rau hauv daim nplaub tshev /usr/local/etc/bash_completion.d:

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

Txoj kev no tsuas yog ua haujlwm yog tias koj tau teeb tsa bash-ua tiav siv Homebrew. Hauv qhov no, bash-ua tiav loads tag nrho cov ntawv sau los ntawm phau ntawv no.

Yog tias koj ntsia kubectl siv Homebrew, tom qab ntawd tsis tas yuav ua cov kauj ruam dhau los, txij li tsab ntawv autocompletion yuav raug muab tso rau hauv daim nplaub tshev /usr/local/etc/bash_completion.d thaum lub sij hawm installation. Hauv qhov no, kubectl autocompletion yuav pib ua haujlwm sai li sai tau thaum koj nruab bash-ua tiav.

Yog li ntawd, tag nrho cov kev xaiv no sib npaug.

Zsh

Autocompletion scripts rau Zsh tsis tas yuav muaj kev vam meej. Txhua yam koj yuav tsum tau ua yog pab kom lawv thaum koj thauj khoom lub plhaub hais kom ua.

Koj tuaj yeem ua qhov no los ntawm kev ntxiv ib kab rau koj ~/.zshrc ntaub ntawv:

source <(kubectl completion zsh)

Yog tias koj tau txais qhov yuam kev not found: compdef Tom qab restarting koj lub plhaub, koj yuav tsum tau pab kom lub builtin muaj nuj nqi compdef. Koj tuaj yeem pab nws los ntawm kev ntxiv nws rau qhov pib ntawm koj cov ntaub ntawv ~/.zshrc Cov hauv qab no:

autoload -Uz compinit
compinit

2. Ceev ceev saib cov kev qhia tshwj xeeb

Thaum koj tsim YAML cov lus txhais, koj yuav tsum paub cov teb thiab lawv lub ntsiab lus rau cov peev txheej ntawd. Ib qhov chaw los nrhiav cov ntaub ntawv no yog nyob rau hauv API siv, uas muaj cov lus qhia ua tiav rau txhua qhov kev pabcuam.

Txawm li cas los xij, hloov mus rau lub vev xaib browser txhua zaus koj xav tau tshawb nrhiav qee yam tsis yooj yim. Yog li kubectl muab cov lus txib kubectl explain, uas qhia cov kev qhia tshwj xeeb ntawm txhua qhov kev pabcuam hauv koj lub davhlau ya nyob twg.

Cov hom ntawv hais kom ua yog raws li nram no:

$ kubectl explain resource[.field]...

Cov lus txib yuav tso tawm qhov tshwj xeeb ntawm cov ntaub ntawv thov lossis daim teb. Cov ntaub ntawv tso tawm yog zoo ib yam li uas muaj nyob rau hauv phau ntawv API.

los ntawm neej ntawd hais kubectl explain qhia tsuas yog thawj theem ntawm nesting ntawm teb.

Saib seb nws zoo li cas tuaj yeem nyob ntawm no.

Koj tuaj yeem tso saib tag nrho tsob ntoo yog tias koj ntxiv qhov kev xaiv --recursive:

$ kubectl explain deployment.spec --recursive

Yog tias koj tsis paub meej tias cov peev txheej twg xav tau, koj tuaj yeem tso lawv tag nrho nrog cov lus txib hauv qab no:

$ kubectl api-resources

Cov lus txib no qhia cov npe cov npe hauv ntau daim ntawv, xws li. deployments es tsis txhob deployment. Nws kuj qhia lub npe luv, piv txwv li deploy, rau cov peev txheej uas muaj nws. Tsis txhob txhawj txog qhov sib txawv no. Tag nrho cov kev xaiv npe no sib npaug rau kubectl. Ntawd yog, koj tuaj yeem siv ib qho ntawm lawv rau kubectl explain.

Tag nrho cov lus txib hauv qab no yog sib npaug:

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

3. Siv ib qho kev cai kem tso zis hom

Default command output format 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

Hom ntawv no yooj yim, tab sis nws muaj cov ntaub ntawv tsawg. Piv nrog rau tag nrho cov peev txheej txhais hom ntawv, tsuas yog ob peb lub teb tau tshwm sim ntawm no.

Nyob rau hauv cov ntaub ntawv no, koj yuav siv tau ib tug kev cai kem tso zis hom ntawv. Nws tso cai rau koj los txiav txim seb cov ntaub ntawv twg yuav tso tawm. Koj tuaj yeem tso saib txhua qhov chaw ua haujlwm raws li kab ke cais.

Kev siv hom kev cai yog txiav txim siab siv cov kev xaiv:

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

Koj tuaj yeem txhais txhua kab ntawv tso tawm ua ib khub <header>:<jsonpath>qhov twg <header> yog lub npe kab, thiab <jsonpath> - ib qho kev qhia txhais tau hais tias muaj peev txheej.

Cia peb saib ib qho piv txwv yooj yim:

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

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

Cov zis muaj ib kem nrog cov npe ntawm cov pods.

Qhov kev xaiv qhia xaiv cov npe pods los ntawm daim teb metadata.name. Qhov no yog vim hais tias lub npe ntawm cov pod yog txhais nyob rau hauv cov me nyuam lub npe teb metadata nyob rau hauv cov ntaub ntawv piav qhia ntawm lub pod. Xav paub ntau ntxiv tuaj yeem pom hauv API Qhia los yog ntaus ntawv hais kom ua kubectl explain pod.metadata.name.

Tam sim no cia peb hais tias koj xav ntxiv ib kem ntxiv rau cov zis, piv txwv li qhia cov node txhua lub pod tab tom khiav. Txhawm rau ua qhov no, koj tuaj yeem yooj yim ntxiv cov kab ke tsim nyog rau cov kab kev cai xaiv:

$ 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

Cov kab lus xaiv lub npe ntawm lub npe los ntawm spec.nodeName - Thaum lub plhaub tau muab tso rau ntawm lub pob, nws lub npe sau rau hauv daim teb spec.nodeName pod cov ntaub ntawv specification. Cov ncauj lus kom ntxaws ntxiv tuaj yeem pom hauv cov zis kubectl explain pod.spec.nodeName.

Thov nco ntsoov tias Kubernetes cov chaw muab kev pabcuam yog qhov tseem ceeb.

Koj tuaj yeem saib txhua qhov chaw ua haujlwm raws li kab ke. Tsuas yog tshuaj xyuas cov peev txheej tshwj xeeb thiab sim nws nrog txhua qhov koj nyiam.

Tab sis ua ntej, cia peb saib ze dua ntawm cov lus xaiv teb.

JSONPath Kev nthuav qhia

Cov lus qhia rau xaiv cov peev txheej yog nyob ntawm JSONPath.

JSONPath yog ib hom lus los muab cov ntaub ntawv los ntawm JSON cov ntaub ntawv. Xaiv ib daim teb yog cov ntaub ntawv siv yooj yim tshaj plaws rau JSONPath. Nws muaj ntau muaj peev xwm ntau, nrog rau cov neeg xaiv, cov ntxaij lim dej thiab lwm yam.

Kubectl piav qhia txhawb nqa tus lej tsawg ntawm JSONPath nta. Cov muaj peev xwm thiab cov piv txwv ntawm lawv siv tau piav qhia hauv qab no:

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

Tus neeg teb xov tooj [] tseem ceeb tshwj xeeb. Ntau qhov chaw ntawm Kubernetes yog cov npe, thiab tus neeg teb xov tooj no tso cai rau koj xaiv cov tswv cuab ntawm cov npe. Nws yog feem ntau siv nrog ib daim ntawv zoo li [*] los xaiv tag nrho cov ntsiab lus ntawm daim ntawv teev npe.

Daim ntawv thov piv txwv

Cov muaj peev xwm siv cov kev cai kem tso zis hom ntawv yog qhov kawg, raws li koj tuaj yeem tso saib txhua qhov chaw lossis kev sib txuas ntawm cov peev txheej hauv cov zis. Nov yog qee cov qauv apps, tab sis xav tias dawb tshawb nrhiav lawv tus kheej thiab nrhiav cov ntawv thov uas ua haujlwm rau koj.

  1. Tso cov duab ntim rau cov 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

    Cov lus txib no qhia txog lub thawv duab npe rau txhua lub pod.

    Nco ntsoov tias lub kaus mom tuaj yeem muaj ntau lub thawv, tom qab ntawd cov npe duab yuav tshwm rau ntawm ib kab, sib cais los ntawm commas.

  2. Pom cov node muaj zones:
    $ 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

    Cov lus txib no muaj txiaj ntsig yog tias koj pawg koom nrog hauv huab huab. Nws qhia thaj chaw muaj rau txhua qhov ntawm.

    Availability zone yog ib lub tswv yim huab uas txwv qhov chaw replication rau thaj tsam thaj chaw.

    Cov cheeb tsam muaj nyob rau txhua qhov yog tau los ntawm daim ntawv lo tshwj xeeb - failure-domain.beta.kubernetes.io/zone. Yog tias pawg no khiav hauv huab huab, daim ntawv lo no tau tsim thiab sau nrog cov npe ntawm thaj chaw muaj rau txhua qhov.

    Cov ntawv sau tsis yog ib feem ntawm Kubernetes cov kev qhia tshwj xeeb, yog li koj yuav tsis pom cov ntaub ntawv hais txog lawv hauv API Qhia. Txawm li cas los xij, lawv tuaj yeem pom (zoo li lwm cov ntawv sau) yog tias koj thov cov ntaub ntawv hais txog cov nodes hauv YAML lossis JSON hom:

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

    Qhov no yog ib txoj hauv kev zoo kom kawm paub ntau ntxiv txog cov peev txheej, ntxiv rau kev kawm cov peev txheej tshwj xeeb.

4. Yooj yim hloov ntawm pawg thiab cov npe chaw

Thaum kubectl ua kev thov rau Kubernetes API, nws thawj zaug nyeem cov ntaub ntawv kubeconfig kom tau txais tag nrho cov kev tsim nyog rau kev sib txuas.

Los ntawm lub neej ntawd cov ntaub ntawv kubeconfig yog ~/.kube/config. Feem ntau cov ntaub ntawv no yog tsim lossis hloov kho los ntawm cov lus txib tshwj xeeb.

Thaum koj ua haujlwm nrog ntau pawg, koj cov ntaub ntawv kubeconfig muaj cov chaw rau kev txuas mus rau tag nrho cov pawg. Koj xav tau ib txoj hauv kev los qhia cov lus txib kubectl uas pawg koj ua haujlwm nrog.

Hauv ib pawg, koj tuaj yeem tsim ntau lub npe chaw-ib hom virtual pawg hauv pawg pawg. Kubectl kuj txiav txim siab seb lub npe chaw twg siv raws li cov ntaub ntawv kubeconfig. Qhov no txhais tau tias koj kuj xav tau ib txoj hauv kev los qhia rau kubectl hais kom ua dab tsi namespace ua haujlwm nrog.

Hauv tshooj no peb yuav piav qhia seb nws ua haujlwm li cas thiab yuav ua li cas kom nws ua haujlwm tau zoo.

Nco ntsoov tias koj yuav muaj ntau cov ntaub ntawv kubeconfig teev nyob rau hauv KUBECONFIG ib puag ncig hloov pauv. Hauv qhov no, tag nrho cov ntaub ntawv no yuav muab tso ua ke rau hauv ib qho kev teeb tsa ntawm lub sijhawm ua haujlwm. Koj tuaj yeem hloov pauv lub neej ntawd kubeconfig cov ntaub ntawv los ntawm kev khiav kubectl nrog qhov ntsuas --kubeconfig. Saib cov ntaub ntawv raug cai.

kubeconfig files

Cia peb pom dab tsi raws nraim cov ntaub ntawv kubeconfig muaj:

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Raws li koj tuaj yeem pom, cov ntaub ntawv kubeconfig muaj ib txheej ntawm cov ntsiab lus. Cov ntsiab lus muaj peb yam:

  • Cluster β€” API URL ntawm pawg neeg rau zaub mov.
  • Tus neeg siv - tus neeg siv kev lees paub cov ntaub ntawv pov thawj hauv pawg.
  • Namespace - lub namespace siv thaum koom nrog pawg.

Hauv kev xyaum, lawv feem ntau siv ib lub ntsiab lus ib pawg hauv lawv cov kubeconfig. Txawm li cas los xij, koj tuaj yeem muaj ntau lub ntsiab lus hauv ib pawg, sib txawv los ntawm tus neeg siv lossis lub npe. Txawm li cas los xij, qhov kev teeb tsa ntau lub ntsiab lus no tsis tshua muaj tshwm sim, yog li feem ntau muaj ib-rau-ib daim ntawv qhia ntawm pawg thiab cov ntsiab lus.

Thaum twg los xij, ib qho ntawm cov ntsiab lus tam sim no:

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Thaum kubectl nyeem cov ntaub ntawv teeb tsa, nws ib txwm siv cov ntaub ntawv los ntawm cov ntsiab lus tam sim no. Hauv qhov piv txwv saum toj no, kubectl yuav txuas mus rau pawg Hare.

Raws li, hloov mus rau lwm pawg, koj yuav tsum hloov cov ntsiab lus tam sim no hauv cov ntaub ntawv kubeconfig:

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Tam sim no kubectl yuav txuas rau Fox pawg.

Txhawm rau hloov mus rau qhov sib txawv namespace hauv tib pawg, koj yuav tsum hloov tus nqi ntawm lub npe lub npe rau lub ntsiab lus tam sim no:

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Hauv qhov piv txwv saum toj no, kubectl yuav siv Fox pawg Prod namespace (yav dhau los Test namespace tau teeb tsa).

Nco ntsoov tias kubectl kuj muaj kev xaiv --cluster, --user, --namespace ΠΈ --context, uas tso cai rau koj los sau tus kheej cov ntsiab lus thiab cov ntsiab lus tam sim no nws tus kheej, tsis hais qhov twg tau teeb tsa hauv kubeconfig. Saib kubectl options.

Hauv txoj kev xav, koj tuaj yeem hloov pauv cov chaw hauv kubeconfig. Tab sis nws tsis yooj yim. Txhawm rau ua kom yooj yim rau cov haujlwm no, muaj ntau yam kev siv hluav taws xob uas tso cai rau koj hloov pauv tsis tau.

Siv kubectx

Ib qho khoom siv nrov heev rau kev hloov ntawm pawg thiab cov npe chaw.

Tus nqi hluav taws xob muab cov lus txib kubectx ΠΈ kubens hloov lub ntsiab lus tam sim no thiab namespace raws li.

Raws li tau hais, hloov cov ntsiab lus tam sim no txhais tau tias hloov cov pawg yog tias koj tsuas muaj ib lub ntsiab lus ntawm ib pawg.

Nov yog ib qho piv txwv ntawm kev khiav cov lus txib no:

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Qhov tseem ceeb, cov lus txib no tsuas yog hloov kho cov ntaub ntawv kubeconfig raws li tau piav qhia saum toj no.

rau nruab kubectx, ua raws li cov lus qhia ntawm Github.

Ob qho lus txib txhawb nqa autocompletion ntawm cov ntsiab lus thiab namespace npe, uas tshem tawm qhov xav tau los ntaus lawv tag nrho. Cov lus qhia rau kev teeb tsa autocompletion S, SΡ“S,.

Lwm qhov muaj txiaj ntsig zoo kubectx nws yog sib tham sib hom. Nws ua haujlwm nrog kev siv hluav taws xob fzf, uas yuav tsum tau muab cais. Txhim kho fzf cia li ua rau kev sib tham sib hom muaj nyob rau hauv kubectx. Sib tham sib, koj tuaj yeem xaiv cov ntsiab lus thiab lub npe chaw los ntawm kev sib tham pub dawb nrhiav interface muab los ntawm fzf.

Siv lub plhaub aliases

Koj tsis xav tau cov cuab yeej cais los hloov cov ntsiab lus tam sim no thiab lub npe chaw vim kubectl tseem muab cov lus txib rau qhov no. Yog lawm, pab neeg kubectl config muab cov lus txib rau kev kho cov ntaub ntawv kubeconfig.

Nov yog qee yam ntawm lawv:

  • kubectl config get-contexts: tso saib tag nrho cov ntsiab lus;
  • kubectl config current-context: tau txais cov ntsiab lus tam sim no;
  • kubectl config use-context: hloov cov ntsiab lus tam sim no;
  • kubectl config set-context: Hloov cov ntsiab lus ntsiab lus.

Txawm li cas los xij, siv cov lus txib ncaj qha tsis yooj yim heev vim tias lawv ntev. Koj tuaj yeem ua lub plhaub npe rau lawv uas yooj yim rau kev tua.

Kuv tau tsim cov npe npe raws li cov lus txib no uas muab kev ua haujlwm zoo ib yam li kubectx. Ntawm no koj tuaj yeem pom lawv hauv kev nqis tes ua:

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Nco ntsoov tias cov npe siv fzf los muab qhov kev sib tham sib tham pub dawb (xws li kubectx's interactive hom). Qhov no txhais tau tias koj xav tau pem fzfsiv cov npe no.

Nov yog cov ntsiab lus ntawm lawv tus kheej lub npe:

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

Txhawm rau teeb tsa cov npe npe no koj yuav tsum ntxiv cov ntsiab lus saum toj no rau koj cov ntaub ntawv ~/.bashrc los yog ~/.zshrc thiab reboot koj lub plhaub.

Siv cov plugins

Kubectl tso cai rau koj los thauj cov plugins uas tau ua tib yam li cov lus txib yooj yim. Koj tuaj yeem, piv txwv li, nruab kubectl-foo plugin thiab khiav nws los ntawm kev ua tiav cov lus txib kubectl foo.

Nws yuav yooj yim los hloov cov ntsiab lus thiab namespace hauv txoj kev no, piv txwv li los ntawm kev khiav kubectl ctx hloov cov ntsiab lus thiab kubectl ns hloov lub namespace.

Kuv tau sau ob lub plugins uas ua qhov no:

Kev ua haujlwm ntawm plugins yog ua raws li cov npe npe los ntawm ntu dhau los.

Nov yog qhov lawv ua haujlwm li cas:

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Nco ntsoov tias cov plugins siv fzf los muab kev sib tham sib tham pub dawb (xws li kubectx's interactive hom). Qhov no txhais tau tias koj xav tau pem fzfsiv cov npe no.

Txhawm rau nruab plugins, koj yuav tsum rub tawm cov ntawv sau npe hu ua kubectl-ctx ΠΈ kub ns mus rau ib phau ntawv teev npe hauv koj qhov kev hloov pauv PATH thiab ua rau lawv ua tiav nrog e.g. chmod +x. Tam sim ntawd tom qab qhov no koj yuav siv tau kubectl ctx ΠΈ kubectl ns.

5. Txo cov tswv yim nrog autoaliases

Plhaub aliases yog ib txoj hauv kev zoo kom ceev cov tswv yim. Qhov project kubectl-aliases muaj txog 800 shortcuts rau cov lus txib kubectl yooj yim.

Tej zaum koj yuav xav tsis thoob - ua li cas koj nco 800 lub npe? Tab sis koj tsis tas yuav nco ntsoov lawv txhua tus, vim tias lawv tau tsim raws li lub tswv yim yooj yim, uas tau muab hauv qab no:

Yuav siv kubectl zoo dua li cas: phau ntawv qhia ntxaws
Piv txwv li:

  1. kgpooyaml - kubectl tau pods oyaml
  2. ksysgsvcw β€” kubectl -n kube-system get svc w
  3. ksysrmcm -kubectl -n kube-system rm cm
  4. kgdepallsl - kubectl tau deployment tag nrho sl

Raws li koj tuaj yeem pom, lub npe npe yog tsim los ntawm cov khoom, txhua tus sawv cev rau ib qho tshwj xeeb ntawm cov lus txib kubectl. Txhua tus alias tuaj yeem muaj ib feem rau cov lus txib hauv paus, kev ua haujlwm, thiab cov peev txheej, thiab ntau yam khoom siv rau cov kev txwv. Koj tsuas yog "populate" cov khoom ntawm sab laug mus rau sab xis raws li daim duab saum toj no.

Daim duab qhia ntxaws tam sim no nyob ntawm GitHub. Nyob ntawd koj kuj nrhiav tau daim ntawv teev npe tag nrho.

Piv txwv li, lub alias kgpooyamlall yog sib npaug rau cov lus txib kubectl get pods -o yaml --all-namespaces.

Qhov txheeb ze ntawm cov kev xaiv tsis tseem ceeb: hais kom ua kgpooyamlall yog sib npaug rau cov lus txib kgpoalloyaml.

Koj tsis tas yuav siv tag nrho cov khoom raws li npe. Piv txwv li k, kg, klo, ksys, kgpo kuj siv tau. Ntxiv mus, koj tuaj yeem muab cov npe npe thiab cov lus txib tsis tu ncua lossis kev xaiv ntawm kab hais kom ua:

Piv txwv li:

  1. Hloov chaw kubectl proxy koj sau tau k proxy.
  2. Hloov chaw kubectl get roles koj sau tau kg roles (tam sim no tsis muaj lub npe hu ua Roles resource).
  3. Yuav kom tau txais cov ntaub ntawv rau ib lub pod tshwj xeeb, koj tuaj yeem siv cov lus txib kgpo my-pod β€” kubectl get pod my-pod.

Thov nco ntsoov tias qee cov npe npe yuav tsum muaj kev sib cav hais kom ua. Piv txwv li, alias kgpol txhais tau tias kubectl get pods -l. Kev xaiv -l yuav tsum muaj kev sib cav - daim ntawv lo specification. Yog tias koj siv lub alias nws yuav zoo li kgpol app=ui.

Vim tias qee lub npe yuav tsum muaj kev sib cav, lub npe a, f, thiab l yuav tsum siv kawg.

Feem ntau, thaum koj tau txais lub hang ntawm cov tswv yim no, koj tuaj yeem intuitively muab cov npe npe los ntawm cov lus txib uas koj xav ua thiab txuag ntau lub sijhawm ntaus ntawv.

kev teeb tsa

Txhawm rau nruab kubectl-aliases, koj yuav tsum rub tawm cov ntaub ntawv .kubectl_aliases los ntawm GitHub thiab suav nrog nws hauv cov ntaub ntawv ~/.bashrc los yog ~/.zshrc:

source ~/.kubectl_aliases

Autocompletion

Raws li peb tau hais ua ntej, koj feem ntau ntxiv cov lus ntxiv rau lub npe alias ntawm kab hais kom ua. Piv txwv li:

$ kgpooyaml test-pod-d4b77b989

Yog tias koj siv kubectl hais kom ua tiav, tej zaum koj tau siv autocompletion rau tej yam xws li cov npe khoom. Tab sis qhov no puas tuaj yeem ua tiav thaum siv lub npe?

Qhov no yog ib lo lus nug tseem ceeb heev vim tias yog tias autocompletion tsis ua haujlwm, koj yuav poob qee qhov txiaj ntsig ntawm lub npe.

Cov lus teb nyob ntawm seb lub plhaub twg koj siv:

  1. Rau Zsh, alias tiav ua haujlwm tawm ntawm lub thawv.
  2. Rau Bash, hmoov tsis, qee qhov haujlwm yuav tsum tau ua kom tiav autocompletion ua haujlwm.

Enabling autocompletion rau aliases hauv Bash

Qhov teeb meem nrog Bash yog tias nws sim ua kom tiav (txhua zaus koj nias Tab) lub alias, tsis yog cov lus txib uas tus alias hais txog (raws li Zsh ua, piv txwv li). Txij li thaum koj tsis muaj cov ntawv ua tiav rau tag nrho 800 aliases, autocompletion tsis ua haujlwm.

Qhov project ua tiav-alias muab kev daws teeb meem dav dav rau qhov teeb meem no. Nws txuas mus rau kev ua tiav mechanism rau lub npe npe, sab hauv nthuav dav lub npe hu ua cov lus txib, thiab rov ua tiav cov kev xaiv rau cov lus txib ua tiav. Qhov no txhais tau hais tias lub padding rau ib tug alias coj raws nraim tib yam li rau tag nrho cov lus txib.

Hauv qab no, kuv yuav ua ntej piav qhia yuav ua li cas rau nruab ua tiav-alias thiab tom qab ntawd yuav ua li cas los teeb tsa nws kom ua tiav rau tag nrho cov npe kubectl.

Txhim kho tiav-alias

Ua ntej ntawm tag nrho cov, tiav-alias nyob ntawm bash-ua tiav. Yog li ntawd, ua ntej txhim kho tiav-alias, koj yuav tsum xyuas kom meej tias bash-ua tiav yog ntsia. Cov lus qhia kev teeb tsa tau muab yav dhau los rau Linux thiab MacOS.

Ceeb toom tseem ceeb rau cov neeg siv macOS: Zoo li kubectl autocompletion tsab ntawv, ua tiav-alias tsis ua haujlwm nrog Bash 3.2, uas yog lub neej ntawd ntawm MacOS. Hauv particular, tiav-alias nyob ntawm bash-ua tiav v2 (brew install bash-completion@2), uas yuav tsum muaj tsawg kawg yog Bash 4.1. Qhov no txhais tau hais tias kom siv tiav-alias ntawm MacOS koj yuav tsum tau nruab ib qho tshiab ntawm Bash.

Koj yuav tsum download tau tsab ntawv bash_completion.sh los ntawm GitHub repository thiab muab tso rau hauv koj cov ntaub ntawv ~/.bashrc:

source ~/bash_completion.sh

Tom qab rebooting lub plhaub, ua kom tiav-alias yuav raug ntsia tag nrho.

Enabling autocompletion rau kubectl aliases

Technically tiav-alias muab lub wrapper muaj nuj nqi _complete_alias. Qhov kev ua haujlwm no tshawb xyuas lub alias thiab rov qab cov lus qhia ua tiav rau cov lus txib alias.

Txhawm rau koom nrog kev ua haujlwm nrog cov npe tshwj xeeb, koj yuav tsum siv lub tshuab ua haujlwm hauv Bash tiav, rau nruab _complete_alias raws li kev ua tiav kev ua tiav.

Ua piv txwv, cia peb coj tus alias k, uas sawv cev rau cov lus txib kubectl. rau nruab _complete_alias Raws li kev ua haujlwm ntxiv rau lub npe no, koj yuav tsum khiav cov lus txib hauv qab no:

$ complete -F _complete_alias k

Qhov tshwm sim ntawm qhov no yog tias thaum twg koj autocomplete ib tug alias k, muaj nuj nqi hu ua _complete_alias, uas tshuaj xyuas lub alias thiab xa rov qab cov lus qhia ua tiav rau cov lus txib kubectl.

Ua piv txwv thib ob, cia peb coj lub npe kg, uas denotes kubectl get:

$ complete -F _complete_alias kg

Ib yam li hauv qhov piv txwv yav dhau los, thaum koj autocomplete kg, koj tau txais cov lus qhia ua tiav tib yam uas koj yuav tau txais. kubectl get.

Nco ntsoov tias koj tuaj yeem siv ua tiav-alias rau txhua lub npe ntawm koj lub cev.

Yog li ntawd, txhawm rau pab kom autocompletion rau tag nrho cov npe kubectl, koj yuav tsum tau khiav cov lus txib saum toj no rau txhua tus ntawm lawv. Cov kab lus hauv qab no ua raws nraim qhov no, yog tias koj tau teeb tsa kubectl-aliases rau ~/.kubectl-aliases:

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

Daim ntawv code no yuav tsum tau muab tso rau hauv koj ~/.bashrc, rov pib lub plhaub hais kom ua thiab autocompletion yuav muaj rau tag nrho 800 kubectl aliases.

6. Txuas kubectl nrog plugins

Pib ntawm version 1.12, kubectl txhawb plugin mechanism, uas tso cai rau koj nthuav nws cov haujlwm nrog cov lus txib ntxiv.

Yog koj paub Git plugin mechanisms, ces kubectl plugins yog tsim los ntawm tib txoj cai.

Hauv tshooj no, peb yuav hais txog yuav ua li cas rau nruab plugins, nrhiav qhov twg, thiab yuav ua li cas los tsim koj tus kheej plugins.

Txhim kho plugins

Kubectl plugins tau muab faib ua cov ntaub ntawv ua tau yooj yim nrog lub npe zoo li kubectl-x. Ua ntej kubectl- yuav tsum tau, ua raws li cov lus txib kubectl tshiab uas tso cai rau koj hu rau lub plugin.

Piv txwv li, nyob zoo plugin yuav muab faib ua cov ntaub ntawv hu ua kubectl-hello.

Txhawm rau nruab lub plugin, koj yuav tsum luam cov ntaub ntawv kubectl-x mus rau tej directory hauv koj PATH thiab ua kom nws executable, piv txwv li nrog chmod +x. Tam sim ntawd tom qab qhov no koj tuaj yeem hu rau lub plugin nrog kubectl x.

Koj tuaj yeem siv cov lus txib hauv qab no los sau tag nrho cov plugins uas tam sim no tau teeb tsa hauv koj lub cev:

$ kubectl plugin list

Cov lus txib no tseem yuav tso tawm cov lus ceeb toom yog tias koj muaj ntau lub plugins nrog tib lub npe, lossis yog tias muaj cov ntaub ntawv plugins uas tsis ua tiav.

Nrhiav thiab txhim kho plugins siv Krew

Kubectl plugins tuaj yeem muab faib lossis rov siv dua li cov pob software. Tab sis qhov twg koj tuaj yeem nrhiav plugins uas lwm tus tau qhia?

Qhov project Krew Lub hom phiaj los muab kev sib koom ua ke rau kev sib koom, tshawb nrhiav, txhim kho thiab tswj kubectl plugins. Qhov project hu nws tus kheej "tus thawj tswj pob rau kubectl plugins" (Krew zoo ib yam li Brew).

Krew yog cov npe ntawm kubectl plugins uas koj tuaj yeem xaiv thiab nruab. Tib lub sijhawm, Krew kuj yog ib qho plugin rau kubectl.

Qhov no txhais tau hais tias kev txhim kho Krew ua haujlwm tseem ceeb xws li txhim kho lwm yam kubectl plugin. Koj tuaj yeem nrhiav cov lus qhia ntxaws ntxaws ntawm GitHub page.

Cov lus txib tseem ceeb ntawm Krew yog:

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

Thov nco ntsoov tias kev txhim kho plugins siv Krew tsis cuam tshuam nrog kev txhim kho plugins siv tus qauv txheej txheem tau piav qhia saum toj no.

Thov nco ntsoov tias cov lus txib kubectl krew list tsuas yog qhia cov plugins uas tau teeb tsa siv Krew, qhov hais kom ua kubectl plugin list teev tag nrho cov plugins, uas yog, cov uas tau teeb tsa siv Krew thiab cov teeb tsa los ntawm lwm txoj hauv kev.

Nrhiav Plugins lwm qhov

Krew yog ib txoj haujlwm hluas, tam sim no hauv nws tus sau tsuas yog hais txog 30 plugins. Yog tias koj nrhiav tsis tau yam koj xav tau, koj tuaj yeem nrhiav plugins lwm qhov, xws li GitHub.

Kuv pom zoo saib ntawm GitHub seem kubectl-plugins. Nyob ntawd koj yuav pom ntau lub plugins muaj uas tsim nyog xyuas.

Sau koj tus kheej plugins

koj ua tau koj tus kheej tsim plugins -Nws tsis nyuaj. Koj yuav tsum tsim ib qho executable uas ua qhov koj xav tau, npe nws nyiam kubectl-x thiab nruab raws li tau piav saum toj no.

Cov ntaub ntawv tuaj yeem yog tsab ntawv bash, tus lej python, lossis daim ntawv thov GO - nws tsis muaj teeb meem. Qhov xwm txheej nkaus xwb yog tias nws tuaj yeem raug tua ncaj qha rau hauv lub operating system.

Cia peb tsim ib qho piv txwv plugin tam sim no. Hauv seem dhau los, koj siv cov lus txib kubectl los sau cov thawv rau txhua lub pod. Nws yog ib qho yooj yim los tig cov lus txib no rau hauv lub plugin uas koj tuaj yeem hu nrog xws li. kubectl img.

Tsim ib cov ntaub ntawv kubectl-img cov ntsiab lus hauv qab no:

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

Tam sim no ua cov ntaub ntawv executable nrog chmod +x kubectl-img thiab txav nws mus rau ib daim ntawv teev npe hauv koj qhov PATH. Tam sim ntawd tom qab qhov no koj tuaj yeem siv lub plugin kubectl img.

Raws li tau hais, kubectl plugins tuaj yeem sau ua ib qho programming lossis scripting lus. Yog tias koj siv lub plhaub ntawv, qhov zoo ntawm kev tuaj yeem hu tau yooj yim kubectl los ntawm hauv lub plugin. Txawm li cas los xij, koj tuaj yeem sau cov plugins nyuaj hauv cov lus programming tiag tiag siv Kubernetes neeg siv tsev qiv ntawv. Yog tias koj siv Go, koj tuaj yeem siv tau cli-runtime qiv, uas muaj tshwj xeeb rau kev sau kubectl plugins.

Yuav ua li cas qhia koj cov plugins

Yog tias koj xav tias koj cov plugins tuaj yeem muaj txiaj ntsig zoo rau lwm tus, xav tias dawb qhia nws ntawm GitHub. Nco ntsoov ntxiv lawv rau lub ntsiab lus kubectl-plugins.

Koj tuaj yeem thov kom koj lub plugin ntxiv rau Krew lis. Cov lus qhia yuav ua li cas ua qhov no nyob rau hauv GitHub repositories.

Kev ua tiav

Plugins tam sim no tsis txhawb autocompletion. Ntawd yog, koj yuav tsum sau tag nrho lub npe ntawm lub plugin thiab tag nrho cov npe ntawm cov lus sib cav.

GitHub kubectl repository rau cov haujlwm no muaj qhib kev thov. Yog li nws muaj peev xwm hais tias qhov no feature yuav raug muab coj los siv rau yav tom ntej.

Hmoov zoo!!!

Dab tsi ntxiv los nyeem ntawm lub ncauj lus:

  1. Peb theem ntawm autoscaling hauv Kubernetes thiab yuav siv lawv li cas.
  2. Kubernetes nyob rau hauv lub siab ntawm piracy nrog ib tug qauv rau kev siv.
  3. Peb channel ncig Kubernetes hauv Telegram.

Tau qhov twg los: www.hab.com

Ntxiv ib saib