CRI-O kaip „Docker“ kaip „Kubernetes“ vykdymo aplinkos pakaitalas: sąranka „CentOS 8“

Sveiki! Mano vardas Sergejus, aš esu DevOps at Surf. „Surf“ DevOps padalinys siekia ne tik užmegzti specialistų sąveiką ir integruoti darbo procesus, bet ir aktyviai tyrinėti bei diegti dabartines technologijas tiek savo, tiek kliento infrastruktūroje.

Toliau šiek tiek pakalbėsiu apie konteinerių technologijų paketo pokyčius, su kuriais susidūrėme tirdami platinimą 8 Centos ir apie tai, kas tai yra KURTI JĮ ir kaip greitai nustatyti vykdomąją aplinką Kubernetes.

CRI-O kaip „Docker“ kaip „Kubernetes“ vykdymo aplinkos pakaitalas: sąranka „CentOS 8“

Kodėl „Docker“ nėra įtrauktas į „CentOS 8“?

Įdiegę naujausius pagrindinius leidimus POILSIS 8 arba 8 Centos negalima nepastebėti: šiuose platinimuose ir oficialiose saugyklose nėra programos dokininkas, kurie ideologiškai ir funkcionaliai pakeičia paketus Podmanas, Buildah (pagal nutylėjimą yra paskirstyme) ir KURTI JĮ. Taip yra dėl praktinio standartų, kuriuos, be kita ko, sukūrė „Red Hat“ įgyvendindama „Open Container Initiative“ (OCI) projektą.

OCI, kuri yra Linux fondo dalis, tikslas yra sukurti atvirus pramonės standartus konteinerių formatams ir vykdymo laikui, kurie vienu metu išspręstų kelias problemas. Pirma, jie neprieštaravo Linux filosofijai (pavyzdžiui, dalyje, kad kiekviena programa turi atlikti vieną veiksmą ir dokininkas yra savotiškas „viskas viename“ kombainas). Antra, jie galėtų pašalinti visus esamus programinės įrangos trūkumus dokininkas. Trečia, jie būtų visiškai suderinami su pirmaujančių komercinių platformų, skirtų konteinerinėms programoms diegti, valdyti ir aptarnauti (pvz., „Red Hat OpenShift“), ​​verslo reikalavimais.

Trūkumai dokininkas o naujosios programinės įrangos privalumai jau buvo gana detaliai aprašyti Šis straipsnis, o išsamų visos OCI projekte siūlomos programinės įrangos paketo ir jo architektūrinių ypatybių aprašymą galima rasti oficialioje dokumentacijoje ir pačios Red Hat straipsniuose (neblogai straipsnis Red Hat tinklaraštyje) ir trečiosios šalies apžvalgos.

Svarbu atkreipti dėmesį, kokias funkcijas turi siūlomo kamino komponentai:

  • Podmanas — tiesioginė sąveika su konteineriais ir vaizdų saugykla per runC procesą;
  • Buildah — vaizdų surinkimas ir įkėlimas į registrą;
  • KURTI JĮ — vykdomoji aplinka konteinerių orkestravimo sistemoms (pavyzdžiui, Kubernetes).

Manau, kad norint suprasti bendrą krūvos komponentų sąveikos schemą, patartina čia pateikti jungčių schemą Kubernetes c RunC ir žemo lygio bibliotekos, naudojančios KURTI JĮ:

CRI-O kaip „Docker“ kaip „Kubernetes“ vykdymo aplinkos pakaitalas: sąranka „CentOS 8“

KURTI JĮ и Kubernetes laikykitės to paties išleidimo ir palaikymo ciklo (suderinamumo matrica labai paprasta: pagrindinės versijos Kubernetes и KURTI JĮ sutampa), ir tai, atsižvelgiant į tai, kad kūrėjai sutelkia dėmesį į visišką ir visapusišką šio kamino veikimo patikrinimą, suteikia mums teisę tikėtis maksimalaus pasiekiamo veikimo stabilumo pagal bet kokius naudojimo scenarijus (čia taip pat naudingas santykinis lengvumas). KURTI JĮ palyginti su dokininkas dėl tikslingo funkcionalumo apribojimo).

Diegdami Kubernetes „teisingas kelias“ (žinoma, pagal OCI) naudojant KURTI JĮ apie 8 Centos Susidūrėme su nedideliais sunkumais, kuriuos sėkmingai įveikėme. Mielai pasidalinsiu su jumis diegimo ir konfigūravimo instrukcijomis, kurios iš viso užtruks apie 10 minučių.

Kaip įdiegti „Kubernetes“ „CentOS 8“ naudojant CRI-O sistemą

Būtinos sąlygos: bent vieno pagrindinio kompiuterio buvimas (2 branduoliai, 4 GB RAM, mažiausiai 15 GB saugykla) su įdiegta 8 Centos (rekomenduojamas diegimo profilis „Serveris“), taip pat jo įrašai vietiniame DNS (kraštutiniu atveju galite apsieiti su įrašu /etc/hosts). Ir nepamiršk išjungti apsikeitimą.

Visas operacijas su pagrindiniu kompiuteriu atliekame kaip root naudotojas, būkite atsargūs.

  1. Pirmuoju žingsniu sukonfigūruosime OS, įdiegsime ir sukonfigūruosime preliminarias CRI-O priklausomybes.
    • Atnaujinkime OS:
      dnf -y update
      

    • Tada turite sukonfigūruoti ugniasienę ir SELinux. Čia viskas priklauso nuo aplinkos, kurioje dirbs mūsų šeimininkas ar šeimininkai. Galite nustatyti ugniasienę pagal rekomendacijas iš dokumentacija, arba, jei esate patikimame tinkle arba naudojate trečiosios šalies užkardą, pakeiskite numatytąją zoną į patikimą arba išjunkite užkardą:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      Norėdami išjungti ugniasienę, galite naudoti šią komandą:

      systemctl disable --now firewalld
      

      SELinux reikia išjungti arba perjungti į „leistiną“ režimą:

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

    • Įkelkite reikiamus branduolio modulius ir paketus, sukonfigūruokite automatinį „br_netfilter“ modulio įkėlimą paleidžiant sistemą:
      modprobe overlay
      
      modprobe br_netfilter
      
      echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
      
      dnf -y install iproute-tc
      

    • Norėdami suaktyvinti paketų persiuntimą ir teisingą srauto apdorojimą, atliksime atitinkamus nustatymus:
      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
      

      pritaikykite nustatytus nustatymus:

      sysctl --system

    • nustatykite reikiamą versiją KURTI JĮ (pagrindinė versija KURTI JĮ, kaip jau minėta, atitinka reikiamą versiją Kubernetes), nuo naujausios stabilios versijos Kubernetes šiuo metu 1.18:
      export REQUIRED_VERSION=1.18
      

      pridėkite reikiamas saugyklas:

      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

    • dabar galime įdiegti KURTI JĮ:
      dnf -y install cri-o
      

      Atkreipkite dėmesį į pirmąjį niuansą, su kuriuo susiduriame diegimo metu: turite redaguoti konfigūraciją KURTI JĮ prieš pradedant paslaugą, nes reikalingas bendras komponentas yra kitoje vietoje nei nurodyta:

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

      Dabar galite suaktyvinti ir paleisti demoną KURTI JĮ:

      systemctl enable --now crio
      

      Galite patikrinti demono būseną:

      systemctl status crio
      

  2. Diegimas ir aktyvinimas Kubernetes.
    • Pridėkime reikiamą saugyklą:
      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
      

      Dabar galime įdiegti Kubernetes (1.18 versija, kaip minėta aukščiau):

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

    • Antras svarbus niuansas: kadangi mes nenaudojame demono dokininkas, bet mes naudojame demoną KURTI JĮ, prieš paleidimą ir inicijavimą Kubernetes konfigūracijos faile /var/lib/kubelet/config.yaml turite atlikti atitinkamus nustatymus, pirmiausia sukūrę norimą katalogą:
      mkdir /var/lib/kubelet
      
      cat <<EOF > /var/lib/kubelet/config.yaml
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      cgroupDriver: systemd
      EOF

    • Trečias svarbus dalykas, su kuriuo susiduriame diegdami: nepaisant to, kad nurodėme naudotą tvarkyklę c grupė, ir jo konfigūracija per pateiktus argumentus kubelis yra pasenęs (kaip aiškiai nurodyta dokumentacijoje), turime pridėti argumentų prie failo, kitaip mūsų klasteris nebus inicijuotas:
      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

    • Dabar galime suaktyvinti demoną kubelis:
      sudo systemctl enable --now kubelet
      

      Norėdami pritaikyti valdymo plokštuma arba darbuotojas mazgai per kelias minutes, galite naudoti su šiuo scenarijumi.

  3. Atėjo laikas inicijuoti mūsų grupę.
    • Norėdami inicijuoti klasterį, paleiskite komandą:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      Būtinai užsirašykite komandą prisijungti prie klasterio „kubeadm join…“, kurią jūsų prašoma naudoti išvesties pabaigoje, arba bent jau nurodytus žetonus.

    • Įdiegkime „Pod“ tinklo papildinį (CNI). Rekomenduoju naudoti kartūnas. Galbūt populiaresnis Flanelė turi suderinamumo problemų su nftable, ir kartūnas - vienintelis projekto rekomenduojamas ir visiškai išbandytas CNI diegimas Kubernetes:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • Norėdami prijungti darbuotojo mazgą prie mūsų klasterio, turite jį sukonfigūruoti pagal 1 ir 2 instrukcijas arba naudoti scenarijus, tada paleiskite komandą iš „kubeadm init...“ išvesties, kurią užsirašėme ankstesniame veiksme:
      kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN 
          --discovery-token-ca-cert-hash $TOKEN_HASH

    • Patikrinkime, ar mūsų klasteris inicijuotas ir pradėjo veikti:
      kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
      

    Pasiruošę! Jau galite talpinti naudingus krovinius savo K8s klasteryje.

Kas mūsų laukia priekyje

Tikiuosi, kad aukščiau pateiktos instrukcijos padėjo sutaupyti laiko ir nervų.
Pramonėje vykstančių procesų rezultatas dažnai priklauso nuo to, kaip juos priima didžioji dalis galutinių vartotojų ir kitos programinės įrangos kūrėjų atitinkamoje nišoje. Dar nėra iki galo aišku, ką po kelerių metų nuves OCI iniciatyvos, bet žiūrėsime su malonumu. Savo nuomone galite pasidalinti jau dabar komentaruose.

Būkite suderinti!

Šis straipsnis pasirodė šių šaltinių dėka:



Šaltinis: www.habr.com

Добавить комментарий