Quomodo accedere Kubernetes Pod resources

Quomodo accedere Kubernetes Pod resourcesPraemium a Tohad

Cum Kubernetes proficiscens, commune est oblivisci de subsidiis vasis constituendis. Hoc loco satis est efficere ut imago Docker opera et ad botrum Kubernetes explicari possit.

Sed postea applicatio necessaria est in collectione botri cum aliis medicamentis explicanda. Ad hoc, subsidia in continenti collocare debes et fac satis esse ad applicationes et cursus acquirendas, et ceterae applicationes currentes difficultates non experientur.

bigas Kubernetes aaS ex Mail.ru translati sunt articuli de opibus continentibus (CPU & MEM), petitiones et limitationes resource. Beneficia horum occasus scies et quid eveniat si non posueris.

opibus computatis

Duo genera opum habemus cum sequentibus unitatibus:

  • Unitas centralis processus (CPU) - coros;
  • Memoriae (MEM) — bytes.

Copiae pro unoquoque vase specificatae sunt. In sequenti Pod YAML fasciculo, sectionem opum videbis quae facultates petitas ac limites continet;

  • Pod Resources petita = summa copiarum omnium vasorum petitarum;
  • Pod Resource Limit = Summa omnium Pod Resource Limites.

apiVersion: v1
kind: Pod
metadata:
  name: backend-pod-name
  labels:
    application: backend
spec:
  containers:
    — name: main-container
      image: my-backend
      tag: v1
      ports:
      — containerPort: 8080
      resources:
        requests:
          cpu: 0.2 # REQUESTED CPU: 200m cores
          memory: "1Gi" # REQUESTED MEM: 1Gi
        limits:
          cpu: 1 # MAX CPU USAGE: 1 core
          memory: "1Gi" # MAX MEM USAGE:  1Gi
    — name: other-container
      image: other-app
      tag: v1
      ports:
      — containerPort: 8000
      resources:
        requests:
          cpu: "200m" # REQUESTED CPU: 200m cores
          memory: "0.5Gi" # REQUESTED MEM: 0.5Gi
        limits:
          cpu: 1 # MAX CPU USAGE: 1 core
          memory: "1Gi" # MAX MEM USAGE:  1Gi

Exemplum de rogata et limitata Resources

agri resources.requested ex specificatione Pod unum est elementorum quae node desiderata invenire adhibetur. Iam potes Pod instruere ad eam. Quomodo nodi invenis idoneam?

Kubernetes pluribus componentibus constat, incluso nodi domini vel magistri nodi (Kubernetes Control Plane). Nodus magister plures processus habet: kube-apiservator, kube-control-procurator et kube-scheduler.

Processus kube-scheduler responsabilis est siliquas recentes creatas recognoscere et nodos possibilis laborantis invenire qui petitionibus podagras omnibus aequant, incluso numero opum petitarum. Nodorum index inventus kube-scheduler computatur. Vasculum in nodi supremis ustulo horarium est.

Quomodo accedere Kubernetes Pod resourcesUbi purpurea Pod collocabitur?

In pictura videre potes quod kube-scheduler novum purpureum Pod statuere debet. Botrus Kubernetes duos nodos continet: A et B. Ut videre potes, kube-scheduler non possunt Podex nodi A - in promptu (inquisita) petitionibus Podex purpurei non congruit. Itaque, 1 GB memoriae petitum a Podca purpurea in nodi A non convenit, cum memoria praesto sit 0,5 GB. Sed nodi B habet satis facultates. Quam ob rem kube-scheduler destinatum nodi B. purpureum esse censet Pod.

Nunc scimus quomodo facultates petitae electionem nodi afficiunt ad Podex currere. Sed quis est impetus subsidiorum marginalium?

Subsidium limes est terminus quem CPU/MEM transire non potest. Attamen subsidium CPU flexibile est, ideo continentia quae ad CPU fines pertingit, Pod exire non faciet. Pro, CPU suffocatio incipiet. Si MEM usus modus attingitur, continens obstruetur ob OOM-Killer et si permissum est ab occasu RestartPolicy, sistat.

Rogatus et opes maximas in speciali

Quomodo accedere Kubernetes Pod resourcesResource communicationis inter Docker et Kubernetes

Optime explicandum est quomodo subsidiorum petitiones et limites copiarum laborant, ut relationem inter Kubernetes et Docker introducant. In imagine supra videre potes quomodo agros Kubernetes et vexilla Docker startup referantur.

Memoria: petitio et limitatio

containers:
...
 resources:
   requests:
     memory: "0.5Gi"
   limits:
     memory: "1Gi"

Ut supra dictum est, memoria in bytes mensuratur. Fundatur Documenta Kubernetesmemoriam numero nominare possumus. Plerumque integer est, exempli gratia 2678 - id est, 2678 bytes. Suffixes uti potes G и Gisumma res est meminisse se non esse. Prima decimalis et secunda binaria. Simile exemplum de quo in documentis k8s: 128974848, 129e6, 129M, 123Mi — aequiparantur.

Kubernetes option limits.memory aequet vexillum --memory from Docker. In casu request.memory Sagitta nulla Docker est quod Docker hoc agro non utitur. Quaeres, hoc etiam necessarium est? Etiam eget. Ut ante dixi, ager res ad Kubernetes pertinet. Ex indicio inde, kube-scheduler statuit qua nodi Pod statuere.

Quid accidit, si pro petitione memoriam insufficiens posueris?

Si continens ad limites memoriae petitae pervenerit, tunc Pod in globo Siliquae sistitur, cum memoria in nodo non satis est.

Quid accidit, si memóriáé terminum preme posuísti?

Si continens modum excedat memoriam, terminabitur propter OOM-Occid. Et sileo si fieri potest secundum RestartPolicy ubi defectus pretii est Always.

Quid si non petitam memoriam definias?

Kubernetes terminum valorem capiet et eum pro defectu pretii ponet.

Quid fieri potest, si memoriam limitis non definias?

Continens restrictiones non habet, memoria tantum uti potest quantum vult. Si incipit uti omni memoria nodi in promptu, tunc OOM eum interficiet. Continens tunc si fieri potest in RestartPolicy silebitur.

Quid si memoriam non nominat limites?

Pessimus hic casus est missionis: schedula nescit quot opes continens requirit, et hoc potest gravissimas difficultates in nodo causare. Hoc in casu, pulchrum esset limites habere in spatio nominali (per LimitRange positum). Limites defectus non sunt - Pod non habet limites, tantum memoriae uti potest quantum vult.

Si memoria petita plus est quam nodi offerre potest, Podex non accedet. Gravis meminisse quod Requests.memory — non minimi pretii. Hec est descriptio quantitatis memorie sufficiens ad conservandum continentem currentem continue.

Solet commendatur ut idem valent request.memory и limit.memory. Hoc efficit ut Kubernetes Pod nodi in nodi satis memoriae non statuerent ad currendum Pod sed non satis ad illud currendum. Meminerint: Pod Kubernetes consilio tantum rationem habitet requests.memoryquod limits.memory non ratione habita.

CPU: petitio et modus

containers:
...
 resources:
   requests:
     cpu: 1
   limits:
     cpu: "1200m"

Cum CPU omnia paulo faciliora sunt. Revertere ad imaginem necessitudinis inter Kubernetes et Docker, videre potes request.cpu соответствует --cpu-shares, cum limit.cpu aequet vexillum cpus in Docker.

CPU quod postulationes Kubernetes multiplicantur per 1024, proportio CPU cyclorum. Si vis petere 1 plenum nucleum, debes addere cpu: 1ut supra ostensum est.

Petens nucleum plenum (proportio= 1024) non significat vas tuum recipiet. Si apparatus hospes tuus solum unum nucleum habet et plus quam unum receptaculum curris, omnia vasa CPU praesto inter eas communicare debent. Quomodo hoc fiet? Intueamur imaginem.

Quomodo accedere Kubernetes Pod resources
CPU Request - Single Core System

Fingamus te habere unum nucleum hospitii systematis vasis currentis. Mom (Kubernetes) crustum (CPU) coxit et inter filios dividere vult. Tres pueri pie totum volunt (proportio = 1024), alius puer pie dimidium cupit (512). Mater pulchra esse vult et simplicem calculum facit.

# Сколько пирогов хотят дети?
# 3 ребенка хотят по целому пирогу и еще один хочет половину пирога
cakesNumberKidsWant = (3 * 1) + (1 * 0.5) = 3.5
# Выражение получается так:
3 (ребенка/контейнера) * 1 (целый пирог/полное ядро) + 1 (ребенок/контейнер) * 0.5 (половина пирога/половина ядра)
# Сколько пирогов испечено?
availableCakesNumber = 1
# Сколько пирога (максимально) дети реально могут получить?
newMaxRequest = 1 / 3.5 =~ 28%

Ex ratione, tres pueri XXVIII% nucleum accipient, et non totum nucleum. Quartus puer XIV% nuclei pleni, non dimidium erit. Sed res diversae erunt si multi- core ratio habeatur.

Quomodo accedere Kubernetes Pod resources
CPU Request - Multi-Core (4) System

Per imaginem tuam videre potes quod tres pueri totum pie volunt, et unus dimidium. Cum mom coctus quattuor pastillos, quilibet filiorum eius habebit quot voluerint. In systemate multi-core, processus facultates per omnes nucleos processus opportunos distribuuntur. Si continens intra minus quam unum nucleum plenum CPU contrahitur, eo adhuc C% uti potest.

Calculationes superiores faciliores sunt ad intelligendum quomodo CPU inter continentia distribuitur. Utique, praeter ipsas continentia, aliae sunt processus quae facultates CPU utuntur. Cum processus in uno vase otiosus est, aliae facultates suas uti possunt. CPU: "200m" соответствует CPU: 0,2quod significat circiter XX% unius nuclei.

Nunc fama limit.cpu. CPU limites Kubernetes multiplicantur per 100. Quo fit, quantum temporis continens uti singulis 100 µs potest.cpu-period).

limit.cpu aequet Docker vexillum --cpus. Hoc est novum compositum ex antiquis --cpu-period и --cpu-quota. Ex hoc statuendo indicamus quot facultates CPU praesto sint continens maxime uti ante iugulare incipit:

  • cpu - combination cpu-period и cpu-quota. cpus = 1.5 equivalent ad occasum cpu-period = 100000 и cpu-quota = 150000;
  • CPU-tempus - tempus CPU CFS scheduler, default 100 microseconds;
  • cpu-quota - numerus microseconds intus cpu-periodquod inter continens.

Quid accidit, si insufficiens CPU postulavit?

Si continens plus indiget quam inaugurato, aliis processibus CPU furabitur.

Quid accidit, si CPU modum preme pones?

Cum resource CPU adaptabile est, iugulare in futurum est.

Quid accidit si petitionem CPU non specificare?

Ut cum memoria, petitio valoris aequalis est termino.

Quid accidit si CPU terminum non specificare?

Continens CPU tantum utetur quantum necesse est. Si ratio defalta CPU (LimitRange) in spatio nominali definitur, hic modus etiam pro continente ponitur.

Quid accidit, si vel petitionem vel terminum CPU non specificas?

Ut cum memoria, hoc pessimum est missionem. Schedularius nescit quot facultates vestrae continens necessitates habet, et hoc gravia problemata in nodo causare potest. Hoc ut evitet, defectus nomina spatiis (LimitRange) definire debes (LimitRange).

Memento: si plus CPU petis quam nodi possunt praebere, Podex non accedet. Requests.cpu - non minimi pretii, sed valoris sufficientis ad initium Podex et opera sine defectis. Si applicationes calculis implicatis non exercet, optima optio instituendi est request.cpu <= 1 tot replicas quam necesse est deducunt.

Idealis moles petitum opibus vel resource limit

De limitatione computandi facultates didicimus. Nunc tempus est ad interrogationem respondendam: "Quam multae facultates meae Pod requirit applicationem sine ullis quaestionibus currere? Quid est specimen moles?

Infeliciter, istis quaestionibus non sunt manifestae responsiones. Si nescis quomodo applicationis tua opera vel quantum CPU vel memoria indiget, optima bene applicatio multum memoriae ac CPU tribuat ac deinde peractionem probat.

Praeter probationes perficiendas, monitor applicationis agendi in vigilantia septimanae. Si graphae indicantes applicationem tuam pauciores facultates consumere quam postulasti, quantitatem CPU vel memoriam petitam minuere potes.

Exemplum hoc Grafana ashboardday. Ostendit differentiam inter facultates vel subsidia petitas limites et subsidiorum usum hodiernam.

conclusio,

Opibus petendis et limitandis adiuvat, ut tua Kubernetes botrum saluum servet. Proprius modus configurationis minimizat impensas et applicationes semper servat.

Denique pauca memoranda sunt;

  1. Facultates petitae configurationem sunt quae in tempore satus (cum Kubernetes ad applicationem hospitii disponit). E contra, limitandi facultates magni momenti sunt in runtime-cum applicatio iam in nodo currit.
  2. Comparatus ad memoriam, CPU est resource ordinatus. Si non satis est CPU, Podex tuus non claudit ac iugulum mechanismum vertet.
  3. Facultates et copiae petitae limites non sunt valores minimi et maximi! Opes petitas definiendo, curabis ut applicatio sine problematibus cursura sit.
  4. Bona consuetudo est ut memoriam petant par ad memoriam terminum.
  5. Ok install rogatum CPU <=1si applicatio calculi multiplex non fungitur.
  6. Si plura requiris facultates quam in nodo praesto sunt, Podex numquam illi nodo accedendus est.
  7. Ad rectam quantitatem petitarum facultatum definiendam / limites resource, utere onere probatio et vigilantia.

Spero hunc articulum adiuvat ut notionem fundamentalem subsidii limitationis intelligas. Et hanc scientiam in opere tuo adhibere poteris.

Fortuna!

Quid est aliud legere;

  1. SRE Observabilitas: Spatii et Structure Metric.
  2. 90+ utilia instrumenta ad Kubernetes: instruere, procuratio, vigilantia, securitas et plura.
  3. Nostra canalis circum Kubernetes in Telegram.

Source: www.habr.com

Add a comment