Kubernetes: no ke aha he mea nui e hoʻonohonoho i ka hoʻokele waiwai ʻōnaehana?
Ma ke ʻano he kānāwai, pono mau e hāʻawi i kahi waihona waiwai i hoʻolaʻa ʻia i kahi noi no kāna hana pololei a paʻa. Akā pehea inā e holo ana kekahi mau noi ma ka mana like? Pehea e hoʻolako ai i kēlā me kēia o lākou i nā kumuwaiwai liʻiliʻi e pono ai? Pehea ʻoe e kaupalena ai i ka hoʻohana waiwai? Pehea e puunaue pono ai i ka ukana ma waena o nā nodes? Pehea e hōʻoia ai i ka hana ʻana o ka mīkini scaling horizontal inā piʻi ka ukana noi?
Pono ʻoe e hoʻomaka me nā ʻano kumu waiwai nui i loko o ka ʻōnaehana - ʻo kēia, ʻoiaʻiʻo, ʻo ka manawa kaʻina hana a me ka RAM. Ma k8s hōʻike ua ana ʻia kēia mau ʻano waiwai ma nā ʻāpana penei:
CPU - i loko o nā cores
RAM - ma nā paita
Eia kekahi, no kēlā me kēia kumuwaiwai hiki ke hoʻonohonoho i ʻelua ʻano koi - noi и palena. Nā noi - wehewehe i nā koi liʻiliʻi no nā kumuwaiwai manuahi o kahi node e holo ai i kahi pahu (a me ka pod ma ke ʻano holoʻokoʻa), ʻoiai nā palena e kau i kahi palena paʻa i nā kumuwaiwai i loaʻa i ka ipu.
He mea nui ka hoʻomaopopo ʻana ʻaʻole pono e wehewehe pono ka hōʻike i nā ʻano ʻelua, akā penei ka ʻano:
Inā ʻike maopopo ʻia nā palena o kahi kumuwaiwai, a laila lawe ʻokoʻa nā noi no kēia kumuwaiwai i kahi waiwai like me nā palena (hiki iā ʻoe ke hōʻoia i kēia ma ke kāhea ʻana i nā hui wehewehe). ʻO kēlā mau mea. ʻoiaʻiʻo, e kaupalena ʻia ka pahu i ka nui o nā kumuwaiwai e pono ai e holo.
Inā ʻōlelo ʻia nā noi no kahi kumuwaiwai, ʻaʻole kau ʻia nā palena kiʻekiʻe ma kēia kumuwaiwai - i.e. ua kaupalena ʻia ka pahu e nā kumu waiwai o ka node ponoʻī.
Hiki ke hoʻonohonoho i ka hoʻokele waiwai ʻaʻole wale ma ke kiʻekiʻe o kahi pahu kikoʻī, akā ma ka pae inoa inoa hoʻi me ka hoʻohana ʻana i kēia mau mea:
LimitRange - wehewehe i ke kulekele kaohi ma ka ipu/pod pae i ns a pono e wehewehe i nā palena paʻamau o ka ipu/pod, a me ka pale ʻana i ka hana ʻana i nā ipu/pods momona (a i ʻole, e kaupalena i ko lākou helu. a hoʻoholo i ka hiki ke ʻokoʻa i nā waiwai i nā palena a me nā noi
Punawaiwai - wehewehe i ke kulekele kapu ma ka laulā no nā ipu a pau ma ns a hoʻohana ʻia, ma ke ʻano he lula, e hoʻokaʻawale i nā kumuwaiwai ma waena o nā kaiapuni (pono inā ʻaʻole i hoʻokaʻawale ʻia nā kaiapuni ma ka pae node)
Eia nā laʻana o nā hōʻike i hoʻonohonoho i nā palena waiwai:
ʻO kēlā mau mea. i keia hihia, e holo i ka ipu me ka nginx, oe e pono ma ka liʻiliʻi loa 1G o ka noa RAM a me 0.2 CPU ma ka node, oiai ka nui o ka ipu hiki ke hoopau i ka 0.2 CPU a me na mea a pau i loaʻa RAM ma ka node.
ʻO kēlā mau mea. ʻAʻole hiki ke ʻoi aku ka nui o nā pahu noi āpau i ka ns paʻamau ma mua o 300m no ka CPU a me 1G no ka OP, a ʻo ka huina o nā palena āpau he 700m no ka CPU a me 2G no ka OP.
ʻO kēlā mau mea. ma ka inoa inoa paʻamau no nā ipu āpau, e hoʻonoho ʻia ke noi i 100m no CPU a me 1G no OP, palena - 1 CPU a me 2G. Ma ka manawa like, ua kau ʻia kahi palena ma nā waiwai hiki ke noi / palena no CPU (50m <x <2) a me RAM (500M <x <4G).
ʻO kēlā mau mea. no kēlā me kēia pod i ka ns paʻamau e loaʻa ka palena o 4 vCPU a me 1G.
I kēia manawa makemake wau e haʻi iā ʻoe i nā mea maikaʻi e hiki ai iā mākou ke hāʻawi i kēia mau palena.
ʻO ka hoʻouka kaulike ma waena o nā nodes
E like me kāu e ʻike ai, ʻo ka ʻāpana k8s ke kuleana no ka hāʻawi ʻana i nā pods ma waena o nā nodes, e like me ka mea kikowaena, e hana ana e like me ka algorithm kiko'ī. Hele kēia algorithm i ʻelua mau ʻanuʻu i ke koho ʻana i ka node maikaʻi loa e hoʻomaka:
'oʻoleʻa
Kaulana
ʻO kēlā mau mea. e like me ke kulekele i wehewehe ʻia, koho mua ʻia nā nodes i hiki ke hoʻomaka i kahi pod e pili ana i kahi hoʻonohonoho predicates (me ka nānā ʻana inā lawa nā kumu waiwai o ka node e holo ai i ka pod - PodFitsResources), a laila no kēlā me kēia node, e like me nā mea nui Hāʻawi ʻia nā helu (me, ʻoi aku ka nui o nā kumuwaiwai manuahi i loaʻa i kahi node, ʻoi aku ka nui o nā helu i hāʻawi ʻia - LeastResourceAllocation/LeastRequestedPriority/BalancedResourceAllocation) a hoʻomaka ʻia ka pod ma ka node me nā helu nui loa (inā hoʻokō kekahi mau node i kēia kūlana i ka manawa hoʻokahi, a laila ua koho ʻia kekahi mea maʻamau).
I ka manawa like, pono ʻoe e hoʻomaopopo i ka mea hoʻonohonoho, i ka nānā ʻana i nā kumuwaiwai i loaʻa o kahi node, alakaʻi ʻia e ka ʻikepili i mālama ʻia ma etcd - i.e. no ka nui o ka waiwai i noi ʻia/palena o kēlā me kēia pod e holo ana ma kēia node, akā, ʻaʻole no ka hoʻohana waiwai maoli. Hiki ke loaʻa kēia ʻike mai ka puka kauoha kubectl describe node $NODEno ka laʻana:
Maanei mākou e ʻike ai i nā pods a pau e holo ana ma kahi node kikoʻī, a me nā kumuwaiwai a kēlā me kēia pod noi. A eia ke ʻano o ka papa kuhikuhi i ka wā i hoʻokuʻu ʻia ai ka cronjob-cron-events-1573793820-xt6q9 pod (e ʻike ʻia kēia ʻike ma ka log scheduler i ka wā e hoʻonoho ai ʻoe i ka pae logging 10th i nā hoʻopaʻapaʻa kauoha hoʻomaka -v=10):
log
I1115 07:57:21.637791 1 scheduling_queue.go:908] About to try and schedule pod nxs-stage/cronjob-cron-events-1573793820-xt6q9
I1115 07:57:21.637804 1 scheduler.go:453] Attempting to schedule pod: nxs-stage/cronjob-cron-events-1573793820-xt6q9
I1115 07:57:21.638285 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s5 is allowed, Node is running only 16 out of 110 Pods.
I1115 07:57:21.638300 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s6 is allowed, Node is running only 20 out of 110 Pods.
I1115 07:57:21.638322 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s3 is allowed, Node is running only 20 out of 110 Pods.
I1115 07:57:21.638322 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s4 is allowed, Node is running only 17 out of 110 Pods.
I1115 07:57:21.638334 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s10 is allowed, Node is running only 16 out of 110 Pods.
I1115 07:57:21.638365 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s12 is allowed, Node is running only 9 out of 110 Pods.
I1115 07:57:21.638334 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s11 is allowed, Node is running only 11 out of 110 Pods.
I1115 07:57:21.638385 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s1 is allowed, Node is running only 19 out of 110 Pods.
I1115 07:57:21.638402 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s2 is allowed, Node is running only 21 out of 110 Pods.
I1115 07:57:21.638383 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s9 is allowed, Node is running only 16 out of 110 Pods.
I1115 07:57:21.638335 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s8 is allowed, Node is running only 18 out of 110 Pods.
I1115 07:57:21.638408 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s13 is allowed, Node is running only 8 out of 110 Pods.
I1115 07:57:21.638478 1 predicates.go:1369] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s10 is allowed, existing pods anti-affinity terms satisfied.
I1115 07:57:21.638505 1 predicates.go:1369] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s8 is allowed, existing pods anti-affinity terms satisfied.
I1115 07:57:21.638577 1 predicates.go:1369] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s9 is allowed, existing pods anti-affinity terms satisfied.
I1115 07:57:21.638583 1 predicates.go:829] Schedule Pod nxs-stage/cronjob-cron-events-1573793820-xt6q9 on Node nxs-k8s-s7 is allowed, Node is running only 25 out of 110 Pods.
I1115 07:57:21.638932 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: BalancedResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 2343 millicores 9640186880 memory bytes, score 9
I1115 07:57:21.638946 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: LeastResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 2343 millicores 9640186880 memory bytes, score 8
I1115 07:57:21.638961 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: BalancedResourceAllocation, capacity 39900 millicores 66620170240 memory bytes, total request 4107 millicores 11307422720 memory bytes, score 9
I1115 07:57:21.638971 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: BalancedResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 5847 millicores 24333637120 memory bytes, score 7
I1115 07:57:21.638975 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: LeastResourceAllocation, capacity 39900 millicores 66620170240 memory bytes, total request 4107 millicores 11307422720 memory bytes, score 8
I1115 07:57:21.638990 1 resource_allocation.go:78] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: LeastResourceAllocation, capacity 39900 millicores 66620178432 memory bytes, total request 5847 millicores 24333637120 memory bytes, score 7
I1115 07:57:21.639022 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s10: TaintTolerationPriority, Score: (10)
I1115 07:57:21.639030 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s8: TaintTolerationPriority, Score: (10)
I1115 07:57:21.639034 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s9: TaintTolerationPriority, Score: (10)
I1115 07:57:21.639041 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s10: NodeAffinityPriority, Score: (0)
I1115 07:57:21.639053 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s8: NodeAffinityPriority, Score: (0)
I1115 07:57:21.639059 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s9: NodeAffinityPriority, Score: (0)
I1115 07:57:21.639061 1 interpod_affinity.go:237] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: InterPodAffinityPriority, Score: (0)
I1115 07:57:21.639063 1 selector_spreading.go:146] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s10: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639073 1 interpod_affinity.go:237] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: InterPodAffinityPriority, Score: (0)
I1115 07:57:21.639077 1 selector_spreading.go:146] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s8: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639085 1 interpod_affinity.go:237] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: InterPodAffinityPriority, Score: (0)
I1115 07:57:21.639088 1 selector_spreading.go:146] cronjob-cron-events-1573793820-xt6q9 -> nxs-k8s-s9: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639103 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s10: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639109 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s8: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639114 1 generic_scheduler.go:726] cronjob-cron-events-1573793820-xt6q9_nxs-stage -> nxs-k8s-s9: SelectorSpreadPriority, Score: (10)
I1115 07:57:21.639127 1 generic_scheduler.go:781] Host nxs-k8s-s10 => Score 100037
I1115 07:57:21.639150 1 generic_scheduler.go:781] Host nxs-k8s-s8 => Score 100034
I1115 07:57:21.639154 1 generic_scheduler.go:781] Host nxs-k8s-s9 => Score 100037
I1115 07:57:21.639267 1 scheduler_binder.go:269] AssumePodVolumes for pod "nxs-stage/cronjob-cron-events-1573793820-xt6q9", node "nxs-k8s-s10"
I1115 07:57:21.639286 1 scheduler_binder.go:279] AssumePodVolumes for pod "nxs-stage/cronjob-cron-events-1573793820-xt6q9", node "nxs-k8s-s10": all PVCs bound and nothing to do
I1115 07:57:21.639333 1 factory.go:733] Attempting to bind cronjob-cron-events-1573793820-xt6q9 to nxs-k8s-s10
Ma ʻaneʻi, ʻike mākou i ka hoʻomaka ʻana o ka mea hoʻonohonoho kānana a hoʻopuka i kahi papa inoa o 3 nodes i hiki ke hoʻokuʻu ʻia (nxs-k8s-s8, nxs-k8s-s9, nxs-k8s-s10). A laila, helu ʻo ia i nā helu ma muli o kekahi mau ʻāpana (me BalancedResourceAllocation, LeastResourceAllocation) no kēlā me kēia o kēia mau node i mea e hoʻoholo ai i ka node kūpono loa. ʻO ka hope loa, ua hoʻonohonoho ʻia ka pod ma ka node me ka helu kiʻekiʻe loa o nā helu (ma ʻaneʻi ʻelua mau nodes i ka manawa hoʻokahi i ka helu like o nā helu 100037, no laila ua koho ʻia kahi koho - nxs-k8s-s10).
hopena: ina e holo ana ka node i na pods i kau ole ia ai na kapu, alaila, no k8s (mai ka mana'o o ka hoohana waiwai) e like ana keia me he mea la aole loa na pods ma keia node. No laila, inā loaʻa iā ʻoe kahi pod me kahi kaʻina paʻa (e laʻa, wowza) a ʻaʻohe kau palena no ia mea, a laila hiki ke kū mai kahi kūlana i ka wā i ʻai maoli ai kēia pod i nā kumuwaiwai āpau o ka node, akā no k8s kēia node. Ua manaʻo ʻia ʻaʻole i hoʻouka ʻia a e hāʻawi ʻia ia i ka helu like o nā helu i ka wā e hoʻonoho ai (ma nā helu e loiloi ana i nā kumuwaiwai i loaʻa) ma ke ʻano he node ʻaʻohe o nā pods hana, hiki ke alakaʻi i ka puʻunaue like ʻole o ka ukana ma waena o nā node.
Kipaku ʻia ʻo Pod
E like me kāu e ʻike ai, hāʻawi ʻia kēlā me kēia pod i hoʻokahi o 3 mau papa QoS:
hoʻopaʻa ʻia - hāʻawi ʻia i ka manawa no kēlā me kēia pahu i loko o ka pod i kuhikuhi ʻia kahi noi a me ka palena no ka hoʻomanaʻo a me ka cpu, a pono e kūlike kēia mau waiwai.
hikiwawe - ma ka liʻiliʻi loa o hoʻokahi pahu i loko o ka pod he noi a he palena, me ka noi < palena
hoʻoikaika maikaʻi loa - inā ʻaʻole i kaupalena ʻia kahi pahu hoʻokahi o ka pod
I ka manawa like, i ka wā e ʻike ai kahi node i ka nele o nā kumuwaiwai (disk, memory), hoʻomaka ka kubelet e hoʻonohonoho a hoʻokuke i nā pods e like me kahi algorithm kikoʻī e noʻonoʻo ana i ka mea nui o ka pod a me kāna papa QoS. No ka laʻana, inā mākou e kamaʻilio e pili ana i ka RAM, a laila e pili ana i ka papa QoS, hāʻawi ʻia nā helu e like me kēia kumu.
ʻO kēlā mau mea. me ka mea nui, e kipaku mua ka kubelet i nā pods me ka hoʻoikaika maikaʻi loa o ka papa QoS mai ka node.
hopena: inā makemake ʻoe e hōʻemi i ka hiki ke kipaku ʻia ka pod i makemake ʻia mai ka node i ka wā o ka nele o nā kumuwaiwai ma luna, a laila me ka mea nui, pono ʻoe e mālama i ka hoʻonohonoho ʻana i ka noi / palena no ia.
Mechanism for horizontal autoscaling of application pods (HPA)
Ke hoʻonui ʻia ka hana a hoʻemi i ka helu o nā pods ma muli o ka hoʻohana ʻana i nā kumuwaiwai (pūnaewele - CPU/RAM a i ʻole mea hoʻohana - rps), kahi hui k8s e like me HPA (Horizontal Pod Autoscaler). ʻO ka algorithm o ia mea penei:
Hoʻoholo ʻia nā heluhelu o kēia manawa o ka punawai i ʻike ʻia (currentMetricValue)
Hoʻoholo ʻia nā waiwai i makemake ʻia no ka punawai (makemakeMetricValue), i hoʻonohonoho ʻia no nā kumuwaiwai pūnaewele me ka hoʻohana ʻana i ke noi.
Hoʻoholo ʻia ka helu o nā replicas i kēia manawa (currentReplicas)
Ke helu nei ke kumu hoʻohālikelike i ka helu i makemake ʻia o nā kope (makemakeReplicas)
makemakeReplicas = [Replicas i kēia manawa * (MetricValue / makemakeMetricValue )]
I kēia hihia, ʻaʻole hiki ke hoʻonui ʻia ke kokoke ka coefficient (currentMetricValue / desiredMetricValue) i ka 1 (ma kēia hihia, hiki iā mākou ke hoʻonohonoho iā mākou iho i ka hewa i ʻae ʻia; ʻo 0.1 ka mea paʻamau).
E nānā i ka hana ʻana o ka hpa me ka hoʻohana ʻana i ka laʻana o ka app-test application (i wehewehe ʻia ʻo Deployment), kahi e pono ai ke hoʻololi i ka helu o nā replicas ma muli o ka hoʻohana ʻana i ka CPU:
ʻO kēlā mau mea. ʻike mākou ua hoʻomaka mua ʻia ka pod application i ʻelua mau manawa, aia kēlā me kēia mea i ʻelua pahu nginx a me ka nginx-exporter, no kēlā me kēia mea i kuhikuhi ʻia. noi no ka CPU.
ʻO kēlā mau mea. Ua hana mākou i kahi hpa e nānā i ka Deployment app-test a hoʻoponopono i ka helu o nā pods me ka noi e pili ana i ka hōʻailona cpu (manaʻo mākou e pau ka pod i 30% o ka CPU e noi ai), me ka helu o nā replicas i loko. ka laulā o 2-10.
I kēia manawa, e nānā kākou i ke ʻano o ka hana ʻana o ka hpa inā hoʻokomo mākou i kahi ukana i kekahi o nā kapuahi.
# kubectl top pod
NAME CPU(cores) MEMORY(bytes)
app-test-78559f8f44-pgs58 101m 243Mi
app-test-78559f8f44-cj4jz 4m 240Mi
Ma ka huina, loaʻa iā mākou nā mea penei:
ʻO ka waiwai makemake (makemakeMetricValue) - e like me nā hoʻonohonoho hpa, loaʻa iā mākou 30%
Waiwai o kēia manawa (currentMetricValue) - no ka helu ʻana, e helu ana ka luna hoʻoponopono i ka waiwai awelika o ka hoʻohana waiwai ma %, ʻo ia hoʻi. conditionally hana penei:
Loaʻa i nā waiwai piha o nā metric pod mai ka server metric, i.e. 101m a me 4m
Heluhelu i ka awelika waiwai piha, i.e. (101m + 4m) / 2 = 53m
Loaʻa i ka waiwai piha no ka hoʻohana waiwai i makemake ʻia (no kēia, ua hōʻuluʻulu ʻia nā noi o nā pahu āpau) 60m + 30m = 90m
E helu ana i ka awelika pākēneka o ka hoʻohana ʻana i ka CPU e pili ana i ka pod noi, ʻo ia hoʻi. 53m / 90m * 100% = 59%
I kēia manawa, loaʻa iā mākou nā mea a pau e pono ai mākou e hoʻoholo inā pono mākou e hoʻololi i ka helu o nā replicas; e hana i kēia, helu mākou i ka coefficient:
ratio = 59% / 30% = 1.96
ʻO kēlā mau mea. Pono e hoʻonui ʻia ka helu o nā replicas e ~2 manawa a nui i [2 * 1.96] = 4.
Panina: E like me kāu e ʻike ai, i mea e hana ai kēia ʻano hana, kahi kūlana kūpono ke kū ʻana o nā noi no nā pahu āpau i ka pod i ʻike ʻia.
Mechanism for horizontal autoscaling of nodes (Cluster Autoscaler)
I mea e pale ai i ka hopena maikaʻi ʻole i ka ʻōnaehana i ka wā o ka hoʻouka ʻana, ʻaʻole lawa ka loaʻa ʻana o kahi hpa i hoʻonohonoho ʻia. No ka laʻana, e like me nā hoʻonohonoho i loko o ka mana hoʻoponopono hpa, hoʻoholo ʻo ia e hoʻonui ʻia ka nui o nā replicas e 2 mau manawa, akā ʻaʻole i loaʻa i nā node nā kumuwaiwai manuahi e holo ai i kēlā mau pods (ʻo ia hoʻi. Ua noi ʻia nā kumuwaiwai i ka pod noi) a ua hoʻololi kēia mau pods i ka mokuʻāina e kali nei.
I kēia hihia, inā he IaaS/PaaS pili ka mea hāʻawi (e laʻa, GKE/GCE, AKS, EKS, etc.), kahi mea hana e like me Node Autoscaler. Hāʻawi ia iā ʻoe e hoʻonohonoho i ka helu kiʻekiʻe a me ka liʻiliʻi o nā node i loko o ka pūʻulu a hoʻoponopono maʻalahi i ka helu o kēia manawa o nā nodes (ma ke kāhea ʻana i ka API mea hāʻawi kapua e kauoha / wehe i kahi node) ke loaʻa ʻole nā kumu waiwai i ka hui a me nā pods. ʻAʻole hiki ke hoʻonohonoho ʻia (aia ma ka mokuʻāina e kali nei).
Panina: No ka hiki ke hoʻonui i nā nodes, pono e hoʻonohonoho i nā noi i loko o nā pahu pod i hiki i nā k8s ke nānā pono i ka ukana ma nā nodes a ma muli o ka hōʻike ʻana ʻaʻohe kumu i loko o ka hui e hoʻomaka i ka pod aʻe.
hopena
Pono e hoʻomaopopo ʻia ʻaʻole pono ka hoʻonohonoho ʻana i nā palena kumu waiwai no ka holo pono ʻana o ka noi, akā ʻoi aku ka maikaʻi o ka hana ʻana no kēia mau kumu:
No ka ʻoi aku ka pololei o ka hana ʻana o ka mea hoʻonohonoho e pili ana i ka hoʻohālikelike ʻana ma waena o nā nodes k8s
No ka hoʻemi ʻana i ka hiki ʻana mai o kahi hanana "pod eviction".
No ka hana ʻana i ka autoscaling ākea o nā palapala noi (HPA).
No ka hoʻokaʻawale ʻana i nā nodes (Cluster Autoscaling) no nā mea hāʻawi ao
E heluhelu pū i nā ʻatikala ʻē aʻe ma kā mākou blog: