CRI-O korvaa Dockerin Kubernetesin suoritettavana ympäristönä: asennus CentOS 8:ssa

Hei! Nimeni on Sergey, olen DevOps Surfissa. Surfin DevOps-osaston tavoitteena ei ole vain luoda vuorovaikutusta asiantuntijoiden välille ja integroida työprosesseja, vaan myös aktiivisesti tutkia ja ottaa käyttöön ajankohtaisia ​​teknologioita sekä omassa että asiakkaan infrastruktuurissa.

Alla kerron hieman muutoksista konttien teknologiapinossa, joita kohtasimme tutkiessamme jakelua 8 CentOS ja siitä mikä on LUO SE ja kuinka nopeasti määritetään suoritettava ympäristö Kubernetes.

CRI-O korvaa Dockerin Kubernetesin suoritettavana ympäristönä: asennus CentOS 8:ssa

Miksi Docker ei sisälly CentOS 8:aan?

Kun olet asentanut uusimmat suuret julkaisut RHEL 8 tai 8 CentOS ei voi olla huomaamatta: nämä jakelut ja viralliset arkistot eivät sisällä sovellusta Satamatyöläinen, jotka ideologisesti ja toiminnallisesti korvaavat paketteja podman, Buildah (oletusarvoisesti läsnä jakelussa) ja LUO SE. Tämä johtuu muun muassa Red Hatin osana Open Container Initiative (OCI) -projektia kehittämien standardien käytännön toteutuksesta.

The Linux Foundationiin kuuluvan OCI:n tavoitteena on luoda avoimia teollisuuden standardeja konttiformaateille ja ajonaikaisille, jotka ratkaisevat useita ongelmia kerralla. Ensinnäkin ne eivät olleet ristiriidassa Linuxin filosofian kanssa (esimerkiksi siinä osassa, että jokaisen ohjelman tulee suorittaa yksi toiminto, ja Satamatyöläinen on eräänlainen all-in-one-yhdistelmä). Toiseksi ne voisivat poistaa kaikki ohjelmistossa olevat puutteet Satamatyöläinen. Kolmanneksi ne olisivat täysin yhteensopivia johtavien kaupallisten alustojen liiketoimintavaatimusten kanssa konttisovellusten käyttöönottoa, hallintaa ja palvelua varten (esimerkiksi Red Hat OpenShift).

Rajoitukset Satamatyöläinen ja uuden ohjelmiston edut on jo kuvattu yksityiskohtaisesti tässä artikkelissa, ja yksityiskohtainen kuvaus koko OCI-projektissa tarjotusta ohjelmistopinosta ja sen arkkitehtonisista ominaisuuksista löytyy virallisesta dokumentaatiosta ja Red Hatin itsensä artikkeleista (ei paha artikkeli Red Hat -blogissa) ja kolmannen osapuolen sivustossa arvostelut.

On tärkeää huomata, mitä toimintoja ehdotetun pinon komponenteilla on:

  • podman — suora vuorovaikutus säiliöiden ja kuvatallennusten kanssa runC-prosessin kautta;
  • Buildah — kuvien kokoaminen ja lataaminen rekisteriin;
  • LUO SE — suoritettava ympäristö konttiorkesterijärjestelmille (esimerkiksi Kubernetes).

Uskon, että pinon komponenttien välisen vuorovaikutuksen yleisen kaavion ymmärtämiseksi on suositeltavaa antaa tähän yhteyskaavio Kubernetes c runC ja matalan tason kirjastot käyttävät LUO SE:

CRI-O korvaa Dockerin Kubernetesin suoritettavana ympäristönä: asennus CentOS 8:ssa

LUO SE и Kubernetes noudata samaa julkaisu- ja tukisykliä (yhteensopivuusmatriisi on hyvin yksinkertainen: pääversiot Kubernetes и LUO SE samaan aikaan), ja tämä, kun otetaan huomioon kehittäjien keskittyminen tämän pinon toiminnan täydelliseen ja kattavaan testaukseen, antaa meille oikeuden odottaa maksimaalista saavutettavissa olevaa toiminnan vakautta kaikissa käyttötilanteissa (suhteellinen keveys on myös hyödyllinen tässä LUO SE verrattuna Satamatyöläinen tarkoituksellisen toiminnallisuuden rajoittamisen vuoksi).

Asennettaessa Kubernetes "oikea tapa" (OCI:n mukaan tietysti) käyttäen LUO SE päälle 8 CentOS Kohtasimme pieniä vaikeuksia, jotka kuitenkin onnistuimme voittamaan. Kerron mielelläni kanssasi asennus- ja konfigurointiohjeet, jotka vievät yhteensä noin 10 minuuttia.

Kuinka ottaa Kubernetes käyttöön CentOS 8:ssa CRI-O-kehyksen avulla

Edellytykset: vähintään yksi isäntä (2 ydintä, 4 Gt RAM-muistia, vähintään 15 Gt tallennustilaa) asennettuna 8 CentOS ("Server"-asennusprofiilia suositellaan), samoin kuin sen merkinnät paikallisessa DNS:ssä (viimeisenä keinona voit selviytyä merkinnällä /etc/hosts). Ja älä unohda poista vaihto käytöstä.

Suoritamme kaikki toiminnot isännällä pääkäyttäjänä, ole varovainen.

  1. Ensimmäisessä vaiheessa määritämme käyttöjärjestelmän, asennamme ja määritämme CRI-O:n alustavat riippuvuudet.
    • Päivitetään käyttöjärjestelmä:
      dnf -y update
      

    • Seuraavaksi sinun on määritettävä palomuuri ja SELinux. Täällä kaikki riippuu ympäristöstä, jossa isäntämme tai isännämme työskentelevät. Voit joko määrittää palomuurin ohjeiden mukaan dokumentointi, tai jos olet luotetussa verkossa tai käytät kolmannen osapuolen palomuuria, muuta oletusvyöhykkeeksi luotettu tai sammuta palomuuri:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      Voit sammuttaa palomuurin käyttämällä seuraavaa komentoa:

      systemctl disable --now firewalld
      

      SELinux on sammutettava tai kytkettävä "sallivaan" tilaan:

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

    • Lataa tarvittavat ydinmoduulit ja paketit, määritä "br_netfilter" -moduulin automaattinen lataus järjestelmän käynnistyksen yhteydessä:
      modprobe overlay
      
      modprobe br_netfilter
      
      echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
      
      dnf -y install iproute-tc
      

    • Aktivoidaksemme pakettien edelleenlähetyksen ja oikean liikenteen käsittelyn, teemme tarvittavat asetukset:
      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
      

      käytä tehtyjä asetuksia:

      sysctl --system

    • aseta tarvittava versio LUO SE (pääversio LUO SE, kuten jo mainittiin, vastaavat vaadittua versiota Kubernetes), viimeisimmän vakaan version jälkeen Kubernetes tällä hetkellä 1.18:
      export REQUIRED_VERSION=1.18
      

      lisää tarvittavat arkistot:

      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

    • nyt voimme asentaa LUO SE:
      dnf -y install cri-o
      

      Kiinnitä huomiota ensimmäiseen vivahteeseen, jonka kohtaamme asennusprosessin aikana: sinun on muokattava kokoonpanoa LUO SE ennen palvelun käynnistämistä, koska vaaditulla yhteisellä komponentilla on eri sijainti kuin määritetty:

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

      Nyt voit aktivoida ja käynnistää demonin LUO SE:

      systemctl enable --now crio
      

      Voit tarkistaa demonin tilan:

      systemctl status crio
      

  2. Asennus ja aktivointi Kubernetes.
    • Lisätään tarvittava arkisto:
      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
      

      Nyt voimme asentaa Kubernetes (versio 1.18, kuten yllä mainittiin):

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

    • Toinen tärkeä vivahde: ​​koska emme käytä demonia Satamatyöläinen, mutta käytämme demonia LUO SE, ennen käynnistystä ja alustusta Kubernetes sinun on tehtävä asianmukaiset asetukset asetustiedostossa /var/lib/kubelet/config.yaml luotuasi ensin haluttu hakemisto:
      mkdir /var/lib/kubelet
      
      cat <<EOF > /var/lib/kubelet/config.yaml
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      cgroupDriver: systemd
      EOF

    • Kolmas tärkeä kohta, jonka kohtaamme asennuksen aikana: huolimatta siitä, että olemme ilmoittaneet käytetyn ohjaimen c-ryhmä, ja sen konfigurointi välitettyjen argumenttien kautta kuutio on vanhentunut (kuten dokumentaatiossa on nimenomaisesti todettu), meidän on lisättävä tiedostoon argumentteja, muuten klusteriamme ei alusteta:
      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

    • Nyt voimme aktivoida demonin kuutio:
      sudo systemctl enable --now kubelet
      

      muokata ohjaustaso tai työntekijä solmut minuuteissa, voit käyttää tämän käsikirjoituksen kanssa.

  3. On aika alustaa klusterimme.
    • Alusta klusteri suorittamalla komento:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      Muista kirjoittaa muistiin komento liittyäksesi klusteriin “kubeadm join…”, jota sinua pyydetään käyttämään tulosteen lopussa, tai ainakin määritetyt tunnukset.

    • Asennamme laajennus (CNI) Pod-verkkoon. Suosittelen käyttöä kalikoo. Mahdollisesti suositumpi Flanelli kanssa on yhteensopivuusongelmia nftables, kyllä ​​ja kyllä kalikoo - ainoa hankkeen suosittelema ja täysin testaama CNI-toteutus Kubernetes:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • Jos haluat yhdistää työntekijäsolmun klusteriimme, sinun on määritettävä se ohjeiden 1 ja 2 mukaisesti tai käytä käsikirjoitus, suorita sitten komento "kubeadm init..." -tulosta, jonka kirjoitimme muistiin edellisessä vaiheessa:
      kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN 
          --discovery-token-ca-cert-hash $TOKEN_HASH

    • Tarkistetaan, että klusterimme on alustettu ja alkaa toimia:
      kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
      

    Valmis! Voit jo isännöidä hyötykuormia K8s-klusterissasi.

Mikä meitä odottaa edessä

Toivon, että yllä olevat ohjeet auttoivat sinua säästämään aikaa ja hermoja.
Alan prosessien lopputulos riippuu usein siitä, kuinka suurin osa loppukäyttäjistä ja muiden ohjelmistojen kehittäjistä hyväksyy ne vastaavassa markkinarakossa. Vielä ei ole täysin selvää, mihin OCI-aloitteet johtavat muutaman vuoden kuluttua, mutta seuraamme mielellämme. Voit jakaa mielipiteesi nyt kommenteissa.

Pysy kanavalla!

Tämä artikkeli ilmestyi seuraavien lähteiden ansiosta:



Lähde: will.com

Lisää kommentti