ProHoster > Blog > башкаруу > Ар кандай маалымат борборлорунда Kubernetes кластерлерин кантип туташтыруу керек
Ар кандай маалымат борборлорунда Kubernetes кластерлерин кантип туташтыруу керек
Биздин Kubernetes Quick Start сериясына кош келиңиз. Бул биз онлайн режиминде жана тренингдерибизде эң кызыктуу суроолорду камтыган кадимки рубрика. Kubernetes эксперти жооп берет.
Бүгүнкү эксперт Даниел Поленчик (Даниэле Поленчич). Даниел инструктор жана программалык камсыздоону иштеп чыгуучу болуп иштейт Learnk8s.
Көбүнчө инфраструктура ар кандай аймактарда, өзгөчө көзөмөлдөнүүчү чөйрөлөрдө кайталанат жана бөлүштүрүлөт.
Эгер бир аймак жеткиликсиз болсо, жол кыймылы үзгүлтүккө учурабаш үчүн башка аймакка багытталат.
Kubernetes менен сиз окшош стратегияны колдонуп, жумуш жүгүн ар кайсы аймактарга тарата аласыз.
Ар бир команда, аймак, чөйрө же бул элементтердин айкалышы үчүн бир же бир нече кластерлер болушу мүмкүн.
Сиздин кластерлериңиз ар кандай булуттарда жана жерде жайгаштырылышы мүмкүн.
Бирок мындай географиялык жайылуу үчүн инфраструктураны кантип пландаштырасыз?
Сиз бир тармак аркылуу бир нече булут чөйрөсү үчүн бир чоң кластерди түзүшүңүз керекпи?
Же көптөгөн чакан кластерлерге ээ болуп, аларды көзөмөлдөө жана синхрондоштуруу жолун табасызбы?
Бир лидерлик кластери
Бир тармактын үстүнөн бир кластер түзүү анчалык деле оңой эмес.
Кырсыкка кабылганыңызды элестетиңиз, кластер сегменттеринин ортосундагы байланыш жоголуп кетти.
Эгер сизде бир башкы сервер болсо, ресурстардын жарымы жаңы буйруктарды ала албайт, анткени алар мастер менен байланыша алышпайт.
Жана ошол эле учурда сизде эски маршруттук таблицалар бар (kube-proxy жаңыларын жүктөй албайт) жана кошумча подколор жок (kubelet жаңыртууларды талап кыла албайт).
Андан да жаманы, эгерде Кубернетес түйүн көрбөсө, ал аны жетим деп белгилейт жана жок болгон түйүндөрдү учурдагы түйүндөргө бөлүштүрөт.
Натыйжада сизде эки эсе көп шишкебек бар.
Эгер сиз ар бир аймак үчүн бирден башкы сервер жасасаңыз, etcd маалымат базасында консенсус алгоритминде көйгөйлөр пайда болот. (болжол менен ред. — Чынында, etcd маалымат базасы сөзсүз эле башкы серверлерде жайгашуусу шарт эмес. Аны ошол эле аймактагы серверлердин өзүнчө тобунда иштетсе болот. Ырас, ошол эле учурда кластердин иштебей калган учурун алуу. Бирок тез.)
etcd колдонот сал алгоритмидискке жазуудан мурун баасын сүйлөшүү үчүн.
Башкача айтканда, мамлекеттик ж.б. жазууга чейин көпчүлүк учурлар консенсуска жетиши керек.
Эгерде etcd инстанцияларынын ортосундагы кечигүү, ар кайсы аймактардагы үч etcd инстанциясында болгондой, кескин көбөйсө, маанини сүйлөшүү жана аны дискке жазуу көп убакытты талап кылат.
Бул Kubernetes контроллерлорунда чагылдырылган.
Контроллердин менеджери өзгөртүү жөнүндө билүү жана маалымат базасына жооп жазуу үчүн көбүрөөк убакыт керек.
Жана бир эмес, бир нече контроллер бар болгондуктан, чынжыр реакциясы келип чыгат жана бүт кластер өтө жай иштей баштайт.
Учурда бир кластер үчүн чоң тармактын жакшы үлгүлөрү жок.
Негизинен, иштеп чыгуучулардын коомчулугу жана SIG-кластер тобу Кубернетес контейнерлерди уюштургандай кластерлерди кантип уюштурууну чечүүгө аракет кылып жатышат.
Биринчи жолу биз kube федерациясынын куралын колдонуп, кластерлердин коллекциясын бирдиктүү объект катары башкарууга аракет кылдык.
Башталыш жакшы болду, бирок акыры кубе федерациясы эч качан популярдуу боло алган жок, анткени ал бардык ресурстарды колдобойт.
Ал федеративдүү жеткирүүлөрдү жана кызматтарды колдоду, бирок, мисалы, StatefulSets эмес.
Ошондой эле федерациянын конфигурациясы аннотациялар түрүндө берилип, ийкемдүү болгон эмес.
Жөн гана аннотацияларды колдонуу менен федерациядагы ар бир кластер үчүн репликаны бөлүүнү кантип сүрөттөп бере аларыңызды элестетиңиз.
Бул толугу менен баш аламандык болду.
SIG-кластери kubefed v1ден кийин көп иштерди жасап, көйгөйгө башка бурчтан мамиле кылууну чечти.
Аннотациялардын ордуна алар кластерлерге орнотулган контроллерди чыгарууну чечишти. Аны Custom Resource Definitions (CRDs) аркылуу ыңгайлаштырса болот.
Федерациянын бир бөлүгү боло турган ар бир ресурс үчүн сизде үч бөлүмдөн турган ыңгайлаштырылган CRD аныктамасы бар:
ресурстун стандарттык аныктамасы, мисалы жайылтуу;
бөлүм placement, анда ресурс федерацияда кантип бөлүштүрүлөөрүн аныктайсыз;
бөлүм override, бул жерде белгилүү бир ресурс үчүн сиз жайгаштыруудан салмагын жана параметрлерин жокко чыгара аласыз.
Бул жерде жайгаштыруу жана жокко чыгаруу бөлүмдөрү менен айкалыштырылган жеткирүүнүн мисалы.
Көрүнүп тургандай, камсыздоо эки кластер боюнча бөлүштүрүлөт: cluster1 и cluster2.
Биринчи кластер үч репликаны камсыз кылат, ал эми экинчиси 5ке коюлган.
Эгерде сизге репликалардын санын көбүрөөк көзөмөлдөө керек болсо, kubefed2 жаңы ReplicaSchedulingPreference объектисин берет, мында репликаларды салмактоого болот:
Booking.com иштеп чыгуучулары kubefed v2де иштеген жок, бирок алар Shipper менен келишти - бир нече кластерлерде, бир нече аймактарда жана бир нече булуттарда жеткирүү үчүн оператор.
Эки курал тең көп кластердик жайгаштыруу стратегияңызды ыңгайлаштырууга мүмкүндүк берет (кайсы кластерлер колдонулат жана алардын канча репликасы бар).
бирок Жүк жөнөтүүчүнүн максаты - жеткирүү учурунда ката кетирүү коркунучун азайтуу.
Жөнөтүүчүдө сиз репликаларды мурунку жана учурдагы жайгаштыруу жана келген трафиктин көлөмүнүн ортосундагы бөлүштүрүүнү сүрөттөгөн бир катар кадамдарды аныктай аласыз.
Ресурсту кластерге түрткөнүңүздө, жөнөтүүчү контролер ал өзгөрүүнү бардык кошулган кластерлерге акырындап чыгарат.
Ошондой эле, жөнөтүүчү өтө чектелген.
Мисалы, ал кирүүчү катары руль диаграммаларын кабыл алат жана ваниль ресурстарын колдобойт.
Жалпысынан алганда, Shipper ушундай иштейт.
Бирок кластер менен өз ара аракеттенүүнүн жана ресурстарды ыңгайлаштырылган аныктамаларга топтоонун жаңы ыкмасын ойлоп табуунун ордуна, көп кластердик пландоочу стандарттуу Kubernetes жашоо циклине киргизилген жана поддондорду жараткан бардык чалууларды токтотот.
Ар бир түзүлгөн поддон дароо муляж менен алмаштырылат.
Түпнуска подряд дагы бир пландоо циклинен өтөт, анда бүт федерацияны сурамжылоодон кийин, жайгаштыруу чечими кабыл алынат.
Акыр-аягы, поддон максаттуу кластерге жеткирилет.
Натыйжада, сизде эч нерсе кылбаган, жөн гана мейкиндикти ээлеген кошумча поддон бар.
Артыкчылыгы - жеткирүүлөрдү бириктирүү үчүн жаңы ресурстарды жазуунун кереги жок.
Подгон түзгөн ар бир ресурс автоматтык түрдө бириктирүүгө даяр.
Бул кызыктуу, анткени күтүлбөгөн жерден бир нече региондор боюнча бөлүштүрүлгөн материалдар бар жана сиз байкаган жоксуз. Бирок, бул өтө кооптуу, анткени бул жерде баары сыйкырга таянат.
Бирок, жүк ташуучу жеткирүүлөрдүн таасирин азайтууга аракет кылып жатканда, көп кластердик пландоочу көбүрөөк жалпы тапшырмаларды аткарат жана балким, пакеттик жумуштарга ылайыктуураак.
Ал акырындык менен жеткирүүнүн өнүккөн механизми жок.
Мульти-кластердик пландоочу жөнүндө кененирээк бул жерден тапса болот расмий репозиторий барагы.
Эгер сиз көп кластердик пландоочу жөнүндө окугуңуз келсе, Адмиралтите бар Argo менен кызыктуу колдонуу учуру — иш процесстери, окуялар, CI жана CD Kubernetes.
Башка куралдар жана чечимдер
Бир нече кластерлерди туташтыруу жана башкаруу татаал маселе жана универсалдуу чечим жок.
Эгер сиз бул теманы тереңирээк изилдегиңиз келсе, бул жерде кээ бир ресурстар:
Cilium, контейнердик тармак интерфейсинин плагини сунуш кылат кластердик тор функциясы, бул бир нече кластерлерди бириктирүүгө мүмкүндүк берет
Бүгүнкү күндө бардыгы ушул
Аягына чейин окуганыңыз үчүн рахмат!
Эгер сиз бир нече кластерлерди кантип натыйжалуу туташтырууну билсеңиз, бизге айт.
Биз сиздин ыкмаңызды шилтемелерге кошобуз.
Крис Несбитт-Смитке өзгөчө ыраазычылык (Крис Несбитт-Смит) жана Винсент де Сме (Винсент Де Смет) (ишенимдүүлүк боюнча инженер swatmobile.io) макаланы окуп, федерация кандай иштээри тууралуу пайдалуу маалымат менен бөлүшүү үчүн.