ProHoster > Блог > басқарма > CRI-O Kubernetes үшін жұмыс уақыты ортасы ретінде Docker-ті ауыстыру ретінде: CentOS 8 жүйесінде орнату
CRI-O Kubernetes үшін жұмыс уақыты ортасы ретінде Docker-ті ауыстыру ретінде: CentOS 8 жүйесінде орнату
Сәлеметсіз бе! Менің атым Сергей, мен Surf-тегі DevOpsпын. Surf-тегі DevOps бөлімі мамандар арасында өзара әрекеттестік орнатуға және жұмыс процестерін біріктіруге ғана емес, сонымен қатар өз инфрақұрылымында да, тұтынушының инфрақұрылымында да ағымдағы технологияларды белсенді түрде зерттеуге және енгізуге бағытталған.
Төменде мен дистрибуцияны зерттеу кезінде кездестірген контейнерлерге арналған технологиялық стектегі өзгерістер туралы аздап сөйлесетін боламын. CentOS 8 және бұл не туралы CRI-O және орындалатын ортаны қалай жылдам орнату керек Kubernetes.
Неліктен Docker CentOS 8 жүйесіне қосылмаған?
Соңғы негізгі шығарылымдарды орнатқаннан кейін RHEL 8 немесе CentOS 8 Байқамай қалу мүмкін емес: бұл дистрибутивтер мен ресми репозиторийлерде қолданба жоқ Докер, ол пакеттерді идеологиялық және функционалды түрде ауыстырады Подман, Buildah (әдепкі бойынша таратуда көрсетіледі) және CRI-O. Бұл Red Hat компаниясының Open Container Initiative (OCI) жобасының бір бөлігі ретінде әзірлеген стандарттарды практикалық енгізуімен байланысты.
Linux Foundation бөлігі болып табылатын OCI мақсаты - бірден бірнеше мәселені шешетін контейнер пішімдері мен орындалу уақыттары үшін ашық салалық стандарттарды жасау. Біріншіден, олар Linux философиясына қайшы келмеді (мысалы, әрбір бағдарлама бір әрекетті орындауы керек бөлігінде және Докер барлығы бір комбайн түрі). Екіншіден, олар бағдарламалық жасақтамадағы барлық кемшіліктерді жоя алар еді Докер. Үшіншіден, олар контейнерлік қосымшаларды (мысалы, Red Hat OpenShift) орналастыруға, басқаруға және оларға қызмет көрсетуге арналған жетекші коммерциялық платформалардың бизнес талаптарына толық сәйкес келеді.
кемшіліктер Докер және жаңа бағдарламалық жасақтаманың артықшылықтары қазірдің өзінде егжей-тегжейлі сипатталған Бұл мақала, және OCI жобасы аясында ұсынылатын бүкіл бағдарламалық жасақтама стекінің егжей-тегжейлі сипаттамасын және оның архитектуралық ерекшеліктерін ресми құжаттамада және Red Hat мақалаларынан табуға болады (жаман емес) мақала Red Hat блогында) және үшінші тарапта шолулар.
Ұсынылған стектің құрамдас бөліктерінің қандай функционалдығы бар екенін атап өту маңызды:
Подман — runC процесі арқылы контейнерлермен және кескіндерді сақтаумен тікелей әрекеттесу;
Buildah — кескіндерді құрастыру және тізілімге жүктеу;
CRI-O — контейнерлерді басқару жүйелері үшін орындалатын орта (мысалы, Kubernetes).
Стектің құрамдас бөліктерінің өзара әрекеттесуінің жалпы схемасын түсіну үшін осы жерде байланыс диаграммасын берген жөн деп ойлаймын. Kubernetes c жүгіруC және төменгі деңгейлі кітапханаларды пайдаланады CRI-O:
CRI-O и Kubernetes бірдей шығарылым мен қолдау циклін ұстаныңыз (үйлесімділік матрицасы өте қарапайым: негізгі нұсқалар Kubernetes и CRI-O сәйкес келеді) және бұл әзірлеушілердің осы стектің жұмысын толық және жан-жақты тестілеуге назар аударуын ескере отырып, кез келген пайдалану сценарийлері бойынша жұмыста максималды қол жеткізуге болатын тұрақтылықты күтуге құқық береді (бұл жерде салыстырмалы жеңілдік те пайдалы. CRI-O салыстырғанда Докер функционалдық мақсатты шектеуге байланысты).
Орнату кезінде Kubernetes «дұрыс жол» әдісі (әрине OCI бойынша) пайдалану CRI-O туралы CentOS 8 Біз аздаған қиындықтарға тап болдық, бірақ оларды сәтті еңсердік. Орнату және конфигурациялау нұсқауларын сіздермен бөлісуге қуаныштымын, барлығы шамамен 10 минутты алады.
CRI-O құрылымын пайдаланып, CentOS 8 жүйесінде Kubernetes қалай орналастыруға болады
Алғышарттар: орнатылған кемінде бір хосттың болуы (2 ядро, 4 ГБ жедел жады, кемінде 15 ГБ сақтау орны) CentOS 8 («Сервер» орнату профилі ұсынылады), сонымен қатар жергілікті DNS жүйесіндегі жазбалар (соңғы шара ретінде сіз /etc/hosts ішіндегі жазба арқылы қол жеткізе аласыз). Және ұмытпа свопты өшіру.
Біз хосттағы барлық операцияларды түбірлік пайдаланушы ретінде орындаймыз, абай болыңыз.
Бірінші қадамда біз ОЖ конфигурациялаймыз, CRI-O үшін алдын ала тәуелділіктерді орнатамыз және конфигурациялаймыз.
Операциялық жүйені жаңартайық:
dnf -y update
Әрі қарай брандмауэр мен SELinux конфигурациялау керек. Мұнда бәрі біздің хост немесе хосттар жұмыс істейтін ортаға байланысты. Брандмауэрді мына ұсыныстарға сәйкес орнатуға болады құжаттама, немесе сенімді желіде болсаңыз немесе үшінші тарап брандмауэрін пайдалансаңыз, әдепкі аймақты сенімді деп өзгертіңіз немесе желіаралық қалқанды өшіріңіз:
қажетті нұсқаны орнатыңыз CRI-O (негізгі нұсқа CRI-O, жоғарыда айтылғандай, қажетті нұсқаға сәйкес келеді Kubernetes), соңғы тұрақты нұсқасынан бастап Kubernetes қазіргі уақытта 1.18:
Орнату процесінде біз кездесетін бірінші нюансқа назар аударыңыз: конфигурацияны өңдеу керек CRI-O қызметті бастамас бұрын, өйткені қажетті ортақ құрамдас көрсетілгеннен басқа орынға ие:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Енді сіз демонды іске қосып, іске қоса аласыз CRI-O:
Екінші маңызды нюанс: өйткені біз демонды қолданбаймыз Докер, бірақ біз демонды қолданамыз CRI-O, іске қосу және инициализациялау алдында Kubernetes алдымен қажетті каталогты жасап, /var/lib/kubelet/config.yaml конфигурация файлында сәйкес параметрлерді жасау керек:
Орнату кезінде біз кездесетін үшінші маңызды мәселе: біз пайдаланған драйверді көрсеткенімізге қарамастан топ, және оның конфигурациясы берілген аргументтер арқылы кубелет ескірген (құжаттамада нақты көрсетілген), біз файлға аргументтер қосуымыз керек, әйтпесе біздің кластер инициализацияланбайды:
Баптау үшін басқару жазықтығы немесе жұмысшы түйіндерді минут ішінде пайдалануға болады осы сценариймен.
Біздің кластерді инициализациялау уақыты келді.
Кластерді инициализациялау үшін пәрменді іске қосыңыз:
kubeadm init --pod-network-cidr=10.244.0.0/16
Шығару соңында пайдалану сұралатын «kubeadm join …» кластеріне қосылу пәрменін немесе кем дегенде көрсетілген таңбалауыштарды жазып алуды ұмытпаңыз.
Pod желісіне плагинді (CNI) орнатайық. Мен пайдалануды ұсынамын Calico. Мүмкін көбірек танымал Фланель үйлесімділік мәселелері бар nftables, және Calico - жоба ұсынған және толығымен сыналған жалғыз CNI енгізу Kubernetes:
Жұмысшы түйінді кластерге қосу үшін оны 1 және 2 нұсқауларға сәйкес конфигурациялау керек немесе сценарий, содан кейін алдыңғы қадамда жазған «kubeadm init...» шығысындағы пәрменді іске қосыңыз:
Біздің кластер инициализацияланғанын және жұмыс істей бастағанын тексерейік:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Дайын! K8s кластерінде пайдалы жүктемелерді орналастыруға болады.
Алда бізді не күтіп тұр
Жоғарыдағы нұсқаулар сізге біраз уақыт пен жүйкеңізді үнемдеуге көмектесті деп үміттенемін.
Өнеркәсіпте болып жатқан процестердің нәтижесі көбінесе соңғы пайдаланушылар мен сәйкес тауашалардағы басқа бағдарламалық жасақтаманы әзірлеушілермен оларды қалай қабылдағанына байланысты. OCI бастамаларының бірнеше жылдан кейін не әкелетіні әлі толық белгісіз, бірақ біз қуана қарайтын боламыз. Сіз өз пікіріңізді дәл қазір түсініктемелерде бөлісе аласыз.
Бізбен бірге қалыңыз!
Бұл мақала келесі дереккөздердің арқасында пайда болды: