Ka timata ki a Kubernetes, he mea noa te wareware ki te whakarite rauemi ipu. I tenei wa, he nui ki te whakarite kia mahi te ahua Docker ka taea te tuku ki te roopu Kubernetes.
Engari i muri mai ka tukuna te tono ki roto i te roopu whakaputa me etahi atu tono. Ki te mahi i tenei, me toha e koe nga rauemi mo te ipu me te whakarite kei te nui o raatau hei whakatika i te tono me te whakahaere, kia kore ai e raru etahi atu tono whakahaere.
rōpū Kubernetes aaS mai i Mail.ru i whakamaoritia he tuhinga mo nga rauemi ipu (CPU & MEM), nga tono me nga herenga rawa. Ka ako koe i nga painga o enei tautuhinga me te aha ka puta ki te kore koe e whakarite.
Rauemi rorohiko
E rua nga momo rauemi me nga waahanga e whai ake nei:
Waeine tukatuka pokapū (CPU) - nga matua;
Maharahara (MEM) - paita.
Kua tohua nga rauemi mo ia ipu. I roto i te konae Pod YAML e whai ake nei, ka kite koe i tetahi waahanga rauemi kei roto nga rauemi kua tonohia me te whakaiti i nga rauemi:
Nga Rauemi Pod Tonoa = te tapeke o nga rauemi tono mo nga ipu katoa;
Tepe Rauemi Pod = Tapeke o nga Tepe Rauemi Pod katoa.
mara resources.requested mai i te whakatakotoranga Ko te Pod tetahi o nga huānga e whakamahia ana hei kimi i te node e hiahiatia ana. Ka taea e koe te whakamahere i te tuku Pod mo tena. Me pehea e kitea ai he node e tika ana?
He maha nga waahanga o Kubernetes, tae atu ki tetahi node matua, node matua ranei (Mahere Mana Kubernetes). He maha nga tukanga o te node matua: kube-apiserver, kube-controller-manager me kube-scheduler.
Ko te tukanga kube-scheduler te kawenga mo te arotake i nga pota katahi ano ka hangaia me te kimi i nga pona kaimahi e rite ana ki nga tono pod katoa, tae atu ki te maha o nga rauemi i tonoa. Ko te rarangi o nga pona ka kitea e te kube-scheduler kua tohua. Kua whakaritea te pona ki te node me nga kaute teitei rawa atu.
Ka tuuhia te Pod papura ki hea?
I te pikitia ka kite koe me whakarite e te kube-scheduler he Pod papura hou. E rua nga pona o te huinga Kubernetes: A me B. Ka kite koe, kaore e taea e te kube-scheduler te whakarite Pod ki te pona A - ko nga rauemi e waatea ana (kaore i tonohia) kaore e rite ki nga tono a te Pod papura. Na, ko te 1 GB o te mahara i tonohia e te Pod papura e kore e uru ki te node A, no te mea ko te 0,5 GB te mahara e waatea ana. Engari he rawaka nga rauemi a te node B. Ko te mutunga, ka whakatauhia e te kube-scheduler ko te ūnga o te Pod papura ko te node B.
Inaianei kei te mohio tatou he pehea te paanga o nga rauemi i tonoa ki te whiriwhiringa o te node hei whakahaere i te Pod. Engari he aha te paanga o nga rawa iti?
Ko te tepe rauemi he rohe kaore e taea e te PTM/MEM te whakawhiti. Heoi, he ngawari te rauemi CPU, no reira ko nga ipu ka eke ki o raatau rohenga CPU ka kore e puta te Pod. Engari, ka timata te tarai PTM. Mena ka eke ki te tepe whakamahi MEM, ka mutu te ipu na te OOM-Killer ka timata ano mena ka whakaaetia e te Tautuhinga Kaupapahere Whakahou.
Ko nga rauemi kua tonohia me te nui rawa o nga korero
Te whakawhitiwhiti rauemi i waenga i a Docker me Kubernetes
Ko te huarahi pai ki te whakamarama me pehea te mahi o nga tono rauemi me nga tepe rauemi ko te whakauru i te hononga i waenga i a Kubernetes me Docker. I te ahua o runga ka kite koe i te hononga o nga mara Kubernetes me nga haki whakaoho a Docker.
Ka rite ki te korero i runga ake nei, ka ine te mahara ki nga paita. I runga i Nga tuhinga Kubernetes, ka taea e tatou te tohu mahara hei tau. Ko te tikanga he tauoti, hei tauira 2678 - ara, 2678 paita. Ka taea hoki e koe te whakamahi kumara G и Gi, ko te mea nui kia maumahara kaore e rite. He ā-ira te tuatahi, ā, he ā-rua te tuarua. Ka rite ki te tauira i whakahuahia i roto i nga tuhinga k8s: 128974848, 129e6, 129M, 123Mi - he rite tonu.
Kōwhiringa Kubernetes limits.memory ka rite ki te haki --memory mai i Docker. I roto i te take o request.memory Kaore he pere mo Docker na te mea kaore a Docker e whakamahi i tenei mara. Ka patai pea koe, he mea tika ranei tenei? Ae hiahia. Ka rite ki taku korero i mua, he mea nui te mara mo Kubernetes. I runga i nga korero mai i a ia, ka whakatauhia e te kube-scheduler ko tehea node hei whakarite i te Pod.
Ka aha mena ka tautuhia e koe he iti rawa te mahara mo te tono?
Mena kua tae te ipu ki nga rohe o te mahara i tonohia, ka tuuhia te Pod ki roto i te roopu Pods ka mutu ina kore e nui te mahara i roto i te node.
Ka aha mena ka whakatauhia e koe te rohe mahara kia iti rawa?
Ki te nui ake te ipu i te tepe maumahara, ka whakamutua na te OOM-Killed. A ka timata ano mena ka taea i runga i te RestartPolicy kei hea te uara taunoa Always.
Ka aha ki te kore koe e whakapūtā te pūmahara i tonoa?
Ka tangohia e Kubernetes te uara tepe ka tautuhi hei uara taunoa.
Ka aha ki te kore koe e whakapūtā te tepe pūmahara?
Karekau he here o te ipu; ka taea e ia te whakamahi i te nui o te mahara ki tana hiahia. Mena ka timata ia ki te whakamahi i nga mahara katoa e waatea ana mo te node, ka mate a OOM i a ia. Ka whakaara ano te ipu mena ka taea i runga i te RestartPolicy.
Ka aha ki te kore koe e tauwhāiti i ngā tepe pūmahara?
Koinei te ahuatanga kino rawa atu: karekau te kaihōtaka i te mohio ki te maha o nga rauemi e hiahiatia ana e te ipu, ka puta he raru nui ki te node. I roto i tenei take, he pai ki te whai rohe taunoa i runga i te mokowāingoa (kua whakaritea e LimitRange). Kaore he rohe taunoa - kaore he rohe o te Pod, ka taea e ia te whakamahi i te nui o te mahara ki tana hiahia.
Mena he nui ake te mahara i tonohia i te mea ka taea e te node te tuku, kaore te Pod e whakaritea. He mea nui kia maumahara tera Requests.memory - ehara i te uara iti rawa. He whakaahuatanga tenei mo te nui o te mahara e tika ana kia rere tonu te ipu.
I te nuinga o te wa ka tūtohu kia whakaritea te uara kotahi mo request.memory и limit.memory. Ma tenei ka whakarite kia kore a Kubernetes e whakarite i tetahi Pod i runga i te node e nui ana te mahara ki te whakahaere i te Pod engari kaore e ranea ki te whakahaere. Kia maumahara: Ko te whakamahere Pod Kubernetes anake ka whai whakaaro requests.memorya limits.memory e kore e whai whakaaro.
Ma te PTM he uaua ake nga mea katoa. Ka hoki ki te pikitia o te hononga i waenga i a Kubernetes me Docker, ka kite koe i tera request.cpu соответствует --cpu-shares, ahakoa limit.cpu ka rite ki te haki cpus i Docker.
Ko te PTM e tonohia ana e Kubernetes ka whakareatia ki te 1024, te wahanga o nga huringa CPU. Mena kei te pirangi koe ki te tono kia 1 te matua, me tapiri koe cpu: 1kua whakaaturia i runga ake nei.
Ko te tono i te kakano katoa (owehenga = 1024) ehara i te mea ka riro mai i to ipu. Mēnā kotahi anake te uho o tō mihini manaaki, ā, neke atu i te kotahi ipu kei te whakahaere koe, me tiritiri e nga ipu katoa te PTM e waatea ana ki waenganui i a raatau. Me pehea e tupu ai? Kia titiro tatou ki te pikitia.
Tono PTM - Pūnaha Matua Kotahi
Whakaarohia kei a koe he punaha manaaki kotahi-matua e whakahaere ipu ana. I tunua e Mama (Kubernetes) he porowhita (CPU) ka hiahia ki te wehewehe i waenga i nga tamariki (putea). Tokotoru nga tamariki e hiahia ana ki te porowhita katoa (owehenga = 1024), ka hiahia tetahi atu tamaiti ki te hawhe porowhita (512). Kei te pirangi a mama ki te tika me te hanga i te tatau ngawari.
# Сколько пирогов хотят дети?
# 3 ребенка хотят по целому пирогу и еще один хочет половину пирога
cakesNumberKidsWant = (3 * 1) + (1 * 0.5) = 3.5
# Выражение получается так:
3 (ребенка/контейнера) * 1 (целый пирог/полное ядро) + 1 (ребенок/контейнер) * 0.5 (половина пирога/половина ядра)
# Сколько пирогов испечено?
availableCakesNumber = 1
# Сколько пирога (максимально) дети реально могут получить?
newMaxRequest = 1 / 3.5 =~ 28%
I runga i te tatauranga, e toru nga tamariki ka whiwhi i te 28% o te matua, kaua ko te matua katoa. Ka whiwhi te tamaiti tuawha i te 14% o te kakano katoa, kaua te haurua. Engari ka rereke nga mea ki te whai koe i te punaha maha-matua.
Tono PTM - Pūnaha-Maama (4).
I te ahua o runga ka kite koe e toru nga tamariki e hiahia ana ki te porohita katoa, kotahi e hiahia ana ki te haurua. I te mea i tunua e mama e wha nga pai, ka whiwhi ia o ana tamariki i nga mea e hiahia ana ratou. I roto i te punaha maha-matua, ka tohatohahia nga rauemi tukatuka puta noa i nga waahanga tukatuka katoa e waatea ana. Mēnā he iti iho i te kotahi te ipu CPU, ka taea tonu te whakamahi i te 100%.
Ko nga tatauranga o runga ake nei ka ngawari ki te maarama me pehea te tohatoha PTM ki waenga i nga ipu. Ae ra, i tua atu i nga ipu, tera ano etahi atu tikanga e whakamahi ana i nga rauemi CPU. Ina noho mangere nga tukanga i roto i te ipu kotahi, ka taea e etahi atu te whakamahi i tana rauemi. CPU: "200m" соответствует CPU: 0,2, ko te tikanga tata ki te 20% o te matua kotahi.
Inaianei me korero tatou limit.cpu. Ko te PTM ka whakawhāitihia e Kubernetes ka whakareatia ki te 100. Ko te hua ko te nui o te wa ka taea e te ipu te whakamahi ia 100 µs (cpu-period).
limit.cpu ka rite ki te haki Docker --cpus. He huinga hou tenei o te tawhito --cpu-period и --cpu-quota. Ma te tautuhi, ka tohuhia e hia nga rauemi CPU e waatea ana ka taea e te ipu te whakamahi i mua i te tiimata o te tarai:
cpus - huinga cpu-period и cpu-quota. cpus = 1.5 e rite ana ki te whakatakotoranga cpu-period = 100000 и cpu-quota = 150000;
cpu-mutunga - te maha o nga microseconds i roto cpu-period, e herea ana e te ipu.
Ka aha ki te kore e rawaka te PTM i tonoa?
Mena he nui ake te hiahia o te ipu i te mea kua whakauruhia, ka tahaehia e ia te PTM mai i etahi atu tukanga.
Ka aha mena ka whakatauhia e koe te tepe PTM kia iti rawa?
I te mea ka taea te whakarite te rauemi PTM, ka huri te throttling.
Ka aha ki te kore koe e tauwhāiti i te tono PTM?
Pērā i te pūmahara, he rite te uara tono ki te tepe.
Ka aha ki te kore koe e tauwhāiti i te tepe PTM?
Ka whakamahia e te ipu te nui o te PTM e hiahiatia ana. Mena kua tautuhia he kaupapa here PTM taunoa (LimitRange) ki te mokowāingoa, ka whakamahia ano tenei tepe mo te ipu.
Ka aha ki te kore koe e whakapumau he tono, he rohe PTM ranei?
Ka rite ki te mahara, koinei te ahuatanga kino rawa atu. Karekau te kaihōtaka i te mohio ki te maha o nga rauemi e hiahiatia ana e to ipu, a he raru nui tenei ki te node. Hei karo i tenei, me whakarite tepe taunoa mo nga mokowāingoa (LimitRange).
Kia maumahara: ki te tono koe kia nui ake te PTM atu i nga pona ka taea te whakarato, kaore te Pod e whakaritea. Requests.cpu - ehara i te uara iti, engari he uara e tika ana hei timata i te Pod me te mahi kaore he rahunga. Mena kaore te tono e mahi i nga tatauranga uaua, ko te waahanga pai ko te whakauru request.cpu <= 1 me te whakarewa i nga tauira maha e tika ana.
Te rahinga pai o nga rauemi i tonoa, te rohe rawa ranei
I ako matou mo te herenga o nga rauemi rorohiko. Kua tae ki te wa ki te whakautu i te patai: "E hia nga rauemi e hiahiatia ana e taku Pod ki te whakahaere i te tono kaore he raru? He aha te moni tino pai?
Kia aroha mai, karekau he whakautu marama ki enei patai. Ki te kore koe e mohio ki te mahi o to tono, ki te nui ranei o te PTM, te mahara ranei e hiahiatia ana, ko te mea pai ko te tuku mahara me te PTM ki te tono katahi ka whakahaere i nga whakamatautau mahi.
I tua atu i nga whakamatautau mahi, aroturuki i te whanonga o te tono ki te aroturuki mo te wiki. Mena ka tohu nga kauwhata he iti ake nga rauemi e pau ana i to tono, ka taea e koe te whakaiti i te nui o te PTM me te mahara i tonoa.
Hei tauira tirohia tenei Papatohu Grafana. Ka whakaatu i te rereketanga i waenga i nga rauemi i tonoa, te rohe rauemi ranei me te whakamahinga rawa o naianei.
mutunga
Ko te tono me te whakaiti i nga rauemi ka awhina i to roopu Kubernetes kia ora. Ko te whirihoranga tepe tika ka whakaiti i nga utu me te pupuri i nga tono kia rere i nga wa katoa.
Hei poto, he iti noa nga mea hei maumahara:
Ko nga rauemi i tonoa he whirihoranga ka whakaarohia i te wa whakaoho (i te wa e whakaaro ana a Kubernetes ki te manaaki i te tono). Engari, he mea nui te whakawhāiti i nga rauemi i te wa whakahaere—i te wa e rere ana te tono ki runga i te node.
Ka whakatauritea ki te mahara, he rauemi kua whakaritea te PTM. Ki te kore e nui te PTM, ka kore to Pod e tutakina, ka huri te tikanga whakamaori.
Ko nga rauemi e tonohia ana me te tepe rawa ehara i te mea iti me te uara teitei! Ma te tautuhi i nga rauemi i tonoa, ka whakarite koe ka rere te tono kaore he raru.
Ko te mahi pai ko te whakarite i te tono mahara kia rite ki te tepe mahara.
Ok te tāuta i tonohia CPU <=1, ki te kore te tono e mahi i nga tatauranga uaua.
Mena ka tono koe i nga rauemi maha atu i nga mea e waatea ana i runga i te node, kare rawa te Pod e whakaritea ki tera node.
Hei whakatau i te rahinga tika o nga rauemi/tepe rawa i tonohia, whakamahia te whakamatautau me te aro turuki i te utaina.
Ko taku tumanako ka awhina tenei tuhinga ki a koe ki te mohio ki te kaupapa matua o te herenga rawa. A ka taea e koe te whakamahi i enei matauranga ki o mahi.