ProHoster > Օրագիր > Վարչակազմը > CRI-O-ն որպես Docker-ի փոխարինում՝ որպես Kubernetes-ի գործարկվող միջավայր. կարգավորում CentOS 8-ում
CRI-O-ն որպես Docker-ի փոխարինում՝ որպես Kubernetes-ի գործարկվող միջավայր. կարգավորում CentOS 8-ում
Բարեւ Ձեզ! Ես Սերգեյն եմ, ես DevOps եմ Surf-ում: Surf-ի DevOps բաժինը նպատակ ունի ոչ միայն ստեղծել մասնագետների միջև փոխգործակցություն և ինտեգրել աշխատանքային գործընթացները, այլև ակտիվորեն ուսումնասիրել և ներդնել ընթացիկ տեխնոլոգիաները ինչպես սեփական ենթակառուցվածքում, այնպես էլ հաճախորդի ենթակառուցվածքում:
Ստորև ես մի փոքր կխոսեմ բեռնարկղերի տեխնոլոգիական փաթեթի փոփոխությունների մասին, որոնք մենք հանդիպեցինք բաշխումն ուսումնասիրելիս: CentOS 8- ը և այն մասին, թե ինչ է դա CRI-O և ինչպես արագ ստեղծել գործարկվող միջավայր Կուբերնետես.
Ինչու՞ Docker-ը ներառված չէ CentOS 8-ում:
Վերջին հիմնական թողարկումները տեղադրելուց հետո RHEL 8 կամ CentOS 8- ը չի կարելի չնկատել. այս բաշխումները և պաշտոնական պահոցները չեն պարունակում հավելվածը դոկեր, որոնք գաղափարապես և ֆունկցիոնալորեն փոխարինում են փաթեթներին Պոդման, Բիլդա (կանխադրված բաշխման մեջ առկա է) և CRI-O. Սա պայմանավորված է ստանդարտների գործնական կիրառմամբ, որոնք մշակվել են, ի թիվս այլ բաների, Red Hat-ի կողմից՝ Open Container Initiative (OCI) նախագծի շրջանակներում:
The Linux հիմնադրամի մաս կազմող OCI-ի նպատակն է ստեղծել բաց արդյունաբերական ստանդարտներ կոնտեյների ձևաչափերի և գործարկման ժամանակների համար, որոնք միանգամից մի քանի խնդիր են լուծում: Նախ, դրանք չէին հակասում Linux-ի փիլիսոփայությանը (օրինակ, այն մասով, որ յուրաքանչյուր ծրագիր պետք է կատարի մեկ գործողություն, և դոկեր մի տեսակ «բոլորը մեկում» կոմբինատ է): Երկրորդ, նրանք կարող էին վերացնել ծրագրային ապահովման բոլոր առկա թերությունները դոկեր. Երրորդ, դրանք լիովին համատեղելի կլինեն առաջատար առևտրային հարթակների բիզնես պահանջներին՝ կոնտեյներային հավելվածների տեղակայման, կառավարման և սպասարկման համար (օրինակ՝ Red Hat OpenShift):
Սահմանափակումները դոկեր իսկ նոր ծրագրաշարի առավելությունները արդեն որոշ մանրամասն նկարագրված են այս հոդվածըև OCI նախագծի շրջանակներում առաջարկվող ծրագրային ապահովման ամբողջ փաթեթի մանրամասն նկարագրությունը և դրա ճարտարապետական առանձնահատկությունները կարելի է գտնել հենց Red Hat-ի պաշտոնական փաստաթղթերում և հոդվածներում (վատ չէ հոդված Red Hat բլոգում) և երրորդ կողմում ակնարկներ.
Կարևոր է նշել, թե ինչ գործառույթներ ունեն առաջարկվող կույտի բաղադրիչները.
Պոդման — ուղղակի փոխազդեցություն բեռնարկղերի հետ և պատկերի պահպանում runC գործընթացի միջոցով.
Բիլդա — պատկերների հավաքում և վերբեռնում գրանցամատյանում.
CRI-O — գործարկվող միջավայր կոնտեյներային նվագախմբային համակարգերի համար (օրինակ՝ Kubernetes):
Կարծում եմ, որ կույտի բաղադրիչների միջև փոխազդեցության ընդհանուր սխեման հասկանալու համար նպատակահարմար է այստեղ տրամադրել կապի դիագրամ Կուբերնետես c runC և ցածր մակարդակի գրադարանների օգտագործումը CRI-O:
CRI-O и Կուբերնետես պահպանել նույն թողարկման և աջակցության ցիկլը (համատեղելիության մատրիցը շատ պարզ է. հիմնական տարբերակները Կուբերնետես и CRI-O համընկնում են), և դա, հաշվի առնելով ծրագրավորողների կողմից այս կույտի շահագործման ամբողջական և համապարփակ փորձարկման վրա կենտրոնացումը, մեզ իրավունք է տալիս ակնկալել առավելագույն հասանելի կայունություն շահագործման ընթացքում ցանկացած օգտագործման սցենարի դեպքում (հարաբերական թեթևությունը նույնպես շահավետ է այստեղ CRI-O համեմատած դոկեր ֆունկցիոնալության նպատակային սահմանափակման պատճառով):
Տեղադրելիս Կուբերնետես «ճիշտ ճանապարհ» ճանապարհը (ըստ OCI-ի, իհարկե) օգտագործելով CRI-O մասին CentOS 8- ը Մի փոքր դժվարությունների հանդիպեցինք, որոնք, սակայն, հաջողությամբ հաղթահարեցինք։ Ես ուրախ կլինեմ ձեզ հետ կիսվել տեղադրման և կազմաձևման հրահանգներով, որոնք ընդհանուր առմամբ կտևեն մոտ 10 րոպե:
Ինչպես տեղակայել Kubernetes-ը CentOS 8-ում՝ օգտագործելով CRI-O շրջանակը
Նախադրյալներ՝ առնվազն մեկ հոսթի առկայությունը (2 միջուկ, 4 ԳԲ օպերատիվ հիշողություն, առնվազն 15 ԳԲ պահեստ) տեղադրված CentOS 8- ը (Խորհուրդ է տրվում «Սերվերի» տեղադրման պրոֆիլը), ինչպես նաև դրա համար գրառումներ տեղական DNS-ում (որպես վերջին միջոց՝ կարող եք մուտք գործել /etc/hosts-ում մուտքագրելով): Եվ մի մոռացեք անջատել փոխանակումը.
Մենք կատարում ենք բոլոր գործողությունները հոսթի վրա որպես արմատային օգտվող, զգույշ եղեք:
Առաջին քայլում մենք կկազմաձևենք ՕՀ-ն, կտեղադրենք և կկարգավորենք CRI-O-ի նախնական կախվածությունները:
Եկեք թարմացնենք ՕՀ-ը.
dnf -y update
Հաջորդը դուք պետք է կարգավորեք firewall-ը և SELinux-ը: Այստեղ ամեն ինչ կախված է այն միջավայրից, որտեղ կաշխատեն մեր հյուրընկալողը կամ հոսթերը: Դուք կարող եք կամ ստեղծել firewall՝ համաձայն առաջարկությունների փաստաթղթավորում, կամ, եթե վստահելի ցանցում եք կամ օգտագործում եք երրորդ կողմի firewall, փոխեք լռելյայն գոտին վստահելի կամ անջատեք firewall-ը.
սահմանել անհրաժեշտ տարբերակը CRI-O (հիմնական տարբերակ CRI-O, ինչպես արդեն նշվեց, համապատասխանում է պահանջվող տարբերակին Կուբերնետես), քանի որ վերջին կայուն տարբերակը Կուբերնետես ներկայումս 1.18:
Ուշադրություն դարձրեք առաջին նրբերանգին, որը մենք հանդիպում ենք տեղադրման գործընթացում. դուք պետք է խմբագրեք կոնֆիգուրացիան CRI-O Ծառայությունը սկսելուց առաջ, քանի որ պահանջվող ընդհանուր բաղադրիչն ունի այլ տեղ, քան նշվածը.
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Այժմ դուք կարող եք ակտիվացնել և սկսել դեյմոնը CRI-O:
Երկրորդ կարևոր նրբերանգը. քանի որ մենք դեյմոն չենք օգտագործում դոկեր, բայց մենք օգտագործում ենք դեյմոնը CRI-O, գործարկումից և սկզբնավորումից առաջ Կուբերնետես դուք պետք է կատարեք համապատասխան կարգավորումները կազմաձևման ֆայլում /var/lib/kubelet/config.yaml՝ նախ ստեղծելով ցանկալի գրացուցակը.
Երրորդ կարևոր կետը, որը մենք հանդիպում ենք տեղադրման ժամանակ. չնայած այն հանգամանքին, որ մենք նշել ենք օգտագործված վարորդը cgroup, և դրա կազմաձևումը փոխանցված փաստարկների միջոցով կուբելետ հնացած է (ինչպես հստակորեն նշված է փաստաթղթերում), մենք պետք է ֆայլին արգումենտներ ավելացնենք, հակառակ դեպքում մեր կլաստերը չի սկզբնավորվի.
Անհատականացնելու համար հսկիչ-ինքնաթիռ կամ բանվոր հանգույցները րոպեների ընթացքում, կարող եք օգտագործել այս սցենարով.
Ժամանակն է նախաստորագրել մեր կլաստերը:
Կլաստերը սկզբնավորելու համար գործարկեք հրամանը.
kubeadm init --pod-network-cidr=10.244.0.0/16
Համոզվեք, որ գրեք «kubeadm join…» կլաստերին միանալու հրամանը, որը ձեզ խնդրում են օգտագործել ելքի վերջում կամ առնվազն նշված նշանները:
Եկեք տեղադրենք փլագինը (CNI) Pod ցանցի համար։ Խորհուրդ եմ տալիս օգտագործել Calico- ն. Հնարավոր է ավելի հայտնի Ֆլանել հետ համատեղելիության խնդիրներ ունի nftables, այո եւ այո Calico- ն - ծրագրի կողմից առաջարկված և ամբողջությամբ փորձարկված միակ CNI իրականացումը Կուբերնետես:
Աշխատող հանգույցը մեր կլաստերին միացնելու համար հարկավոր է այն կարգավորել 1-ին և 2-րդ հրահանգներին համապատասխան կամ օգտագործել սցենար, ապա գործարկեք հրամանը «kubeadm init...» ելքից, որը մենք գրել ենք նախորդ քայլում.
Եկեք ստուգենք, որ մեր կլաստերը սկզբնավորվել է և սկսել է աշխատել.
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Պատրաստ. Դուք արդեն կարող եք տեղավորել օգտակար բեռներ ձեր K8s կլաստերի վրա:
Ինչ է մեզ սպասում առջևում
Հուսով եմ, որ վերը նշված հրահանգները օգնեցին խնայել ձեզ որոշ ժամանակ և նյարդեր:
Արդյունաբերությունում տեղի ունեցող գործընթացների արդյունքը հաճախ կախված է նրանից, թե ինչպես են դրանք ընդունվում վերջնական օգտագործողների մեծ մասի և համապատասխան խորշի այլ ծրագրեր մշակողների կողմից: Դեռ լիովին պարզ չէ, թե ինչի կհանգեցնեն OCI-ի նախաձեռնությունները մի քանի տարի հետո, բայց մենք հաճույքով կհետևենք: Դուք կարող եք կիսվել ձեր կարծիքով հենց հիմա մեկնաբանություններում։
Մնացեք մեզ հետ!
Այս հոդվածը հայտնվել է հետևյալ աղբյուրների շնորհիվ.