CRI-O kama mbadala wa Docker kama mazingira ya wakati wa kukimbia kwa Kubernetes: sanidi kwenye CentOS 8

Habari! Jina langu ni Sergey, mimi ni DevOps katika Surf. Idara ya DevOps katika Surf inalenga sio tu kuanzisha mwingiliano kati ya wataalamu na kuunganisha michakato ya kazi, lakini pia kutafiti kikamilifu na kutekeleza teknolojia za sasa katika miundombinu yake na katika miundombinu ya mteja.

Hapo chini nitazungumza kidogo juu ya mabadiliko katika safu ya teknolojia ya vyombo ambayo tulikutana nayo wakati wa kusoma usambazaji CentOS 8 na kuhusu ni nini CRI-O na jinsi ya kuweka haraka mazingira yanayoweza kutekelezwa Mabernet.

CRI-O kama mbadala wa Docker kama mazingira ya wakati wa kukimbia kwa Kubernetes: sanidi kwenye CentOS 8

Kwa nini Docker haijajumuishwa kwenye CentOS 8?

Baada ya kusakinisha matoleo makubwa ya hivi karibuni RHEL 8 au CentOS 8 mtu hawezi kusaidia lakini kutambua: usambazaji huu na hazina rasmi hazina programu Docker, ambayo kiitikadi na kiutendaji hubadilisha vifurushi podman, Buildah (iliyopo katika usambazaji kwa chaguo-msingi) na CRI-O. Hii ni kutokana na utekelezaji wa vitendo wa viwango vilivyotengenezwa, miongoni mwa mambo mengine, na Red Hat kama sehemu ya mradi wa Open Container Initiative (OCI).

Lengo la OCI, ambayo ni sehemu ya The Linux Foundation, ni kuunda viwango vya sekta ya wazi vya fomati za makontena na nyakati za kukimbia ambazo hutatua matatizo kadhaa mara moja. Kwanza, hazikupingana na falsafa ya Linux (kwa mfano, katika sehemu ambayo kila programu inapaswa kufanya kitendo kimoja, na. Docker ni aina ya mchanganyiko wa yote kwa moja). Pili, wanaweza kuondoa kasoro zote zilizopo kwenye programu Docker. Tatu, zitalingana kikamilifu na mahitaji ya biashara ya majukwaa ya kibiashara yanayoongoza kwa kupeleka, kudhibiti na kuhudumia programu zilizo na kontena (kwa mfano, Red Hat OpenShift).

Mapungufu Docker na faida za programu mpya tayari zimeelezewa kwa undani katika Makala hii, na maelezo ya kina ya programu nzima inayotolewa ndani ya mradi wa OCI na vipengele vyake vya usanifu yanaweza kupatikana katika nyaraka rasmi na makala kutoka Red Hat yenyewe (sio mbaya. makala katika blogi ya Red Hat) na mtu wa tatu hakiki.

Ni muhimu kutambua ni utendaji gani wa vipengele vya stack iliyopendekezwa vina:

  • podman - mwingiliano wa moja kwa moja na vyombo na uhifadhi wa picha kupitia mchakato wa runC;
  • Buildah - kukusanya na kupakia picha kwenye Usajili;
  • CRI-O β€” mazingira yanayoweza kutekelezwa kwa mifumo ya okestra ya kontena (kwa mfano, Kubernetes).

Nadhani ili kuelewa mpango wa jumla wa mwingiliano kati ya vifaa vya stack, inashauriwa kutoa mchoro wa unganisho hapa. Mabernet c kukimbiaC na maktaba za kiwango cha chini zinazotumia CRI-O:

CRI-O kama mbadala wa Docker kama mazingira ya wakati wa kukimbia kwa Kubernetes: sanidi kwenye CentOS 8

CRI-O ΠΈ Mabernet fuata mzunguko sawa wa kutolewa na usaidizi (matrix ya utangamano ni rahisi sana: matoleo makubwa Mabernet ΠΈ CRI-O sanjari), na hii, kwa kuzingatia umakini wa upimaji kamili na wa kina wa utendakazi wa safu hii na watengenezaji, inatupa haki ya kutarajia uthabiti wa juu unaoweza kufikiwa katika utendakazi chini ya hali yoyote ya utumiaji (nyepesi ya jamaa pia ina faida hapa. CRI-O ikilinganishwa na Docker kwa sababu ya kizuizi cha makusudi cha utendaji).

Wakati wa kufunga Mabernet "njia sahihi" (kulingana na OCI, bila shaka) kutumia CRI-O juu ya CentOS 8 Tulikumbana na matatizo madogo madogo, ambayo, hata hivyo, tuliyashinda kwa mafanikio. Nitafurahi kushiriki nawe maagizo ya ufungaji na usanidi, ambayo kwa jumla itachukua kama dakika 10.

Jinsi ya kupeleka Kubernetes kwenye CentOS 8 kwa kutumia mfumo wa CRI-O

Masharti: uwepo wa angalau seva moja (cores 2, RAM ya GB 4, angalau hifadhi ya 15 GB) iliyosakinishwa. CentOS 8 (wasifu wa usakinishaji wa "Seva" unapendekezwa), pamoja na maingizo yake katika DNS ya ndani (kama suluhu ya mwisho, unaweza kuingia kwa kuingia /etc/hosts). Na usisahau Lemaza ubadilishaji.

Tunafanya shughuli zote kwenye seva pangishi kama mtumiaji wa mizizi, kuwa mwangalifu.

  1. Katika hatua ya kwanza, tutasanidi OS, kufunga na kusanidi utegemezi wa awali kwa CRI-O.
    • Wacha tusasishe OS:
      dnf -y update
      

    • Ifuatayo unahitaji kusanidi firewall na SELinux. Hapa kila kitu kinategemea mazingira ambayo mwenyeji wetu au majeshi atafanya kazi. Unaweza kusanidi firewall kulingana na mapendekezo kutoka nyaraka, au, ikiwa uko kwenye mtandao unaoaminika au unatumia ngome ya watu wengine, badilisha eneo chaguo-msingi liwe la kuaminika au zima ngome:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      Ili kuzima firewall unaweza kutumia amri ifuatayo:

      systemctl disable --now firewalld
      

      SELinux inahitaji kuzimwa au kubadilishwa kuwa hali ya "ruhusa":

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

    • Pakia moduli na vifurushi vya kernel muhimu, sanidi upakiaji wa kiotomatiki wa moduli ya "br_netfilter" wakati wa kuanzisha mfumo:
      modprobe overlay
      
      modprobe br_netfilter
      
      echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
      
      dnf -y install iproute-tc
      

    • Ili kuwezesha usambazaji wa pakiti na usindikaji sahihi wa trafiki, tutafanya mipangilio inayofaa:
      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
      

      tumia mipangilio iliyofanywa:

      sysctl --system

    • weka toleo linalohitajika CRI-O (toleo kuu CRI-O, kama ilivyotajwa tayari, linganisha na toleo linalohitajika Mabernet), kwa kuwa toleo la hivi punde thabiti Mabernet kwa sasa 1.18:
      export REQUIRED_VERSION=1.18
      

      ongeza hazina zinazohitajika:

      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

    • sasa tunaweza kufunga CRI-O:
      dnf -y install cri-o
      

      Jihadharini na nuance ya kwanza ambayo tunakutana nayo wakati wa mchakato wa ufungaji: unahitaji kuhariri usanidi CRI-O kabla ya kuanza huduma, kwani sehemu inayohitajika ya koni ina eneo tofauti na ile iliyoainishwa:

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

      Sasa unaweza kuwezesha na kuanza daemon CRI-O:

      systemctl enable --now crio
      

      Unaweza kuangalia hali ya daemon:

      systemctl status crio
      

  2. Ufungaji na uanzishaji Mabernet.
    • Wacha tuongeze hazina inayohitajika:
      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
      

      Sasa tunaweza kufunga Mabernet (toleo la 1.18, kama ilivyotajwa hapo juu):

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

    • Nuance ya pili muhimu: kwa kuwa hatutumii daemon Docker, lakini tunatumia daemon CRI-O, kabla ya uzinduzi na uanzishaji Mabernet unahitaji kufanya mipangilio inayofaa katika faili ya usanidi /var/lib/kubelet/config.yaml, baada ya kuunda saraka inayotaka:
      mkdir /var/lib/kubelet
      
      cat <<EOF > /var/lib/kubelet/config.yaml
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      cgroupDriver: systemd
      EOF

    • Jambo la tatu muhimu tunalokutana nalo wakati wa ufungaji: licha ya ukweli kwamba tumeonyesha dereva aliyetumiwa kikundi, na usanidi wake kupitia hoja zilizopitishwa mchemraba imepitwa na wakati (kama inavyosemwa kwa uwazi katika hati), tunahitaji kuongeza hoja kwenye faili, vinginevyo nguzo yetu haitaanzishwa:
      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

    • Sasa tunaweza kuwezesha daemon mchemraba:
      sudo systemctl enable --now kubelet
      

      Kubadilisha kukufaa kudhibiti-ndege au mfanyakazi nodi kwa dakika, unaweza kutumia na hati hii.

  3. Ni wakati wa kuanzisha nguzo yetu.
    • Ili kuanzisha nguzo, endesha amri:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      Hakikisha kuandika amri ya kujiunga na nguzo "kubeadm join ...", ambayo unaulizwa kutumia mwishoni mwa pato, au angalau ishara maalum.

    • Hebu tusakinishe programu-jalizi (CNI) ya mtandao wa Pod. Ninapendekeza kutumia Calico. Labda maarufu zaidi Flannel ina masuala ya utangamano na visivyofaa,ndiyo na Calico - Utekelezaji pekee wa CNI uliopendekezwa na kupimwa kikamilifu na mradi Mabernet:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • Ili kuunganisha nodi ya mfanyakazi kwenye nguzo yetu, unahitaji kuisanidi kulingana na maagizo ya 1 na 2, au utumie. hati, kisha endesha amri kutoka kwa pato la "kubeadm init..." ambalo tuliandika katika hatua iliyotangulia:
      kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN 
          --discovery-token-ca-cert-hash $TOKEN_HASH

    • Wacha tuangalie ikiwa nguzo yetu imeanzishwa na kuanza kufanya kazi:
      kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
      

    Tayari! Tayari unaweza kupangisha upakiaji kwenye nguzo yako ya K8s.

Nini kinatungoja mbele

Natumaini kwamba maelekezo hapo juu yamesaidia kuokoa muda na mishipa.
Matokeo ya michakato inayotokea katika tasnia mara nyingi inategemea jinsi inavyokubaliwa na wingi wa watumiaji wa mwisho na watengenezaji wa programu zingine kwenye niche inayolingana. Bado haijabainika kabisa mipango ya OCI itasababisha nini katika miaka michache, lakini tutakuwa tukitazama kwa furaha. Unaweza kushiriki maoni yako sasa hivi kwenye maoni.

Endelea!

Nakala hii ilionekana shukrani kwa vyanzo vifuatavyo:



Chanzo: mapenzi.com

Kuongeza maoni