CRI-O in ionad Docker mar thimpeallacht ama rite do Kubernetes: socrú ar CentOS 8

Dia dhuit! Sergey is ainm dom, is DevOps mé ag Surf. Tá sé mar aidhm ag roinn DevOps ag Surf ní hamháin idirghníomhaíocht a bhunú idir speisialtóirí agus próisis oibre a chomhtháthú, ach freisin taighde gníomhach a dhéanamh ar theicneolaíochtaí reatha agus iad a chur i bhfeidhm ina mbonneagar féin agus i mbonneagar an chustaiméara.

Anseo thíos labhróidh mé beagán faoi na hathruithe sa chruach teicneolaíochta le haghaidh coimeádáin ar tháinig muid orthu agus muid ag déanamh staidéir ar an dáileadh 8 CentOS agus faoi cad é CRI-O agus conas timpeallacht inrite a chur ar bun go tapa le haghaidh Kubernetes.

CRI-O in ionad Docker mar thimpeallacht ama rite do Kubernetes: socrú ar CentOS 8

Cén fáth nach bhfuil Docker san áireamh i CentOS 8?

Tar éis na heisiúintí móra is déanaí a shuiteáil ríl 88 CentOS ní féidir cabhrú ach a thabhairt faoi deara: níl an feidhmchlár sna dáiltí agus na stórtha oifigiúla seo dhugaire, a chuireann pacáistí in ionad idé-eolaíoch agus feidhmiúil podman, Tóga (i láthair sa dáileadh de réir réamhshocraithe) agus CRI-O. Tá sé seo mar gheall ar chur i bhfeidhm praiticiúil na gcaighdeán arna bhforbairt, i measc rudaí eile, ag Red Hat mar chuid den tionscadal Tionscnamh Coimeádán Oscailte (OCI).

Is é sprioc OCI, atá mar chuid den Fhondúireacht Linux, ná caighdeáin tionscail oscailte a chruthú le haghaidh formáidí coimeádán agus amanna rite a réitíonn roinnt fadhbanna ag an am céanna. Ar an gcéad dul síos, níor tháinig siad salach ar fhealsúnacht Linux (mar shampla, sa chuid gur cheart do gach clár gníomh amháin a dhéanamh, agus dhugaire is cineál comhcheangail uile-i-amháin). Ar an dara dul síos, d'fhéadfadh siad deireadh a chur le gach easnamh atá ann cheana féin sna bogearraí dhugaire. Ar an tríú dul síos, bheadh ​​siad ag luí go hiomlán leis na ceanglais ghnó arna leagan síos ag ardáin thráchtála chun tosaigh chun feidhmchláir coimeádaithe a imscaradh, a bhainistiú agus a fhreastal (mar shampla, Red Hat OpenShift).

Teorainneacha dhugaire agus tá cur síos go mion cheana féin ar bhuntáistí na mbogearraí nua i an t-alt seo, agus tá cur síos mionsonraithe ar an gcruach bogearraí ar fad a thairgtear laistigh den tionscadal OCI agus a ghnéithe ailtireachta le fáil sna doiciméid oifigiúla agus sna hailt ó Red Hat féin (ní droch-cháil airteagal sa bhlag Red Hat) agus sa tríú páirtí léirmheasanna.

Tá sé tábhachtach a thabhairt faoi deara cén fheidhmiúlacht atá ag comhpháirteanna an chruach bheartaithe:

  • podman — idirghníomhú díreach le coimeádáin agus stóráil íomhánna tríd an bpróiseas runC;
  • Tóga — íomhánna a chur le chéile agus a uaslódáil chuig an gclár;
  • CRI-O — timpeallacht inrite do chórais ceolfhoirne coimeádán (mar shampla, Kubernetes).

Sílim go bhfuil sé inmholta léaráid nasc a sholáthar anseo chun scéim ghinearálta na hidirghníomhaíochta idir comhpháirteanna an chairn a thuiscint. Kubernetes c rithC agus leabharlanna ar leibhéal íseal ag baint úsáide as CRI-O:

CRI-O in ionad Docker mar thimpeallacht ama rite do Kubernetes: socrú ar CentOS 8

CRI-O и Kubernetes cloí leis an timthriall scaoileadh agus tacaíochta céanna (tá an maitrís comhoiriúnachta an-simplí: leaganacha móra Kubernetes и CRI-O ag an am céanna), agus tugann sé seo, ag cur san áireamh an fócas ar thástáil iomlán agus chuimsitheach ar oibriú an chairn ag forbróirí, an ceart dúinn a bheith ag súil leis an chobhsaíocht uasta insroichte i bhfeidhm faoi aon chásanna úsáide (tá Gile coibhneasta tairbheach freisin anseo CRI-O i gcomparáid le dhugaire mar gheall ar theorannú cuspóireach feidhmiúlacht).

Nuair a shuiteáil Kubernetes bealach "ceart" (de réir OCI, ar ndóigh) ag baint úsáide as CRI-O ar 8 CentOS Thángamar ar roinnt miondeacrachtaí, rud a d’éirigh linn, áfach, a shárú. Beidh áthas orm treoracha suiteála agus cumraíochta a roinnt leat, rud a thógfaidh thart ar 10 nóiméad san iomlán.

Conas Kubernetes a imscaradh ar CentOS 8 ag baint úsáide as an gcreat CRI-O

Réamhriachtanais: óstach amháin ar a laghad a bheith i láthair (2 chroílár, 4 GB RAM, 15 GB ar a laghad) le suiteáil 8 CentOS (moltar próifíl suiteála an “Freastalaí”), chomh maith le hiontrálacha dó sa DNS áitiúil (mar rogha dheireanach, is féidir leat dul isteach le hiontráil i /etc/hosts). Agus ná déan dearmad díchumasaigh babhtáil.

Déanaimid gach oibríocht ar an ósta mar an t-úsáideoir fréimhe, a bheith cúramach.

  1. Sa chéad chéim, déanfaimid an OS a chumrú, a shuiteáil agus a chumrú réamhspleáchais do CRI-O.
    • Déanaimis an OS a nuashonrú:
      dnf -y update
      

    • Ansin ní mór duit an balla dóiteáin agus SELinux a chumrú. Anseo braitheann gach rud ar an timpeallacht ina n-oibreoidh ár n-óstach nó ár n-óstach. Is féidir leat balla dóiteáin a shocrú de réir na moltaí ó doiciméadú, nó, má tá tú ar líonra iontaofa nó má úsáideann tú balla dóiteáin tríú páirtí, athraigh an crios réamhshocraithe go dtí an balla dóiteáin iontaofa nó múch:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      Chun an balla dóiteáin a mhúchadh is féidir leat an t-ordú seo a leanas a úsáid:

      systemctl disable --now firewalld
      

      Ní mór SELinux a mhúchadh nó a athrú go mód “cheadaitheach”:

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

    • Luchtaigh na modúil agus na pacáistí eithne riachtanacha, cumraigh luchtú uathoibríoch an mhodúil “br_netfilter” ag am tosaithe an chórais:
      modprobe overlay
      
      modprobe br_netfilter
      
      echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
      
      dnf -y install iproute-tc
      

    • Chun cur ar aghaidh paicéid agus próiseáil cheart tráchta a ghníomhachtú, déanfaimid na socruithe cuí:
      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
      

      cuir na socruithe a rinneadh i bhfeidhm:

      sysctl --system

    • socraigh an leagan riachtanach CRI-O (mórleagan CRI-O, mar a luadh cheana, a mheaitseáil leis an leagan riachtanach Kubernetes), ós rud é an leagan cobhsaí is déanaí Kubernetes faoi ​​láthair 1.18:
      export REQUIRED_VERSION=1.18
      

      cuir na stórtha riachtanacha leis:

      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

    • anois is féidir linn a shuiteáil CRI-O:
      dnf -y install cri-o
      

      Tabhair aird ar an gcéad nuance a bhíonn againn le linn an phróisis suiteála: ní mór duit an chumraíocht a chur in eagar CRI-O sula dtosaíonn tú ar an tseirbhís, ós rud é go bhfuil suíomh difriúil ag an gcomhpháirt cón a éilítear ná an ceann sonraithe:

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

      Anois is féidir leat an deamhan a ghníomhachtú agus a thosú CRI-O:

      systemctl enable --now crio
      

      Is féidir leat stádas an deamhan a sheiceáil:

      systemctl status crio
      

  2. Suiteáil agus gníomhachtú Kubernetes.
    • Cuirimis an stór riachtanach leis:
      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
      

      Anois is féidir linn a shuiteáil Kubernetes (leagan 1.18, mar a luadh thuas):

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

    • An dara nuance tábhachtach: ós rud é nach úsáidimid deamhan dhugaire, ach úsáidimid an deamhan CRI-O, roimh é a sheoladh agus a thúsú Kubernetes ní mór duit na socruithe cuí a dhéanamh sa chomhad cumraíochta /var/lib/kubelet/config.yaml, tar éis duit an t-eolaire atá uait a chruthú ar dtús:
      mkdir /var/lib/kubelet
      
      cat <<EOF > /var/lib/kubelet/config.yaml
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      cgroupDriver: systemd
      EOF

    • An tríú pointe tábhachtach a bhíonn againn le linn na suiteála: in ainneoin gur léirigh muid an tiománaí a úsáideadh cgroup, agus a chumraíocht trí na hargóintí a ritheadh cuaille as dáta (mar a deirtear go sainráite sa cháipéisíocht), caithfimid argóintí a chur leis an gcomhad, nó ní dhéanfar ár mbraisle a thúsú:
      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

    • Anois is féidir linn an deamhan a ghníomhachtú cuaille:
      sudo systemctl enable --now kubelet
      

      A shaincheapadh rialú-eitleánoibrí nóid i nóiméid, is féidir leat é a úsáid leis an script seo.

  3. Tá sé in am ár mbraisle a thúsú.
    • Chun an braisle a thosú, rith an t-ordú:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      Bí cinnte an t-ordú a scríobh síos chun dul isteach sa bhraisle “kubeadm join …”, a iarrtar ort a úsáid ag deireadh an aschuir, nó ar a laghad na comharthaí sonraithe.

    • Déanaimis an breiseán (CNI) a shuiteáil don líonra Pod. Molaim úsáid a bhaint as Calico. B'fhéidir níos mó tóir Flannel tá fadhbanna comhoiriúnachta aige le nftables, tá agus Calico - an t-aon chur chun feidhme CNI atá molta ag an tionscadal agus a thástáil go hiomlán Kubernetes:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • Chun nód oibrithe a nascadh lenár mbraisle, ní mór duit é a chumrú de réir threoracha 1 agus 2, nó úsáid script, ansin rith an t-ordú ón aschur “kubeadm init...” a scríobhamar síos sa chéim roimhe seo:
      kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN 
          --discovery-token-ca-cert-hash $TOKEN_HASH

    • Déanaimis seiceáil go bhfuil ár mbraisle tosaithe agus tosaithe ag obair:
      kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
      

    Réidh! Is féidir leat uaslódálacha a óstáil ar do bhraisle K8s cheana féin.

Cad atá romhainn

Tá súil agam gur chabhraigh na treoracha thuas roinnt ama agus nerves duit.
Braitheann toradh na bpróiseas a tharlaíonn sa tionscal go minic ar an gcaoi a nglacann formhór na n-úsáideoirí deiridh agus forbróirí bogearraí eile sa nideoige comhfhreagrach leo. Níl sé iomlán soiléir fós cad a bheidh mar thoradh ar thionscnaimh OCI i gceann cúpla bliain, ach beimid ag faire le pléisiúr. Is féidir leat do thuairim a roinnt anois sna tuairimí.

Fanacht tiúnta!

Léiríodh an t-alt seo a bhuíochas leis na foinsí seo a leanas:



Foinse: will.com

Add a comment