Kubernetes-ийг бүрэн эзэмшихийн тулд та кластерийн нөөцийг масштаблах янз бүрийн аргуудыг мэдэх хэрэгтэй: by
Нийтлэл
Томруулах талаар бодох нь яагаад чухал вэ?
Гэсэн хэдий ч та дараахь асуултуудын талаар бодох хэрэгтэй.
- Модуль болон програмуудыг хэрхэн масштаблах вэ?
- Савыг хэрхэн ажиллагаатай, үр ашигтай байлгах вэ?
- Хэрэглэгчээс ирж буй код болон ажлын ачаалал байнга өөрчлөгдөхөд хэрхэн хариу өгөх вэ?
Нөөц болон гүйцэтгэлийг тэнцвэржүүлэхийн тулд Kubernetes кластеруудыг тохируулах нь хэцүү байж болох бөгөөд Kubernetes-ийн дотоод үйл ажиллагааны талаар мэргэжлийн мэдлэг шаарддаг. Таны аппликейшн эсвэл үйлчилгээний ачаалал өдрийн турш эсвэл бүр нэг цагийн турш өөрчлөгдөж болох тул тэнцвэржүүлэх нь байнгын үйл явц гэж үзэх нь дээр.
Kubernetes автомат масштабын түвшин
Автомат масштабыг үр дүнтэй болгохын тулд хоёр түвшний зохицуулалт шаардлагатай:
- Хэвтээ (Хэвтээ Pod Autoscaler, HPA) болон босоо автомат масштаблагч (Vertical Pod Autoscaler, VPA) зэрэг Pod түвшин. Энэ нь таны чингэлэгт ашиглах боломжтой нөөцийг өргөжүүлж байна.
- Cluster Autoscaler (CA) удирддаг кластерын түвшин бөгөөд энэ нь кластер доторх зангилааны тоог нэмэгдүүлж эсвэл багасгадаг.
Хэвтээ автомат масштаблагч (HPA) модуль
Нэрнээс нь харахад HPA нь pod хуулбаруудын тоог хэмждэг. Ихэнх хөгжүүлэгчид CPU болон санах ойн ачааллыг хуулбарын тоог өөрчлөхөд ашигладаг. Гэсэн хэдий ч, энэ нь систем дээр тулгуурлан масштаблах боломжтой юм
Өндөр түвшний HPA үйлдлийн диаграмм:
- HPA нь суулгах явцад заасан хэмжигдэхүүнийг 30 секундын өгөгдмөл интервалаар тасралтгүй шалгадаг.
- Хэрэв заасан босго хэмжээнд хүрсэн бол HPA нь модулийн тоог нэмэгдүүлэхийг оролддог.
- HPA нь байршуулалт/хуулбарлах хянагч доторх хуулбарын тоог шинэчилдэг.
- Дараа нь байршуулах/хуулбарлах хянагч нь шаардлагатай нэмэлт модулиудыг байрлуулна.
Хэмжих босго хүрэх үед HPA модулийг байршуулах процессыг эхлүүлнэ
HPA ашиглахдаа дараахь зүйлийг анхаарч үзээрэй.
- Анхдагч HPA шалгах интервал нь 30 секунд байна. Үүнийг туг далбаагаар тогтоодог хэвтээ-под-автомат масштабаар-синк-хугацаа хянагч менежер дээр.
- Анхдагч харьцангуй алдаа нь 10% байна.
- Модулийн тоог хамгийн сүүлд нэмэгдүүлсний дараа HPA хэмжүүрүүд гурван минутын дотор тогтворжино гэж найдаж байна. Энэ интервалыг тугаар тохируулна хэвтээ-pod-autoscaler-дээд зэрэглэлийн саатал.
- Модулийн тоог хамгийн сүүлд бууруулсны дараа HPA тогтворжихын тулд таван минут хүлээдэг. Энэ интервалыг тугаар тохируулна хэвтээ-pod-autoscaler-багасгах саатал.
- HPA нь хуулбарлах хянагч гэхээсээ илүү байршуулах объектуудтай хамгийн сайн ажилладаг. Хэвтээ автомат масштаб нь хуулбарлах хянагчдыг шууд удирддаг өнхрөх шинэчлэлттэй нийцэхгүй байна. Байршуулах үед хуулбарын тоо нь байршуулах объектуудаас шууд хамаарна.
Будгийн босоо автомат хэмжээс
Босоо автомат масштаблалт (VPA) нь одоо байгаа pods-д илүү их (эсвэл бага) CPU цаг эсвэл санах ойг хуваарилдаг. Төрийн мэдээлэлтэй эсвэл харьяалалгүй pods-д тохиромжтой, гэхдээ голчлон төлөв байдлын үйлчилгээнд зориулагдсан. Гэсэн хэдий ч, хэрэв та анх хуваарилагдсан нөөцийн хэмжээг автоматаар тохируулах шаардлагатай бол харьяалалгүй модулиудад VPA ашиглаж болно.
VPA нь мөн OOM (санах ойгүй) үйл явдалд хариу үйлдэл үзүүлдэг. CPU-ийн цаг болон санах ойг өөрчлөхийн тулд pods-ыг дахин эхлүүлэх шаардлагатай. Дахин эхлүүлэх үед VPA нь хуваарилалтын төсвийг хүндэтгэдэг (
Та модуль бүрийн хамгийн бага ба хамгийн их нөөцийг тохируулж болно. Тиймээс та хуваарилсан санах ойн дээд хэмжээг 8 ГБ хүртэл хязгаарлаж болно. Хэрэв одоогийн зангилаанууд нэг саванд 8 ГБ-аас илүү санах ойг хуваарилж чадахгүй бол энэ нь ашигтай. Нарийвчилсан үзүүлэлтүүд болон үйл ажиллагааны механизмыг доор тайлбарласан болно
Үүнээс гадна VPA нь сонирхолтой зөвлөмж өгөх функцтэй (VPA Recommender). Энэ нь түүхэн хэмжигдэхүүн дээр суурилсан ухаалаг алгоритм дээр суурилсан шинэ санах ой болон CPU-ийн цагийн утгыг санал болгохын тулд бүх модулиудын нөөцийн ашиглалт болон OOM үйл явдлыг хянадаг. Мөн pod бариул авч, санал болгосон нөөцийн утгыг буцаадаг API байдаг.
VPA Recommender нь нөөцийн "хязгаарлалт"-ыг хянадаггүй гэдгийг тэмдэглэх нь зүйтэй. Энэ нь модуль нь зангилаа доторх нөөцийг монополчлоход хүргэж болзошгүй юм. Асар их санах ой эсвэл CPU зарцуулалтаас зайлсхийхийн тулд хязгаарыг нэрийн зайны түвшинд тохируулах нь дээр.
Өндөр түвшний VPA үйлдлийн схем:
- VPA нь суулгах явцад заасан хэмжигдэхүүнийг 10 секундын үндсэн интервалаар тасралтгүй шалгадаг.
- Хэрэв заасан босго хэмжээнд хүрсэн бол VPA нь хуваарилагдсан нөөцийн хэмжээг өөрчлөхийг оролддог.
- VPA нь байршуулалт/хуулбарлах хянагч доторх нөөцийн тоог шинэчилдэг.
- Модулиудыг дахин эхлүүлэх үед бүх шинэ нөөцийг үүсгэсэн тохиолдлуудад хэрэглэнэ.
VPA нь шаардлагатай хэмжээний нөөцийг нэмдэг
VPA ашиглахдаа дараах зүйлсийг анхаарна уу.
- Томруулахын тулд pod-ыг заавал дахин эхлүүлэх шаардлагатай. Өөрчлөлт хийсний дараа тогтворгүй ажиллахаас зайлсхийхийн тулд энэ нь зайлшгүй шаардлагатай. Найдвартай байхын тулд модулиудыг дахин эхлүүлж, шинээр хуваарилагдсан нөөц дээр үндэслэн зангилаануудаар тараадаг.
- VPA болон HPA нь бие биентэйгээ тохирохгүй байгаа бөгөөд нэг pods дээр ажиллах боломжгүй. Хэрэв та хоёр масштабын механизмыг нэг кластерт ашиглаж байгаа бол таны тохиргоо тэдгээрийг нэг объект дээр идэвхжүүлэхээс сэргийлж байгаа эсэхийг шалгаарай.
- VPA нь зөвхөн өнгөрсөн болон одоогийн хэрэглээнд тулгуурлан нөөцийн хүсэлтийг тохируулдаг. Энэ нь нөөцийн ашиглалтын хязгаарыг тогтоодоггүй. Аппликешнүүд буруу ажиллаж, улам олон нөөцийг авч эхлэхэд асуудал гарч болзошгүй тул Кубернетес энэ подыг унтраахад хүргэнэ.
- VPA нь хөгжлийн эхний шатандаа байна. Ойрын ирээдүйд системд зарим өөрчлөлт орж болзошгүй гэдэгт бэлэн байгаарай. Та тухай уншиж болно
мэдэгдэж байгаа хязгаарлалтууд ихөгжлийн төлөвлөгөө . Тиймээс, VPA болон HPA-ийн хамтарсан ажиллагааг хэрэгжүүлэх, түүнчлэн модулиудыг босоо автоматаар масштаблах бодлогын хамт хэрэгжүүлэхээр төлөвлөж байна (жишээлбэл, тусгай шошго нь "VPA шаарддаг").
Kubernetes кластерыг автоматаар масштаблах
Cluster Autoscaler (CA) нь хүлээгдэж буй хонгилын тоонд тулгуурлан зангилааны тоог өөрчилдөг. Систем нь хүлээгдэж буй модулиудыг үе үе шалгаж, хэрэв илүү их нөөц шаардлагатай бол кластер тогтоосон хязгаараас хэтрээгүй бол кластерийн хэмжээг нэмэгдүүлдэг. CA нь үүлэн үйлчилгээ үзүүлэгчтэй харилцаж, түүнээс нэмэлт зангилаа хүсэлт гаргах эсвэл сул зогсолтыг гаргадаг. CA-ийн анхны нийтлэг хувилбарыг Kubernetes 1.8 дээр танилцуулсан.
SA үйл ажиллагааны өндөр түвшний схем:
- CA нь хүлээгдэж буй модулиудыг анхдагч 10 секундын интервалаар шалгадаг.
- Хэрэв кластерт хуваарилах хангалттай нөөц байхгүй тул нэг буюу хэд хэдэн pod нь зогсолтын төлөвт байгаа бол энэ нь нэг буюу хэд хэдэн нэмэлт зангилаа хангахыг оролддог.
- Үүлний үйлчилгээ үзүүлэгч шаардлагатай зангилааг хуваарилах үед энэ нь кластерт нэгдэж, pods-д үйлчлэхэд бэлэн болно.
- Kubernetes төлөвлөгч нь хүлээгдэж буй подсуудыг шинэ зангилаа руу тараадаг. Хэрэв үүний дараа зарим модулиуд хүлээгдэж буй төлөвт хэвээр байвал процесс давтагдаж, кластерт шинэ зангилаа нэмэгдэнэ.
Үүлэн дэх кластерийн зангилааг автоматаар хангах
CA ашиглахдаа дараахь зүйлийг анхаарч үзээрэй.
- CA нь CPU-ийн ачааллаас үл хамааран кластер дахь бүх pods ажиллах зайтай байхыг баталгаажуулдаг. Мөн кластерт шаардлагагүй зангилаа байхгүй байхыг хичээдэг.
- CA нь масштаблах хэрэгцээг ойролцоогоор 30 секундын дараа бүртгэдэг.
- Нэгэнт зангилаа шаардлагагүй болсон тохиолдолд CA нь системийг өргөтгөхөөс өмнө 10 минут хүлээхийг өгөгдмөл болгож байна.
- Автомат масштабын систем нь өргөтгөгч гэсэн ойлголттой байдаг. Эдгээр нь шинэ зангилаа нэмэгдэх зангилааны бүлгийг сонгох өөр өөр стратеги юм.
- Сонголтыг хариуцлагатай ашигла cluster-autoscaler.kubernetes.io/safe-to-evict (үнэн). Хэрэв та олон тооны хонхорцог суулгасан бол эсвэл тэдгээрийн олонх нь бүх зангилаанууд дээр тархсан бол та кластерыг томруулах чадвараа ихээхэн алдах болно.
- Ашиглах
PodDisruptionBudgets Таны програмын зарим хэсгийг бүрмөсөн эвдэхэд хүргэж болзошгүй pods-ыг устгахаас урьдчилан сэргийлэх.
Kubernetes-ийн автоscalers нь хоорондоо хэрхэн харилцдаг
Төгс зохицлыг бий болгохын тулд автомат масштабыг pod түвшин (HPA/VPA) болон кластер түвшинд хоёуланд нь ашиглах ёстой. Тэд бие биетэйгээ харьцангуй энгийн харьцдаг:
- HPA эсвэл VPA нь одоо байгаа pods-д хуваарилагдсан pod хуулбар эсвэл нөөцийг шинэчилдэг.
- Төлөвлөсөн масштабын хувьд хангалттай зангилаа байхгүй бол CA нь хүлээгдэж буй төлөвт хонхорцог байгааг анзаардаг.
- CA нь шинэ цэгүүдийг хуваарилдаг.
- Модулиудыг шинэ зангилаа руу тараадаг.
Хамтарсан Kubernetes-ийн өргөтгөлийн систем
Kubernetes-ийн автомат масштабын нийтлэг алдаа
Автомат масштабыг хэрэгжүүлэх гэж оролдох үед хөгжүүлэгчид тулгардаг хэд хэдэн нийтлэг асуудал байдаг.
HPA болон VPA нь хэмжүүр болон зарим түүхэн өгөгдлөөс хамаардаг. Хэрэв хангалттай нөөц хуваарилагдаагүй бол модулиудыг багасгаж, хэмжүүр үүсгэх боломжгүй болно. Энэ тохиолдолд автомат масштаб хэзээ ч болохгүй.
Масштабтай болгох үйл ажиллагаа нь өөрөө цаг хугацааны мэдрэмжтэй байдаг. Хэрэглэгчид ямар нэгэн асуудал, алдааг анзаарахаас өмнө модулиуд болон кластеруудыг хурдан өргөжүүлэхийг бид хүсч байна. Тиймээс хонхорцог болон кластерыг масштаблах дундаж хугацааг анхаарч үзэх хэрэгтэй.
Хамгийн тохиромжтой хувилбар - 4 минут:
- 30 секунд. Зорилтот хэмжигдэхүүнийг шинэчлэх: 30−60 секунд.
- 30 секунд. HPA хэмжүүрийн утгыг шалгадаг: 30 секунд.
- 2 секундээс бага. Подууд үүсгэгдэж, хүлээх төлөвт орно: 1 секунд.
- 2 секундээс бага. CA нь хүлээгдэж буй модулиудыг харж, хангамжийн зангилаа руу дуудлага илгээдэг: 1 секунд.
- 3 минут. Үүл үйлчилгээ үзүүлэгч нь зангилаа хуваарилдаг. K8s бэлэн болтол хүлээдэг: 10 минут хүртэл (хэд хэдэн хүчин зүйлээс хамаарч).
Хамгийн муу тохиолдол (илүү бодитой) хувилбар - 12 минут:
- 30 секунд. Зорилтот хэмжүүрүүдийг шинэчлэх.
- 30 секунд. HPA нь хэмжигдэхүүнийг шалгадаг.
- 2 секундээс бага. Дотор нь үүсгэгдэж, зогсолтын төлөвт орно.
- 2 секундээс бага. CA нь хүлээгдэж буй модулиудыг харж, зангилааг хангахын тулд дуудлага хийдэг.
- 10 минут. Үүл үйлчилгээ үзүүлэгч нь зангилаа хуваарилдаг. K8-ууд бэлэн болтол хүлээдэг. Хүлээх хугацаа нь үйлдвэрлэгчийн саатал, үйлдлийн системийн саатал, дэмжлэгийн хэрэгсэл зэрэг хэд хэдэн хүчин зүйлээс хамаарна.
Үүл үйлчилгээ үзүүлэгчдийн масштабын механизмыг манай CA-тай андуурч болохгүй. Сүүлийнх нь Kubernetes кластер дотор ажилладаг бол үүлэн үйлчилгээ үзүүлэгч хөдөлгүүр нь зангилааны түгээлтийн үндсэн дээр ажилладаг. Энэ нь таны pods эсвэл програмд юу болж байгааг мэдэхгүй байна. Эдгээр системүүд зэрэгцээ ажилладаг.
Kubernetes дахь масштабыг хэрхэн удирдах вэ
- Kubernetes бол нөөцийн удирдлага, зохион байгуулалтын хэрэгсэл юм. Под болон кластерийн нөөцийг удирдах үйл ажиллагаа нь Кубернетесийг эзэмших гол үе шат юм.
- HPA болон VPA-г харгалзан pod scalability-ийн логикийг ойлгох.
- CA-г зөвхөн сав, савныхаа хэрэгцээг сайн ойлгосон тохиолдолд л ашиглах ёстой.
- Кластерыг оновчтой тохируулахын тулд янз бүрийн масштабын системүүд хэрхэн хамтран ажилладагийг ойлгох хэрэгтэй.
- Хуваарилах хугацааг тооцоолохдоо хамгийн муу болон хамгийн сайн тохиолдлын хувилбаруудыг санаарай.
Эх сурвалж: www.habr.com