ProHoster > Блог > Whakahaerenga > Te whakatauira aunoa me te whakahaere rauemi i Kubernetes (te arotake me te purongo ataata)
Te whakatauira aunoa me te whakahaere rauemi i Kubernetes (te arotake me te purongo ataata)
Aperira 27 i te huihuinga Patua 2019, hei waahanga o te waahanga "DevOps", i tukuna te purongo "Te Whakatairanga Aunoa me te whakahaere rauemi i Kubernetes". E korero ana me pehea e taea ai e koe te whakamahi i nga K8s ki te whakarite kia nui te watea o o tono me te tino mahi.
Ma nga korero tuku iho, ka koa matou ki te whakaatu ataata o te purongo (44 meneti, he nui ake nga korero i te tuhinga) me te whakarāpopototanga matua i roto i te puka tuhinga. Haere!
Kia wetewetehia te kaupapa o te ripoata kupu ma ia kupu ka timata mai i te mutunga.
Kubernetes
Me kii kei a tatou nga ipu Docker kei runga i to tatou kaihautu. Hei aha? Hei whakarite i te tukuruatanga me te wehe, ka taea hoki te tuku ngawari me te pai, CI/CD. He maha nga waka penei me nga ipu.
He aha nga mahi a Kubernetes mo tenei keehi?
Ka mutu ta maatau whakaaro mo enei miihini ka tiimata ki te mahi me te "kapua" kahui ipu he peera ranei (nga roopu ipu).
I tua atu, kaore matou e whakaaro mo nga pene takitahi, engari ka nui ake te whakahaereоnga roopu nui ake. He penei taumata teitei o mua tukua matou ki te kii he tauira mo te whakahaere i etahi mahi, a koinei te maha o nga waa hei whakahaere. Mena ka huri tatou i te tauira, ka rereke nga ahuatanga katoa.
Ma te awhina o API whakapuaki Engari ki te mahi i te raupapa o nga whakahau motuhake, ka whakaahuahia e matou te "hanganga o te ao" (kei roto i te YAML), i hangaia e Kubernetes. Ano ano: ka huri te whakaahuatanga, ka huri ano tona whakaaturanga.
Te whakahaere rauemi
PTM
Me whakahaere tatou i te nginx, php-fpm me mysql i runga i te tūmau. Ko enei ratonga ka nui ake nga tukanga e whakahaere ana, me whai rauemi rorohiko mo ia ratonga:
(Ko nga nama kei runga i te kiriata he "kaka", ko te hiahia o ia tukanga mo te hiko rorohiko)
Kia ngawari ake te mahi me tenei, he mea tika ki te whakakotahi i nga tukanga ki nga roopu (hei tauira, nga tukanga nginx katoa ki te roopu "nginx"). Ko te huarahi ngawari me te maarama ki te mahi ko te whakatakoto i ia roopu ki roto i tetahi ipu:
Hei haere tonu, me mahara koe he aha te ipu (i Linux). Ko o raatau ahua i taea te mihi ki nga waahanga matua e toru i roto i te kernel, i whakatinanahia i nga wa roa i mua: āheinga, whakaingoa и Tuhinga. Na etahi atu whanaketanga i awhinahia e etahi atu hangarau (tae atu ki nga "anga" ngawari penei i a Docker):
I roto i te horopaki o te purongo, ko taatau anake te hiahia Tuhinga, no te mea ko nga roopu whakahaere te waahanga o nga mahi o nga ipu (Docker, me etahi atu) e whakamahi ana i te whakahaere rauemi. Ko nga tukanga kua whakauruhia ki roto i nga roopu, i ta matou i hiahia ai, ko nga roopu whakahaere.
Me hoki ano ki nga whakaritenga a te PTM mo enei tukanga, inaianei mo nga roopu o nga tukanga:
(Ka hoki ano ahau ko nga nama katoa he whakaaturanga mo te hiahia mo nga rauemi)
I te wa ano, ko te PTM ake he rauemi mutunga (i te tauira ko te 1000 tenei), ka ngaro pea te katoa (ko te tapeke o nga hiahia o nga roopu katoa ko te 150+850+460=1460). Ka ahatia i tenei keehi?
Ka timata te kernel ki te tohatoha rauemi me te mahi "tika", ka hoatu te nui o nga rauemi ki ia roopu. Engari i te keehi tuatahi, he nui ake i nga mea e hiahiatia ana (333>150), no reira ka noho rahui te taikaha (333-150=183), he rite ano te tohatoha ki waenga i etahi atu ipu e rua:
Ko te mutunga: ko te ipu tuatahi he nui nga rauemi, ko te tuarua - kaore i te nui nga rauemi, ko te tuatoru - kaore i te nui nga rauemi. Ko te hua tenei o nga mahi "pono" kaihōtaka i Linux - CFS. Ka taea te whakatika i tana mahi ma te whakamahi i te taumahi te taimaha ia ipu. Hei tauira, penei:
Ka titiro tatou ki te take o te kore rawa o nga rauemi i te ipu tuarua (php-fpm). Ka tohatohahia nga rauemi ipu katoa ki waenga i nga tukanga. Ko te mutunga, he pai te mahi a te mahinga matua, engari ka puhoi nga kaimahi katoa, ka iti iho i te haurua o nga mea e hiahiatia ana e ratou:
Koinei te mahi a te CFS scheduler. Ka kiia ano e matou nga taumaha ka tohua e matou ki nga ipu tono. He aha i penei ai - tirohia atu.
Kia titiro tatou ki nga ahuatanga katoa o tera taha. E mohio ana koe, ko nga rori katoa e ahu atu ana ki Roma, a, mo te rorohiko, ki te PTM. Kotahi te PTM, he maha nga mahi - me whai rama waka. Ko te huarahi ngawari ki te whakahaere i nga rauemi ko te "marama hiko": i hoatu e ratou tetahi tukanga he wa whakauru ki te PTM, katahi ka whai ake, aha atu.
Ko tenei huarahi e kiia ana ko nga motunga pakeke (whakawhāiti pakeke). Kia maumahara noa tatou rohe. Heoi, ki te tohatoha koe i nga rohe ki nga ipu katoa, ka puta he raru: kei te taraiwa a mysql i te huarahi, a, i etahi wa ka mutu tana hiahia mo te PTM, engari ko etahi atu tukanga me tatari kia tae noa ki te PTM. mangere.
Me hoki ano ki te kernel Linux me tana taunekeneke ki te PTM - ko te pikitia katoa e whai ake nei:
E rua nga tautuhinga cgroup - ko enei e rua nga "takahuri" ngawari e taea ai e koe te whakatau:
taimaha mo ipu (tono). hea;
ōrau o te tapeke wā PTM mo te mahi i runga i nga mahi ipu (tepe) he Tuhinga.
Me pehea te ine i te PTM?
He rereke nga huarahi:
He aha Tuhinga, kaore tetahi e mohio - me whiriwhiri koe i nga wa katoa.
Pai he maamaa ake, engari he whanaunga: 50% o te tūmau me te 4 nga matua me te 20 nga waahanga he mea rereke.
Ka taea e koe te whakamahi i nga mea kua whakahuahia te taimaha, e mohio ana a Linux, engari he whanaunga ano.
Ko te huarahi tino tika ko te ine i nga rauemi rorohiko hēkona. Ko era. i roto i te hēkona o te wā pūtukatuka e pā ana ki te hēkona o te wā tūturu: 1 te hēkona o te wā pūtukatuka i hoatu mō te 1 te hēkona tūturu - kotahi te matua PTM katoa tenei.
Kia ngawari ake te korero, ka timata ratou ki te ine tika kākano, te tikanga na ratou te wa PTM kotahi e pa ana ki te mea pono. I te mea e mohio ana a Linux ki nga taumahatanga, engari kaore i te nui o te wa CPU/cores, i hiahiatia he tikanga hei whakamaori mai i tetahi ki tetahi.
Me whakaaro tatou ki tetahi tauira ngawari me te tūmau me te 3 cores CPU, i reira ka hoatu nga pauna e toru nga pene (500, 1000 me 1500) ka ngawari te huri ki nga waahanga o nga waahanga kua tohaina ki a raatau (0,5, 1 me 1,5).
Ki te tango koe i te tūmau tuarua, ka rua ake te maha o nga matua (6), ka tuu i nga peera ano ki reira, ka ngawari te tatau i te tohatoha o nga matua ma te whakarea noa ki te 2 (1, 2 me te 3, ia). Engari he wa nui ka puta mai te wha o nga pene i runga i tenei tūmau, ko tona taumaha, mo te waatea, ka 3000. Ka tangohia e ia tetahi waahanga o nga rauemi CPU (te haurua o nga putunga), mo nga toenga o nga pene ka tatauhia (kua hauruatia):
Kubernetes me nga rauemi CPU
I roto i nga Kubernetes, ko te nuinga o nga wa ka inehia nga rauemi CPU miriadrax, i.e. Ko te 0,001 nga matua ka tangohia hei taumaha turanga. (Ko te mea ano i roto i nga kupu kupu Linux/cgroups e kiia ana ko te wahanga CPU, ahakoa, tino tika, 1000 millicores = 1024 nga hea CPU.) Ka whakarite a K8s kia kaua e nui ake nga pene ki runga i te tūmau i te maha o nga rauemi CPU mo te tapeke o nga taumaha o nga pene katoa.
Me pehea e tupu ai? Ina tāpiri koe i tētahi tūmau ki tētahi kāhui Kubernetes, ka whakaatuhia e hia ngā uho PTM e wātea ana. A, i te wa e hanga ana i tetahi poti hou, ka mohio te Kaituhituhi Kubernetes e hia nga uho e hiahiatia ana e tenei pene. No reira, ka tautapahia te pod ki te tūmau kei reira te nui o nga matua.
Ka aha mehemea e kore kua tohua te tono (arā, karekau he tau kua tautuhia e te pod)? Kia mohio tatou me pehea te tatau a Kubernetes i nga rauemi.
Mo te peera ka taea e koe te tohu i nga tono e rua (kaiwhakarite CFS) me nga rohe (mahara ki te rama waka?):
Mena kua tohua kia rite, ka tohua te pene ki te karaehe QoS kī taurangi. Ko tenei maha o nga matua e waatea ana ki a ia ka whakamanahia.
Mena he iti ake te tono i te tepe - te karaehe QoS pakaru. Ko era. Kei te tumanako matou he pona, hei tauira, ka whakamahi i nga wa katoa 1 matua, engari ehara tenei uara i te herenga mo tena: i etahi wa Ka taea e pod te whakamahi ake (ina he rauemi kore utu te tūmau mo tenei).
He akomanga QoS ano hoki nga mahi pai rawa atu — kei roto ko nga putunga kaore i tohua te tono. Ko nga rauemi ka tukuna ki a raatau.
Maharahara
Ma te mahara, he rite tonu te ahuatanga, engari he paku rereke - i muri i nga mea katoa, he rereke te ahua o enei rauemi. I te nuinga o te waa, ko te whakataurite e whai ake nei:
Kia kite tatou me pehea te whakatinana i nga tono ki te mahara. Kia ora nga poti ki runga i te tūmau, me te huri i te kohi mahara, kia nui rawa te rahi o tetahi ka pau te mahara. I tenei keehi, ka puta te kaipatu OOM ka patu i te mahinga nui rawa atu:
Kaore tenei e pai ana ki a tatou i nga wa katoa, na reira ka taea te whakarite ko wai nga tikanga he mea nui ki a tatou, me te kore e mate. Ki te mahi i tenei, whakamahia te tawhā oom_Score_adj.
Me hoki ano ki nga karaehe QoS o te PTM ka tuhia he whakataurite me nga uara oom_score_adj e whakatau ana i nga kaupapa matua mo te kai maumahara mo nga pene:
Ko te uara oom_score_adj iti rawa mo te poti - -998 - ko te tikanga me patu tera poti i te mutunga, tenei kī taurangi.
Ko te teitei - 1000 - ko nga mahi pai rawa atu, ka patua i te tuatahi nga peera.
Hei tatau i nga uara e toe ana (pakaru) he tātai, ko te ngako o te mea e pa ana ki te nui ake o nga rauemi kua tonohia e te pod, ka iti ake te mate.
Ko te tuarua "takahuri" - rohe_i_paita - mo nga rohe. Ma tenei, he maamaa ake nga mea katoa: ka tohua noa e matou te nui o te maharatanga kua tukuna, a i konei (kaore i te PTM) kaore he patai me pehea te ine (mahara).
Te tapeke
Ka hoatu ki ia pene i Kubernetes requests и limits - nga tawhā e rua mo te PTM me te mahara:
i runga i nga tono, ka mahi te Kaihoko Kubernetes, e tohatoha ana i nga pona ki waenga i nga kaitoro;
i runga i nga tawhā katoa, ka whakatauhia te karaehe QoS o te pod;
Ka tatauhia nga taumahatanga i runga i nga tono PTM;
kua whirihorahia te kaihōtaka CFS i runga i nga tono a te PTM;
Kua whirihorahia te kaipatu OOM i runga i nga tono mahara;
kua whirihorahia he "rama hiko" i runga i nga rohe CPU;
I runga i nga rohe mahara, ka whirihorahia he rohe mo te cgroup.
I te nuinga o te waa, ka whakautua e tenei pikitia nga paatai katoa mo te ahuatanga o te waahanga matua o te whakahaere rauemi ki Kubernetes.
Tauineaunoa
K8s tautau-autoscaler
Me whakaaro kua noho kee te kahui katoa, me hanga he putunga hou. Ahakoa kaore e taea te puta mai, ka iri te mana tārewa. Kia puta mai, ka taea e tatou te hono atu i tetahi tūmau hou ki te tautau, ki te ... tāuta cluster-autoscaler, ka mahi ma tatou: tono he miihini mariko mai i te kaiwhakarato kapua (ma te whakamahi i te tono API) ka hono atu ki te roopu. , muri iho ka taapirihia te poti.
Koinei te whakahiato aunoa o te roopu Kubernetes, he pai te mahi (i roto i o maatau wheako). Heoi, pera i etahi atu waahi, kei konei etahi ahuatanga ...
I te wa i whakanuia e matou te rahi o te tautau, he pai nga mea katoa, engari he aha te mea ka tupu te tautau ka timata ia ki te wewete i a ia ano? Ko te raruraru ko te heke o nga pene (ki te whakaatea i nga kaihautu) he tino uaua me te utu nui i runga i nga rauemi. Ka whakamahia e Kubernetes tetahi huarahi rereke.
Whakaarohia he huinga o nga tūmau e 3 kei te Whakamahinga. E 6 nga pene: inaianei e 2 mo ia tūmau. Mo etahi take i hiahia matou ki te whakaweto i tetahi o nga tūmau. Ki te mahi i tenei ka whakamahia e matou te whakahau kubectl drain, e:
ka aukati i te tuku poti hou ki tenei tūmau;
ka mukua nga putunga kei runga i te tūmau.
I te mea ko Kubernetes te kawenga mo te pupuri i te maha o nga poti (6), he ngawari noa ka hanga ano i runga i etahi atu pona, engari kaua i runga i te mea e monoa ana, i te mea kua tohua kua kore e waatea mo te manaaki i nga pene hou. He miihini taketake tenei mo Kubernetes.
Heoi ano, he ahua ano kei konei. I roto i te ahua rite, mo StatefulSet (hei utu mo te Whakamahinga), ka rereke nga mahi. Inaianei kei a maatau he tono whaimana - hei tauira, e toru nga pene me MongoDB, he raru tetahi (kua kino nga raraunga, tetahi atu hapa ranei e aukati ana i te tiimata tika). Na ka whakatau ano matou ki te whakakore i tetahi tūmau. Ka ahatia?
MongoDB taea ka mate na te mea me whai koorama: mo te roopu e toru nga whakaurunga, me mahi kia rua neke atu. Heoi, ko tenei e kore e tupu - whakawhetai ki PodDisruptionBudget. Ka whakatauhia e tenei tawhā te iti rawa o te maha e hiahiatia ana o nga pene mahi. Ma te mohio kua kore e mahi tetahi o nga pene MongoDB, me te kite kua whakaritea te PodDisruptionBudget mo MongoDB minAvailable: 2, Karekau a Kubernetes e whakaae kia mukua e koe he poti.
Rarangi raro: kia tika ai te mahi o te nekehanga (me te mea ano, ko te hanga ano) o nga pene ka tukuna te tautau, me whirihora i te PodDisruptionBudget.
Tauine Whakapae
Ka whakaarohia e tatou tetahi atu ahuatanga. He tono kei te whakahaere hei Hoatutanga ki Kubernetes. Ka tae mai nga waka a nga kaiwhakamahi ki ona pokano (hei tauira, e toru o raatau), ka inehia e matou tetahi tohu kei roto (me kii, utaina CPU). Ka piki ake te kawenga, ka tuhia e matou ki runga i te waarangi me te whakanui ake i te maha o nga pene ki te tohatoha i nga tono.
I tenei ra i Kubernetes kaore tenei e tika kia mahia a-ringa: ka whirihorahia te pikinga / whakaheke aunoa i te maha o nga poti i runga i nga uara o nga tohu kawenga ine.
Ko nga patai matua i konei ko: he aha te mea hei ine и me pehea te whakamaori kua whiwhi uara (mo te whakatau i te whakarereke i te maha o nga pene). Ka taea e koe te ine nui:
Me pehea te mahi hangarau - kohikohi ine, etc. — I korero ahau i roto i nga korero i roto i te ripoata mo Aroturuki me nga Kubernetes. A ko te tohutohu matua mo te whiriwhiri i nga tawhā tino pai ko whakamātau!
He WHAKAMAHI tikanga(Te Whakamahinga Mahinga me nga Hapa), ko te tikanga e whai ake nei. He aha te tikanga o te tauine, hei tauira, php-fpm? I runga i te mea kei te rere nga kaimahi, koinei whakamahinga. A, ki te mutu nga kaimahi, karekau e whakaaehia nga hononga hou, kua oti tenei kohurutanga. Ko enei tawhā e rua me ine, a, i runga i nga uara, me mahi te whakatauine.
Engari o te mutunga
He haere tonu te purongo: mo te whakatauira poutū me te huarahi ki te kowhiri i nga rauemi tika. Ka korero ahau mo tenei i nga riipene ataata kei te heke mai to tatou YouTube - ohauru kia kore koe e ngaro!
Ataata me nga kiriata
Ataata mai i te whakaaturanga (44 meneti):
Whakaaturanga o te ripoata:
PS
Ko etahi atu korero mo Kubernetes i runga i ta maatau blog: