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.
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:
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?
Tom qab ua kubectl create -f replicaset.yaml API server khaws koj ReplicaSet cov lus txhais hauv kev cia:
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:
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:
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:
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:
Ntawm tus neeg ua haujlwm node uas lub plhaub tau txais, Kubelet tau pib, nws taug qab cov pods tau muab rau cov node:
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:
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:
Tus tswj hwm ReplicaSet siv API kawg npe ReplicaSets nrog parameter watch los saib xyuas cov kev hloov pauv rau ReplicaSet cov peev txheej.
Tus tswj hwm ReplicaSet siv API kawg tsim Pod (tsim pods) los tsim pods.
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:
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.
$ 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:
$ 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.
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.
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.
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
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
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:
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:
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.
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:
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.
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:
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.
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:
Piv txwv li:
kgpooyaml - kubectl tau pods oyaml
ksysgsvcw β kubectl -n kube-system get svc w
ksysrmcm -kubectl -n kube-system rm cm
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.
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.
Rau Zsh, alias tiav ua haujlwm tawm ntawm lub thawv.
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.
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.
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).
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.
#!/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.
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.