
Kubernetesти толук өздөштүрүү үчүн, кластердик ресурстарды масштабдоонун ар кандай жолдорун билишиңиз керек: by , бул Kubernetes негизги милдеттеринин бири болуп саналат. Биз горизонталдык жана вертикалдык автомасштаб жана кластердин өлчөмүн өзгөртүү механизмдеринин жогорку деңгээлдеги серепин, ошондой эле аларды кантип натыйжалуу колдонуу боюнча сунуштарды бердик.
Макала ичинде автоскалдаштырууну ишке ашырган команда тарабынан которулган .
Эмне үчүн масштабдоо жөнүндө ойлонуу маанилүү
- ресурстарды башкаруу жана оркестрлөө куралы. Албетте, капчыктарды жайгаштыруунун, мониторинг жүргүзүүнүн жана башкаруунун сонун өзгөчөлүктөрү менен таанышуу жагымдуу (под - бул суроо-талапка жооп катары ишке киргизилген контейнерлердин тобу).
Бирок, сиз төмөнкү суроолордун үстүнөн да ойлонушуңуз керек:
- Модулдарды жана тиркемелерди кантип масштабдоо керек?
- Кантип контейнерлерди ыкчам жана эффективдүү кармоо керек?
- Колдонуучулардын кодунун жана жүктөмүнүн тынымсыз өзгөрүшүнө кантип жооп берүү керек?
Ресурстарды жана өндүрүмдүүлүктү тең салмактоо үчүн Kubernetes кластерлерин конфигурациялоо кыйын болушу мүмкүн жана Kubernetesтин ички иштери боюнча эксперттик билимди талап кылат. Колдонмоңуздун же кызматтарыңыздын жүктөмү бир күн бою, атүгүл бир сааттын ичинде өзгөрүп турушу мүмкүн, андыктан тең салмактуулукту үзгүлтүксүз процесс деп ойлошуңуз керек.
Kubernetes авто масштабдоо деңгээли
Натыйжалуу автомасштабдоо эки деңгээлдеги координацияны талап кылат:
- Pod деңгээли, анын ичинде горизонталдык (горизонталдык Pod Autoscaler, HPA) жана вертикалдык автошкалагыч (Vertical Pod Autoscaler, VPA). Бул сиздин контейнерлериңиз үчүн жеткиликтүү ресурстарды кеңейтүүдө.
- Cluster Autoscaler (CA) тарабынан башкарылуучу кластердин деңгээли, ал кластердин ичиндеги түйүндөрдүн санын көбөйтөт же азайтат.
Horizontal Autoscaler (HPA) модулу
Аты айтып тургандай, HPA подкрепликалардын санын өлчөйт. Көпчүлүк иштеп чыгуучулар репликалардын санын өзгөртүү үчүн триггер катары CPU жана эс тутумдун жүгүн колдонушат. Бирок, анын негизинде системаны масштабдоо мүмкүн алардын же .
Жогорку деңгээлдеги HPA иштөө диаграммасы:
- HPA тынымсыз 30 секунд демейки аралыкта орнотуу учурунда көрсөтүлгөн метрикалык маанилерди текшерет.
- HPA белгиленген чекке жеткенде модулдардын санын көбөйтүүгө аракет кылат.
- HPA жайгаштыруу/репликация контроллерундагы репликалардын санын жаңыртат.
- Андан кийин жайылтуу/репликация контроллери бардык зарыл болгон кошумча модулдарды жайгаштырат.

HPA метрикалык босого жеткенде модулду жайылтуу процессин баштайт
HPA колдонуп жатканда, төмөнкүлөрдү эске алыңыз:
- Демейки HPA текшерүү аралыгы 30 секунд. Ал желек менен белгиленет горизонталдуу-под-автошкалагыч-синхрондоштуруу-период контроллер менеджеринде.
- Демейки салыштырмалуу ката 10% түзөт.
- Модулдардын саны акыркы көбөйгөндөн кийин, HPA көрсөткүчтөр үч мүнөттүн ичинде турукташат деп күтөт. Бул интервал желек менен белгиленет горизонталдык-под-автошкалагыч-жогорулатуу-кечиктирүү.
- Модулдардын саны акыркы кыскартылгандан кийин, HPA турукташтыруу үчүн беш мүнөт күтөт. Бул интервал желек менен белгиленет горизонталдуу-под-автоматтык масштабдагы-кичирейтүү-кечиктирүү.
- HPA репликация контроллерлоруна караганда жайылтуу объекттери менен жакшы иштейт. Туурасынан автоматтык масштабдоо репликация контроллерлорун түздөн-түз башкарган жаңыртуу менен шайкеш келбейт. Жайгаштыруу менен репликалардын саны түздөн-түз жайылтуу объекттеринен көз каранды.
Кошумчаларды вертикалдуу автомасштабдоо
Vertical autoscaling (VPA) процессордун убактысын же эстутумун учурдагы подводдорго көбүрөөк (же азыраак) бөлөт. Мамлекеттик же жарандыгы жок подколор үчүн ылайыктуу, бирок негизинен мамлекеттик кызматтар үчүн арналган. Бирок, эгер сиз алгач бөлүнгөн ресурстардын көлөмүн автоматтык түрдө тууралоо керек болсо, жарандыгы жок модулдар үчүн VPA колдоно аласыз.
VPA ошондой эле OOM (эсте калган) окуяларына жооп берет. Процессордун убактысын жана эс тутумун өзгөртүү подкасттарды кайра иштетүүнү талап кылат. Кайра иштетилгенде, VPA бөлүү бюджетин сыйлайт () модулдардын минималдуу талап кылынган санын кепилдикке алуу.
Ар бир модул үчүн минималдуу жана максималдуу ресурстарды орното аласыз. Ошентип, сиз бөлүнгөн эстутумдун максималдуу көлөмүн 8 ГБ чейин чектей аласыз. Бул учурдагы түйүндөр ар бир контейнерге 8 ГБдан ашык эстутум бөлүп бере албаса пайдалуу. Толук мүнөздөмөлөрү жана иштөө механизми сүрөттөлгөн .
Мындан тышкары, VPA кызыктуу сунуш функциясы бар (VPA Recommender). Тарыхый метрикага негизделген акылдуу алгоритмдин негизинде жаңы эстутум жана CPU убакыт баалуулуктарын сунуштоо үчүн бардык модулдардын ресурстун колдонулушун жана OOM окуяларын көзөмөлдөйт. Кошумча тутканы алып, сунушталган ресурстун маанилерин кайтарган API да бар.
Белгилей кетсек, VPA Recommender ресурстун "чектөөсүнө" көз салбайт. Бул модулдун түйүндөрдөгү ресурстарды монополиялашына алып келиши мүмкүн. Эбегейсиз эстутумду же CPU керектөөнү болтурбоо үчүн чекти аттар мейкиндигинде коюу жакшы.
Жогорку деңгээлдеги VPA иштөө схемасы:
- VPA үзгүлтүксүз 10 секунд демейки аралыкта орнотуу учурунда көрсөтүлгөн метрикалык маанилерди текшерет.
- Көрсөтүлгөн чекке жеткенде, VPA ресурстардын бөлүнгөн көлөмүн өзгөртүүгө аракет кылат.
- VPA жайгаштыруу/репликация контроллерундагы ресурстардын санын жаңыртат.
- Модулдар кайра иштетилгенде, бардык жаңы ресурстар түзүлгөн инстанцияларга колдонулат.

VPA ресурстардын керектүү көлөмүн кошот
Сураныч, VPA колдонууда төмөнкү ойлорду эстен чыгарбаңыз:
- Масштабдоо үчүн подкастты милдеттүү түрдө өчүрүп күйгүзүү талап кылынат. Бул өзгөртүүлөр киргизилгенден кийин туруксуз иштөөнү болтурбоо үчүн зарыл. Ишенимдүүлүк үчүн модулдар кайра иштетилет жана жаңы бөлүнгөн ресурстардын негизинде түйүндөр боюнча бөлүштүрүлөт.
- VPA жана HPA азырынча бири-бирине шайкеш келбейт жана бир эле подкасттарда иштей албайт. Эгерде сиз эки масштабдоо механизмин бир кластерде колдонуп жатсаңыз, сиздин орнотууларыңыз аларды бир эле объекттерде активдештирүүсүнө жол бербөөсүн текшериңиз.
- VPA ресурстар үчүн контейнер суроо-талаптарын мурунку жана учурдагы колдонууга гана негиздейт. Ал ресурстарды колдонууга чектөөлөрдү койбойт. Тиркемелер туура иштебей, барган сайын көбүрөөк ресурстарды ээлеп баштаганда көйгөйлөр пайда болушу мүмкүн, бул Kubernetesтин бул поддонду өчүрүшүнө алып келет.
- VPA дагы эле өнүгүүнүн алгачкы баскычында. Система жакынкы келечекте кандайдыр бир өзгөрүүлөргө дуушар болушу мүмкүн экенине даяр болуңуз. жөнүндө окуй аласыз и . Ошентип, VPA жана HPA биргелешкен ишин ишке ашыруу, ошондой эле алар үчүн вертикалдуу автоскалдаштыруу саясаты менен бирге модулдарды жайылтуу пландалууда (мисалы, атайын белги "VPA талап кылынат").
Kubernetes кластерин автоматтык түрдө масштабдоо
Cluster Autoscaler (CA) түйүндөрдүн санын күтүү подкасттарынын санына жараша өзгөртөт. Система күтүлүп жаткан модулдарды мезгил-мезгили менен текшерип турат - жана эгерде көбүрөөк ресурстар керек болсо жана кластер белгиленген чектен ашпаса, кластердин өлчөмүн көбөйтөт. CA булут кызматын камсыздоочу менен байланышат, андан кошумча түйүндөрдү талап кылат же бош тургандарын чыгарат. CA биринчи жалпы жеткиликтүү версия Kubernetes 1.8 киргизилген.
SA ишинин жогорку деңгээлдеги схемасы:
- CA күтүүдөгү модулдарды демейки 10 секунд аралыкта текшерет.
- Эгерде бир же бир нече подъезд күтүү абалында болсо, анткени кластерде аларды бөлүштүрүү үчүн жетиштүү ресурстар жок болсо, ал бир же бир нече кошумча түйүндөрдү камсыз кылууга аракет кылат.
- Булут кызматынын провайдери талап кылынган түйүндү бөлүп бергенде, ал кластерге кошулат жана поддондорду тейлөөгө даяр.
- Kubernetes пландоочусу күтүлүүчү подкасттарды жаңы түйүнгө таратат. Андан кийин кээ бир модулдар дагы эле күтүү абалында кала берсе, процесс кайталанат жана кластерге жаңы түйүндөр кошулат.

Булуттагы кластердик түйүндөрдү автоматтык түрдө камсыздоо
CA колдонууда төмөнкүлөрдү эске алыңыз:
- CA CPU жүгүнө карабастан, кластердеги бардык поддондордо иштөө үчүн орун бар экенин камсыздайт. Ал ошондой эле кластерде эч кандай керексиз түйүндөр болбошуна аракет кылат.
- CA болжол менен 30 секунддан кийин масштабдоо зарылдыгын каттайт.
- Түйүн керек болбой калгандан кийин, CA демейкиге ылайык, системаны масштабдоодон мурун 10 мүнөт күтөт.
- Autoscaling системасында экспандерлер түшүнүгү бар. Бул жаңы түйүндөр кошула турган түйүндөрдүн тобун тандоонун ар кандай стратегиялары.
- Опцияны жоопкерчилик менен колдонуңуз cluster-autoscaler.kubernetes.io/safe-to-evict (true). Эгер сиз көп поддондорду орнотсоңуз же алардын көбү бардык түйүндөргө чачырап кетсе, анда сиз кластердин масштабын кеңейтүү мүмкүнчүлүгүн жоготосуз.
- колдонуу тиркемеңиздин бөлүктөрү толугу менен иштебей калышына алып келиши мүмкүн болгон поддондорду жок кылууну алдын алуу үчүн.
Kubernetes автосканерлери бири-бири менен кантип иштешет
Кемчиликсиз гармония үчүн автомасштабтоо поддон деңгээлинде (HPA/VPA) жана кластер деңгээлинде да колдонулушу керек. Алар бири-бири менен салыштырмалуу жөнөкөй:
- HPAлар же VPAлар подкрепликаларды же учурдагы подкасттарга бөлүнгөн ресурстарды жаңыртат.
- Эгерде пландаштырылган масштабдоо үчүн түйүндөр жетишсиз болсо, 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 мүнөт. Булут камсыздоочу түйүндөрдү бөлүштүрөт. K8s даяр болгуча күтөт. Күтүү убактысы бир нече факторлордон көз каранды, мисалы, сатуучунун кечигүүлөрү, OS кечигүүлөрү жана колдоо куралдары.
Булут провайдерлеринин масштабдоо механизмдерин биздин CA менен чаташтырбаңыз. Акыркысы Kubernetes кластеринин ичинде иштейт, ал эми булут провайдеринин кыймылдаткычы түйүн бөлүштүрүү негизинде иштейт. Бул сиздин поддондоруңуз же колдонмоңуз менен эмне болуп жатканын билбейт. Бул системалар параллелдүү иштешет.
Kubernetesте масштабды кантип башкаруу керек
- Kubernetes - бул ресурстарды башкаруу жана оркестрлөө куралы. Поддорду жана кластердик ресурстарды башкаруу операциялары Kubernetesти өздөштүрүүдөгү негизги этап болуп саналат.
- HPA жана VPA эске алуу менен подкасттын масштабдуулугунун логикасын түшүнүңүз.
- CA сиз өзүңүздүн капчыктарыңыздын жана контейнерлериңиздин муктаждыктарын жакшы түшүнгөнүңүздө гана колдонулушу керек.
- Кластерди оптималдуу конфигурациялоо үчүн, ар кандай масштабдоо системалары кантип чогуу иштешерин түшүнүшүңүз керек.
- Масштабтоо убактысын эсептеп жатканда, эң начар жана эң жакшы сценарийлерди эске алыңыз.
Source: www.habr.com
