CRI-O Docker-en ordezko gisa Kubernetesen exekuzio-ingurune gisa: konfiguratu CentOS 8-n

Kaixo! Nire izena Sergey da, DevOps naiz Surf-en. Surfeko DevOps sailak espezialisten arteko interakzioa ezartzea eta lan-prozesuak integratzeaz gain, egungo teknologiak aktiboki ikertzea eta ezartzea du helburu, bai bere azpiegituretan bai bezeroaren azpiegituretan.

Jarraian, banaketa aztertzean topatu ditugun edukiontzien pila teknologikoen aldaketei buruz hitz egingo dut. CentOS 8 eta zer den CRI-O eta nola azkar konfiguratu ingurune exekutagarri bat Kubernetes.

CRI-O Docker-en ordezko gisa Kubernetesen exekuzio-ingurune gisa: konfiguratu CentOS 8-n

Zergatik ez dago Docker CentOS 8-n sartzen?

Azken bertsio nagusiak instalatu ondoren RHEL 8 edo CentOS 8 ezin da ohartu: banaketa eta biltegi ofizial hauek ez dute aplikazioa Docker, ideologikoki eta funtzionalki paketeak ordezkatzen dituztenak podman, Eraiki (banaketa lehenespenez ageri da) eta CRI-O. Hori, besteak beste, Red Hat-ek Open Container Initiative (OCI) proiektuaren baitan garatutako estandarren ezarpen praktikoa dela eta.

Linux Fundazioaren parte den OCIren helburua hainbat arazo aldi berean konpontzen dituzten edukiontzi formatuetarako eta exekuzio-denboretarako industria estandar irekiak sortzea da. Lehenik eta behin, ez zuten Linux-en filosofiarekin kontraesanean jartzen (adibidez, programa bakoitzak ekintza bat egin behar zuen zatian, eta Docker bat-bateko konbinazio moduko bat da). Bigarrenik, softwarean dauden gabezia guztiak ezaba ditzakete Docker. Hirugarrenik, guztiz bateragarriak izango lirateke edukiontzidun aplikazioak (adibidez, Red Hat OpenShift) hedatzeko, kudeatzeko eta zerbitzatzeko plataforma komertzialen negozio eskakizunekin.

Mugak Docker eta software berriaren abantailak deskribatu dira dagoeneko xehetasunez Artikulu honetan, eta OCI proiektuaren barruan eskaintzen den software pila osoaren eta bere ezaugarri arkitektonikoen deskribapen zehatza Red Hat-eko dokumentazio ofizialean eta artikuluetan aurki daiteke (ez da txarra artikuluan Red Hat blogean) eta hirugarrenen kasuan iritziak.

Garrantzitsua da kontuan izan zer funtzionalitate duten proposatutako pilaren osagaiek:

  • podman β€” zuzeneko elkarrekintza edukiontziekin eta irudiak biltegiratzeko runC prozesuaren bidez;
  • Eraiki β€” irudiak muntatzea eta erregistrora igotzea;
  • CRI-O β€” Edukiontzien orkestrazio sistemetarako ingurune exekutagarri bat (adibidez, Kubernetes).

Uste dut pilaren osagaien arteko interakzio eskema orokorra ulertzeko komenigarria dela hemen konexio-diagrama bat ematea. Kubernetes c exekutatuC eta maila baxuko liburutegiak erabiliz CRI-O:

CRI-O Docker-en ordezko gisa Kubernetesen exekuzio-ingurune gisa: konfiguratu CentOS 8-n

CRI-O ΠΈ Kubernetes bertsio- eta laguntza-ziklo berdinari atxikitzea (bateragarritasun-matrizea oso erraza da: bertsio nagusiak Kubernetes ΠΈ CRI-O bat datoz), eta honek, garatzaileek pila honen funtzionamenduaren proba oso eta integralean jarritako arreta kontuan hartuta, eskubidea ematen digu edozein erabilera-egoeretan lor daitekeen egonkortasun handiena espero izateko (arintasun erlatiboa ere onuragarria da hemen. CRI-O alderatuta Docker funtzionalitatearen nahita mugatzeagatik).

Instalatzean Kubernetes "bide egokia" modu (OCIren arabera, noski) erabiliz CRI-O on CentOS 8 Zailtasun txiki batzuk topatu genituen, baina arrakastaz gainditu genituen. Pozik partekatuko ditut zurekin instalazio eta konfigurazio argibideak, guztira 10 minutu inguru beharko dira.

Nola zabaldu Kubernetes CentOS 8-n CRI-O esparrua erabiliz

Baldintzak: gutxienez ostalari bat egotea (2 nukleo, 4 GB RAM, gutxienez 15 GB biltegiratzea) instalatuta CentOS 8 (Β«ZerbitzariaΒ» instalazio-profila gomendatzen da), baita haren sarrerak DNS lokalean ere (azken aukera gisa, /etc/hosts-en sarrera batekin atera zaitezke). Eta ez ahaztu desgaitu trukea.

Eragiketa guztiak ostalarian egiten ditugu root erabiltzaile gisa, kontuz.

  1. Lehen urratsean, OS konfiguratuko dugu, CRI-Orako aurretiazko mendekotasunak instalatu eta konfiguratuko ditugu.
    • Eguneratu dezagun OS:
      dnf -y update
      

    • Ondoren, suebakia eta SELinux konfiguratu behar dituzu. Hemen dena gure ostalariek edo ostalariek lan egingo duten ingurunearen araberakoa da. Suebaki bat konfigura dezakezu gomendioen arabera dokumentazioaedo, sare fidagarri batean bazaude edo hirugarrenen suebaki bat erabiltzen baduzu, aldatu eremu lehenetsia fidagarri gisa edo desaktibatu suebakia:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      Suebakia itzaltzeko komando hau erabil dezakezu:

      systemctl disable --now firewalld
      

      SELinux itzali edo "baimenezko" modura aldatu behar da:

      setenforce 0
      
      sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

    • Kargatu beharrezko nukleoaren moduluak eta paketeak, konfiguratu "br_netfilter" moduluaren karga automatikoa sistema abiaraztean:
      modprobe overlay
      
      modprobe br_netfilter
      
      echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
      
      dnf -y install iproute-tc
      

    • Paketeen birbidaltzea aktibatzeko eta trafikoaren prozesamendua zuzentzeko, ezarpen egokiak egingo ditugu:
      cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
      net.bridge.bridge-nf-call-iptables = 1
      net.ipv4.ip_forward = 1
      net.bridge.bridge-nf-call-ip6tables = 1
      EOF
      

      egindako ezarpenak aplikatu:

      sysctl --system

    • ezarri behar den bertsioa CRI-O (bertsio nagusia CRI-O, lehen esan bezala, bat dator beharrezko bertsioarekin Kubernetes), azken bertsio egonkorraz geroztik Kubernetes Gaur egun 1.18:
      export REQUIRED_VERSION=1.18
      

      gehitu beharrezko biltegiak:

      dnf -y install 'dnf-command(copr)'
      
      dnf -y copr enable rhcontainerbot/container-selinux
      
      curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/CentOS_8/devel:kubic:libcontainers:stable.repo
      
      curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION/CentOS_8/devel:kubic:libcontainers:stable:cri-o:$REQUIRED_VERSION.repo

    • orain instalatu dezakegu CRI-O:
      dnf -y install cri-o
      

      Erreparatu instalazio prozesuan aurkitzen dugun lehen Γ±abardurari: beharrezkoa da konfigurazioa editatzea CRI-O zerbitzua hasi aurretik, beharrezkoa den osagai komunak zehaztutakoaren kokapen ezberdina baitu:

      sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf

      Orain aktibatu eta abi dezakezu deabrua CRI-O:

      systemctl enable --now crio
      

      Deabruaren egoera egiaztatu dezakezu:

      systemctl status crio
      

  2. Instalazioa eta aktibazioa Kubernetes.
    • Gehitu dezagun beharrezko biltegia:
      cat <<EOF > /etc/yum.repos.d/kubernetes.repo
      [kubernetes]
      name=Kubernetes
      baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch
      enabled=1
      gpgcheck=1
      repo_gpgcheck=1
      gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
      exclude=kubelet kubeadm kubectl
      EOF
      

      Orain instalatu dezakegu Kubernetes (1.18 bertsioa, goian aipatu bezala):

      dnf install -y kubelet-1.18* kubeadm-1.18* kubectl-1.18* --disableexcludes=kubernetes

    • Bigarren Γ±abardura garrantzitsua: deabrurik erabiltzen ez dugunez Docker, baina deabrua erabiltzen dugu CRI-O, abiarazi eta hasieratu aurretik Kubernetes ezarpen egokiak egin behar dituzu /var/lib/kubelet/config.yaml konfigurazio fitxategian, lehenik nahi duzun direktorioa sortuta:
      mkdir /var/lib/kubelet
      
      cat <<EOF > /var/lib/kubelet/config.yaml
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      cgroupDriver: systemd
      EOF

    • Instalazioan aurkitzen dugun hirugarren puntu garrantzitsua: erabilitako kontrolatzailea adierazi dugun arren cgroup, eta bere konfigurazioa pasatu diren argumentuen bidez kubelet zaharkituta dago (dokumentazioan berariaz adierazten den bezala), fitxategiari argumentuak gehitu behar dizkiogu, bestela gure clusterra ez da hasieratuko:
      cat /dev/null > /etc/sysconfig/kubelet
      
      cat <<EOF > /etc/sysconfig/kubelet
      KUBELET_EXTRA_ARGS=--container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock'
      EOF

    • Orain deabrua aktibatu dezakegu kubelet:
      sudo systemctl enable --now kubelet
      

      Pertsonalizatzeko kontrol-planoa edo langilea minututan nodoak erabil ditzakezu gidoi honekin.

  3. Gure kluster hasiera emateko garaia da.
    • Klusterra hasieratzeko, exekutatu komandoa:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      Ziurtatu "kubeadm join..." multzoan sartzeko komandoa idazten duzula, irteeraren amaieran erabiltzeko eskatzen zaizuna, edo gutxienez zehaztutako tokenak.

    • Instala dezagun Pod sarerako plugina (CNI). erabiltzea gomendatzen dut Calico. Baliteke ezagunagoa flannel bateragarritasun arazoak ditu nftables, bai eta Calico - Proiektuak gomendatutako eta guztiz probatutako CNI ezarpen bakarra Kubernetes:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • Langile-nodo bat gure clusterra konektatzeko, 1 eta 2 argibideen arabera konfiguratu behar duzu edo erabili gidoia, ondoren exekutatu komandoa aurreko urratsean idatzi genuen "kubeadm init..." irteeratik:
      kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN 
          --discovery-token-ca-cert-hash $TOKEN_HASH

    • Egiaztatu dezagun gure cluster hasieratuta dagoela eta lanean hasi dela:
      kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
      

    Prest! Dagoeneko kargak osta ditzakezu zure K8s klusterrean.

Aurretik itxaroten gaituena

Espero dut goiko argibideek denbora eta nerbioak aurrezten lagundu izana.
Industrian gertatzen diren prozesuen emaitza, sarritan, dagokien nitxoko beste software batzuen azken erabiltzaile eta garatzaile gehienek nola onartzen dutenaren araberakoa da. Oraindik ez dago guztiz argi OCIren ekimenak urte gutxiren buruan zer ekarriko duen, baina gustura ikusiko dugu. Oraintxe bertan zure iritzia parteka dezakezu iruzkinetan.

Stay tuned!

Artikulu hau iturri hauei esker agertu da:



Iturria: www.habr.com

Gehitu iruzkin berria