ProHoster > Օրագիր > Վարչակազմը > Ինչպես միացնել Kubernetes կլաստերները տարբեր տվյալների կենտրոններում
Ինչպես միացնել Kubernetes կլաստերները տարբեր տվյալների կենտրոններում
Բարի գալուստ մեր Kubernetes Quick Start շարք: Սա սովորական սյունակ է ամենահետաքրքիր հարցերով, որոնք մենք ստանում ենք առցանց և մեր դասընթացների ժամանակ: Kubernetes-ի փորձագետը պատասխանում է.
Այսօրվա փորձագետը Դանիել Պոլենչիկն է (Դանիելե Պոլենչիչ) Դանիելն աշխատում է որպես հրահանգիչ և ծրագրային ապահովման մշակող Learnk8s.
Շատ հաճախ ենթակառուցվածքները կրկնօրինակվում և բաշխվում են տարբեր տարածաշրջաններում, հատկապես վերահսկվող միջավայրերում:
Եթե մի շրջան անհասանելի է, երթևեկությունը վերահղվում է մյուսը՝ ընդհատումներից խուսափելու համար:
Kubernetes-ի հետ դուք կարող եք օգտագործել նմանատիպ ռազմավարություն և բաշխել ծանրաբեռնվածությունը տարբեր տարածաշրջաններում:
Դուք կարող եք ունենալ մեկ կամ մի քանի կլաստերներ յուրաքանչյուր թիմում, տարածաշրջանում, միջավայրում կամ այս տարրերի համակցությունում:
Ձեր կլաստերները կարող են տեղակայվել տարբեր ամպերում և ներքին տարածքներում:
Բայց ինչպե՞ս եք պլանավորում ենթակառուցվածքը նման աշխարհագրական տարածման համար:
Ձեզ անհրաժեշտ է ստեղծել մեկ մեծ կլաստեր մի քանի ամպային միջավայրերի համար մեկ ցանցի միջոցով:
Կամ ունե՞ք շատ փոքր կլաստերներ և գտնեք դրանք կառավարելու և համաժամանակացնելու միջոց:
Մեկ առաջնորդական կլաստեր
Մեկ ցանցի վրա մեկ կլաստեր ստեղծելն այնքան էլ հեշտ չէ:
Պատկերացրեք, որ վթարի եք ենթարկվել, կլաստերի հատվածների միջև կապը կորել է:
Եթե դուք ունեք մեկ գլխավոր սերվեր, ռեսուրսների կեսը չի կարողանա նոր հրամաններ ստանալ, քանի որ նրանք չեն կարողանա կապվել վարպետի հետ:
Եվ միևնույն ժամանակ դուք ունեք հին երթուղային աղյուսակներ (kube-proxy չի կարող ներբեռնել նորերը) և ոչ մի լրացուցիչ պատիճ (kubelet-ը չի կարող թարմացումներ պահանջել):
Իրավիճակն ավելի վատթարացնելու համար, եթե Kubernetes-ը հանգույց չի տեսնում, այն նշում է որպես որբ և բացակայող հանգույցները բաժանում է գոյություն ունեցող հանգույցներին:
Արդյունքում դուք երկու անգամ ավելի շատ պատիճ ունեք:
Եթե յուրաքանչյուր տարածաշրջանի համար մեկ գլխավոր սերվեր ստեղծեք, etcd տվյալների բազայում կոնսենսուսի ալգորիթմի հետ կապված խնդիրներ կլինեն: (մոտ. խմբ. — Փաստորեն, etcd տվյալների բազան պարտադիր չէ, որ տեղակայված լինի հիմնական սերվերների վրա: Այն կարող է գործարկվել նույն տարածաշրջանի սերվերների առանձին խմբի վրա: Ճիշտ է, միևնույն ժամանակ կլաստերի ձախողման կետ ստանալը։ Բայց արագ.)
etcd օգտագործում raft ալգորիթմարժեքի շուրջ բանակցություններ վարելու համար այն սկավառակի վրա գրելուց առաջ:
Այսինքն, ատյանների մեծամասնությունը պետք է կոնսենսուսի հասնի, նախքան պետությունը կարող է գրվել etcd-ում:
Եթե etcd օրինակների միջև ուշացումը կտրուկ աճում է, ինչպես դա տեղի է ունենում տարբեր տարածաշրջաններում երեք etcd օրինակների դեպքում, երկար ժամանակ է պահանջվում արժեքի շուրջ բանակցություններ վարելու և այն սկավառակի վրա գրելու համար:
Սա արտացոլված է Kubernetes կարգավորիչներում:
Վերահսկիչի կառավարչին ավելի շատ ժամանակ է պետք, որպեսզի իմանա փոփոխության մասին և գրի պատասխանը տվյալների բազայում:
Եվ քանի որ չկա մեկ վերահսկիչ, այլ մի քանի, առաջանում է շղթայական ռեակցիա, և ամբողջ կլաստերը սկսում է շատ դանդաղ աշխատել.
Ներկայումս մեկ կլաստերի համար մեծ ցանցի լավ օրինակներ չկան:
Հիմնականում մշակողների համայնքը և SIG-կլաստերի խումբը փորձում են պարզել, թե ինչպես կազմակերպել կլաստերները այնպես, ինչպես Kubernetes-ը կազմակերպում է կոնտեյներները:
Առաջին անգամ մենք փորձեցինք կառավարել կլաստերների հավաքածուն որպես մեկ օբյեկտ՝ օգտագործելով kube ֆեդերացիայի գործիքը:
Մեկնարկը լավ էր, բայց ի վերջո kube ֆեդերացիան երբեք հայտնի չդարձավ, քանի որ այն չէր ապահովում բոլոր ռեսուրսները:
Այն աջակցում էր դաշնային առաքումներին և ծառայություններին, բայց ոչ StatefulSets-ին, օրինակ:
Նաև ֆեդերացիայի կոնֆիգուրացիան փոխանցվել է անոտացիաների տեսքով և ճկուն չի եղել։
Պատկերացրեք, թե ինչպես կարող եք նկարագրել ֆեդերացիայի յուրաքանչյուր կլաստերի կրկնօրինակի բաժանումը` օգտագործելով պարզապես ծանոթագրություններ:
Լրիվ խառնաշփոթ էր։
SIG-cluster-ը մեծ աշխատանք կատարեց kubefed v1-ից հետո և որոշեց խնդրին մոտենալ այլ տեսանկյունից:
Անոտացիաների փոխարեն նրանք որոշեցին թողարկել կարգավորիչ, որը տեղադրված է կլաստերների վրա: Այն կարող է հարմարեցվել՝ օգտագործելով Պատվերով ռեսուրսների սահմանումները (CRD):
Յուրաքանչյուր ռեսուրսի համար, որը կլինի ֆեդերացիայի մաս, դուք ունեք մաքսային CRD սահմանում երեք բաժիններով.
ռեսուրսի ստանդարտ սահմանում, օրինակ՝ տեղակայում;
բաժին placement, որտեղ դուք սահմանում եք, թե ինչպես է բաշխվելու ռեսուրսը ֆեդերացիայում;
բաժին override, որտեղ կոնկրետ ռեսուրսի համար դուք կարող եք անտեսել տեղաբաշխման քաշը և պարամետրերը:
Ահա համակցված առաքման օրինակ՝ տեղաբաշխման և անտեսման բաժիններով:
Ինչպես տեսնում եք, մատակարարումը բաշխված է երկու կլաստերների վրա. cluster1 и cluster2.
Առաջին կլաստերը տրամադրում է երեք կրկնօրինակ, իսկ երկրորդը սահմանվում է 5:
Եթե Ձեզ անհրաժեշտ է ավելի շատ վերահսկողություն կրկնօրինակների քանակի նկատմամբ, kubefed2-ը տրամադրում է նոր ReplicaSchedulingPreference օբյեկտ, որտեղ կրկնօրինակները կարող են կշռվել.
Տարբերակ 2. կլաստերների համատեղում Booking.com ոճով
Booking.com-ի ծրագրավորողները չեն աշխատել kubefed v2-ի վրա, բայց նրանք եկել են Shipper-ին՝ մի քանի կլաստերների վրա, մի քանի շրջաններում և մի քանի ամպերում առաքման օպերատորի հետ:
Երկու գործիքներն էլ թույլ են տալիս հարմարեցնել ձեր բազմակլաստերների տեղակայման ռազմավարությունը (որ կլաստերներն են օգտագործվում և քանի կրկնօրինակներ ունեն):
Սակայն Առաքողի նպատակն է նվազեցնել առաքման ընթացքում սխալների վտանգը:
Shipper-ում դուք կարող եք սահմանել մի շարք քայլեր, որոնք նկարագրում են կրկնօրինակների բաժանումը նախորդ և ընթացիկ տեղակայման և մուտքային տրաֆիկի ծավալի միջև:
Երբ ռեսուրսը մղում եք դեպի կլաստեր, առաքիչի վերահսկիչն աստիճանաբար տարածում է այդ փոփոխությունը բոլոր միացված կլաստերներում:
Նաև առաքիչը շատ սահմանափակ է:
Օրինակ, այն ընդունում է ղեկի գծապատկերները որպես մուտքագրում և չի աջակցում վանիլի ռեսուրսներին:
Ընդհանուր առմամբ, Shipper-ն աշխատում է այսպես.
Ստանդարտ առաքման փոխարեն, դուք պետք է ստեղծեք հավելվածի ռեսուրս, որը ներառում է Helm աղյուսակը.
Սակայն կլաստերի հետ փոխազդելու և ռեսուրսները մաքսային սահմանումներով փաթեթավորելու նոր եղանակ ստեղծելու փոխարեն, բազմակլաստերային ժամանակացույցը ներդրվում է ստանդարտ Kubernetes-ի կյանքի ցիկլի մեջ և ընդհատում բոլոր զանգերը, որոնք ստեղծում են պատյաններ:
Ստեղծված յուրաքանչյուր պատիճ անմիջապես փոխարինվում է կեղծամով:
բազմակի կլաստերային ժամանակացույցի օգտագործում վեբկեռիկներ՝ մուտքի փոփոխման համարզանգը ընդհատելու և անգործուն կեղծ պատիճ ստեղծելու համար:
Բնօրինակ պատիճն անցնում է պլանավորման մեկ այլ ցիկլով, որտեղ ամբողջ ֆեդերացիայի հարցումներից հետո կայացվում է տեղաբաշխման որոշում:
Ի վերջո, պատիճը առաքվում է թիրախային կլաստերին:
Արդյունքում, դուք ունեք լրացուցիչ պատիճ, որը ոչինչ չի անում, պարզապես տարածք է զբաղեցնում:
Առավելությունն այն է, որ անհրաժեշտ չէր նոր ռեսուրսներ գրել մատակարարումները համատեղելու համար:
Յուրաքանչյուր ռեսուրս, որը ստեղծում է պատիճ, ավտոմատ կերպով պատրաստ է միաձուլման:
Սա հետաքրքիր է, քանի որ հանկարծ դուք ունեք մատակարարումներ, որոնք բաշխված են մի քանի մարզերում, և դուք նույնիսկ չեք նկատել: Այնուամենայնիվ, սա բավականին ռիսկային է, քանի որ այստեղ ամեն ինչ հենված է մոգության վրա:
Բայց մինչ Shipper-ը փորձում է հիմնականում մեղմել առաքումների ազդեցությունը, բազմակի կլաստերային ժամանակացույցը կատարում է ավելի ընդհանուր առաջադրանքներ և, հավանաբար, ավելի հարմար է խմբաքանակային աշխատանքների համար:
Այն չունի աստիճանական առաքման առաջադեմ մեխանիզմ։
Multi-cluster-scheduler-ի մասին ավելին կարող եք գտնել այստեղ Պաշտոնական պահեստի էջ.
Եթե ցանկանում եք կարդալ գործողության մեջ գտնվող բազմակլաստերային պլանավորողի մասին, Admiralty-ն ունի հետաքրքիր օգտագործման դեպք Argo-ի հետ — աշխատանքային հոսքեր, իրադարձություններ, CI և CD Kubernetes:
Այլ գործիքներ և լուծումներ
Բազմաթիվ կլաստերների միացումը և կառավարումը բարդ խնդիր է, և չկա համընդհանուր լուծում:
Եթե ցանկանում եք ավելի մանրամասն ուսումնասիրել այս թեման, այստեղ կան որոշ ռեսուրսներ.
Cilium-ը՝ բեռնարկղային ցանցի ինտերֆեյսի պլագին, առաջարկում է կլաստերի ցանցի ֆունկցիան, որը թույլ է տալիս միավորել մի քանի կլաստերներ
Այսօրվա համար այսքանը
Շնորհակալություն մինչև վերջ կարդալու համար:
Եթե դուք գիտեք, թե ինչպես միացնել մի քանի կլաստերներ ավելի արդյունավետ, ասա մեզ.
Մենք ձեր մեթոդը կավելացնենք հղումներին:
Հատուկ շնորհակալություն Քրիս Նեսբիթ-Սմիթին (Քրիս Նեսբիթ-Սմիթ) և Վինսենթ դե Սմե (Վինսենթ Դե Սմեթ) (հուսալիության ինժեներ swatmobile.io) հոդվածը կարդալու և ֆեդերացիայի աշխատանքի մասին օգտակար տեղեկությունների փոխանակման համար: