CRI-O ho fanoloana an'i Docker ho tontolo iainana ho an'ny Kubernetes: fametrahana amin'ny CentOS 8

Salama! Sergey no anarako, DevOps ao amin'ny Surf aho. Ny Departemantan'ny DevOps ao amin'ny Surf dia tsy mikendry ny hanorina fifandraisana eo amin'ny manam-pahaizana manokana sy hampiditra ny fizotran'ny asa ihany, fa koa mba hikaroka sy hampihatra ny teknolojia ankehitriny ao amin'ny fotodrafitrasany manokana sy amin'ny fotodrafitrasa mpanjifa.

Eto ambany aho dia hiresaka kely momba ny fiovan'ny teknolojia ho an'ny kaontenera izay sendra anay nandritra ny fandalinana ny fizarana CentOS 8 ary momba ny inona izany CRI-O ary ny fomba fametrahana haingana tontolo iainana azo tanterahina ho an'ny Kubernetes.

CRI-O ho fanoloana an'i Docker ho tontolo iainana ho an'ny Kubernetes: fametrahana amin'ny CentOS 8

Nahoana no tsy tafiditra ao amin'ny CentOS 8 i Docker?

Taorian'ny fametrahana ny famoahana lehibe farany rhel 8 na CentOS 8 tsy misy afaka tsy mahamarika: tsy misy ny fampiharana ireo fizarana sy tahiry ofisialy ireo Docker, izay manolo ny fonosana amin'ny fomba ideolojika sy ara-asa podman, Buildah (misy ao amin'ny fizarana amin'ny alΓ lan'ny default) ary CRI-O. Izany dia noho ny fampiharana ny fenitra novolavolaina, ankoatry ny zavatra hafa, nataon'i Red Hat ho ampahany amin'ny tetikasa Open Container Initiative (OCI).

Ny tanjon'ny OCI, izay ao anatin'ny The Linux Foundation, dia ny hamorona fenitry ny indostria misokatra ho an'ny endrika kaontenera sy ny fampandehanana izay mamaha olana maro indray mandeha. Voalohany, tsy nanohitra ny filozofian'ny Linux izy ireo (ohatra, amin'ny ampahany izay tokony hanao hetsika iray ny programa tsirairay, ary Docker dia karazana fitambarana iray manontolo). Faharoa, azon'izy ireo atao ny manafoana ny lesoka rehetra misy ao amin'ny rindrambaiko Docker. Fahatelo, hifanaraka tanteraka amin'ny fepetra takian'ny fandraharahana amin'ny sehatra ara-barotra lehibe izy ireo amin'ny fametrahana, ny fitantanana ary ny fanompoana ireo rindranasa misy container (ohatra, Red Hat OpenShift).

fahadisoana Docker ary ny tombony amin'ny rindrambaiko vaovao dia efa nofaritana tamin'ny antsipiriany ao ity lahatsoratra ity, ary ny famaritana amin'ny antsipiriany momba ny stack rindrambaiko manontolo atolotra ao anatin'ny tetikasa OCI sy ny endri-javatra ara-javakanto dia azo jerena ao amin'ny antontan-taratasy ofisialy sy lahatsoratra avy amin'ny Red Hat mihitsy (tsy ratsy lahatsoratra ao amin'ny bilaogy Red Hat) ary amin'ny antoko fahatelo hevitra.

Zava-dehibe ny manamarika hoe inona no fiasan'ny singa amin'ny stack natolotra:

  • podman - fifandraisana mivantana amin'ny kaontenera sy fitahirizana sary amin'ny alΓ lan'ny fizotran'ny runC;
  • Buildah - fanangonana sy fampiakarana sary ao amin'ny rejisitra;
  • CRI-O - tontolo iainana azo tanterahina ho an'ny rafitra orkestra kaontenera (ohatra, Kubernetes).

Heveriko fa mba hahatakarana ny tetika ankapobeny amin'ny fifandraisana eo amin'ireo singa ao amin'ny stack, dia tsara ny manome diagrama fifandraisana eto Kubernetes c runC ary tranomboky ambany lenta mampiasa CRI-O:

CRI-O ho fanoloana an'i Docker ho tontolo iainana ho an'ny Kubernetes: fametrahana amin'ny CentOS 8

CRI-O ΠΈ Kubernetes mifikitra amin'ny tsingerin'ny famoahana sy fanohanana mitovy (tena tsotra ny matrix compatibility: dikan-teny lehibe Kubernetes ΠΈ CRI-O mifanandrify), ary izany, raha jerena ny fifantohana amin'ny fitsapana feno sy feno amin'ny fampandehanana an'ity stack ity ataon'ny developer, dia manome antsika zo hanantena ny fahamarinan-toerana faran'izay azo tratrarina amin'ny fiasana amin'ny toe-javatra rehetra ampiasaina (mahasoa ihany koa ny fahamaivanana havanana eto. CRI-O ampitahaina amin'ny Docker noho ny famerana tanjona amin'ny fampiasa).

Rehefa manamboatra Kubernetes "lalana marina" (araka ny OCI, mazava ho azy) mampiasa CRI-O amin'ny CentOS 8 Nisedra fahasahiranana kely izahay, izay noresenay soa aman-tsara anefa. Ho faly aho hizara aminao ny torolΓ lana momba ny fametrahana sy ny fanamafisana, izay haharitra 10 minitra eo ho eo.

Ahoana ny fametrahana Kubernetes amin'ny CentOS 8 amin'ny fampiasana ny rafitra CRI-O

Fepetra takiana: fisian'ny mpampiantrano iray farafahakeliny (fototra 2, RAM 4 GB, fitahirizana 15 GB farafahakeliny) miaraka amin'ny fametrahana CentOS 8 (Ny mombamomba ny fametrahana "Server" dia atolotra), ary koa ny fampidirana azy ao amin'ny DNS eo an-toerana (ho fomba farany, azonao atao ny miditra amin'ny /etc/hosts). Ary aza adino disable swap.

Izahay dia manao ny hetsika rehetra amin'ny mpampiantrano amin'ny maha-mpampiasa faka azy, mitandrema.

  1. Amin'ny dingana voalohany dia hamboarina ny OS isika, hametraka sy hanitsy ny fiankinan-doha mialoha ho an'ny CRI-O.
    • Andao hanavao ny OS:
      dnf -y update
      

    • Avy eo dia mila manamboatra ny firewall sy SELinux ianao. Eto dia miankina amin'ny tontolo iasan'ny mpampiantrano na mpampiantrano antsika ny zava-drehetra. Azonao atao ny manangana firewall araka ny tolo-kevitra avy amin'ny tahirin-kevitra, na, raha ao amin'ny tambajotra azo itokisana ianao na mampiasa firewall an'ny antoko fahatelo, dia ovay ho azo itokisana na vonoy ny firewall:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      Mba hamonoana ny firewall dia azonao ampiasaina ity baiko manaraka ity:

      systemctl disable --now firewalld
      

      Ny SELinux dia mila vonoina na avadika amin'ny fomba "mamela heloka":

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

    • Ampidiro ny maody sy ny fonosana kernel ilaina, amboary ny fandefasana mandeha ho azy ny maody "br_netfilter" amin'ny fanombohana ny rafitra:
      modprobe overlay
      
      modprobe br_netfilter
      
      echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
      
      dnf -y install iproute-tc
      

    • Mba hampavitrika ny fandefasana entana sy hanitsiana ny fanodinana ny fifamoivoizana dia hanao ny toe-javatra mety izahay:
      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
      

      ampiharo ny fanovana natao:

      sysctl --system

    • mametraka ny dikan-teny ilaina CRI-O (dikan-teny lehibe CRI-O, araka ny efa voalaza, mifanaraka amin'ny dikan-teny ilaina Kubernetes), hatramin'ny version stable farany indrindra Kubernetes amin'izao fotoana izao 1.18:
      export REQUIRED_VERSION=1.18
      

      ampio ny repository ilaina:

      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

    • izao dia afaka mametraka CRI-O:
      dnf -y install cri-o
      

      Tandremo ny nuance voalohany hitantsika mandritra ny dingana fametrahana: mila manitsy ny fanitsiana ianao CRI-O alohan'ny hanombohana ny serivisy, satria ny singa conmon takiana dia manana toerana hafa noho ilay voatondro:

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

      Afaka manetsika sy manomboka ny daemon ianao izao CRI-O:

      systemctl enable --now crio
      

      Azonao atao ny manamarina ny satan'ny daemon:

      systemctl status crio
      

  2. Fametrahana sy fampahavitrihana Kubernetes.
    • Andeha ampio ny tahiry ilaina:
      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
      

      Afaka mametraka isika izao Kubernetes (version 1.18, araka ny voalaza etsy ambony):

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

    • Ny zava-dehibe faharoa: satria tsy mampiasa daemon isika Docker, fa mampiasa ny daemon izahay CRI-O, alohan'ny fandefasana sy fanombohana Kubernetes mila manao ny toe-javatra mety amin'ny fisie /var/lib/kubelet/config.yaml ianao, rehefa namorona ny lahatahiry tianao:
      mkdir /var/lib/kubelet
      
      cat <<EOF > /var/lib/kubelet/config.yaml
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      cgroupDriver: systemd
      EOF

    • Ny teboka manan-danja fahatelo izay sendra anay mandritra ny fametrahana: na dia efa nanondro ny mpamily ampiasaina aza izahay cgroup, ary ny fandrindrana azy amin'ny alΓ lan'ny tohan-kevitra nandalo kubelet lany andro (araka ny voalaza mazava ao amin'ny antontan-taratasy), mila manampy hevitra amin'ny rakitra isika, raha tsy izany dia tsy hatomboka ny cluster:
      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

    • Ankehitriny dia afaka manetsika ny daemon isika kubelet:
      sudo systemctl enable --now kubelet
      

      Manamboatra fiaramanidina fanaraha-maso na mpiasa nodes ao anatin'ny minitra, azonao ampiasaina miaraka amin'ity script ity.

  3. Fotoana hanombohana ny cluster.
    • Mba hanombohana ny cluster dia araho ny baiko:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      Ataovy azo antoka ny manoratra ny baiko hiditra ao amin'ny cluster "kubeadm join ...", izay angatahina hampiasainao amin'ny faran'ny vokatra, na farafaharatsiny ireo marika voafaritra.

    • Andao hametraka ny plugin (CNI) ho an'ny tambajotra Pod. Manoro hevitra aho hampiasa calico. Mety ho malaza kokoa Flannel manana olana mifanaraka amin'ny nftables, eny ary calico - hany fampiharana ny CNI natolotry ny tetikasa ary notsapaina tanteraka Kubernetes:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • Mba hampifandraisana ny node mpiasa amin'ny cluster, dia mila manamboatra azy araka ny torolΓ lana 1 sy 2 ianao, na mampiasa teny, dia mandehana ny baiko avy amin'ny vokatra "kubeadm init..." izay nosoratanay tamin'ny dingana teo aloha:
      kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN 
          --discovery-token-ca-cert-hash $TOKEN_HASH

    • Andeha hojerentsika fa natomboka ny cluster ary nanomboka niasa:
      kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
      

    Vonona! Efa afaka mampiantrano karama ao amin'ny cluster K8s ianao.

Inona no miandry antsika mialoha

Manantena aho fa ny toromarika etsy ambony dia nanampy anao hamonjy fotoana sy tebiteby.
Ny vokatry ny dingana mitranga ao amin'ny indostria matetika dia miankina amin'ny fomba eken'ny ankamaroan'ny mpampiasa farany sy ny mpamorona rindrambaiko hafa ao amin'ny niche mifanaraka aminy. Tsy mbola mazava tsara hoe inona no hitondran'ireo hetsika OCI afaka taona vitsivitsy, fa hojerentsika amim-pifaliana. Azonao atao ny mizara ny hevitrao dieny izao ao amin'ny fanehoan-kevitra.

Maharaha vaovao!

Nipoitra ity lahatsoratra ity noho ireto loharano manaraka ireto:



Source: www.habr.com

Add a comment