Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

VIII Aprilis in colloquio Percute 2019, ut pars sectionis "DevOps", relatio "autoscalingorum et subsidiorum in Kubernetes" data est. Loquitur quomodo K8s uti potes ad applicationem applicationum altae promptitudinis et ad apicem perficiendi curet.

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Ex traditione libentissime exhibere video de fama (44 minuta, multo magis informativus quam articulus) et summa summa in textu forma. Perge!

Argumentum relationis verbo verbo resolvere et a fine incipere.

Kubernetes

Dicamus nos habere vasa Docker in hospicio nostro. Quod? Curet iterabilitas et solitudo, quae vicissim permittit pro instruere simplicibus et bonis, CI/CD. Talia vehicula multa cum vasis habemus.

Quid in hac causa Kubernetes providet?

  1. De his machinis cogitamus desinimus ac satus opus cum "nubes" botrum portassent vasa or siliquae (coetus vasis).
  2. Praeterea ne siliquas singulas cogitamus, sed plura administramusΠΎcoetus majores. Tales summus gradus primitivis sinite nos dicere exemplum inesse certae cuiusdam inposuit, et hic requiritur numerus instantiarum ad currendum. Si postea Formulam mutabimus, omnes instantiae mutabunt.
  3. cum declarativum API Pro executione mandatorum specialium sequentiam, "structuram mundi" (in YAML), quae a Kubernetes creatur, describimus. Et iterum: Cum descriptio mutatur, etiam ostentatio eius mutabitur.

Resource administratione

cpu

Curramus nginx, php-fpm et mysql in calculonis servi. Haec officia etiam plures processus cursus habebunt, quarum singulae facultates computantes requirit;

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)
(numeri in lapsu sunt "psittaci", opus abstractum cuiusque processus ad vim computandam)

Ut facilius cum hoc elaborare possit, logicum est processus in coetus (exempli gratia, omnes nginx processus in unum "nginx" globum iungere. Simplex et evidens modus hoc facere est singulas coetus in vase ponere;

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Perge porro meminisse debes quid vas (in Linux). Eorum aspectus cum tribus praecipuis nucleis in nucleo possibilis factus est, qui satis diu ante implevit; capabilities, spatiis nominalibus ΠΈ cgroups. Et ulterius progressus technologiae aliis facilior est (complectendo conchas "commodos" sicut Docker);

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

In contextu relationis, tantum interest in cgroups, quia coetus moderatorum pars sunt functionis continentiae (Docker, etc.) instrumentorum instrumentorum administrationis. Processus in circulos coniunctos, sicut voluimus, coetus potestates sunt.

Redeamus ad CPU requisita his processibus, nunc ad circulos processuum:

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)
(Ipeo omnes numeros esse expressio abstracta necessitatis opum)

Eodem tempore, ipsa CPU subsidia finita habet hoc est, 1000 in exemplo.qua quisque carere potest (summa necessitas omnium coetuum 150+850+460=1460). Quid in hoc casu fiet?

Acinum nucleus incipit distribuere facultates et id facit "satis", quod tantundem facultatum unicuique coetui tribuit. Sed in primo casu plures sunt quam opus (333> 150), sic in subsidiis manet excessus (333-150=183), qui etiam aequaliter inter duo alia continentia distribuitur;

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Unde: primus continens facultates satis habuit, secundus - satis facultates non habuit, tertius - satis opes non habuit. Hic est effectus actionum "honestum" scheduler in Linux - CFS. Adaequari potest eius operatio per assignationem pondus singula vasa. Exempli gratia;

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Intueamur casum facultatum defectus in secundo vase (php-fpm). Omnia continens facultates aequaliter inter processuum distribuuntur. Quam ob rem dominus processus bene operatur, sed omnes operarii retardant, accipientes minus quam dimidium eorum quae indigent;

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Ita CFS opera schedula. Dicemus porro pondera quae vasis assignamus petitiones. Quid ita sit - vide porro.

Rem omnem ex altera parte inspiciamus. Ut scis, omnes viae Romam ducunt et in casu computatorio ad CPU. Unus CPU, multa opera - lumine negotiationis opus est. Simplicissima via ad facultates regendas est "lucis negotiationis": unum processum certum accessum dederunt ad tempus CPU, deinde unum, etc.

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Durus quotas dicitur aditus (Durum limitandi). Tantum ut meminerimus fines. Attamen, si limites omnibus vasis distribueris, quaestio oritur: mysql per viam agitantem et in aliquo puncto eius necessitatem CPU finivit, sed omnes alii processus expectare coguntur usque ad CPU otiosus.

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Redeamus ad nucleum Linux eiusque commercium cum CPU - altiore pictura hoc modo:

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

cgroup has duas occasus - essentialiter hae sunt duae simplices "torquet" quae decernere te permittunt:

  1. pondus continens (petitiones) is partibus;
  2. recipis totius CPU tempus operandi in vas officiis (terminum) est quota.

Quomodo metiri CPU?

Diversi sunt modi;

  1. quod psittacorumnemo scit β€” omni tempore agere debes.
  2. rem clarius, sed relativum: 50% servientis cum 4 nucleis et cum 20 nucleis sunt omnino diversae res.
  3. Vos can utor quos supra memoravi pondusquas Linux novit, sed sunt relativa.
  4. Optio aptissima est metiendis facultatibus computandis seconds. Illae. in secundis processus temporis relativis secundis temporis realis: 1 secunda processus temporis per 1 realem secundo data est - hoc est unum nucleum integrum CPU.

Id quo facilius dicam, metiri se coeperunt nucleisignificant eos idem CPU tempore reali relativum. Cum Linux pondera intelligit, sed non tantum CPU temporis/coros, ma- china ab uno ad alterum transferenda fuit.

Consideremus exemplum simplex cum cultore cum coros 3 CPU, ubi tria siliqua dabuntur pondera (500, 1000 et 1500) quae facile convertuntur in partes respondentes cororum illis partita (0,5, 1 et 1,5).

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Si secundam accipias, ubi tot erunt nuclei bis (6), et siliquae idem ibi pones, distributio nucleorum facile computari potest per 2 et 1 simpliciter multiplicando (2, 3 et 3000, respective). Sed momentum momentum incidit cum quartum vasculum in hoc servo apparet, cuius pondus, pro opportunitate, erit XNUMX. Partem facultatum CPU aufert (dimidii nuclei), et reliquae siliquae calculatae (dimidiatum);

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Kubernetes et CPU facultates

In Kubernetes, opes CPU mensurari solent milliadrax, i.e. 0,001 nuclei sumuntur ut basis pondus. (Idem in terminologia Linux/cgroups participium CPU appellatur, quamvis pressius 1000 millicores = 1024 CPU participat. K8s efficit ut non plus leguminis in servo collocet quam facultates CPU pro summa ponderum omnium leguminis.

Quomodo hoc fiet? Cum servo ad botrum Kubernetes addideris, quot nucleos CPU in promptu habet, narratur. Et cum novum vasculum creando, Kubernetes schedulae scit quot nuclei huius vasculi indigebunt. Sic vasculum tribuetur servo ubi sunt satis nuclei.

Quid fiet si non petitio specificatur (i.e. vasculum definitum numerum metretarum quibus indiget) non habet? Inspice quomodo Kubernetes vulgo facultates numerat.

Vasculum enim utrumque petitiones (CFS scheduler) et limites exprimere potes (memini lucis negotiationis?).

  • Si aequalia certa sunt, vasculum genus QoS assignatur praestati. Hic numerus nucleorum semper praesto est praestatur.
  • Si petitio minor est quam modus - QoS classis burstable. Illae. Exspectamus vasculum, exempli gratia, semper uti nucleo, sed hic valor limitationem non habet; numquam vasculum plus uti potest (cum servo liberas facultates habet).
  • Est etiam genus QoS optimus conatus β€” eosdem siliquas includit pro quibus petitio non specificata est. Facultates illis novissimae dantur.

memoriae

Cum memoria res similis est, sed paulo aliter, sed alia est ratio harum facultatum. Fere analogia talis est;

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Videamus quomodo petitiones memoriae perficiantur. Siliquae vivant in servo, mutandae memoriae consumptionem, donec una earum tanta fiat ut memoria exeat. Hoc in casu, OOM interfector apparet et maximas processus necat;

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Id nobis non semper convenit, ut ea quae processus magni momenti sunt nobis moderari possit nec occidantur. Ad hoc utere modulo oom_score_adj.

Redeamus ad classes CPU ad QoS et analogiam ducamus cum valoribus oom_score_adj qui prioritatibus siliquae consumptionis memoriam determinant:

  • Infimum oom_score_adj valoris vasculi - -998 - significat talem vasculum occidi debere novissime, hoc praestati.
  • Summum M - is optimus conatussiliquae prius occiditur.
  • Computare reliquas valores (burstable) formula est, cuius essentia eo ulcera quo plus vasculi opes postulavit, eo minus verisimile est occidi.

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Secundus "torquent" - limit_in_bytes β€” Pro limitibus. Cum ea omnia simpliciora sunt: ​​maximam quantitatem memoriae editae simpliciter assignamus, et hic (dissimile CPU) nulla quaestio est quomodo eam metiaris (memoriam).

in summa

Quodlibet vasculum in Kubernetibus datum est requests ΠΈ limits - parametri pro CPU et memoria;

  1. Ex petitionibus, opera schedula Kubernetes, quae siliquas inter ministratores distribuit;
  2. in omnibus parametris fundatum, determinatum est genus pod's QoS;
  3. Pondera relativa in petitionibus CPU computantur;
  4. schedula CFS in petitionibus CPU configuratur;
  5. OOM homicida configuratur ex memoria petitionum;
  6. lux negotiationis in CPU limitibus configuratur;
  7. Limitibus memoriae fundatis, limites pro globus configuratur.

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

In genere, haec imago omnibus quaestionibus respondet quomodo principalis pars administrationis subsidii in Kubernetes evenit.

Autoscaling

K8s botri autoscaler

Fingamus nos totam botrum iam occupatum esse et novum vasculum creandum esse. Vasculum dum apparere non potest, in statu pendet eviewray. Ut appareat, possumus novum ministratorem cum botro coniungere vel ... instituere botrum autoscalarium, quod nobis faciet: disponere virtualem machinam e provisore nubis (API rogatu utente) et ad botrum coniunge. post quem vasculum addetur .

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Hoc est autoscaling botri Kubernetes, quod magna operatur (in nostra experientia). Sed, ut alibi, nuances sunt aliqua hic...

Quamdiu abundavimus botri magnitudine, omnia bene erant, sed evenit quando botri coepit liberare se? Problema est siliquas migrantes (ad liberandas catervas) valde technice difficilis et pretiosus est secundum facultates. Omnino aliter utitur Kubernetes.

Considera botrum 3 ministrantium quod instruere habet. Siliquas habet sex: nunc singulae duae servo sunt. Quadam ratione unum e servientibus averti voluimus. Ad hoc utemur imperio kubectl drainquem:

  • novum siliquam huic servo mittere prohibebit;
  • siliquas existentium delebit in calculonis servi.

Cum Kubernetes reus est siliquarum numerum conservandi (6), illud simpliciter recreabit in aliis nodis, sed non in una debilitata, quia iam notatum est ut unavailable ad novum legumen hospitandum. Hic mechanicus fundamentalis pro Kubernetes est.

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Sed nuance hic quoque est. In simili condicione, pro StatefulSet (pro instruere), actiones diversae erunt. Iam nunc habemus statalem applicationem - exempli gratia tres siliquas cum MongoDB, quorum unus habet aliquam quaestionem (notitia corrupta est vel alius error qui vetat vasculum recte inchoare). Et iterum decernimus ut disable unum servo. Quæ in ea ventura?

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

MongoDB posset moriatur quia indiget quorum: nam botrus trium officinarum ad minus duo operari debet. Sed hoc non fieri - gratias PodDisruptionBudget. Hic modulus determinat minimum numerum exiguum siliquarum laborantium. Sciens unum e siliquis MongoDB iam non laborat, et cum PodDisruptionBudget in MongoDB positum est. minAvailable: 2, Kubernetes non patietur te vasculum delere.

Linea ima: ut ad motum (et re vera recreationis) siliquae ad recte operandum cum botrus emissus est, necesse est PodDisruptionBudget configurare.

Horizontalis scaling

Aliam rem consideremus. Applicatio cursus instruere in Kubernetes est. Negotiatio usoris ad eius siliquas venit (exempli gratia tres ex illis sunt), et signum quoddam in eis metimur (dic, CPU onere). Cum pondus augetur, hoc in schedula commemoramus et numerum leguminis augemus ad petitiones distribuendas.

Hodie in Kubernetes hoc manually fieri non debet: aucta latae / diminutio in numero siliquae configuratur secundum valores indicatorum mensurae oneris.

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Quaestiones principales hic sunt: quidnam ut metiretur? ΠΈ quam interpretari obtinet valores (ad decernendum de numero leguminis mutato). Multum potes metiri;

Autoscaling and resource procuratio in Kubernetes (respectiva et fama video)

Quam technice hoc facere - metricam orationem, etc. - singillatim locutus sum in fama de Cras et Kubernetes. Praecipuum consilium est ad parametri meliorem eligendam experimentum!

Sunt Usus modum (Utilization satietatem et errorescuius significatio talis est. Ad quam rationem facit sensum scalae, verbi gratia, php-fpm? Ex eo quod opifices currunt, hoc est USUS. Et si operarii excurrunt et novae coniunctiones non recipiuntur, hoc iam est saturitas,. Ambo parametri metiri debent, et secundum valores escendere oportet.

Sed in finem

Relatio continuam habet: de scalis verticalibus et quomodo facultates ius eligendi. Ego loqui de hoc in futuro videos on nostrum YouTube - subscribo sic te non fallunt!

Videos et labitur

Video ab effectu (44 minuta);

Exhibitio relationis;

PS

Aliae relationes de Kubernetes in nostro diario:

Source: www.habr.com