Me pehea te uru atu ki nga rauemi a Kubernetes Pod

Me pehea te uru atu ki nga rauemi a Kubernetes PodKo te utu na Tohad

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.

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

Tauira o nga Rauemi Tonoa me te Raiti

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.

Me pehea te uru atu ki nga rauemi a Kubernetes PodKa 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

Me pehea te uru atu ki nga rauemi a Kubernetes PodTe 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.

Mahara: tono me te here

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

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.

PTM: tono me te rohe

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

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.

Me pehea te uru atu ki nga rauemi a Kubernetes Pod
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.

Me pehea te uru atu ki nga rauemi a Kubernetes Pod
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;
  • PTM-wa - wā PTM CFS kaihōtaka, taunoa 100 microseconds;
  • 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:

  1. 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.
  2. 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.
  3. 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.
  4. Ko te mahi pai ko te whakarite i te tono mahara kia rite ki te tepe mahara.
  5. Ok te tāuta i tonohia CPU <=1, ki te kore te tono e mahi i nga tatauranga uaua.
  6. 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.
  7. 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.

Ngā manaakitanga pai!

He aha atu hei panui:

  1. SRE Tirohanga: Mokowāingoa me te Hanganga Ine.
  2. 90+ taputapu whai hua mo Kubernetes: te whakatakotoranga, te whakahaere, te aroturuki, te haumaru me te maha atu.
  3. To tatou hongere huri noa i Kubernetes i Telegram.

Source: will.com

Tāpiri i te kōrero