Telung Tingkat Autoscaling ing Kubernetes: Cara Gunakake kanthi Efektif

Telung Tingkat Autoscaling ing Kubernetes: Cara Gunakake kanthi Efektif
Kanggo nguwasani Kubernetes kanthi lengkap, sampeyan kudu ngerti macem-macem cara kanggo skala sumber daya kluster: dening miturut pangembang sistem, iki minangka salah sawijining tugas utama Kubernetes. Kita wis menehi ringkesan tingkat dhuwur babagan mekanisme autoscaling horisontal lan vertikal lan ukuran kluster, uga rekomendasi babagan cara nggunakake kanthi efektif.

artikel Kubernetes Autoscaling 101: Cluster Autoscaler, Horizontal Autoscaler, lan Vertical Pod Autoscaler diterjemahake dening tim sing ngetrapake autoscaling ing Kubernetes aaS saka Mail.ru.

Apa penting kanggo mikir babagan skala

Kubernetes - alat kanggo manajemen sumber daya lan orkestrasi. Mesti wae, iku apik kanggo tinker karo fitur kelangan deploying, ngawasi, lan ngatur pods (pod minangka klompok wadhah sing diluncurake kanggo nanggepi panjaluk).

Nanging, sampeyan uga kudu mikir babagan pitakonan ing ngisor iki:

  1. Kepiye cara ngukur modul lan aplikasi?
  2. Kepiye cara njaga kontaner tetep operasional lan efisien?
  3. Kepiye carane nanggapi owah-owahan konstan ing kode lan beban kerja saka pangguna?

Konfigurasi kluster Kubernetes kanggo ngimbangi sumber daya lan kinerja bisa dadi tantangan lan mbutuhake kawruh pakar babagan cara kerja internal Kubernetes. Beban kerja aplikasi utawa layanan sampeyan bisa fluktuasi sedina muput utawa malah sajrone sejam, mula imbangan paling apik dianggep minangka proses sing terus-terusan.

Tingkat autoscaling Kubernetes

Autoscaling sing efektif mbutuhake koordinasi antarane rong level:

  1. Tingkat pod, kalebu horisontal (Horizontal Pod Autoscaler, HPA) lan vertikal autoscaler (Vertical Pod Autoscaler, VPA). Iki nggawe skala sumber daya sing kasedhiya kanggo wadhah sampeyan.
  2. Tingkat Cluster, sing dikelola dening Cluster Autoscaler (CA), sing nambah utawa nyuda jumlah kelenjar ing kluster.

Modul Horizontal Autoscaler (HPA).

Minangka jeneng kasebut, HPA ngukur jumlah replika pod. Umume devops nggunakake beban CPU lan memori minangka pemicu kanggo ngganti jumlah replika. Nanging, iku bisa kanggo ukuran sistem adhedhasar metrik khusus, sing kombinasi utawa malah metrik njaba.

Diagram operasi HPA tingkat dhuwur:

  1. HPA terus mriksa nilai metrik sing ditemtokake sajrone instalasi kanthi interval standar 30 detik.
  2. HPA nyoba nambah jumlah modul yen ambang sing ditemtokake wis tekan.
  3. HPA nganyari jumlah replika ing controller penyebaran / replikasi.
  4. Pengontrol penyebaran/replikasi banjur nyebarake modul tambahan sing dibutuhake.

Telung Tingkat Autoscaling ing Kubernetes: Cara Gunakake kanthi Efektif
HPA miwiti proses panyebaran modul nalika ambang metrik wis tekan

Nalika nggunakake HPA, nimbang ing ngisor iki:

  • Interval mriksa HPA standar yaiku 30 detik. Iki disetel dening gendΓ©ra horizontal-pod-autoscaler-sync-periode ing manager controller.
  • Kesalahan relatif standar yaiku 10%.
  • Sawise nambah jumlah modul pungkasan, HPA ngarepake metrik bakal stabil sajrone telung menit. Interval iki disetel dening gendera horisontal-pod-autoscaler-upscale-tundha.
  • Sawise pangurangan pungkasan ing jumlah modul, HPA ngenteni limang menit kanggo stabil. Interval iki disetel dening gendera horizontal-pod-autoscaler-downscale-delay.
  • HPA paling apik karo obyek penyebaran tinimbang pengontrol replikasi. Autoscaling horisontal ora kompatibel karo nganyari rolling, sing langsung ngapusi pengontrol replikasi. Kanthi panyebaran, jumlah replika gumantung langsung marang obyek panyebaran.

Autoscaling vertikal saka pods

Vertikal autoscaling (VPA) nyedhiyakake wektu utawa memori CPU luwih akeh (utawa kurang) menyang polong sing ana. Cocog kanggo pods stateful utawa stateless, nanging utamanΓ© dimaksudakΓ© kanggo layanan stateful. Nanging, sampeyan uga bisa nggunakake VPA kanggo modul stateless yen sampeyan kudu otomatis nyetel jumlah sumber daya pisanan diparengake.

VPA uga nanggapi acara OOM (kehabisan memori). Ngganti wektu lan memori CPU mbutuhake miwiti maneh pods. Nalika diwiwiti maneh, VPA ngajeni anggaran alokasi (anggaran distribusi pods, PDB) kanggo njamin jumlah modul sing dibutuhake minimal.

Sampeyan bisa nyetel sumber daya minimal lan maksimum kanggo saben modul. Mangkono, sampeyan bisa matesi jumlah maksimum memori diparengake kanggo 8 GB. Iki migunani yen kelenjar saiki ora bisa nyedhiyakake luwih saka 8 GB memori saben wadhah. Spesifikasi rinci lan mekanisme operasi diterangake ing resmi VPA wiki.

Kajaba iku, VPA nduweni fungsi rekomendasi sing menarik (VPA Recommender). Ngawasi panggunaan sumber daya lan acara OOM kabeh modul kanggo menehi saran memori anyar lan nilai wektu CPU adhedhasar algoritma cerdas adhedhasar metrik sejarah. Ana uga API sing njupuk gagang pod lan ngasilake nilai sumber daya sing disaranake.

Wigati dicathet yen VPA Recommender ora nglacak "watesan" sumber. Iki bisa nyebabake modul monopoli sumber daya ing simpul. Iku luwih apik kanggo nyetel watesan ing tingkat namespace supaya memori ageng utawa konsumsi CPU.

Skema operasi VPA tingkat dhuwur:

  1. VPA terus mriksa nilai metrik sing ditemtokake sajrone instalasi kanthi interval standar 10 detik.
  2. Yen batesan sing ditemtokake wis tekan, VPA nyoba ngganti jumlah sumber daya sing diparengake.
  3. VPA nganyari jumlah sumber ing controller penyebaran / rΓ©plikasi.
  4. Nalika modul diwiwiti maneh, kabeh sumber daya anyar ditrapake kanggo kedadeyan sing digawe.

Telung Tingkat Autoscaling ing Kubernetes: Cara Gunakake kanthi Efektif
VPA nambahake jumlah sumber daya sing dibutuhake

Elinga bab-bab ing ngisor iki nalika nggunakake VPA:

  • Scaling mbutuhake miwiti maneh polong wajib. Iki perlu kanggo ngindhari operasi sing ora stabil sawise owah-owahan. Kanggo linuwih, modul diwiwiti maneh lan disebarake ing simpul adhedhasar sumber daya sing mentas dialokasikan.
  • VPA lan HPA durung kompatibel karo siji liyane lan ora bisa mbukak ing pods padha. Yen sampeyan nggunakake loro mekanisme skala ing kluster sing padha, priksa manawa setelan sampeyan nyegah supaya ora diaktifake ing obyek sing padha.
  • VPA nyetel panjalukan wadhah kanggo sumber daya mung adhedhasar panggunaan kepungkur lan saiki. Ora nyetel watesan panggunaan sumber daya. Bisa uga ana masalah karo aplikasi sing ora bisa digunakake kanthi bener lan wiwit njupuk luwih akeh sumber daya, iki bakal nyebabake Kubernetes mateni pod iki.
  • VPA isih ing tahap awal pembangunan. Disiapake manawa sistem kasebut bisa ngalami owah-owahan ing mangsa ngarep. Sampeyan bisa maca babagan watesan dikenal ΠΈ rencana pembangunan. Mangkono, ana rencana kanggo ngetrapake operasi gabungan VPA lan HPA, uga panyebaran modul bebarengan karo kabijakan autoscaling vertikal kanggo wong-wong mau (contone, label khusus 'mbutuhake VPA').

Autoscaling kluster Kubernetes

Cluster Autoscaler (CA) ngganti jumlah kelenjar adhedhasar jumlah pods nunggu. Sistem periodik mriksa modul sing ditundha - lan nambah ukuran kluster yen luwih akeh sumber daya lan yen kluster ora ngluwihi watesan sing diadegake. CA komunikasi karo panyedhiya layanan awan, njaluk simpul tambahan saka iku, utawa ngeculake sing ora aktif. Versi CA pisanan sing kasedhiya umume dikenalake ing Kubernetes 1.8.

Skema tingkat dhuwur saka operasi SA:

  1. CA mriksa modul sing ditundha kanthi interval standar 10 detik.
  2. Yen siji utawa luwih pods ana ing status siyaga amarga kluster ora duwe sumber daya sing cukup kanggo nyedhiakke, iku nyoba kanggo nyedhiyani siji utawa luwih kelenjar tambahan.
  3. Nalika panyedhiya layanan maya nyedhiyakake simpul sing dibutuhake, bakal gabung karo kluster lan siap kanggo ngladeni pod.
  4. Penjadwal Kubernetes nyebarake pod sing ditundha menyang simpul anyar. Yen sawise iki sawetara modul isih tetep ing negara nunggu, proses diulang lan simpul anyar ditambahake menyang kluster.

Telung Tingkat Autoscaling ing Kubernetes: Cara Gunakake kanthi Efektif
Penyediaan otomatis simpul kluster ing mΓ©ga

Coba ing ngisor iki nalika nggunakake CA:

  • CA mesthekake yen kabeh pods ing kluster duwe kamar kanggo mbukak, preduli saka mbukak CPU. Uga nyoba kanggo mesthekake yen ora ana simpul rasah ing kluster.
  • CA nyathet kabutuhan skala sawise kira-kira 30 detik.
  • Sawise simpul ora dibutuhake maneh, CA bakal ngenteni 10 menit sadurunge nggawe ukuran sistem.
  • Sistem autoscaling duwe konsep expanders. Iki minangka strategi sing beda kanggo milih klompok simpul sing bakal ditambahake simpul anyar.
  • Gunakake pilihan kanthi tanggung jawab cluster-autoscaler.kubernetes.io/safe-to-evict (true). Yen sampeyan nginstal akeh pods, utawa yen akeh sing kasebar ing kabeh kelenjar, sampeyan bakal kelangan kemampuan kanggo ngukur kluster.
  • Gunakake PodDisruptionBudgetskanggo nyegah polong dibusak, sing bisa nyebabake bagean aplikasi sampeyan rusak.

Carane Kubernetes autoscalers sesambungan karo saben liyane

Kanggo harmoni sing sampurna, penskalaan otomatis kudu ditrapake ing tingkat pod (HPA/VPA) lan tingkat kluster. Padha sesambungan karo saben liyane relatif prasaja:

  1. HPA utawa VPA nganyari replika pod utawa sumber daya sing diparengake kanggo pods ana.
  2. Yen ana ora cukup kelenjar kanggo skala ngrancang, CA sok dong mirsani ing ngarsane polong ing negara nunggu.
  3. CA nyedhiyakake simpul anyar.
  4. Modul disebarake menyang simpul anyar.

Telung Tingkat Autoscaling ing Kubernetes: Cara Gunakake kanthi Efektif
Sistem skala-out Kubernetes kolaboratif

Kesalahan umum ing autoscaling Kubernetes

Ana sawetara masalah umum sing bisa ditindakake nalika nyoba ngleksanakake autoscaling.

HPA lan VPA gumantung ing metrik lan sawetara data historis. Yen sumber daya ora cukup, modul bakal diminimalisir lan ora bisa ngasilake metrik. Ing kasus iki, autoscaling ora bakal kelakon.

Operasi skala dhewe sensitif wektu. Kita pengin modul lan kluster kanthi cepet - sadurunge pangguna weruh masalah utawa gagal. Mulane, wektu skala rata-rata kanggo polong lan kluster kudu dianggep.

Skenario becik - 4 menit:

  1. 30 detik. Nganyari metrik target: 30βˆ’60 detik.
  2. 30 detik. HPA mriksa nilai metrik: 30 detik.
  3. Kurang saka 2 detik. Pods digawe lan pindhah menyang status ngenteni: 1 detik.
  4. Kurang saka 2 detik. CA ndeleng modul nunggu lan ngirim telpon menyang kelenjar panentu: 1 detik.
  5. 3 menit. Panyedhiya awan nyedhiyakake node. K8s ngenteni nganti siap: nganti 10 menit (gumantung saka sawetara faktor).

Skenario paling awon (luwih nyata) - 12 menit:

  1. 30 detik. Nganyari metrik target.
  2. 30 detik. HPA mriksa nilai metrik.
  3. Kurang saka 2 detik. Pods digawe lan mlebu ing status siyaga.
  4. Kurang saka 2 detik. CA ndeleng modul tunggu lan nelpon kanggo nyedhiyakake kelenjar.
  5. 10 menit. Panyedhiya awan nyedhiyakake node. K8s ngenteni nganti siap. Wektu nunggu gumantung ing sawetara faktor, kayata wektu tundha vendor, tundha OS, lan alat dhukungan.

Aja bingung mekanisme skala panyedhiya awan karo CA kita. Sing terakhir mlaku ing kluster Kubernetes, dene mesin panyedhiya awan beroperasi kanthi basis distribusi simpul. Ora ngerti apa sing kedadeyan karo pod utawa aplikasi sampeyan. Sistem kasebut beroperasi kanthi paralel.

Cara ngatur skala ing Kubernetes

  1. Kubernetes minangka alat manajemen sumber daya lan orkestrasi. Operasi kanggo ngatur pod lan sumber daya kluster minangka tonggak penting kanggo nguwasani Kubernetes.
  2. Ngerti logika skalabilitas pod njupuk HPA lan VPA.
  3. CA mung kudu digunakake yen sampeyan duwe pangerten apik babagan kabutuhan pods lan kontaner.
  4. Kanggo ngonfigurasi kluster kanthi optimal, sampeyan kudu ngerti kepiye sistem skala beda bisa digunakake.
  5. Nalika ngira-ngira wektu skala, elinga skenario paling awon lan paling apik.

Source: www.habr.com

Add a comment