CRI-O minangka panggantos kanggo Docker minangka lingkungan runtime kanggo Kubernetes: persiyapan ing CentOS 8

Hello! Jenengku Sergey, aku DevOps ing Surf. Departemen DevOps ing Surf ngarahake ora mung kanggo nggawe interaksi antarane spesialis lan nggabungake proses kerja, nanging uga kanthi aktif riset lan ngetrapake teknologi saiki ing infrastruktur dhewe lan ing infrastruktur pelanggan.

Ing ngisor iki aku bakal ngomong sethithik babagan owah-owahan ing tumpukan teknologi kanggo wadhah sing ditemoni nalika sinau babagan distribusi CentOS 8 lan babagan apa CRI-O lan carane cepet nyiyapake lingkungan eksekusi kanggo Kubernetes.

CRI-O minangka panggantos kanggo Docker minangka lingkungan runtime kanggo Kubernetes: persiyapan ing CentOS 8

Napa Docker ora kalebu ing CentOS 8?

Sawise nginstal rilis utama paling anyar reh 8 utawa CentOS 8 siji ora bisa bantuan nanging sok dong mirsani: distribusi lan repositori resmi iki ora ngemot aplikasi docker, sing ideologis lan fungsional ngganti paket podho, Mbangun (saiki ing distribusi minangka standar) lan CRI-O. Iki amarga implementasine praktis standar sing dikembangake, antarane liyane, dening Red Hat minangka bagΓ©an saka proyek Open Container Initiative (OCI).

Tujuan saka OCI, yaiku bagean saka Yayasan Linux, yaiku nggawe standar industri sing mbukak kanggo format wadah lan runtime sing ngrampungake sawetara masalah sekaligus. Kaping pisanan, dheweke ora mbantah filosofi Linux (contone, ing bagean sing saben program kudu nindakake siji tumindak, lan docker minangka gabungan kabeh-ing-siji). Kapindho, bisa ngilangi kabeh kekurangan sing ana ing piranti lunak kasebut docker. Katelu, bakal kompatibel karo syarat bisnis platform komersial sing unggul kanggo nyebarake, ngatur lan ngladeni aplikasi sing disedhiyakake (contone, Red Hat OpenShift).

Kekurangan docker lan kaluwihan saka piranti lunak anyar wis diterangake ing sawetara rinci ing artikel iki, lan katrangan rinci babagan kabeh tumpukan piranti lunak sing ditawakake ing proyek OCI lan fitur arsitektur bisa ditemokake ing dokumentasi resmi lan artikel saka Red Hat dhewe (ora ala. artikel ing blog Red Hat) lan ing pihak katelu ulasan.

Penting kanggo dicathet apa fungsi komponen tumpukan sing diusulake:

  • podho - interaksi langsung karo kontaner lan panyimpenan gambar liwat proses runC;
  • Mbangun - perakitan lan ngunggah gambar menyang pendaptaran;
  • CRI-O - lingkungan eksekusi kanggo sistem orkestrasi wadhah (contone, Kubernetes).

Aku sing ngerti skema umum saka interaksi antarane komponen saka tumpukan, iku saranake kanggo nyedhiyani diagram sambungan kene Kubernetes c mlayuC lan perpustakaan tingkat rendah nggunakake CRI-O:

CRI-O minangka panggantos kanggo Docker minangka lingkungan runtime kanggo Kubernetes: persiyapan ing CentOS 8

CRI-O ΠΈ Kubernetes manut siklus rilis lan dhukungan sing padha (matriks kompatibilitas gampang banget: versi utama Kubernetes ΠΈ CRI-O bertepatan), lan iki, njupuk menyang akun fokus ing testing lengkap lan lengkap saka operasi tumpukan iki dening pangembang, menehi kita hak kanggo nyana stabilitas achievable maksimum ing operasi ing sembarang skenario nggunakake (lightness relatif uga ono gunane kene. CRI-O dibandhingake karo docker amarga watesan fungsi kanthi tujuan).

Nalika nginstal Kubernetes "cara tengen" cara (miturut OCI, mesthi) nggunakake CRI-O ing CentOS 8 We pinanggih sawetara kangelan suntingan, kang, Nanging, kita kasil ngatasi. Aku bakal seneng bareng karo sampeyan instalasi lan konfigurasi instruksi, kang total bakal njupuk bab 10 menit.

Cara masang Kubernetes ing CentOS 8 nggunakake kerangka CRI-O

Prasyarat: ana paling ora siji host (2 intine, 4 GB RAM, paling ora 15 GB panyimpenan) kanthi diinstal CentOS 8 (profil instalasi "Server" dianjurake), uga entri kasebut ing DNS lokal (minangka pilihan pungkasan, sampeyan bisa entuk entri ing /etc/hosts). Lan aja lali mateni swap.

Kita nindakake kabeh operasi ing host minangka pangguna root, ati-ati.

  1. Ing langkah pisanan, kita bakal ngatur OS, nginstal lan ngatur dependensi awal kanggo CRI-O.
    • Ayo nganyari OS:
      dnf -y update
      

    • Sabanjure sampeyan kudu ngatur firewall lan SELinux. Ing kene kabeh gumantung ing lingkungan sing bakal ditindakake host utawa host kita. Sampeyan bisa nyetel firewall miturut rekomendasi saka dokumentasi, utawa, yen sampeyan ana ing jaringan dipercaya utawa nggunakake firewall pihak katelu, ganti zona gawan dadi dipercaya utawa mateni firewall:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      Kanggo mateni firewall sampeyan bisa nggunakake printah ing ngisor iki:

      systemctl disable --now firewalld
      

      SELinux kudu dipateni utawa dialihake menyang mode "permisif":

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

    • Muat modul lan paket kernel sing dibutuhake, atur ngisi otomatis modul "br_netfilter" nalika wiwitan sistem:
      modprobe overlay
      
      modprobe br_netfilter
      
      echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
      
      dnf -y install iproute-tc
      

    • Kanggo ngaktifake kiriman paket lan pangolahan lalu lintas sing bener, kita bakal nggawe setelan sing cocog:
      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
      

      aplikasi setelan sing digawe:

      sysctl --system

    • nyetel versi sing dibutuhake CRI-O (versi utama CRI-O, kaya sing wis kasebut, cocog karo versi sing dibutuhake Kubernetes), wiwit versi stabil paling anyar Kubernetes saiki 1.18:
      export REQUIRED_VERSION=1.18
      

      nambah repositori sing dibutuhake:

      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

    • saiki kita bisa nginstal CRI-O:
      dnf -y install cri-o
      

      Pay manungsa waΓ© menyang nuansa pisanan sing kita temokake nalika proses instalasi: sampeyan kudu ngowahi konfigurasi CRI-O sadurunge miwiti layanan, amarga komponen conmon sing dibutuhake nduweni lokasi sing beda tinimbang sing ditemtokake:

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

      Saiki sampeyan bisa ngaktifake lan miwiti daemon CRI-O:

      systemctl enable --now crio
      

      Sampeyan bisa mriksa status daemon:

      systemctl status crio
      

  2. Instalasi lan aktivasi Kubernetes.
    • Ayo nambah repositori sing dibutuhake:
      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
      

      Saiki kita bisa nginstal Kubernetes (versi 1.18, kaya kasebut ing ndhuwur):

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

    • Nuansa penting nomer loro: amarga kita ora nggunakake daemon docker, nanging kita nggunakake daemon CRI-O, sadurunge diluncurake lan wiwitan Kubernetes sampeyan kudu nggawe setelan sing cocog ing file konfigurasi /var/lib/kubelet/config.yaml, sawise nggawe direktori sing dikarepake:
      mkdir /var/lib/kubelet
      
      cat <<EOF > /var/lib/kubelet/config.yaml
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      cgroupDriver: systemd
      EOF

    • Titik penting katelu sing kita temokake sajrone instalasi: sanajan kasunyatane wis nuduhake driver sing digunakake cgroup, lan konfigurasi liwat argumen liwati kubelet wis ketinggalan jaman (kaya sing kasebut kanthi jelas ing dokumentasi), kita kudu nambah argumen menyang file kasebut, yen ora kluster kita ora bakal diinisialisasi:
      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

    • Saiki kita bisa ngaktifake daemon kubelet:
      sudo systemctl enable --now kubelet
      

      Kanggo ngatur pesawat kontrol utawa buruh kelenjar ing menit, sampeyan bisa nggunakake karo naskah iki.

  3. Iki wektu kanggo miwiti cluster kita.
    • Kanggo miwiti kluster, jalanake printah:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      Priksa manawa sampeyan nulis printah kanggo gabung karo klompok "kubeadm gabung ...", sing dijaluk sampeyan gunakake ing pungkasan output, utawa paling ora token sing ditemtokake.

    • Ayo nginstal plugin (CNI) kanggo jaringan Pod. Aku nyaranake nggunakake Calico. Bisa uga luwih populer Flannel duwe masalah kompatibilitas karo nftables, iya lan Calico - mung implementasine CNI dianjurake lan kebak dites dening project Kubernetes:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • Kanggo nyambungake simpul buruh menyang kluster, sampeyan kudu ngatur miturut pandhuan 1 lan 2, utawa gunakake naskah, banjur jalanake printah saka output "kubeadm init ..." sing ditulis ing langkah sadurunge:
      kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN 
          --discovery-token-ca-cert-hash $TOKEN_HASH

    • Ayo priksa manawa kluster wis diwiwiti lan wiwit digunakake:
      kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
      

    siyap! Sampeyan wis bisa dadi host payloads ing kluster K8s.

Apa sing nunggu kita ing ngarep

Muga-muga pandhuan ing ndhuwur mbantu ngirit wektu lan saraf.
Asil pangolahan sing kedadeyan ing industri asring gumantung carane ditampa dening akeh pangguna pungkasan lan pangembang piranti lunak liyane ing ceruk sing cocog. Durung jelas apa sing bakal ditindakake dening inisiatif OCI sajrone sawetara taun, nanging kita bakal nonton kanthi seneng. Sampeyan bisa nuduhake pendapat sampeyan saiki ing komentar.

Tetep dirungokake!

Artikel iki muncul amarga sumber ing ngisor iki:



Source: www.habr.com

Add a comment