A amata i le Kubernetes, e masani lava ona galo le faʻatulagaina o punaoa pusa. I le taimi nei, ua lava lea e faʻamautinoa ai o loʻo galue le ata Docker ma mafai ona tuʻuina atu i le vaega Kubernetes.
Ae mulimuli ane e manaʻomia le faʻapipiʻiina o le talosaga i se faʻapipiʻi gaosiga faʻatasi ai ma isi talosaga. Ina ia faia lenei mea, e tatau ona e tuʻuina atu punaoa mo le atigipusa ma ia mautinoa o loʻo lava ia mea e maua ai le talosaga ma faʻagaoioia, ma o isi faʻaoga talosaga o le a le oʻo i ni faʻafitauli.
au Kubernetes aaS mai Mail.ru fa'aliliuina se tala e uiga i puna'oa pusa (CPU & MEM), talosaga ma fa'atapula'aina punaoa. O le a e a'oa'oina le aoga o nei fa'atulagaga ma le mea e tupu pe a e le setiina.
Punaoa tau komepiuta
E lua ituaiga a matou punaoa ma iunite nei:
Vaega o le gaosiga tutotonu (CPU) - 'au'au;
Manatua (MEM) - paita.
O punaoa ua faʻamaonia mo pusa taʻitasi. I le faila Pod YAML o loʻo mulimuli mai, o le a e vaʻai i se vaega o punaoa o loʻo i ai mea e manaʻomia ma faʻatapulaʻa punaoa:
Talosaga Pod Punaoa = aofaiga o punaoa talosaga o pusa uma;
Pod Resource Limit = Aotelega uma Pod Resource Limit.
laufanua resources.requested mai le faʻamatalaga Pod o se tasi o elemene e faʻaaogaina e suʻe ai le node manaʻomia. Ua mafai ona e fuafuaina le faʻaogaina o le Pod mo ia. E fa'afefea ona e maua se node talafeagai?
Kubernetes e aofia ai le tele o vaega, e aofia ai le matai pona po'o le matai pona (Kubernetes Control Plane). O le pona matai e tele faiga: kube-apiserver, kube-controller-manager ma kube-scheduler.
O le faiga o le kube-scheduler e nafa ma le toe iloiloina o pods fou na faia ma le sailia o nodes a tagata faigaluega e fetaui ma talosaga uma pod, e aofia ai le numera o punaoa o loʻo talosagaina. O le lisi o nodes na maua e kube-scheduler o loʻo faʻatulagaina. O le pod o loʻo faʻatulagaina i luga o le node e sili ona maualuga togi.
O fea o le a tu'u ai le Pod viole?
I le ata e mafai ona e vaʻai i le kube-scheduler e tatau ona faʻatulagaina se Pod lanu viole fou. O le fuifui Kubernetes e lua nodes: A ma le B. E pei ona e vaʻaia, e le mafai e le kube-scheduler ona faʻatulagaina se Pod i luga o le node A - o mea e maua (e le manaʻomia) e le fetaui ma talosaga a le Pod lanu viole. O lea la, o le 1 GB o le manatua e talosagaina e le lanu viole Pod o le a le fetaui i le node A, talu ai o le manatua avanoa o le 0,5 GB. Ae o le node B e lava punaoa. O se taunuuga, ua filifili le kube-scheduler o le taunuuga o le Pod viole o le node B.
Ua tatou iloa nei pe faʻafefea ona aʻafia e punaoa talosaga le filifiliga o le node e faʻatautaia ai le Pod. Ae o le a le aafiaga o punaoa laiti?
Ole tapula'a o punaoa ose tuaoi e le mafai e le PPU/MEM ona sopoia. Ae ui i lea, o le CPU puna'oa e fetu'una'i, o koneteina e o'o atu i tapula'a o le CPU o le a le mafua ai ona alu ese le Pod. Ae, ole CPU throttling o le a amata. Afai e ausia le tapulaa faʻaoga MEM, o le a taofi le pusa ona o le OOM-Killer ma toe amata pe a faʻatagaina e le RestartPolicy setting.
Talosaga ma maualuga punaoa i auiliiliga
Fesootaiga punaoa i le va o Docker ma Kubernetes
O le auala sili e fa'amatala ai pe fa'afefea ona fa'aogaina talosaga ma fa'atapula'a o puna'oa o le fa'ailoaina lea o le mafutaga i le va o Kubernetes ma Docker. I le ata o loʻo i luga e mafai ona e vaʻai pe faʻafefea ona fesoʻotaʻi le fanua Kubernetes ma fuʻa amata a Docker.
E pei ona taʻua i luga, o le manatua e fuaina i bytes. E fua i luga Kubernetes pepa aloaia, e mafai ona tatou faʻamaonia le manatua o se numera. E masani lava o se integer, mo se faʻataʻitaʻiga 2678 - o lona uiga, 2678 bytes. E mafai fo'i ona e fa'aogaina suffix G и Gi, o le mea autu o le manatua e le tutusa. O le muamua o le decimal ma le lona lua o le binary. E pei o le faʻataʻitaʻiga o loʻo taʻua i le k8s pepa: 128974848, 129e6, 129M, 123Mi - e toetoe lava tutusa.
Kubernetes filifiliga limits.memory fetaui ma le fu'a --memory mai Docker. I le tulaga o request.memory E leai se aū mo Docker aua e le faʻaogaina e Docker lenei fanua. Atonu e te fesili, pe talafeagai ea lenei mea? Ioe mana'omia. E pei ona ou fai atu muamua, e taua le fanua mo Kubernetes. Faʻavae i luga o faʻamatalaga mai ai, e filifili e le kube-scheduler po o fea node e faʻatulaga ai le Pod.
O le a le mea e tupu pe a le lava le manatua e te setiina mo se talosaga?
Afai ua oʻo le koneteina i tapulaʻa o le manaʻoga manaʻomia, ona tuʻu lea o le Pod i se vaega o Pods e taofi pe a le lava le manatua i le node.
O le a le mea e tupu pe a e setiina le tapula'a manatua e maualalo tele?
Afai e sili atu le atigipusa i le tapulaa manatua, o le a faamuta ona o le OOM-Killed. Ma o le a toe amata pe a mafai e faʻavae i luga o le RestartPolicy lea o loʻo i ai le tau le aoga Always.
O le a le mea e tupu pe afai e te le faʻamaonia le mea e manaʻomia?
O le a ave e Kubernetes le tau fa'atapula'a ma fa'atulaga e fai ma tau fa'aletonu.
O le a le mea e mafai ona tupu pe afai e te le fa'amauina se tapulaa o le manatua?
O le atigipusa e leai ni tapulaʻa; e mafai ona faʻaogaina le tele o manatua e manaʻo ai. Afai na te amata faʻaaoga uma manatuaga avanoa o le node, ona fasiotia lea e le OOM. O le a toe amataina le koneteina pe a mafai e faʻavae ile RestartPolicy.
O le a le mea e tupu pe afai e te le fa'amauina tapulaa manatua?
Ole fa'aaliga sili lea ona leaga: e le iloa e le tagata fa'atulagaina le tele o punaoa e mana'omia e le koneteina, ma e mafai ona mafua ai fa'afitauli matuia ile node. I lenei tulaga, e manaia le i ai o tapulaa faʻaletonu ile igoa avanoa (faʻatulagaina e LimitRange). E leai ni tapula'a fa'aletonu - o le Pod e leai ni tapula'a, e mafai ona fa'aoga le tele o manatua e mana'o ai.
Afai e sili atu le manatua o loʻo talosagaina nai lo le mea e mafai e le node ona ofoina atu, o le a le faʻatulagaina le Pod. E taua le manatua o lena mea Requests.memory - e le o le tau maualalo. O le fa'amatalaga lea o le aofa'i o manatua e lava e fa'aauau ai pea le fa'agaioiina o le koneteina.
E masani ona fautuaina e seti le tau tutusa mo request.memory и limit.memory. Ole mea lea e fa'amautinoa ai e le fa'atulaga e Kubernetes se Pod i luga o se node e lava le manatua e fa'atino ai le Pod ae le lava e ta'avale ai. Manatua: Kubernetes Pod fuafuaga na'o le amanaia requests.memoryma limits.memory e le amanaia.
Faatasi ai ma se PPU o mea uma e sili atu ona lavelave. Toe foʻi i le ata o le mafutaga i le va o Kubernetes ma Docker, e mafai ona e vaʻaia lena mea request.cpu соответствует --cpu-shares, ae limit.cpu fetaui ma le fu'a cpus i Docker.
O le PPU o loʻo talosagaina e Kubernetes e faʻateleina i le 1024, o le aofaʻi o taamilosaga CPU. Afai e te manaʻo e talosagaina le 1 atoa autu, e tatau ona e faʻaopopo cpu: 1e pei ona faaalia i luga.
Talosagaina se fatu atoa (tulaga = 1024) e le faapea o le a maua e lau pusa. Afai o lau masini talimalo e na o le tasi le autu ma e sili atu ma le tasi le koneteina, ona tatau lea i pusa uma ona faʻasoa le PPU avanoa i le va oi latou. E faapefea ona tupu lenei mea? Sei o tatou vaavaai i le ata.
Talosaga CPU - Faiga Fa'avae Tasi
Se'i fa'apea o lo'o iai sau fa'atonuga fa'apitoa e ta'avale pusa. Na tao e Tina (Kubernetes) se pai (CPU) ma mana'o e vaevae i tamaiti (koneteina). E to'atolu tamaiti e mana'o i se pai atoa (tulaga = 1024), o le isi tamaititi e mana'o i le afa pai (512). E mana'o Tina e fai sa'o ma fai se fa'atatauga faigofie.
# Сколько пирогов хотят дети?
# 3 ребенка хотят по целому пирогу и еще один хочет половину пирога
cakesNumberKidsWant = (3 * 1) + (1 * 0.5) = 3.5
# Выражение получается так:
3 (ребенка/контейнера) * 1 (целый пирог/полное ядро) + 1 (ребенок/контейнер) * 0.5 (половина пирога/половина ядра)
# Сколько пирогов испечено?
availableCakesNumber = 1
# Сколько пирога (максимально) дети реально могут получить?
newMaxRequest = 1 / 3.5 =~ 28%
E tusa ai ma le faʻatusatusaga, e toʻatolu tamaiti o le a maua le 28% o le 'autu, ae le o le 'autu atoa. O le tamaititi lona fa o le a maua le 14% o le fatu atoa, ae le o le afa. Ae o mea o le a ese pe afai e iai sau faiga faʻapipiʻi tele.
Talosaga CPU - Tele-Autu (4) Faiga
I le ata o loʻo i luga e mafai ona e vaʻaia e toʻatolu tamaiti e manaʻo i se pai atoa, ae tasi e manaʻo i le afa. Talu ai na tao e tina ni pai se fa, o le a maua uma e lana fanau le tele o mea latou te mananao ai. I totonu o le tele-core system, o lo'o tufatufaina atu punaoa fa'apolokalame i totonu uma o lo'o avanoa. Afai o se atigipusa e faʻatapulaʻaina i lalo ifo o le tasi le CPU atoa, e mafai lava ona faʻaaogaina i le 100%.
O faʻatusatusaga o loʻo i luga e faʻafaigofieina e malamalama ai pe faʻafefea ona tufatufaina atu le PPU i pusa. Ioe, e ese mai i koneteina lava latou, o loʻo i ai isi faiga e faʻaogaina ai foʻi punaoa CPU. A fa'agasolo faiga i totonu o se pusa e tasi, e mafai e isi ona fa'aoga lona alaoa. CPU: "200m" соответствует CPU: 0,2, o lona uiga e tusa ma le 20% o le tasi autu.
Sei o tatou talanoa nei limit.cpu. O le PPU e fa'atapula'aina e Kubernetes e fa'ateleina i le 100. O le i'uga o le aofa'i o le taimi e mafai ai e le koneteina ona fa'aoga i 100 µs uma (cpu-period).
limit.cpu fetaui ma le fu'a Docker --cpus. O se tuufaatasiga fou lea o mea tuai --cpu-period и --cpu-quota. E ala i le setiina, matou te faʻaalia pe fia le tele o punaoa CPU o loʻo maua e le pusa e mafai ona sili ona faʻaoga aʻo leʻi amataina le faʻamalo:
pusa tupe - tu'ufa'atasiga cpu-period и cpu-quota. cpus = 1.5 e tutusa ma le seti cpu-period = 100000 и cpu-quota = 150000;
cpu-quota - numera o microseconds i totonu cpu-period, lea e noatia i le fagu.
O le a le mea e tupu pe a e faʻapipiʻi le lava PPU talosaga?
Afai e manaʻomia e le koneteina sili atu nai lo le faʻapipiʻiina, o le a gaoia le PPU mai isi gaioiga.
O le a le mea e tupu pe afai e te setiina le tapulaʻa o le PPU e maualalo tele?
Talu ai e mafai ona fetu'una'i le puna'oa o le PPU, o le a fa'aola le tootoo.
O le a le mea e tupu pe afai e te le faʻamaonia se talosaga CPU?
E pei o le manatua, o le tau ole talosaga e tutusa ma le tapulaa.
O le a le mea e tupu pe afai e te le fa'ailoaina se tapula'a ole CPU?
O le atigipusa o le a faʻaaogaina le tele o le PPU pe a manaʻomia. Afai o se faiga faʻavae PPU (LimitRange) o loʻo faʻamalamalamaina i le igoa avanoa, ona faʻaaogaina lea o lenei tapulaʻa mo le pusa.
O le a le mea e tupu pe afai e te le faʻamaoniaina se talosaga poʻo se tapulaa CPU?
E pei o le manatua, o le tulaga sili lea ona leaga. E le iloa e le tagata fa'atulagaina le tele o puna'oa e mana'omia e lau koneteina, ma e mafai ona tupu ai fa'afitauli matuia ile node. Ina ia aloese mai lenei mea, e tatau ona e setiina tapulaa le aoga mo igoa avanoa (LimitRange).
Manatua: afai e te manaʻo e sili atu le PPU nai lo mea e mafai ona tuʻuina atu, o le a le faʻatulagaina le Pod. Requests.cpu - e le o le tau maualalo, ae o se tau e lava e amata ai le Pod ma galue e aunoa ma se toilalo. Afai e le faia e le talosaga faʻatusatusaga faigata, o le filifiliga sili o le faʻapipiʻi request.cpu <= 1 ma fa'alauiloa le tele o fa'atusa pe a mana'omia.
Le aofa'i lelei o punaoa o lo'o talosagaina po'o le tapula'a o punaoa
Na matou aʻoaʻoina e uiga i le faʻatapulaʻaina o punaoa faakomepiuta. Ua oʻo nei i le taimi e tali ai le fesili: "E fia le tele o punaoa e manaʻomia e laʻu Pod e faʻatino ai le talosaga e aunoa ma ni faʻafitauli? O le a le aofa'i lelei?
Ae paga lea, e leai ni tali manino i nei fesili. Afai e te le iloa pe faʻapefea ona galue lau talosaga poʻo le tele o le CPU poʻo le manatua e manaʻomia, o le filifiliga sili o le tuʻuina atu i le talosaga le tele o manatua ma le CPU ona faʻataʻitaʻi lea o suʻega faʻatinoga.
I le faaopoopo atu i suʻega faʻatinoga, mataʻituina le amio a le talosaga i le mataʻituina mo le vaiaso. Afai e fa'ailoa mai i kalafi o lo'o fa'aogaina e lau tusi talosaga nai lo mea na e mana'omia, e mafai ona fa'aitiitia le aofa'i o le PPU po'o le manatua e mana'omia.
Mo se faʻataʻitaʻiga vaʻai i lenei Grafana dashboard. O lo'o fa'aalia ai le eseesega i le va o punaoa o lo'o talosagaina po'o le fa'atapula'a o punaoa ma le fa'aogaina o punaoa o lo'o iai nei.
iʻuga
O le talosagaina ma le fa'atapula'aina o punaoa e fesoasoani e fa'atumauina ai le soifua maloloina o lau fa'aputuga Kubernetes. Fa'atonu tapula'a sa'o e fa'aitiitia ai tau ma fa'aauau pea le fa'agaoioia o talosaga i taimi uma.
I se faapuupuuga, e i ai nai mea e teu i lou mafaufau:
O punaoa o loʻo manaʻomia o se faʻatulagaina lea e amanaia i le taimi amata (pe a fuafua Kubernetes e faʻafeiloaʻi le talosaga). I se faʻatusatusaga, faʻatapulaʻaina punaoa e taua ile taʻavale-pe a oʻo mai le talosaga i luga o le node.
Pe a faatusatusa i le manatua, o le PPU o se punaoa faʻatulafonoina. Afai e le lava le PPU, o le a le tapuni lau Pod ma o le a faʻaalia le masini faʻapipiʻi.
O puna'oa mana'omia ma le fa'atapula'aina o puna'oa e le o ni tau maualalo ma maualuga! I le faʻamalamalamaina o punaoa o loʻo talosagaina, e te faʻamautinoa o le a faʻaogaina le talosaga e aunoa ma ni faʻafitauli.
O se fa'ata'ita'iga lelei o le setiina lea o le talosaga manatua e tutusa ma le fa'atapula'a o le manatua.
Ok fa'apipi'i talosaga CPU <=1, pe afai e le faia e le talosaga faʻatusatusaga faigata.
Afai e te talosagaina nisi punaoa nai lo le avanoa i luga o se node, o le Pod e le mafai ona faʻatulagaina i lena node.
Ina ia fuafuaina le aofaʻi saʻo o punaoa / punaʻoa faʻatapulaʻa, faʻaaoga suʻega uta ma mataʻituina.
Ou te faʻamoemoe o lenei tusiga e fesoasoani ia te oe e te malamalama ai i le manatu faavae o le faʻatapulaʻaina o punaoa. Ma o le a mafai ona e faʻaaogaina lenei malamalama i lau galuega.