praktik paling apik Kubernetes. Nyetel panjalukan lan watesan sumber

praktik paling apik Kubernetes. Nggawe wadhah cilik
praktik paling apik Kubernetes. Organisasi Kubernetes kanthi namespace
praktik paling apik Kubernetes. Validasi Kubernetes Liveness kanthi Tes Kesiapan lan Liveness

Kanggo saben sumber daya Kubernetes, sampeyan bisa ngatur rong jinis syarat - Panjaluk lan Watesan. Pisanan nggambarake syarat minimal kanggo kasedhiyan sumber daya simpul gratis sing dibutuhake kanggo mbukak wadhah utawa pod, sing nomer loro mbatesi sumber daya sing kasedhiya kanggo wadhah kasebut.

Nalika Kubernetes jadwal pods, iku penting banget sing kontaner duwe sumber daya cukup kanggo fungsi mlaku. Yen sampeyan lagi ngrancang kanggo nyebarake aplikasi gedhe ing simpul sumber daya, bisa uga ora bisa mlaku amarga simpul kurang ing memori utawa kehabisan daya CPU. Ing artikel iki, kita bakal ndeleng carane sampeyan bisa ngatasi kekurangan daya komputasi nggunakake panjaluk lan watesan sumber daya.

Panjaluk lan Watesan minangka mekanisme sing digunakake Kubernetes kanggo ngatur sumber daya kayata CPU lan memori. Panyuwunan yaiku sing njamin wadhah nampa sumber daya sing dijaluk. Yen wadhah njaluk sumber daya, Kubernetes mung bakal gawe jadwal ing simpul sing bisa nyedhiyakake. Kontrol watesan manawa sumber daya sing dijaluk wadhah ora bakal ngluwihi nilai tartamtu.

praktik paling apik Kubernetes. Nyetel panjalukan lan watesan sumber

Wadhah mung bisa nambah daya komputasi nganti watesan tartamtu, sawise iku bakal diwatesi. Ayo ndeleng cara kerjane. Dadi, ana rong jinis sumber daya - prosesor lan memori. Penjadwal Kubernetes nggunakake data babagan sumber daya iki kanggo nemtokake ngendi arep mbukak pods sampeyan. Spesifikasi sumber daya khas kanggo pod katon kaya iki.

praktik paling apik Kubernetes. Nyetel panjalukan lan watesan sumber

Saben wadhah ing pod bisa nyetel pitakon lan watesan dhewe, kabeh iku aditif. Sumber daya prosesor ditetepake ing millicores. Yen wadhah sampeyan butuh rong inti lengkap kanggo mbukak, sampeyan nyetel nilai kasebut dadi 2000m. Yen wadhah mung butuh daya 1/4 saka inti, regane bakal dadi 250m. Elinga yen sampeyan nemtokake nilai sumber daya CPU luwih gedhe tinimbang jumlah inti saka simpul paling gedhe, pod sampeyan ora bakal dijadwalake diwiwiti. Kahanan sing padha bakal kedadeyan yen sampeyan duwe Pod sing butuh papat intine, lan kluster Kubernetes mung kalebu rong mesin virtual utama.

Kajaba yen aplikasi sampeyan dirancang khusus kanggo njupuk kauntungan saka macem-macem intine (program kaya komputasi ilmiah lan operasi database sing rumit), mula praktik sing paling apik yaiku nyetel Panjaluk CPU dadi 1 utawa luwih murah banjur mbukak replika liyane kanggo skalabilitas. Solusi iki bakal menehi sistem luwih fleksibel lan linuwih.

Nalika nerangake watesan CPU, dadi luwih menarik amarga dianggep minangka sumber daya sing bisa dikompres. Yen aplikasi sampeyan wiwit nyedhaki watesan daya prosesor, Kubernetes bakal wiwit alon-alon wadhah sampeyan nggunakake CPU Throttling - nyuda frekuensi prosesor. Iki tegese CPU bakal artificially throttled, menehi aplikasi potensi kinerja luwih elek, nanging proses ora bakal mungkasi utawa dijupuk metu.

Sumber daya memori ditetepake ing bita. Biasane nilai ing setelan diukur ing mebibyte Mib, nanging sampeyan bisa nyetel nilai apa wae, saka bita nganti petabyte. Kahanan sing padha ditrapake ing kene karo CPU - yen sampeyan njaluk jumlah memori sing luwih gedhe tinimbang jumlah memori ing kelenjar sampeyan, pod kasebut ora bakal dijadwalake kanggo eksekusi. Nanging ora kaya sumber daya CPU, memori ora dikompres amarga ora ana cara kanggo mbatesi panggunaane. Mulane, eksekusi wadhah bakal mandheg sanalika ngluwihi memori sing diwenehake.

praktik paling apik Kubernetes. Nyetel panjalukan lan watesan sumber

Penting kanggo elinga yen sampeyan ora bisa ngatur panjalukan sing ngluwihi sumber daya sing bisa diwenehake dening node sampeyan. Spesifikasi sumber daya sing dienggo bareng kanggo mesin virtual GKE bisa ditemokake ing pranala ing ngisor video iki.

Ing donya sing becik, setelan gawan wadhah bakal cukup kanggo njaga alur kerja kanthi lancar. Nanging jagad nyata ora kaya ngono, wong bisa gampang lali ngatur panggunaan sumber daya, utawa peretas bakal nyetel panjaluk lan watesan sing ngluwihi kemampuan nyata infrastruktur kasebut. Kanggo nyegah skenario kasebut, sampeyan bisa ngatur kuota sumber daya ResourceQuota lan LimitRange.

Sawise namespace wis digawe, iku bisa diblokir nggunakake kuota. Contone, yen sampeyan duwe ruang jeneng prod lan dev, pola kasebut ora ana kuota produksi lan kuota pangembangan sing ketat banget. Iki ngidini prod, ing acara mundhak cetha ing lalu lintas, kanggo njupuk liwat kabeh sumber sing kasedhiya, rampung mblokir dev.

Kuota sumber daya bisa uga katon kaya iki. Ing conto iki ana 4 bagean - iki 4 baris ngisor kode.

praktik paling apik Kubernetes. Nyetel panjalukan lan watesan sumber

Ayo padha ndeleng saben wong. Requests.cpu iku jumlah maksimum panjalukan CPU gabungan sing bisa teka saka kabeh kontaner ing namespace. Ing conto iki, sampeyan bisa duwe 50 kontaner kanthi panjalukan 10m, limang kontaner kanthi panjaluk 100m, utawa mung siji kontaner kanthi panjaluk 500m. Anggere jumlah total requests.cpu saka namespace diwenehi kurang saka 500m, kabeh bakal nggoleki.

Memori requests.memory punika jumlah maksimum panjalukan memori gabungan sing kabeh kontaner ing namespace bisa duwe. Kaya ing kasus sadurunge, sampeyan bisa duwe 50 2 wadhah mib, limang 20 wadhah mib, utawa siji 100 wadhah mib anggere jumlah total memori sing dijaluk ing namespace kurang saka 100 mebibyte.

Limits.cpu punika jumlah maksimum gabungan saka daya CPU sing kabeh kontaner ing namespace bisa digunakake. Kita bisa nimbang iki minangka watesan panjalukan daya prosesor.

Pungkasan, limits.memory minangka jumlah maksimal memori sing dienggo bareng sing kabeh wadhah ing ruang jeneng bisa digunakake. Iki watesan ing total panjalukan memori.
Dadi, kanthi gawan, wadhah ing kluster Kubernetes mlaku kanthi sumber daya komputasi tanpa watesan. Kanthi kuota sumber daya, administrator kluster bisa mbatesi konsumsi sumber daya lan nggawe sumber daya adhedhasar ruang jeneng. Ing namespace, pod utawa wadhah bisa nggunakake akeh daya CPU lan memori sing ditemtokake dening kuota sumber daya namespace. Nanging, ana kuwatir yen siji pod utawa wadhah bisa monopoli kabeh sumber daya sing kasedhiya. Kanggo nyegah kahanan iki, sawetara watesan digunakake - kabijakan kanggo mbatesi alokasi sumber daya (kanggo polong utawa wadhah) ing ruang jeneng.

Kisaran watesan menehi watesan sing bisa:

  • Mesthekake panggunaan minimal lan maksimal sumber daya komputasi kanggo saben modul utawa wadhah ing ruang jeneng;
  • ngleksanakake panjalukan panyimpenan minimal lan maksimum Starage Request kanggo saben PersistentVolumeClaim ing namespace;
  • ngleksanakake hubungan antarane Request lan Limit kanggo sumber ing namespace;
  • Nyetel Panjaluk / Watesan standar kanggo sumber daya ing ruang jeneng lan nyuntikake kanthi otomatis menyang wadhah nalika runtime.

Kanthi cara iki sampeyan bisa nggawe sawetara watesan ing namespace sampeyan. Ora kaya kuota, sing ditrapake kanggo kabeh ruang jeneng, Limit Range digunakake kanggo wadhah individu. Iki bisa nyegah pangguna nggawe wadhah sing cilik banget utawa, kosok balene, ing ruang jeneng. Limit Range bisa uga katon kaya iki.

praktik paling apik Kubernetes. Nyetel panjalukan lan watesan sumber

Kaya ing kasus sadurunge, 4 bagean bisa dibedakake ing kene. Ayo padha ndeleng saben siji.
Bagean gawan nyetel watesan gawan kanggo wadhah ing pod. Yen sampeyan nyetel nilai kasebut menyang kisaran sing ekstrem, banjur sembarang wadhah sing nilai kasebut durung disetel kanthi jelas bakal ngetutake nilai standar.

Bagean panjalukan standar defaultRequest ngatur panjalukan standar kanggo wadhah ing pod. Maneh, yen sampeyan nyetel nilai kasebut menyang kisaran sing ekstrem, mula kontaner sing ora nyetel pilihan kasebut bakal dadi standar kanggo nilai kasebut.

Bagean max nemtokake watesan maksimum sing bisa disetel kanggo wadhah ing pod. Nilai ing bagean gawan lan watesan wadhah ora bisa disetel ing ndhuwur watesan iki. Wigati dimangerteni manawa nilai kasebut disetel dadi maksimal lan ora ana bagean standar, banjur nilai maksimal dadi nilai standar.

Bagean min nemtokake panjalukan minimal sing bisa disetel kanggo wadhah ing pod. Nanging, nilai ing bagean gawan lan pitakon kanggo wadhah ora bisa disetel ing ngisor watesan iki.

Maneh, penting kanggo dicathet yen yen nilai iki disetel, standar ora, banjur nilai minimal dadi pituduh standar.

Panjaluk sumber daya iki pungkasane digunakake dening panjadwal Kubernetes kanggo nglakokake beban kerja sampeyan. Supaya sampeyan bisa ngatur kontaner kanthi bener, penting banget kanggo ngerti cara kerjane. Contone, sampeyan pengin mbukak sawetara pod ing kluster sampeyan. Yen spesifikasi pod kasebut sah, jadwal Kubernetes bakal nggunakake balancing round robin kanggo milih simpul kanggo mbukak beban kerja.

praktik paling apik Kubernetes. Nyetel panjalukan lan watesan sumber

Kubernetes bakal mriksa yen Node 1 duwe sumber daya sing cukup kanggo ngrampungake panjaluk saka wadhah pod, lan yen ora, bakal pindhah menyang simpul sabanjure. Yen ora ana simpul ing sistem sing bisa nyukupi panjaluk kasebut, polong bakal mlebu ing status Pending. Nggunakake fitur mesin Google Kubernetes kayata autoscaling simpul, GKE bisa kanthi otomatis ndeteksi status tunggu lan nggawe sawetara simpul tambahan.

Yen sampeyan kehabisan kapasitas node, autoscaling bakal nyuda jumlah node kanggo ngirit dhuwit. Iki kok Kubernetes jadwal pods adhedhasar panjalukan. Nanging, watesan kasebut bisa uga luwih dhuwur tinimbang panjaluk, lan ing sawetara kasus, simpul kasebut bisa kehabisan sumber daya. Kita nyebut negara iki overcommitment negara.

praktik paling apik Kubernetes. Nyetel panjalukan lan watesan sumber

Kaya sing dakkandhakake, nalika nerangake CPU, Kubernetes bakal mbatesi pods. Saben pod bakal nampa kaya sing dijaluk, nanging yen ora tekan watesan, throttling bakal diwiwiti.

Nalika nerangake sumber daya memori, Kubernetes kepeksa nggawe keputusan babagan pod sing bakal dibusak lan sing kudu disimpen nganti sampeyan mbebasake sumber daya sistem utawa kabeh sistem bakal nabrak.

Coba bayangake skenario ing ngendi sampeyan duwe mesin kehabisan memori - kepiye carane Kubernetes nangani?

Kubernetes bakal nggoleki pod sing nggunakake sumber daya luwih akeh tinimbang sing dijaluk. Dadi, yen wadhah sampeyan ora duwe Panjaluk, tegese dheweke nggunakake luwih akeh tinimbang sing dijaluk, mung amarga ora njaluk apa-apa! Wadah kasebut dadi calon utama kanggo ditutup. Calon sabanjure yaiku wadhah sing wis nyukupi kabeh panjaluke nanging isih ana ing sangisore watesan maksimal.

Dadi yen Kubernetes nemokake sawetara pod sing wis ngluwihi paramèter panjalukane, bakal ngurutake miturut prioritas banjur mbusak pods prioritas paling murah. Yen kabeh polong duwe prioritas sing padha, banjur Kubernetes bakal mungkasi polong sing ngluwihi panjaluke luwih akeh tinimbang polong liyane.

Ing kasus sing arang banget, Kubernetes bisa mbatalake pods sing isih ana ing lingkup panjaluke. Iki bisa kedadeyan nalika komponen sistem kritis kayata agen Kubelet utawa Docker wiwit nggunakake sumber daya luwih akeh tinimbang sing disedhiyakake kanggo dheweke.
Dadi, ing tahap awal perusahaan cilik, kluster Kubernetes bisa mlaku kanthi apik tanpa nyetel panjalukan lan watesan sumber daya, nanging nalika tim lan proyek sampeyan wiwit tuwuh, sampeyan duwe risiko ngalami masalah ing wilayah iki. Nambahake pitakon lan kendala menyang modul lan ruang jeneng mbutuhake gaweyan ekstra lan bisa ngirit akeh kerumitan.

praktik paling apik Kubernetes. Mati sing bener Mungkasi

Sawetara iklan πŸ™‚

Matur nuwun kanggo tetep karo kita. Apa sampeyan seneng karo artikel kita? Pengin ndeleng konten sing luwih menarik? Ndhukung kita kanthi nggawe pesenan utawa menehi rekomendasi menyang kanca, cloud VPS kanggo pangembang saka $4.99, analog unik saka server level entri, sing diciptakake kanggo sampeyan: Bebener kabeh babagan VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps saka $ 19 utawa carane nuduhake server? (kasedhiya karo RAID1 lan RAID10, munggah 24 intine lan nganti 40GB DDR4).

Dell R730xd 2 kaping luwih murah ing pusat data Equinix Tier IV ing Amsterdam? Mung kene 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV saka $199 ing Walanda! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - saka $99! Maca babagan Carane mbangun infrastruktur corp. kelas karo nggunakake Dell R730xd E5-2650 v4 server worth 9000 euro kanggo Penny?

Source: www.habr.com

Add a comment