ProHoster > Блог > Administrado > CRI-O kiel anstataŭaĵo por Docker kiel rultempa medio por Kubernetes: agordo sur CentOS 8
CRI-O kiel anstataŭaĵo por Docker kiel rultempa medio por Kubernetes: agordo sur CentOS 8
Saluton! Mi nomiĝas Sergey, mi estas DevOps ĉe Surf. La fako DevOps ĉe Surf celas ne nur establi interagadon inter specialistoj kaj integri laborprocezojn, sed ankaŭ aktive esplori kaj efektivigi aktualajn teknologiojn kaj en sia propra infrastrukturo kaj en la infrastrukturo de la kliento.
Malsupre mi parolos iomete pri la ŝanĝoj en la teknologia stako por ujoj, kiujn ni renkontis dum studado de la distribuo. CentOS 8 kaj pri kio ĝi estas CRI-O kaj kiel rapide agordi plenumeblan medion por Kubernetoj.
Kial Docker ne estas inkluzivita en CentOS 8?
Post instalo de la plej novaj ĉefaj eldonoj rhel 8 aŭ CentOS 8 oni ne povas ne rimarki: ĉi tiuj distribuaĵoj kaj oficialaj deponejoj ne enhavas la aplikaĵon Docker, kiuj ideologie kaj funkcie anstataŭigas pakaĵojn podman, Buildah (ĉeestas en la distribuo defaŭlte) kaj CRI-O. Ĉi tio ŝuldiĝas al la praktika efektivigo de normoj evoluigitaj, interalie, de Red Hat kiel parto de la projekto Open Container Initiative (OCI).
La celo de OCI, kiu estas parto de The Linux Foundation, estas krei malfermajn industriajn normojn por ujformatoj kaj rultempoj, kiuj solvas plurajn problemojn samtempe. Unue, ili ne kontraŭdiris la filozofion de Linukso (ekzemple, en la parto, ke ĉiu programo devas plenumi unu agon, kaj Docker estas speco de ĉio-en-unu kombinaĵo). Due, ili povus forigi ĉiujn ekzistantajn mankojn en la programaro Docker. Trie, ili estus plene kongruaj kun la komercaj postuloj de gvidaj komercaj platformoj por disfaldi, administri kaj servi kontenerigitajn aplikojn (ekzemple Red Hat OpenShift).
mankoj Docker kaj la avantaĝoj de la nova programaro jam iom detale estis priskribitaj en ĉi tiu artikolo, kaj detala priskribo de la tuta programaro-stako ofertita ene de la OCI-projekto kaj ĝiaj arkitekturaj trajtoj troveblas en la oficiala dokumentaro kaj artikoloj de Red Hat mem (ne malbona artikolo en Red Hat-blogo) kaj en triaj recenzoj.
Gravas noti kian funkciecon havas la komponentoj de la proponita stako:
podman — rekta interago kun ujoj kaj bildstokado per la procezo runC;
Buildah — muntado kaj alŝutado de bildoj al la registro;
CRI-O — efektivigebla medio por uj-orkestradsistemoj (ekzemple, Kubernetes).
Mi pensas, ke por kompreni la ĝeneralan skemon de interago inter la komponantoj de la stako, estas konsilinde provizi ĉi tie konektan diagramon. Kubernetoj c kuriC kaj malaltnivelaj bibliotekoj uzante CRI-O:
CRI-O и Kubernetoj aliĝu al la sama eldono kaj subtena ciklo (la kongrua matrico estas tre simpla: ĉefaj versioj Kubernetoj и CRI-O koincidas), kaj ĉi tio, konsiderante la fokuson pri kompleta kaj ampleksa testado de la funkciado de ĉi tiu stako fare de programistoj, donas al ni la rajton atendi la maksimuman atingeblan stabilecon en funkciado sub iuj uzaj scenaroj (relativa malpezeco ankaŭ estas utila ĉi tie. CRI-O kompare kun Docker pro celkonscia limigo de funkcieco).
Dum instalado Kubernetoj "ĝusta vojo" maniero (laŭ OCI, kompreneble) uzanta CRI-O sur CentOS 8 Ni renkontis kelkajn etajn malfacilaĵojn, kiujn ni tamen sukcese venkis. Mi volonte dividos kun vi instrukciojn pri instalado kaj agordo, kiuj entute daŭros ĉirkaŭ 10 minutojn.
Kiel disfaldi Kubernetes sur CentOS 8 uzante la kadron CRI-O
Antaŭkondiĉoj: ĉeesto de almenaŭ unu gastiganto (2 kernoj, 4 GB RAM, almenaŭ 15 GB stokado) kun instalita CentOS 8 (la "Servilo" instala profilo estas rekomendita), same kiel enskribojn por ĝi en la loka DNS (kiel lasta rimedo, vi povas elteni per eniro en /etc/hosts). Kaj ne forgesu malŝalti interŝanĝon.
Ni plenumas ĉiujn operaciojn sur la gastiganto kiel la radika uzanto, atentu.
En la unua paŝo, ni agordos la OS, instalos kaj agordos preparajn dependecojn por CRI-O.
Ni ĝisdatigu la OS:
dnf -y update
Poste vi devas agordi la fajroŝirmilon kaj SELinux. Ĉi tie ĉio dependas de la medio en kiu laboros niaj gastigantoj aŭ gastigantoj. Vi povas aŭ starigi fajroŝirmilon laŭ la rekomendoj de dokumentado, aŭ, se vi estas en fidinda reto aŭ uzas triapartan fajroŝirmilon, ŝanĝu la defaŭltan zonon al fidinda aŭ malŝaltu la fajroŝirmilon:
starigu la bezonatan version CRI-O (ĉefa versio CRI-O, kiel jam menciite, kongruas kun la bezonata versio Kubernetoj), ekde la plej nova stabila versio Kubernetoj nuntempe 1.18:
Atentu la unuan nuancon, kiun ni renkontas dum la instala procezo: vi devas redakti la agordon CRI-O antaŭ ol komenci la servon, ĉar la bezonata komuna komponanto havas malsaman lokon ol la specifita:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Nun vi povas aktivigi kaj komenci la demonon CRI-O:
La dua grava nuanco: ĉar ni ne uzas demonon Docker, sed ni uzas la demonon CRI-O, antaŭ lanĉo kaj inicialigo Kubernetoj vi devas fari la taŭgajn agordojn en la agorda dosiero /var/lib/kubelet/config.yaml, unue kreinte la deziratan dosierujon:
La tria grava punkto, kiun ni renkontas dum instalado: malgraŭ tio, ke ni indikis la ŝoforon uzatan cgroup, kaj ĝia agordo tra la argumentoj pasis kubeto estas malaktuala (kiel estas eksplicite dirite en la dokumentaro), ni devas aldoni argumentojn al la dosiero, alie nia areto ne estos pravigita:
Por personecigi kontrol-aviadilo aŭ laboristo nodoj en minutoj, vi povas uzi kun ĉi tiu skripto.
Estas tempo pravalorigi nian areton.
Por pravalorigi la areton, rulu la komandon:
kubeadm init --pod-network-cidr=10.244.0.0/16
Nepre skribu la komandon por aliĝi al la areto "kubeadm join ...", kiun vi petas uzi ĉe la fino de la eligo, aŭ almenaŭ la specifitajn ĵetonojn.
Ni instalu la kromprogramon (CNI) por la Pod-reto. Mi rekomendas uzi Kalico. Eble pli populara Fandalo havas kongruajn problemojn kun nftables, jes kaj Kalico - la sola CNI-efektivigo rekomendita kaj plene provita de la projekto Kubernetoj:
Por konekti laboran nodon al nia areto, vi devas agordi ĝin laŭ instrukcioj 1 kaj 2, aŭ uzi skripto, tiam rulu la komandon el la eligo "kubeadm init...", kiun ni skribis en la antaŭa paŝo:
Ni kontrolu, ke nia areto estas pravigita kaj ekfunkciis:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Preta! Vi jam povas gastigi utilajn ŝarĝojn sur via K8s-areto.
Kio atendas nin antaŭen
Mi esperas, ke la supraj instrukcioj helpis ŝpari al vi tempon kaj nervojn.
La rezulto de procezoj okazantaj en la industrio ofte dependas de kiel ili estas akceptitaj de la plejparto de finaj uzantoj kaj programistoj de aliaj programoj en la responda niĉo. Ankoraŭ ne estas tute klare, al kio la OCI-iniciatoj kondukos post kelkaj jaroj, sed ni rigardos kun plezuro. Vi povas dividi vian opinion nun en la komentoj.