Quomodo uti kubectl efficacius: ductor singillatim

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:

Quomodo uti kubectl efficacius: ductor singillatim
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:

  1. Reconditorium - stores definitiones resource (plerumque est etc).
  2. API server β€” API praebet et repono procurat.
  3. Controller Manager - Efficit ut resource status cum specificationibus parere.
  4. Scheduler β€” cedulas siliquas laborantium nodis.

Et hic est una praecipua pars in nodis laborantis:

  1. 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?

  1. Post facis kubectl create -f replicaset.yaml API servo tuo reponit ReplicaSet resource definitio in repono:

    Quomodo uti kubectl efficacius: ductor singillatim

  2. Deinceps, ReplicaSet moderatoris in moderatoris procurator inducitur, qui creationem, modificationem et deletionem ReplicaSet facultates tractat:

    Quomodo uti kubectl efficacius: ductor singillatim

  3. ReplicaSet moderatoris definitionem vasculum facit ad imaginem ReplicaSet unicuique (secundum pod templates in ReplicaSet definitione) et reponit in repositione:

    Quomodo uti kubectl efficacius: ductor singillatim

  4. Schedularius emissus est, siliquae semitae quae nondum alicui nodis laboranti assignatae sunt;

    Quomodo uti kubectl efficacius: ductor singillatim

  5. Schedularius aptam nodi operarium unicuique vasculi deligit et informationes haec addit ad definitionem vasculi in copia:

    Quomodo uti kubectl efficacius: ductor singillatim

  6. Nodus operarius cui vasculum assignatur, Kubelet emittitur, siliquas huic nodi assignatas indagat;

    Quomodo uti kubectl efficacius: ductor singillatim

  7. Kubelet definitionem vasculi ex repositione legit et runtim continens docet, ut Docker, vascula in nodo immittendi:

    Quomodo uti kubectl efficacius: ductor singillatim

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:

  1. ReplicaSet moderatoris utitur ad API endpoint album ReplicaSets cum parametri watch ut monitor mutationes ad ReplicaSet facultates.
  2. ReplicaSet moderatoris utitur ad API endpoint creare Pod (Cash creare) siliquas creare.
  3. 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;

  1. Repositiones thesaurorum civitatis, hoc est, facultates Kubernetes.
  2. Servo API interfaciem praebet ad repono in forma Kubernetarum API.
  3. 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;

Quomodo uti kubectl efficacius: ductor singillatim
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;

$ sudo apt-get install bash-completion

aut:

$ yum install bash-completion

Potes probare sarcinam inaugurari feliciter utens sequenti mandato:

$ type _init_completion

Si haec outputs crusta functionis codicis, tunc bash-completio recte inauguratur. Si mandatum dat "Non Inventum" errorem, debes addere sequentem lineam tabellae tuae ~ / .bashrc:

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

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):

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

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).

Pagina peracta variatur per project vercundus, complementumsic debes prius instituere.

Vos can install bash-completionem utens homebrew:

$ brew install bash-completion@2

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:

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"

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.

Post testam mandatum restarting, institutionem cognoscere potes recte utendo mandato sequenti:

$ type _init_completion

Si concham functionem in output videris, omnia recte configurantur.

Nunc opus est ut kubectl autocompletio efficiatur in omnibus sessionibus.

Uno modo est addere lineam sequentem tuo ~/.bashrc:

source <(kubectl completion bash)

Secundus modus est scripturam autocompletam addere ad folder /usr/local/etc/bash_completion.d:

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

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.

Vide quid is vultus amo hic 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.

Haec omnia mandata aequiparantur;

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

3. utere more columnae output format

Default mandatum output forma 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

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:

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

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:

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

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.

  1. 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.

  2. 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:

Quomodo uti kubectl efficacius: ductor singillatim
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;

Quomodo uti kubectl efficacius: ductor singillatim
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;

Quomodo uti kubectl efficacius: ductor singillatim
Nunc kubectl vulpi botrum coniunget.

Ad diversum spatium spatii in eodem botro vertas, debes valorem nominum elementi pro hodierno contextu mutare;

Quomodo uti kubectl efficacius: ductor singillatim
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.

Utilitas praebet praecepta kubectx ΠΈ kubens hodiernam contextum et spatii nominalem mutare.

Ut dictum est, contextus praesens mutans botrum significat, si unum tantum contextum per glomeras habeas.

Hic est exemplum currens horum mandatorum;

Quomodo uti kubectl efficacius: ductor singillatim
Essentialiter, haec mandata tantum fasciculum kubeconfig edit ut supra dictum est.

ut install kubectxsequere mandata Github.

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.

Hic es aliquos ex illis:

  • kubectl config get-contextsomnia contexta exhibere;
  • 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;

Quomodo uti kubectl efficacius: ductor singillatim
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.

Duo scripta scripsi quae hoc faciunt;

Opus plugins in aliases ex sectione praecedenti innititur.

Ecce quomodo operantur;

Quomodo uti kubectl efficacius: ductor singillatim
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.

Quomodo uti kubectl efficacius: ductor singillatim
For example:

  1. kgpooyaml - kubectl siliquas possidebit oyaml
  2. ksysgsvcw - kubectl -n kube-ratio adepto svc w
  3. ksysrmcm -kubectl -n kube-ratio rm cm
  4. 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.

Current detailed tabula est ad GitHub. Ibi etiam invenire potes plenus list of aliases.

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:

  1. pro kubectl proxy potes scribere k proxy.
  2. pro kubectl get roles potes scribere kg roles (Inest nunc alias nullas pro viribus muneribus).
  3. 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:

  1. Nam Zsh, alias complementum ex arca operatur.
  2. 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.

Vos postulo ut download scriptum bash_completion.sh * ex GitHub repositio et includere in tuum documentum ~/.bashrc:

source ~/bash_completion.sh

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.

Si nota sunt Git plugin machinationesergo kubectl plugins in eadem ratione.

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.

Praecipua praecepta Krew sunt:

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

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.

Etiam peto ut plugin tuum addatur Krew list. Instructiones de modo hoc facere in GitHub repositoria.

Imperium complementum

Plugins autocompletionem currently non sustinent. Hoc est, plenum nomen plugin inire debes et plena nomina argumentorum.

Repositorium GitHub kubectl huius functionis aperta petitio. Fieri igitur potest ut haec factura aliquando in futurum perficiatur.

Bene vale!!!

Quid aliud legere in topic?:

  1. Tres gradus autoscaling in Kubernetes et quomodo illis efficaciter utatur.
  2. Kubernetes in piratica spiritu cum exemplum exsecutionis.
  3. Nostra canalis circum Kubernetes in Telegram.

Source: www.habr.com