
Agus tú ag tosú amach le Kubernetes, tá sé coitianta dearmad a dhéanamh ar acmhainní coimeádáin a bhunú. Ag an bpointe seo, is leor a chinntiú go n-oibríonn íomhá Docker agus gur féidir é a imscaradh chuig braisle Kubernetes.
Ach ina dhiaidh sin is gá an feidhmchlár a imscaradh i mbraisle táirgeachta in éineacht le feidhmchláir eile. Chun seo a dhéanamh, ní mór duit acmhainní a leithdháileadh don choimeádán agus a chinntiú go bhfuil go leor acu ann chun an feidhmchlár a chur ar bun agus a fheidhmiú, agus nach mbeidh fadhbanna ag feidhmchláir reatha eile.
Foireann d'aistrigh alt faoi acmhainní coimeádáin (LAP & MEM), iarratais agus srianta acmhainní. Foghlaimeoidh tú buntáistí na socruithe seo agus cad a tharlóidh mura socraíonn tú iad.
Acmhainní ríomhaireachta
Tá dhá chineál acmhainní againn leis na haonaid seo a leanas:
- Láraonad próiseála (LAP) - croíleacáin;
- Cuimhne (MEM) - bearta.
Sonraítear acmhainní do gach coimeádán. Sa chomhad Pod YAML seo a leanas, feicfidh tú rannán acmhainní ina bhfuil na hacmhainní iarrtha agus teorainn:
- Acmhainní Pod Iarrtha = suim acmhainní iarrtha na gcoimeádán go léir;
- Teorainn Acmhainní Pod = Suim na dTeorainneacha Acmhainní Pod go léir.
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: 1GiSampla d'Acmhainní Iarrtha agus Teoranta
Réimse resources.requested ón tsonraíocht Tá Pod ar cheann de na heilimintí a úsáidtear chun an nód atá ag teastáil a fháil. Is féidir leat imscaradh Pod a phleanáil dó cheana féin. Conas a aimsíonn tú nód oiriúnach?
Tá roinnt comhpháirteanna i Kubernetes, lena n-áirítear máistir nód nó máistir nód (Plána Rialaithe Kubernetes). Tá roinnt próisis ag an máistir nód: kube-apiserver, kube-controller-manager agus kube-scheduler.
Tá an próiseas kube-scheduler freagrach as pods nuachruthaithe a athbhreithniú agus as nóid oibrithe féideartha a aimsiú a thagann le gach iarratas ar pods, lena n-áirítear líon na n-acmhainní a iarrtar. Tá liosta na nóid a aimsíonn kube-scheduler rangaithe. Tá an pod sceidealta ar an nód leis na scóir is airde.
Cá gcuirfear an Pod corcra?
Sa phictiúr is féidir leat a fheiceáil gur chóir do kube-scheduler Pod corcra nua a sceidealú. Tá dhá nód i mbraisle Kubernetes: A agus B. Mar a fheiceann tú, ní féidir le kube-scheduler Pod a sceidealú ar nód A - ní mheaitseálann na hacmhainní atá ar fáil (gan iarraidh) le hiarratais an Phod corcra. Mar sin, ní bheidh an 1 GB de chuimhne a iarrann an Pod corcra oiriúnach ar nód A, ós rud é gurb é 0,5 GB an chuimhne atá ar fáil. Ach tá go leor acmhainní ag nód B. Mar thoradh air sin, cinneann kube-scheduler gurb é nód B ceann scríbe an phod corcra.
Anois tá a fhios againn conas a théann na hacmhainní a iarrtar i bhfeidhm ar an rogha nód chun an Pod a rith. Ach cén tionchar atá ag acmhainní imeallacha?
Is teorainn í an teorainn acmhainne nach féidir leis an LAP/MEM a thrasnú. Mar sin féin, tá acmhainn an LAP solúbtha, mar sin ní chuirfidh coimeádáin a shroicheann a dteorainneacha LAP an Pod amach. Ina áit sin, cuirfear tús le smeartha LAP. Má shroichtear an teorainn úsáide MEM, stopfar an coimeádán mar gheall ar OOM-Killer agus déanfar é a atosú má cheadaítear é leis an socrú RestartPolicy.
Na hacmhainní iarrtha agus uasta go mion
Cumarsáid acmhainní idir Docker agus Kubernetes
Is é an bealach is fearr chun a mhíniú conas a oibríonn iarratais acmhainní agus teorainneacha acmhainní an caidreamh idir Kubernetes agus Docker a thabhairt isteach. San íomhá thuas is féidir leat a fheiceáil conas a bhaineann réimsí Kubernetes agus bratacha tosaithe Docker.
Cuimhne: iarraidh agus teorannú
containers:
...
resources:
requests:
memory: "0.5Gi"
limits:
memory: "1Gi"
Mar a luadh thuas, déantar cuimhne a thomhas i mbearta. Bunaithe ar , is féidir linn cuimhne a shonrú mar uimhir. De ghnáth is slánuimhir é, mar shampla 2678 - is é sin, 2678 bytes. Is féidir leat iarmhíreanna a úsáid freisin G и Gi, is é an rud is mó a mheabhrú nach bhfuil siad comhionann. Is é an chéad deachúil agus an dara ceann dénártha. Cosúil leis an sampla atá luaite i ndoiciméadú k8s: 128974848, 129e6, 129M, 123Mi - tá siad comhionann go praiticiúil.
Rogha Kubernetes limits.memory oireann an bhratach --memory ó Docker. I gcás request.memory Níl aon saighead ann do Docker toisc nach n-úsáideann Docker an réimse seo. Is féidir leat a iarraidh, an bhfuil sé seo riachtanach fiú? Is gá. Mar a dúirt mé cheana, tá an réimse tábhachtach do Kubernetes. Bunaithe ar an bhfaisnéis uaidh, cinneann kube-scheduler cén nód chun an Pod a sceidealú.
Cad a tharlaíonn mura socraíonn tú go leor cuimhne d’iarratas?
Má tá teorainneacha na cuimhne iarrtha bainte amach ag an gcoimeádán, ansin cuirtear an Pod i ngrúpa Podanna a stopann nuair nach bhfuil go leor cuimhne sa nód.
Cad a tharlaíonn má shocraíonn tú an teorainn chuimhne ró-íseal?
Má sháraíonn an coimeádán an teorainn chuimhne, cuirfear deireadh leis mar gheall ar OOM-Killed. Agus atosóidh sé más féidir bunaithe ar RestartPolicy áit a bhfuil an luach réamhshocraithe Always.
Cad a tharlaíonn mura sonraíonn tú an chuimhne iarrtha?
Glacfaidh Kubernetes an luach teorann agus socróidh sé é mar an luach réamhshocraithe.
Cad is féidir a tharlóidh mura sonraíonn tú teorainn chuimhne?
Níl aon srianta ar an gcoimeádán; is féidir leis an oiread cuimhne a úsáid agus is mian leis. Má thosaíonn sé ag baint úsáide as gach cuimhne atá ar fáil ar an nód, ansin maróidh OOM é. Déanfar an coimeádán a atosú ansin más féidir bunaithe ar RestartPolicy.
Cad a tharlaíonn mura sonraíonn tú teorainneacha cuimhne?
Is é seo an cás is measa: níl a fhios ag an sceidealóir cé mhéad acmhainní a theastaíonn ón gcoimeádán, agus féadfaidh sé seo fadhbanna tromchúiseacha a chruthú ar an nód. Sa chás seo, bheadh sé go deas teorainneacha réamhshocraithe a bheith ar an ainmspás (socraithe ag LimitRange). Níl aon teorainneacha réamhshocraithe - níl aon teorainneacha ag an Pod, is féidir leis an oiread cuimhne a úsáid agus is mian leis.
Má tá an chuimhne iarrtha níos mó ná mar is féidir leis an nód a thairiscint, ní bheidh an Pod sceidealaithe. Tá sé tábhachtach cuimhneamh air sin Requests.memory - ní an t-íosluach. Is cur síos é seo ar an méid cuimhne atá leordhóthanach chun an coimeádán a choinneáil ag rith go leanúnach.
De ghnáth moltar an luach céanna a shocrú le haghaidh request.memory и limit.memory. Cinntíonn sé seo nach ndéanfaidh Kubernetes Pod a sceidealú ar nód a bhfuil go leor cuimhne aige chun an Pod a rith ach nach bhfuil go leor chun é a rith. Coinnigh i gcuimhne: ní thógann pleanáil Kubernetes Pod ach san áireamh requests.memoryAgus limits.memory ní chuireann san áireamh.
LAP: iarratas agus teorainn
containers:
...
resources:
requests:
cpu: 1
limits:
cpu: "1200m"
Le LAP tá gach rud beagán níos casta. Ag filleadh ar an bpictiúr ar an gcaidreamh idir Kubernetes agus Docker, is féidir leat é sin a fheiceáil request.cpu соответствует --cpu-shares, ach limit.cpu oireann an bhratach cpus sa Docker.
Méadaítear an LAP a iarrann Kubernetes faoi 1024, comhréir na dtimthriallta LAP. Más mian leat 1 croí iomlán a iarraidh, ní mór duit cur leis cpu: 1mar a thaispeántar thuas.
Má iarrann tú eithne iomlán (comhaireacht = 1024) ní chiallaíonn sé sin go bhfaighidh do choimeádán é. Mura bhfuil ach croí amháin ag do mheaisín óstach agus go bhfuil níos mó ná coimeádán amháin á rith agat, ansin caithfidh gach coimeádán an LAP atá ar fáil a roinnt eatarthu. Conas a tharlaíonn sé seo? Breathnaímid ar an bpictiúr.

Iarratas LAP - Croíchóras Aonair
Samhlóimid go bhfuil córas óstach aon-lárnach agat ag rith coimeádáin. Rinne Mam (Kubernetes) pie (LAP) a bhácáil agus ba mhaith léi é a roinnt idir leanaí (coimeádáin). Tá triúr leanaí ag iarraidh pióg iomlán (comhréir = 1024), tá leanbh eile ag iarraidh leath pióg (512). Ba mhaith le Mam a bheith cothrom agus déanann sí ríomh simplí.
# Сколько пирогов хотят дети?
# 3 ребенка хотят по целому пирогу и еще один хочет половину пирога
cakesNumberKidsWant = (3 * 1) + (1 * 0.5) = 3.5
# Выражение получается так:
3 (ребенка/контейнера) * 1 (целый пирог/полное ядро) + 1 (ребенок/контейнер) * 0.5 (половина пирога/половина ядра)
# Сколько пирогов испечено?
availableCakesNumber = 1
# Сколько пирога (максимально) дети реально могут получить?
newMaxRequest = 1 / 3.5 =~ 28%Bunaithe ar an ríomh, gheobhaidh triúr leanaí 28% den chroílár, agus ní an croí iomlán. Gheobhaidh an ceathrú leanbh 14% den eithne iomlán, ní leath. Ach beidh rudaí difriúil má tá córas il-lárnach agat.

Iarratas LAP - Córas Il-Chroí (4).
San íomhá thuas is féidir leat a fheiceáil gur mhaith le triúr leanaí pie iomlán, agus ba mhaith le duine leath. Ós rud é gur bhácáil mamaí ceithre pióga, gheobhaidh gach ceann dá leanaí an oiread agus is mian leo. I gcóras illárnach, déantar acmhainní próiseálaithe a dháileadh ar na croíleacáin phróiseálaithe go léir atá ar fáil. Má tá coimeádán teoranta do níos lú ná croí iomlán LAP amháin, is féidir é a úsáid fós ag 100%.
Déantar na ríomhanna thuas a shimpliú chun tuiscint a fháil ar an gcaoi a ndéantar LAP a dháileadh i measc coimeádáin. Ar ndóigh, seachas na coimeádáin féin, tá próisis eile ann a úsáideann acmhainní LAP freisin. Nuair a bhíonn próisis i gcoimeádán amháin díomhaoin, is féidir le daoine eile a acmhainn a úsáid. CPU: "200m" соответствует CPU: 0,2, rud a chiallaíonn thart ar 20% de chroí amháin.
Anois, déanaimis labhairt faoi limit.cpu. Méadaítear an LAP a theorannaíonn Kubernetes faoi 100. Is é an toradh ná an méid ama is féidir leis an gcoimeádán a úsáid gach 100 µs (cpu-period).
limit.cpu a mheaitseálann bratach an Docker --cpus. Is meascán nua de shean é seo --cpu-period и --cpu-quota. Trí é a shocrú, cuirimid in iúl cé mhéad acmhainní LAP atá ar fáil is féidir leis an gcoimeádán a úsáid is mó sula dtosaíonn an scóig:
- cpus - teaglaim
cpu-periodиcpu-quota. cpus = 1.5comhionann le socrúcpu-period = 100000иcpu-quota = 150000; - LAP-tréimhse - tréimhse , réamhshocraithe 100 microseconds;
- cpu-quota - líon na miocroicindí taobh istigh
cpu-period, atá teorantach ag an gcoimeádán.
Cad a tharlóidh mura shuiteáil tú go leor LAP iarrtha?
Má tá níos mó ag teastáil ón gcoimeádán ná mar atá suiteáilte aige, goidfidh sé LAP ó phróisis eile.
Cad a tharlaíonn má shocraíonn tú teorainn an LAP ró-íseal?
Ós rud é go bhfuil acmhainn an LAP inchoigeartaithe, cuirfear an scóig ar siúl.
Cad a tharlaíonn mura sonraíonn tú iarratas LAP?
Mar is amhlaidh le cuimhne, tá luach an iarratais cothrom leis an teorainn.
Cad a tharlaíonn mura sonraíonn tú teorainn LAP?
Úsáidfidh an coimeádán an oiread LAP agus a theastaíonn uaidh. Má shainmhínítear polasaí réamhshocraithe LAP (LimitRange) san ainmspás, ansin úsáidtear an teorainn seo don choimeádán freisin.
Cad a tharlaíonn mura sonraíonn tú iarratas nó teorainn LAP?
Cosúil le cuimhne, is é seo an cás is measa. Níl a fhios ag an sceidealóir cé mhéad acmhainní atá de dhíth ar do choimeádán, agus féadfaidh sé seo fadhbanna tromchúiseacha a chruthú ar an nód. Chun é seo a sheachaint, ní mór duit teorainneacha réamhshocraithe a shocrú le haghaidh spásanna ainmneacha (LimitRange).
Cuimhnigh: má iarrann tú níos mó LAP ná mar is féidir leis na nóid a sholáthar, ní bheidh an Pod sceidealaithe. Requests.cpu - ní an t-íosluach, ach luach atá leordhóthanach chun an Pod a thosú agus oibriú gan teipeanna. Mura ndéanann an t-iarratas ríomhaireachtaí casta, is é an rogha is fearr a shuiteáil request.cpu <= 1 agus an oiread macasamhla agus is gá a sheoladh.
Méid idéalach na n-acmhainní iarrtha nó teorainn acmhainní
D’fhoghlaimíomar faoi theorannú acmhainní ríomhaireachta. Anois tá sé in am an cheist a fhreagairt: “Cé mhéad acmhainn atá ag teastáil ó mo Phod chun an feidhmchlár a rith gan aon fhadhbanna? Cad é an méid idéalach?
Ar an drochuair, níl aon freagraí soiléire ar na ceisteanna seo. Mura bhfuil a fhios agat conas a oibríonn d’fheidhmchlár nó cé mhéad LAP nó cuimhne atá de dhíth air, is é an rogha is fearr ná go leor cuimhne agus LAP a thabhairt don fheidhmchlár agus ansin tástálacha feidhmíochta a reáchtáil.
Chomh maith le tástálacha feidhmíochta, monatóireacht a dhéanamh ar iompar an iarratais i monatóireacht a dhéanamh ar feadh seachtaine. Má thugann na graif le fios go bhfuil níos lú acmhainní á n-úsáid ag d’iarratas ná mar a d’iarr tú, is féidir leat an méid LAP nó cuimhne a iarradh a laghdú.
Mar shampla féach seo . Taispeánann sé an difríocht idir an teorainn acmhainní nó acmhainní iarrtha agus an úsáid acmhainní reatha.
Conclúid
Cuidíonn acmhainní a iarraidh agus a theorannú do bhraisle Kubernetes a choinneáil sláintiúil. Laghdaíonn cumraíocht chuí teorann costais agus coinníonn sé feidhmchláir i gcónaí.
Go hachomair, tá roinnt rudaí le cur i gcuimhne:
- Is cumraíocht iad acmhainní iarrtha a chuirtear san áireamh ag am tosaithe (nuair a bheartaíonn Kubernetes an t-iarratas a óstáil). I gcodarsnacht leis sin, tá sé tábhachtach acmhainní a theorannú ag am rite - nuair atá an feidhmchlár ag rith ar an nód cheana féin.
- I gcomparáid le cuimhne, is acmhainn rialaithe é an LAP. Mura bhfuil go leor LAP ann, ní dhúnfar do Phod agus cuirfear an mheicníocht sníomh ar siúl.
- Ní íosluachanna agus uasluachanna iad acmhainní iarrtha agus teorainn acmhainní! Trí na hacmhainní a iarrtar a shainiú, cinntíonn tú go rithfidh an feidhmchlár gan fadhbanna.
- Is dea-chleachtas é an t-iarratas cuimhne a shocrú cothrom leis an teorainn chuimhne.
- OK suiteáil iarrtha
CPU <=1, mura ndéanann an t-iarratas ríomhaireachtaí casta. - Má iarrann tú níos mó acmhainní ná mar atá ar fáil ar nód, ní bheidh an Pod sceidealaithe don nód sin choíche.
- Chun an méid ceart acmhainní/teorainneacha acmhainní iarrtha a chinneadh, bain úsáid as tástáil ualaigh agus monatóireacht.
Tá súil agam go gcabhraíonn an t-alt seo leat bunchoincheap an teorannaithe acmhainní a thuiscint. Agus beidh tú in ann an t-eolas seo a chur i bhfeidhm i do chuid oibre.
N-éirí leat!
Cad eile atá le léamh:
- .
- .
- .
Foinse: will.com
