CRI-O kui Docker'i asendaja Kubernetes'e tÀitmisvÔimekuses: seadistus CentOS 8 peal

Tere! Minu nimi on Sergei, ma olen DevOps Surfis. Surfis on DevOps-osakonna eesmÀrk mitte ainult luua koostööd spetsialistide vahel ja integreerida tööprotsesse, vaid ka aktiivselt uurida ja rakendada uusimaid tehnoloogiaid nii oma infrastruktuuri kui ka kliendi infrastruktuuri.

Allpool rÀÀgin natuke tehnoloogilise kihi muudatustest konteinerite osas, millega kohtusime distributsiooni uurimisel. CentOS 8 ja sellest, mis asi on CRI-O ja kuidas kiiresti seadistada sellega tÀitevkeskkond Kubernetes.

CRI-O kui Docker'i asendaja Kubernetes'e tÀitmisvÔimekuses: seadistus CentOS 8 peal

Miks Docker ei ole CentOS 8 standardsetes tarnetes

PÀrast viimaseid suuri vÀljaandeid RHEL 8 vÔi CentOS 8 ei saa mitte mÀrkamatuks jÀÀda, et nendes distributsioonides ja ametlikes hoidlatest puudub rakendus Docker, mida ideoloogiliselt ja funktsionaalselt asendavad pakid Podman, Buildah (mis on distributsioonis vaikimisi olemas) ja CRI-O. See on seotud standardite praktilise elluviimisega, mida arendavad sealhulgas ja Red Hat Open Container Initiative'i (OCI) raames.

OCI, mis on osa The Linux Foundationist, eesmĂ€rk on luua avatud tööstusstandardeid konteinerite formaatide ja tĂ€itevkeskkonna jaoks, mis lahendaksid mitmeid probleeme. Esiteks, nad ei tohiks olla vastuolus Linuxi filosoofiaga (nĂ€iteks et iga programm peaks tegema ainult ĂŒhte asja, ja Docker on justkui tegevuste kombain). Teiseks, nad peaksid olema vĂ”imelised kĂ”rvaldamiseks kĂ”iki tarkvara puudusi. DockerKolmandaks, nad peaksid olema tĂ€ielikult ĂŒhilduvad juhtivate kaubandusplatvormide Ă€rinĂ”uetega, mis on esitatud konteineriseeritud rakenduste juurutamiseks, haldamiseks ja hooldamiseks (nĂ€iteks Red Hat OpenShift).

Puudused Docker ja uue tarkvara eelised on juba ĂŒsna pĂ”hjalikult kirjeldatud selles artiklis, ning projekti OCI raames pakutava tarkvara ja selle arhitektuuri eripĂ€ra kohta saab lĂ€hemalt lugeda ametlikest dokumentatsioonidest ja artiklitest, nii Red HatÂŽilt (hea artikkel Red Hat blogis) kui ka kolmandatelt osapooltelt. mainitakse.

Oluline on mÀrkida, milliseid funktsioone pakutava kihi komponendid omavad:

  • Podman – otsene koostöö konteinerite ja pildihoidlate vahel lĂ€bi runC protsessi;
  • Buildah – piltide koostamine ja registrisse laadimine;
  • CRI-O – tĂ€itevkeskkond konteinerite orkestreerimissĂŒsteemidele (nĂ€iteks Kubernetes).

Ma arvan, et kogu stacki komponentide vahelise suhtluse ĂŒldise skeemi mĂ”istmiseks on mĂ”istlik siin nĂ€idata sidemete skeemi Kubernetes c runC ja madalama taseme raamatukogudega kasutades CRI-O:

CRI-O kui Docker'i asendaja Kubernetes'e tÀitmisvÔimekuses: seadistus CentOS 8 peal

CRI-O ja Kubernetes peavad jĂ€rgima sama vĂ€ljaandmis- ja toetustsĂŒklit (ĂŒhilduvuse maatriks on vĂ€ga lihtne: suuremad versioonid Kubernetes ja CRI-O ĂŒhtivad), ja arvestades suunatud lĂ€henemist kogu ja pĂ”hjaliku testimise tagamisel arendajate poolt, annab see meile Ă”iguse oodata maksimaalselt saavutatavat stabiilsust igasugustes kasutusstsenaariumites (siin aitab ka suhteliselt kerge CRI-O vĂ”rreldes Docker funktsionaalsuse sihipĂ€rase piiramisest).

Paigaldamisel Kubernetes «Ôige tee» moel (OCI arvates, muidugi) kasutades CRI-O . Tundub, et CentOS 8 kohtasime vĂ€ikeseid raskusi, kuid need suutsime edukalt ĂŒletada. Olen valmis jagama teiega installatsiooni ja seadistamise juhendit, mis kokku vĂ”tab vaid 10 minutit.

Kuidas kÀivitada Kubernetes CentOS 8-s kasutades CRI-O keskkonda

Eeltingimused: vĂ€hemalt ĂŒhe vÔÔrustaja olemasolu (2 tuuma, 4 GB RAM, vĂ€hemalt 15 GB salvestusruumi), millel on installitud CentOS 8 (soovitatav on installiprofiil «Server»), samuti selle jaoks kirje kohalikus DNS-is (kui hĂ€davajalik, saab kasutada kirjet /etc/hosts). Ja Ă€rge unustage swap vĂ€lja lĂŒlitada.

KÔiki toiminguid vÔÔrustajas teostame root-kasutaja nime all, olge ettevaatlik.

  1. Esimesel sammul seadistame operatsioonisĂŒsteemi, installime ja seadistame CRI-O eeltingimused.
    • Uuendame operatsioonisĂŒsteemi:
      dnf -y update
      

    • SeejĂ€rel tuleb seadistada tulemĂŒĂŒr ja SELinux. Siin sĂ”ltub kĂ”ik meie vÔÔrustaja vĂ”i vÔÔrustajate töötamiskeskkonnast. Saate kas seadistada tulemĂŒĂŒri vastavalt soovitustele dokumentatsioon, vĂ”i kui olete usaldusvÀÀrses vĂ”rgus vĂ”i kasutate kolmanda osapoole tulemĂŒĂŒri, muuta vaikimisi tsooni usaldusvÀÀrseks vĂ”i tulemĂŒĂŒri vĂ€lja lĂŒlitada:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      TulemĂŒĂŒri vĂ€ljalĂŒlitamiseks saate kasutada jĂ€rgmist kĂ€sku:

      systemctl disable --now firewalld
      

      SELinux tuleb vĂ€lja lĂŒlitada vĂ”i viia «permissive» reĆŸiimi:

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

    • laadime vajalikke kernelimooduleid ja pakette ning seadistame moduliga «br_netfilter» automaatse laadimise sĂŒsteemi kĂ€ivitamisel:
      modprobe overlay
      
      modprobe br_netfilter
      
      echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
      
      dnf -y install iproute-tc
      

    • Pakettide forwardimise aktiveerimiseks ja liikluse korrektseks töötlemiseks teeme vajalikud seaded:
      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
      

      Rakendame tehtud seadeid:

      sysctl --system

    • Seame vajaliku versiooni CRI-O (peamine versioon CRI-O, nagu juba mainitud, vastab nĂ”utavale versioonile Kubernetes), sest viimase stabiilse versiooni Kubernetes praegu on 1.18:
      export REQUIRED_VERSION=1.18
      

      Lisame vajalikud hoidlad:

      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

    • NĂŒĂŒd saame installida CRI-O:
      dnf -y install cri-o
      

      Juhime tĂ€helepanu esimesel nĂŒansil, millega me installimise kĂ€igus kokku puutume: konfiguratsiooni redigeerimine on vajalik CRI-O enne teenuse kĂ€ivitamist, kuna nĂ”utud komponent conmon on teises asukohas:

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

      NĂŒĂŒd saab aktiveerida ja kĂ€ivitada daemon'i CRI-O:

      systemctl enable --now crio
      

      Saame kontrollida daemon'i staatust:

      systemctl status crio
      

  2. Installimine ja aktiveerimine Kubernetes.
    • Lisame vajaliku hoidla:
      cat < /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
      

      NĂŒĂŒd saame installida Kubernetes (versioonid 1.18, nagu eelnevalt mainitud):

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

    • Teine oluline nĂŒanss: kuna me ei kasuta daemon'i Docker, vaid kasutame daemon'i CRI-O, enne kĂ€ivitamist ja initsialiseerimist Kubernetes on vajalik teha vastavad seaded konfiguratsioonifailis /var/lib/kubelet/config.yaml, enne tuleb luua vajalik kataloog:
      mkdir /var/lib/kubelet
      
      cat < /var/lib/kubelet/config.yaml
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      cgroupDriver: systemd
      EOF

    • Kolmas oluline punkt, millega me installimise kĂ€igus kokku puutume: hoolimata sellest, et oleme mÀÀranud kasutatava draiveri cgroup, ja selle seadistamine on argumentide kaudu, mis on edastatud kubelet aegunud (mis on otse dokumentatsioonis mĂ€rgitud), peame faili lisama argumendid, vastasel juhul ei initsialiseeru meie klasster:
      cat /dev/null > /etc/sysconfig/kubelet
      
      cat < /etc/sysconfig/kubelet
      KUBELET_EXTRA_ARGS=--container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock'
      EOF

    • NĂŒĂŒd saame deemonit aktiveerida kubelet:
      sudo systemctl enable --now kubelet
      

      Selle seadistamiseks kontrollplaan vÔi töötlusmasin pÀringud vaid mÔne minutiga, saate kasutada seda skripti.

  3. On aeg meie klaster initsialiseerida.
    • Klusteri initsialiseerimiseks kĂ€ivitage kĂ€sk:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      Kohustuslik on ĂŒles kirjutada klastrisse liitumise kĂ€sk "kubeadm join 
", mida pakutakse kasutada vĂ€ljundi lĂ”pus, vĂ”i vĂ€hemalt antud tokenid.

    • Paigaldame CNI plugina Pod vĂ”rgu tööks. Soovitan kasutada Calico. VĂ”ib-olla on populaarsem Flannel on ĂŒhilduvusprobleemidega nftables, ja Calico on ainus CNI rakendus, mida projekt soovitab ja mis on tĂ€ielikult testitud Kubernetes:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • Töötlusmasina liitmiseks meie klastri peab selle seadistama vastavalt juhendile punktides 1 ja 2 vĂ”i kasutama skripti, seejĂ€rel kĂ€ivitage vĂ€ljundis "kubeadm init 
" kĂ€sk, mille kirjutasime eelmisel etapil:
      kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN 
          --discovery-token-ca-cert-hash $TOKEN_HASH

    • Kontrollime, kas meie klaster on initsialiseeritud ja töötab:
      kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
      

    Valmis! Saate juba oma K8s klastris kasulikku koormust paigutada.

Mis meid ees ootab

Loodan, et ĂŒlaltoodud juhend aitas teil kokku hoida veidi aega ja nĂ€rve.
Tööstuses toimuva vĂ€lja arenemine sĂ”ltub sageli sellest, kuidas peamine leibkond vastab lĂ”ppkasutajate ja muudelt tarkvaraarendajatelt sihtrĂŒhmas. Hetkel ei ole veel selge, kuhu OCI algatused mĂ”ne aasta pĂ€rast viivad, kuid me jĂ€lgime seda hea meelega. Oma arvamust saate jagada kohe kommentaarides.

JĂ€lgige meid!

See artikkel ilmus tÀnu jÀrgmistele allikatele:



Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster