Quomodo uti kubectl efficacius: ductor singillatim
Si cum Kubernetes laboras, tum kubectl probabiliter una utilitatum quae maxime uteris. Et quandocumque multum temporis cum aliquo instrumento operando expendis, bene studeat et efficaciter uti discat.
bigas Kubernetes aaS ex Mail.ru interpretatus est articulus a Daniele Weibel in quo apices et praestigias invenies cum kubectl efficaciter operando. Proderit etiam ut Kubernetes altiorem intellectum capias.
Iuxta auctoris propositum articulum est ut cum Kubernetes non solum efficacius, sed etiam iucundius cotidianum opus facere!
Prooemium: Quid est kubectl
Priusquam discere possis efficacius uti kubectl, necesse est ut praecipuam capiat intelligentiam qualis est et quomodo operatur.
Ex prospectu usoris, kubectl tabula imperium est quae Kubernetes operationes praestare sinit.
Technice loquendo kubectl est Kubernetes API cliens.
Kubernetes API est HTTP CETERA API. Hic API est verus usor Kubernetes interfaciei, per quem omnino regitur. Hoc significat quod omnis operatio Kubernetes tamquam terminus API expositus et cum HTTP petitione ad illum finem fieri potest.
Praecipuum ergo officium kubectl est petitiones Kubernetes API facere:
Kubernetes ratio omnino resource ordinatur. Hoc significat, quod statum internum tuetur opes et omnes operationes Kubernetes CRUD operationes.
His opibus administrandis Kubernetes in plena potestate es, et Kubernetes designat quid faciendum sit in praesenti statu facultatum. Quam ob rem Kubernetes API praedicationem constituunt ut index copiarum subsidiorum cum earum consociatis operationibus.
Intueamur exemplum.
Vis dicamus resource ReplicaSet creare. Hoc ut facias, ReplicaSet in tabella nominatim describe replicaset.yamlcurre imperio;
$ kubectl create -f replicaset.yaml
ReplicaSet resource creabit. Sed quid post scenas?
Kubernetes ReplicaSet creationis operationem habet. Sicut alia operatio, exponitur ut API terminus. API endpunctum specificum huius operationis hoc modo spectat:
POST /apis/apps/v1/namespaces/{namespace}/replicasets
API terminos omnium operationum Kubernetensium inveniri possunt API reference (including * supra endpoint). Ut reipsa petatur ad terminum, primum API server URL addas debet viae quae in API referuntur recensentur.
Unde, cum superius mandatum exequaris, kubectl HTTP POST postulationem mandat ut supra API endpoint. The ReplicaSet definition you provided in the tabella replicaset.yamlmittitur in corpus precibus.
Hoc est quomodo kubectl opera omnia mandata quae apud Kubernetes botrum correspondeant. In omnibus his casibus, kubectl simpliciter petitiones facit HTTP ad terminos congruos Kubernetes API.
Nota quaeso te posse plene administrare Kubernetes tali utilitate utendo curlper manually petitiones HTTP ad Kubernetes API mittendo. Kubectl simplicius Kubernetes API uti facilius facit.
Hoc est basics of quid sit kubectl et quomodo operatur. Sed aliud est de Kubernetes API ut omnis usor kubectl scire debet. Velox inspiciamus in interiorem mundum Kubernetarum.
Mundus interior Kubernetes
Kubernetes constat ex copia rerum independens quae in nodis botri processibus separatis discurrit. Aliae partes currunt in nodis magistri, alii in nodo laborantis, unaquaeque pars suum proprium munus exercens.
Hic sunt principales partes in nodis principalibus:
Controller Manager - Efficit ut resource status cum specificationibus parere.
Scheduler β cedulas siliquas laborantium nodis.
Et hic est una praecipua pars in nodis laborantis:
kubelet β vascula nodi laborantis administrat.
Ut quomodo haec elementa cooperantur, inspiciamus exemplum.
Demus quae modo complebitur kubectl create -f replicaset.yaml, post quem kubectl fecit petitionem HTTP Post to ReplicaSet API endpoint (ReplicaSet resource definitionem transeundo).
Quid agitur in botro?
Post facis kubectl create -f replicaset.yaml API servo tuo reponit ReplicaSet resource definitio in repono:
Deinceps, ReplicaSet moderatoris in moderatoris procurator inducitur, qui creationem, modificationem et deletionem ReplicaSet facultates tractat:
ReplicaSet moderatoris definitionem vasculum facit ad imaginem ReplicaSet unicuique (secundum pod templates in ReplicaSet definitione) et reponit in repositione:
Schedularius emissus est, siliquae semitae quae nondum alicui nodis laboranti assignatae sunt;
Schedularius aptam nodi operarium unicuique vasculi deligit et informationes haec addit ad definitionem vasculi in copia:
Nodus operarius cui vasculum assignatur, Kubelet emittitur, siliquas huic nodi assignatas indagat;
Kubelet definitionem vasculi ex repositione legit et runtim continens docet, ut Docker, vascula in nodo immittendi:
Infra textum huius descriptionis est.
API postulatio ad ReplicaSet creationis terminum ab API servo discursum est. API server rogatu confirmat et ReplicaSet resource definitio in repositione reponit.
Hic eventus incipit ReplicaSet moderatoris, quae subprocess procuratoris moderatoris est. ReplicaSet moderatoris monitores creationis, adaequationis, et deletionis ReplicaSet facultates in copia et rei notificationem accipit cum hoc incidit.
ReplicaSet moderatoris officium est curare ut requisitus numerus ReplicaSet siliquae existat. In nostro exemplo, siliquae nullae adhuc sunt, ReplicaSet moderatoris definitiones (secundum pod templates in ReplicaSet definitione) creat easque in reposita.
Novae siliquae creatio utitur schedula quae definitiones leguminis servat vestigia quae nondum ad nodis laborantis accedant. Schedularius nodi idoneum artificem deligit pro unoquoque vasculo ac definitiones vasculi in promptuario desumit.
Nota quod usque ad hoc punctum nullum inposuit codicem usquam in botro currens. Omne quod factum est usque - haec est creatio et adaequatio opum in promptuario super nodo magistri.
Novissimus eventus triggers Kubelets, quae monitor siliquae pro nodis laborantis accedant. Kubelet nodi laborantis in quo ReplicaSet siliquae tuae installantur, oportet docere continens runtime, ut Docker, ut imagines receptaculae inquisitae deprimant et currant.
Hic, applicatione tua ReplicaSet tandem currit!
Munus Kubernetorum API
Ut in exemplo priore vidisti, partes Kubernetes (praeter API servo ac repositoria) observant mutationes ad facultates repositas et informationes de opibus reponendis.
Utique haec elementa cum repositione directe non penitus, sed solum per Kubernetes API.
Vide exempla sequentia:
ReplicaSet moderatoris utitur ad API endpoint album ReplicaSets cum parametri watch ut monitor mutationes ad ReplicaSet facultates.
ReplicaSet moderatoris utitur ad API endpoint creare Pod (Cash creare) siliquas creare.
Scheduler utitur API endpoint repeciare legumen (podiculam recensere) ad siliquas renovandas cum informationes de node operariorum delectorum.
Ut vides, hoc idem est API quod kubectl febrium. Eodem API utens pro elementis internis et usoribus externis notio fundamentalis in Kubernetes designatur.
Nunc quomodo Kubernetes opera omnia complecti possumus;
Repositiones thesaurorum civitatis, hoc est, facultates Kubernetes.
Servo API interfaciem praebet ad repono in forma Kubernetarum API.
Cetera omnia membra Kubernetes et utentes legunt, observant, et statum Kubernetes tractant per API.
Has notiones scientes melius intelleges kubectl adiuvabit et ex eo plurimam obtinebit.
Nunc inspiciamus aliquas apices et praestigias specificas quae adiuvabunt ut productivity emendare cum kubectl.
1. accelerare initus per mandatum complementum
Una utilissima, sed saepe neglecta, ars ad melius perficiendum cum kubectl mandatum est peractio.
Praeceptum complementum permittit te ut partes mandatorum kubectl automatice compleas utendo clavem Tab. Haec operatur sub praeceptis, optionibus et argumentis, inclusa aliqua ut complexa ut nomina subsidiorum.
Vide quomodo kubectl mandatum complementum operum;
Mandatum complementum operatur in conchis Bash et Zsh.
Official Guide singula instructiones continet ad autocompletionem constituendam, infra autem breve excerptum dabimus.
Quam complementum mandatum opera
Mandatum complementum est pluma testaceorum quae scripto perfecto utens operatur. Scriptum extensio est scripturae conchae, quae mores extensio pro certo imperio definit.
Kubectl automatice scriptorum extensionem generat et outputs pro Bash et Zsh utentes mandatis sequentibus;
$ kubectl completion bash
aut:
$ kubectl completion zsh
In theoria, satis est harum mandatorum output connectere ad congruum mandatum ut testa kubectl mandata complere possit.
In praxi, nexus modus differt pro Bash (including differentias inter Linux et MacOS) et Zsh. Infra videbimus haec omnia.
Pagina in Linux
Pagina complementi Bash dependet ex involucro vercundus-completionis, sic debes primum illud instituere;
Si haec outputs crusta functionis codicis, tunc bash-completio recte inauguratur. Si mandatum dat "Non Inventum" errorem, debes addere sequentem lineam tabellae tuae ~ / .bashrc:
Oportetne hanc lineam tabella addere? ~ / .bashrc vel non in sarcina procurator pendeat, bash-peractionem instituere solebas. APT hoc necessarium est, sed non pro YUM.
Post inauguratum bash-peractionem, omnia configurare debes ut perfectio scriptionis kubectl in omnibus sessionibus testaceis possit.
Uno modo hoc facere est lineam sequentem tabella addere ~ / .bashrc:
source <(kubectl completion bash)
Alius modus est addere scripturam extensionis kubectl in indicem /etc/bash_completion.d (Creare si non est):
Omnes addendi supra scripta in catalogo /etc/bash_completion.d automatice includitur in bash-completionem.
Utrumque bene convenit.
Post testam restarting, kubectl mandatum complementum operis faciet.
Pagina in MacOS
In MacOS per setup est paulo multiplex. Re vera per defaltam, MacOS versione Bash utitur 3.2, et scriptio autocompletionis kubectl postulat versionem Bash saltem 4.1 et in Bash 3.2 non operatur.
Sunt quaestiones licentiae consociatae cum versione Bash in MacOS utendo. Pagina 4 sub GPLv3 licentiata est, quae Apple non sustinetur.
Configurare kubectl autocompletionem in MacOS, debes versionem recentiorem Bash instituere. Etiam Bash updated in testam tuam amittere potes, quae te multum difficultates in futuro servabit. Non difficile est, singula in articulo "Adaequationis Bash in MacOS".
Antequam pergam, fac uteris recenti versione Bash (reprehendo output) bash --version).
est @2 stat pro versione bash-perfectio 2. kubectl autocompletio requirit v2 bash-completionem, et v2 completio bash postulat minimum versionis Bash 4.1.
Imperium output brew-install sectionem Caveats continet, quae quidnam opus sit tabellae notificat ~/.bash_profile:
Sed has lineas non addendo commendamus ~/.bash_profileet in ~/.bashrc. In hoc casu, autocompletio non solum in summa, sed etiam in conchis imperio infantis praesto erit.
Haec methodus tantum operari potest si Homebrew inaugurata peractio. In hoc casu, bash-perfectio omnia scripta ab hoc indice onerat.
Si installed kubectl per Homebrewergo non opus est priorem gradum praestare, cum scriptura autocompletio automatice in folder ponatur /usr/local/etc/bash_completion.d durante institutionem. In hoc casu, kubectl autocompletio opus incipiet quam primum bash-completionem inaugurare.
Quam ob rem haec omnia aequiparantur.
zsh
Autocompletio scripta pro Zsh nullas dependentias non requirunt. Omnes vos postulo ut facere possitis cum testa mandatum oneratis.
Hoc facere potes addendo ad lineam ~/.zshrc fasciculus:
source <(kubectl completion zsh)
Si error ut not found: compdef Post testam tuam restarting, opus constructum munus compdef. Potes id efficere addendo ad initium documenti tui ~/.zshrc haec;
autoload -Uz compinit
compinit
2. Celeriter resource specifications
Cum definitiones resource YAML creaveris, agros et significationem pro illis facultatibus cognoscere debes. Locus quaerendi huius informationis est in API mentione, qui integram speciem pro omnibus facultatibus continet.
Nihilominus, mutans ad navigatrum interretialem omni tempore debes quaerere aliquid incommodum. Ideo kubectl praebet mandatum kubectl explainquae demonstrat speciem omnium facultatum in terminali.
Praecepti forma talis est;
$ kubectl explain resource[.field]...
Mandatum outputet specificationem resource petitae vel agri. Indicium est idem cum illo quod in API manuali continetur.
per default kubectl explain primo tantum gradu nidificationis agrorum ostendit.
Totam arborem ostendere potes si optionem addas --recursive:
$ kubectl explain deployment.spec --recursive
Si prorsus nescias quibus subsidia opus sint, eas omnes hoc mandato ostendere potes;
$ kubectl api-resources
Hoc mandatum ostendit resource nomina in plurali, e.g. deployments pro deployment. Etiam breve nomen ostendit, e.g deployhis enim opibus habentibus. Has differentias ne cures. Omnes hae optiones nominandi pro kubectl aequiparantur. Hoc est, aliquo eorum uti potes kubectl explain.
$ 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
Forma haec opportuna est, sed parvas rerum notitias continet. Ad plenam resource definitionis forma comparata, pauci agri hic exhibentur.
In hoc casu, uti potes consuetudine columnae output format. Quae data sunt output determinare permittit. Agrum aliquod resource separatum ut columnae ostendere potes.
Usus formae consuetudinis determinatur utendi optiones:
Quisque output columna ut par definire potes <header>:<jsonpath>quibus <header> est columna nomen, et <jsonpath> - expressio definiens resource agri.
Intueamur exemplum simplex:
$ kubectl get pods -o custom-columns='NAME:metadata.name'
NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4
Output continet unam columnam cum nominibus leguminis.
Optio expressio nomina ex agro vasculum deligit metadata.name. Hoc est, quia nomen vasculi definitur in nomine infantis agri metadata in eopia descriptione vasculi. Plura singula inveniri possunt in API Guide aut typus imperium kubectl explain pod.metadata.name.
Nunc dicamus vis addere extra columnam ad output, exempli gratia ostendens nodi singulas podagras currentem. Ad hoc, simpliciter addere potes specificationem columnae convenientem ad consuetudinem columnarum optionis;
$ 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
Nodi deligit nomen elocutione spec.nodeName - cum vasculum nodi tribuitur, nomen eius in agro scriptum est spec.nodeName pod resource specification. Plures informationes possunt inveniri in output kubectl explain pod.spec.nodeName.
Quaeso nota quod Kubernetes subsidiorum agrorum sensitivos casus sunt.
Agrum aliquem resource inspicere potes ut columnam. Modo recense copiam specificationis et experire eam cum quibusvis agris libet.
Sed primum, ad campum locutiones selectas propius inspiciamus.
JSONPath locutiones
Expressiones eligens resource agri non fundatur JSONPath.
JSONPath lingua est ad notitias recuperandas ex documentis JSON. Unius campi deligendo casus simplicissimus usus est pro JSONPath. Multum habet plus possibilitiescum selectoribus, Filtra et cetera.
Kubectl explicant subsidia notarum JSONPath paucas. Facultates et usus eorum exempla infra descripta sunt:
Auctor maxime momenti est. Multi Kubernetes subsidiorum agrorum index sunt, et hic operator permittit ut membra illorum lista decerpas. Saepe usus est cum wildcard quasi [*] omnia elementa indicem deligere.
application exempla
Facultates ad consuetudinem columnae output format utendi infinitae sunt, ut aliquem agrum vel iuncturam copiarum agrorum in output ostendere possis. Hic sunt quaedam applicationes specimen, sed liberum te ipsum explorare et invenire applicationes quae pro te operantur.
Continens imagines pro siliquis ostendens:
$ 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
Hoc praeceptum continens nomina imaginum pro unoquoque vasculo ostendit.
Memento vasculum plura continere posse vascula, imaginum nomina in una linea, commatibus separatis, ostendentur.
Ostendens nodi disponibilitate zonis:
$ 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
Hoc mandatum utile est si botrus tuus in publica nube hosted. Zonam disponibilitatem ad sulum nodi ostendit.
Disponibilitatis zona conceptus nubis est, qui replicationem zonae regioni geographicae definit.
Disponibilitas zonae pro singulis nodi obtinentur per singularem pittacium - failure-domain.beta.kubernetes.io/zone. Si botrus in nube publica currit, hic titulus automatice creatus est et repletus nominibus promptitudinis zonarum pro singulis nodi.
Labels non sunt specificationis subsidii Kubernetes, ideo informationes de illis non invenies in API Guide. Sed videri possunt (sicut in aliis pittaciis) si informationes requiris de nodis in forma YAML vel JSON:
$ kubectl get nodes -o yaml
# ΠΈΠ»ΠΈ
$ kubectl get nodes -o json
Magna haec via est plura de opibus addiscendis, praeter specificationem resource cognita.
4. Facile commutandum inter botri et spatiis nominalibus
Cum kubectl rogatu Kubernetes API, primum fasciculum kubeconfig legit ut omnes parametri ad nexum necessarios recipiant.
Per defaltam kubeconfig file is ~/.kube/config. Hic fasciculus de more speciali mandato creatur vel renovatur.
Cum multis racemis laboras, fasciculus kubeconfig tuus continet occasus pro connectendis omnibus illis racemis. Opus est modo ut mandatum kubectl dicas, quod botrum cum operaris.
Intra botrum, plura nomina intervalla creare potes-typum virtualis botri intra botrum physicum. Kubectl etiam determinat quibus spatiis nominalibus utendi in kubeconfig lima fundatur. Hoc modo etiam opus est ut kubectl iubes quid spatii nominandi laboret.
In hoc capite quomodo operatur et quomodo operari valeat.
Nota quod plures tabulas kubeconfigas habere potes quae in ambitu KUBECONFIG variabiles enumerantur. Hoc in casu, omnia haec fascicula in unum commune configurationem currentis tempore componentur. Mutare etiam potes fasciculum defaltam kubeconfig currendo kubectl cum parametro --kubeconfig. Vide officialis documenta.
kubeconfig files
Videamus quidnam fasciculus kubeconfig contineat:
Ut videre potes, fasciculus kubeconfig copiam contextuum continet. Contextus constat ex tribus elementis;
Botrus β API Domicilium botri servientis.
User - user authenticas documentorum in botro.
Spatium spatii nominandi usus est cum botro iungendo.
In usu saepe uno contextu per glomos in kubeconfig utuntur. Sed plures contextus per botrum habere potes, ab usuario vel spatio nominali distinctum. Haec tamen multi- contextus conformatio rara est, quare una-ad unam tabulam inter ligaturas et contextus solet.
Quovis tempore, unus ex contextu currit;
Cum kubectl file configurationem legit, semper informationes accipit e contextu praesenti. In exemplo supra, kubectl ad botrum Hare coniunget.
Itaque, ut ad alium botrum vertas, necesse est hodiernam contextum in fasciculi kubeconfig mutare;
Nunc kubectl vulpi botrum coniunget.
Ad diversum spatium spatii in eodem botro vertas, debes valorem nominum elementi pro hodierno contextu mutare;
In exemplo superiore, kubectl vulpis Prod spatii nominatim utetur (antequam Test spatii spatiorum appositus est).
Nota quod kubectl etiam optiones praebet --cluster, --user, --namespace ΠΈ --contextquae sinunt te singula elementa rescribere et ipsum hodiernum contextum, cuiuscumque rei in kubeconfig positum est. Vide kubectl options.
In theoria, occasus in kubeconfig potes manually mutare. Etiam sed commodo ex. Ad has operationes simplices, variae sunt utilitates quae te sponte parametri mutare sinunt.
Usus kubectx
Valde popularis utilitas est ad commutationes inter racemos et spatiis nominandas.
Utrumque mandatum sustinet autocompletionem contextuum et nominum spatiorum, quae eliminat necessitatem omnino typus. Instructiones ad constituendum autocompletionem hic.
Alius utilis pluma kubectx Est interactive modus. Operatur cum utilitate fzfqui separatim institui debent. Installing fzf automatice facit interactive modus available in kubectx. Interactive, potes eligere contextum et nomina spatii per interactivum liberum inquisitionis interfaciem, quae a fzf.
Per testa aliases
Instrumenta separata non opus est ut hodiernam contextum et nomina spatium mutet, quod kubectl etiam huic mandata praebet. Ita, team kubectl config subcommands praebet files kubeconfig emendi.
kubectl config current-context: get current context;
kubectl config use-context: mutatio current contextus;
kubectl config set-context: Mutare elementum contextus.
Sed his mandatis directe utens, non valde commodum est quia longa sunt. Testam aliases facere potes faciles ad faciendum.
Aliases statutum creavi innixum his mandatis quae officiatoriitati kubectx similes praebent. Hic videre potes in actu;
Nota quod aliases fzf utuntur ad spectrum interfaciendi liberum interactivum (sicut modus interactivus kubectx). Hoc est opus install fzf*his uti aliasi.
Definitiones ipsarum aliases hic sunt;
# ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ
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/^..//")"'
Ad has aliases ponatur necesse est definitiones superius ad tuum documentum addere ~/.bashrc aut ~/.zshrc et testam reboot tuam.
Using plugins
Kubectl permittit te plugins onerare quae eo modo exsecuta sunt ac praecepta fundamentalia. Potes, exempli gratia, plugin kubectl-foo installare et illud currere ex mandato exequendo kubectl foo.
Commodum est contextus et spatii nomina hoc modo mutare, exempli gratia currendo kubectl ctx mutare context and kubectl ns mutandi spatio nominali.
Opus plugins in aliases ex sectione praecedenti innititur.
Ecce quomodo operantur;
Nota plugins usum fzf ad liberam inquisitionem interfaciendi (sicut modus interactivus kubectx praebent). Hoc est opus install fzf*his uti aliasi.
Ad plugins inaugurare, debes scriptorum concha download nominata kubectl-ctx ΠΈ kubectl-ns ad aliquem directorium in tuo Path variabili et eas exsecutabiles fac cum e.g. chmod +x. Statim post hoc poteris uti kubectl ctx ΠΈ kubectl ns.
5 reducere initus cum autoaliases
Shells aliases are good way to accelera initus. Project kubectl-aliases circiter 800 compendia continet pro praeceptis kubectl fundamentalibus.
Miraris fortasse - quomodo meministi 800 aliases? Sed omnium meminisse non debes, quia secundum simplicem schema, quod infra datur, edificata sunt.
For example:
kgpooyaml - kubectl siliquas possidebit oyaml
ksysgsvcw - kubectl -n kube-ratio adepto svc w
ksysrmcm -kubectl -n kube-ratio rm cm
kgdepallsl - kubectl omnia instruere sl
Ut videre potes, aliases compositae sunt, quarum singulae peculiare elementum mandatum kubectl repraesentat. Singulae alias partes unam habere possunt pro basi imperio, operandi, et opum, ac pluribus componentibus parametris. Tu simpliciter "populate" haec elementa a sinistra ad dextram secundum schema supra.
Exempli gratia, alias kgpooyamlall aequivalet imperio kubectl get pods -o yaml --all-namespaces.
Relativus ordo optionum non refert: mandatum kgpooyamlall est equivalent ad imperium kgpoalloyaml.
Non omnibus componentibus utere ut aliases. Exempli gratia k, kg, klo, ksys, kgpo adhiberi potest. Praeterea, aliases et praecepta regularia seu optiones in linea praecepti coniungi potes:
For example:
pro kubectl proxy potes scribere k proxy.
pro kubectl get roles potes scribere kg roles (Inest nunc alias nullas pro viribus muneribus).
Ut data ad certum vasculum, imperio uti potes kgpo my-pod β kubectl get pod my-pod.
Quaeso nota quod nonnullas aliases lineae argumentum imperare requirunt. Exempli gratia, alias kgpol modo kubectl get pods -l. Option -l argumentum requirit - pittacium specificatio. Si uteris quod alias erit tamquam kgpol app=ui.
Quia aliae aliases rationes requirunt, aliases a, f et l ultimo utendum est.
In genere, semel ab huius schematis pendere, intuitive aliases ex praeceptis quae vis facere et servare multum temporis typings exsequi potes.
institutionem
Ut install kubectl-aliases, opus est tabellam deponere .kubectl_aliases ex GitHub et includere in tabella ~/.bashrc aut ~/.zshrc:
source ~/.kubectl_aliases
Autocompletion
Saepe, ut praediximus, addita verba ad alias lineae imperativae adiungas. Exempli gratia:
$ kgpooyaml test-pod-d4b77b989
Si complementum imperandi kubectl uteris, probabiliter usus es autocompletione rerum quasi nomina subsidiorum. Sed hoc fieri potest cum aliases adhibentur?
Gravissima haec quaestio est quia si autocompletio non operatur, aliqua beneficia aliases amittes.
Responsum pendet, quo testa uteris:
Nam Zsh, alias complementum ex arca operatur.
Pro Bash, proh dolor, opus aliquod requiritur ut autocompletionem ad operandum recipiat.
Enabling autocompletion ad aliases in Bash
Problema cum Bash est quod alias (quoties Tab) alias, non mandatum quod alias refert (ut Zsh facit, exempli gratia) perficere conatur. Cum non habes scriptorum complementum pro omnibus 800 aliases, autocompletio non operatur.
project integram, alias generalem solutionem huius problematis praebet. Mechanismum ad aliases complementum coniungit, interne alias ad imperium dilatat, et optiones complementi ad mandatum perfectum revertitur. Id est ut Nullam pro an alias idem prorsus se gerit ac pro pleno imperio.
In sequentibus primum exponam quomodo alias integras instituam et deinde quomodo configurare eam perficiat ut omnes aliases kubectl.
Installing integram-alias
Imprimis, completum alias pendent vercundus, complementum. Priusquam ergo alias integras inauguraris, opus fac ut vercundus-completio inauguratur. Institutiones institutionis antea paratae sunt pro Linux et MacOS.
Maximus Nota pro MacOS Users: Velut scriptura autocompletio kubectl, alias completa cum Bash 3.2 non operatur, quod est defalta in MacOS. Praesertim, completae alias pendent a v2 bash-completio (brew install bash-completion@2) quod certe Bash 4.1. Hoc significat quod in MacOS utendi completo-alias, debes novam versionem Bash instituere.
Testa repulsa, alias completum, plene instituetur.
Enabling autocompletionem pro kubectl aliases
Technicaliter completum-alias praebet fascia munus _complete_alias. Hoc munus alias coercet et ad alias mandata perficiens redit.
Ad munus commisceri cum aliis certis, constructo in mechanismo Bash uti debes CompleteUt install _complete_alias ut per alias munus complementum.
Exemplum, sumamus alias k, quod pro kubectl significat mandatum. ut install _complete_alias Munus complementum huius alias, sequenti iubere debes:
$ complete -F _complete_alias k
Ex quo fit, ut quotienscumque alias k autocompletum fueris, munus vocatur _complete_alias, quod alias coercet et innuit complementum mandato kubectl.
In altero exemplo sumamus alias kgquod est kubectl get:
$ complete -F _complete_alias kg
Sicut in exemplo praecedente, cum kg autocomplete, idem obtines complementum innuit te impetraturum kubectl get.
Nota te posse uti alias completas alias in ratione tua.
Ergo ut autocompletionem omnes aliases kubectl faciant, necesse est ut supra mandatum pro singulis illis currere. Sequens PRAECISIO hoc exacte facit, modo kubectl-aliases to posueris ~/.kubectl-aliases:
for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases);
do
complete -F _complete_alias "$_a"
done
Hoc fragmen codice debet poni in ~/.bashrc, sileo mandatum testam et autocompletionem praesto fiet omnibus 800 kubectl aliases.
6. Porrectum kubectl cum plugins
incipiens a XI version, kubectl subsidia plugin mechanismquae te suis muneribus additis mandatis extendere concedunt.
In hoc capite, operiemus quomodo plugins instituas, ubi eas invenias, et quomodo tua plugins creare possit.
Installing tincidunt
Kubectl plugins distribuuntur ut tabulae simplices exsecutabiles cum nomine simili kubectl-x. Praefixum kubectl- Requiritur, sequitur novum kubectl subcomidium quod sinit vos plugin vocare.
Exempli gratia, salve plugin sicut tabella vocata distribuetur kubectl-hello.
Plugin installare, tabella imitari debes kubectl-x ad aliquem directorium in via tua et illud exsecutabile fac, e.g chmod +x. Statim post hoc potes vocare plugin with kubectl x.
Praecepto sequenti uti potes ut omnia plugins recensere quae nunc in systemate tuo instituuntur:
$ kubectl plugin list
Hoc praeceptum etiam admonitiones ostendet si plures plugins eodem nomine habeas, vel si documentum plugins est quod exsecutabile non est.
Inveniens et installing plugins usura Krew
Pluginina Kubectl communicari vel reddi possunt sicut fasciculi programmatum. Sed ubi potes reperire plugins quod alii communes sunt?
Project Krew intendit ut solutionem unicam pro communicando, quaerendo, instituendo et componendo plugins kubectl praebere. Exertum se vocat "sarcina procurator ad kubectl plugins" (Krew similis est ceruisam).
Krew est index plugins kubectl quod eligere et instituere potes. Eodem tempore, Krew est etiam plugin pro kubectl.
Hoc significat quod Krew inaugurari per se operatur sicut inaugurari quamlibet aliam kubectl plugin. Potes invenire instructiones ad GitHub pagina.
Quaeso nota quod plugins utens Krew inaugurari non impedit cum plugins inaugurari per modum normae supra descriptum.
Lorem quod mandatum kubectl krew list solum ostendit plugins quae in usu Krew constitutae sunt, cum mandatum kubectl plugin list omnia plugins enumerat, id est, qui Krew inauguratus est et aliis modis inauguratus.
Inveniens volutpat Alibi
Krew puer est propositum, currently in suo album tantum de XXX plugins. Si non potes invenire quod tibi opus est, plura reperire alibi, ut GitHub.
Commendo GitHub vultus in sectione kubectl-plugins. Ibi justos reperies plugins promptorum quae in recognitione valent.
Scribens tua plugins
potes te ipsum partum plugins β Non est difficile. Opus exsecutabile creare quod tibi opus est, id simile nominas kubectl-x et instituere ut supra dictum est.
Tabella potest esse scriptor bash, scriptor python, vel application GO compilata - non refert. Sola condicio est ut in operante ratio directe effici possit.
Exemplum plugin nunc faciamus. In sectione superiore, kubectl mandatum est ut vasa pro unoquoque vasculo recenseres. Hoc mandatum in plugin facile vertere potest ut cum exempli causa vocare possis. kubectl img.
Creare lima kubectl-img sequenti contentus:
#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
Nunc fac tabella exsecutabile cum chmod +x kubectl-img et move ad aliquem presulem in via tua. Statim post hoc plugin uti potes kubectl img.
Ut monui, kubectl plugins in quavis programmatione vel lingua scripto conscribi possunt. Si scripta testa uteris, commodum facile kubectl ex intra plugin vocare potest. Autem, plura scribere potes plugins in vera programmatione linguarum utendo Kubernetes clientis bibliothecae. Si uteris Ite, etiam uti potes cli-runtime bibliothecaquae proprie ad scripturae kubectl plugins exstat.
Quam ut participes tui plugins
Si plugins tuas aliis usui esse posse censes, libenter eam communicabo in GitHub. Vide ut ea ad rem addere kubectl-plugins.