Kubernetes සඳහා ක්‍රියාත්මක කළ හැකි පරිසරයක් ලෙස Docker වෙනුවට CRI-O: CentOS 8 මත පිහිටුවීම

ආයුබෝවන්! මගේ නම සර්ජි, මම සර්ෆ් හි DevOps. Surf හි DevOps දෙපාර්තමේන්තුව අරමුණු කරන්නේ විශේෂඥයින් අතර අන්තර්ක්‍රියා ඇති කිරීම සහ වැඩ ක්‍රියාවලීන් ඒකාබද්ධ කිරීම පමණක් නොව, එහි යටිතල පහසුකම් සහ පාරිභෝගික යටිතල පහසුකම් යන දෙකෙහිම වත්මන් තාක්ෂණයන් ක්‍රියාකාරීව පර්යේෂණ කිරීම සහ ක්‍රියාත්මක කිරීම ය.

බෙදාහැරීම අධ්‍යයනය කිරීමේදී අපට හමු වූ බහාලුම් සඳහා තාක්‍ෂණ තොගයේ වෙනස්කම් ගැන මම පහතින් ටිකක් කතා කරමි CentOS 8 සහ එය කුමක්ද යන්න ගැන CRI-O සහ ක්‍රියාත්මක කළ හැකි පරිසරයක් ඉක්මනින් සකසන්නේ කෙසේද කුබර්නෙට්ස්.

Kubernetes සඳහා ක්‍රියාත්මක කළ හැකි පරිසරයක් ලෙස Docker වෙනුවට CRI-O: CentOS 8 මත පිහිටුවීම

CentOS 8 හි Docker ඇතුළත් නොකරන්නේ ඇයි?

නවතම ප්රධාන නිකුතු ස්ථාපනය කිරීමෙන් පසුව RHEL 8 හෝ CentOS 8 කෙනෙකුට නොදැකිය නොහැක: මෙම බෙදාහැරීම් සහ නිල ගබඩාවල යෙදුම අඩංගු නොවේ Docker, මතවාදීව සහ ක්‍රියාකාරීව පැකේජ ප්‍රතිස්ථාපනය කරන පොඩ්මන්, බිල්ඩා (පෙරනිමියෙන් බෙදාහැරීමේ දී) සහ CRI-O. විවෘත බහාලුම් මුලපිරීමේ (OCI) ව්‍යාපෘතියේ කොටසක් ලෙස Red Hat විසින් සකස් කරන ලද අනෙකුත් දේවල් අතර ප්‍රමිතීන් ප්‍රායෝගිකව ක්‍රියාත්මක කිරීම මෙයට හේතු වේ.

ලිනක්ස් පදනමේ කොටසක් වන OCI හි අරමුණ වන්නේ එකවර ගැටළු කිහිපයක් විසඳන බහාලුම් ආකෘති සහ ධාවන කාල සඳහා විවෘත කර්මාන්ත ප්‍රමිතීන් නිර්මාණය කිරීමයි. පළමුවෙන්ම, ඒවා ලිනක්ස් හි දර්ශනයට පටහැනි නොවීය (උදාහරණයක් ලෙස, එක් එක් වැඩසටහන එක් ක්‍රියාවක් කළ යුතු කොටසෙහි, සහ Docker යනු සියල්ලෙන් එක සංයෝජනයකි). දෙවනුව, ඔවුන්ට මෘදුකාංගයේ පවතින සියලුම අඩුපාඩු ඉවත් කළ හැකිය Docker. තෙවනුව, ඒවා බහාලුම් යෙදුම් යෙදවීම, කළමනාකරණය කිරීම සහ සේවා සැපයීම සඳහා ප්‍රමුඛ වාණිජ වේදිකාවල ව්‍යාපාරික අවශ්‍යතා සමඟ සම්පුර්ණයෙන්ම අනුකූල වේ (උදාහරණයක් ලෙස, Red Hat OpenShift).

අඩුපාඩු Docker සහ නව මෘදුකාංගයේ වාසි දැනටමත් විස්තරාත්මකව විස්තර කර ඇත මේ ලිපිය කියවන්න, සහ OCI ව්‍යාපෘතිය තුළ ඉදිරිපත් කර ඇති සම්පූර්ණ මෘදුකාංග තොගයේ සවිස්තරාත්මක විස්තරයක් සහ එහි වාස්තුවිද්‍යාත්මක ලක්ෂණ Red Hat වෙතින්ම නිල ලියකියවිලි සහ ලිපි වලින් සොයාගත හැකිය (නරක නොවේ. ලිපියක් Red Hat බ්ලොග් එකේ) සහ තෙවන පාර්ශවයේ සමාලෝචන.

යෝජිත තොගයේ සංරචකවල ක්‍රියාකාරීත්වය කුමක්දැයි සැලකිල්ලට ගැනීම වැදගත්ය:

  • පොඩ්මන් - runC ක්‍රියාවලිය හරහා බහාලුම් සහ රූප ගබඩා කිරීම සමඟ සෘජු අන්තර්ක්‍රියා;
  • බිල්ඩා - එකලස් කිරීම සහ රෙජිස්ට්රි වෙත පින්තූර උඩුගත කිරීම;
  • CRI-O - බහාලුම් වාද්‍ය වෘන්ද පද්ධති සඳහා ක්‍රියාත්මක කළ හැකි පරිසරයක් (උදාහරණයක් ලෙස, Kubernetes).

තොගයේ සංරචක අතර අන්තර්ක්‍රියා පිළිබඳ සාමාන්‍ය යෝජනා ක්‍රමය තේරුම් ගැනීමට, මෙහි සම්බන්ධතා රූප සටහනක් සැපයීම සුදුසු යැයි මම සිතමි. කුබර්නෙට්ස් c ධාවනයC සහ භාවිතා කරන පහත් මට්ටමේ පුස්තකාල CRI-O:

Kubernetes සඳහා ක්‍රියාත්මක කළ හැකි පරිසරයක් ලෙස Docker වෙනුවට CRI-O: CentOS 8 මත පිහිටුවීම

CRI-O и කුබර්නෙට්ස් එකම නිකුතුව සහ ආධාරක චක්‍රය පිළිපදින්න (අනුකූලතා අනුකෘතිය ඉතා සරල ය: ප්‍රධාන අනුවාද කුබර්නෙට්ස් и CRI-O සමපාත වේ), සහ මෙය, සංවර්ධකයින් විසින් මෙම තොගයේ ක්‍රියාකාරිත්වය පිළිබඳ සම්පූර්ණ හා සවිස්තරාත්මක පරීක්‍ෂණයක් කෙරෙහි අවධානය යොමු කිරීම සැලකිල්ලට ගනිමින්, ඕනෑම භාවිතයක් යටතේ ක්‍රියාත්මක කිරීමේදී උපරිම සාක්ෂාත් කරගත හැකි ස්ථාවරත්වය අපේක්ෂා කිරීමේ අයිතිය අපට ලබා දෙයි (සාපේක්ෂ සැහැල්ලු බව ද මෙහි ප්‍රයෝජනවත් වේ. CRI-O හා සසඳන විට Docker ක්‍රියාකාරීත්වයේ හිතාමතා සීමා කිරීම හේතුවෙන්).

ස්ථාපනය කරන විට කුබර්නෙට්ස් "හරි මාර්ගය" මාර්ගය (OCI අනුව, ඇත්ත වශයෙන්ම) භාවිතා කිරීම CRI-O මත CentOS 8 අපට සුළු දුෂ්කරතාවලට මුහුණ දීමට සිදු විය, කෙසේ වෙතත්, අපි එය සාර්ථකව ජය ​​ගත්තෙමු. ස්ථාපන සහ වින්‍යාස කිරීමේ උපදෙස් ඔබ සමඟ බෙදා ගැනීමට මම සතුටු වෙමි, එය සම්පුර්ණයෙන්ම විනාඩි 10 ක් පමණ ගත වේ.

CRI-O රාමුව භාවිතයෙන් CentOS 8 මත Kubernetes යෙදවිය යුතු ආකාරය

පූර්වාවශ්‍යතා: ස්ථාපනය කර ඇති අවම වශයෙන් එක් ධාරකයක් (cores 2, 4 GB RAM, අවම වශයෙන් 15 GB ගබඩා ඉඩ) තිබීම CentOS 8 (“සේවාදායක” ස්ථාපන පැතිකඩ නිර්දේශ කෙරේ), ඒ සඳහා දේශීය DNS හි ඇතුළත් කිරීම් (අවසාන විකල්පය ලෙස, ඔබට /etc/hosts හි ප්‍රවේශයකින් ලබා ගත හැක). හා අමතක කරන්න එපා හුවමාරුව අක්රිය කරන්න.

අපි මූල පරිශීලකයා ලෙස සත්කාරකයේ සියලුම මෙහෙයුම් සිදු කරන්නෙමු, ප්‍රවේශම් වන්න.

  1. පළමු පියවරේදී, අපි OS වින්‍යාස කරන්නෙමු, CRI-O සඳහා මූලික පරායත්තතා ස්ථාපනය කර වින්‍යාස කරන්නෙමු.
    • අපි මෙහෙයුම් පද්ධතිය යාවත්කාලීන කරමු:
      dnf -y update
      

    • මීළඟට ඔබ ෆයර්වෝල් සහ SELinux වින්‍යාසගත කළ යුතුය. මෙහිදී සෑම දෙයක්ම රඳා පවතින්නේ අපගේ සත්කාරක හෝ සත්කාරක සමාගම වැඩ කරන පරිසරය මත ය. වෙතින් නිර්දේශයන්ට අනුව ඔබට ෆයර්වෝලයක් සැකසිය හැක ලියකියවිලි, හෝ, ඔබ විශ්වාසදායක ජාලයක සිටී නම් හෝ තෙවන පාර්ශවීය ෆයර්වෝලයක් භාවිතා කරන්නේ නම්, පෙරනිමි කලාපය විශ්වාසදායක ලෙස වෙනස් කරන්න හෝ ෆයර්වෝලය අක්‍රිය කරන්න:
      firewall-cmd --set-default-zone trusted
      
      firewall-cmd --reload

      ෆයර්වෝලය අක්‍රිය කිරීමට ඔබට පහත විධානය භාවිතා කළ හැක:

      systemctl disable --now firewalld
      

      SELinux අක්‍රිය කිරීමට හෝ "අවසර" ප්‍රකාරයට මාරු කිරීමට අවශ්‍ය වේ:

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

    • අවශ්‍ය කර්නල් මොඩියුල සහ පැකේජ පූරණය කරන්න, පද්ධති ආරම්භයේදී “br_netfilter” මොඩියුලය ස්වයංක්‍රීයව පැටවීම වින්‍යාස කරන්න:
      modprobe overlay
      
      modprobe br_netfilter
      
      echo "br_netfilter" >> /etc/modules-load.d/br_netfilter.conf
      
      dnf -y install iproute-tc
      

    • පැකට් යොමු කිරීම සක්‍රිය කිරීමට සහ රථවාහන සැකසීම නිවැරදි කිරීමට, අපි සුදුසු සැකසුම් කරන්නෙමු:
      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
      

      සාදන ලද සැකසුම් යොදන්න:

      sysctl --system

    • අවශ්ය අනුවාදය සකසන්න CRI-O (ප්රධාන අනුවාදය CRI-O, දැනටමත් සඳහන් කර ඇති පරිදි, අවශ්ය අනුවාදයට ගැලපේ කුබර්නෙට්ස්), නවතම ස්ථාවර අනුවාදයේ සිට කුබර්නෙට්ස් දැනට 1.18:
      export REQUIRED_VERSION=1.18
      

      අවශ්‍ය ගබඩා එකතු කරන්න:

      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

    • දැන් අපට ස්ථාපනය කළ හැකිය CRI-O:
      dnf -y install cri-o
      

      ස්ථාපන ක්‍රියාවලියේදී අපට හමු වන පළමු සූක්ෂ්මතාවය කෙරෙහි අවධානය යොමු කරන්න: ඔබ වින්‍යාසය සංස්කරණය කළ යුතුය CRI-O සේවාව ආරම්භ කිරීමට පෙර, අවශ්‍ය පොදු සංරචකයට නිශ්චිත ස්ථානයට වඩා වෙනස් ස්ථානයක් ඇති බැවින්:

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

      දැන් ඔබට ඩීමන් සක්‍රිය කර ආරම්භ කළ හැක CRI-O:

      systemctl enable --now crio
      

      ඔබට ඩීමන් තත්ත්වය පරීක්ෂා කළ හැකිය:

      systemctl status crio
      

  2. ස්ථාපනය සහ සක්රිය කිරීම කුබර්නෙට්ස්.
    • අවශ්‍ය ගබඩාව එකතු කරමු:
      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
      

      දැන් අපට ස්ථාපනය කළ හැකිය කුබර්නෙට්ස් (අනුවාදය 1.18, ඉහත සඳහන් පරිදි):

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

    • දෙවන වැදගත් සූක්ෂ්මතාවය: අපි ඩීමන් භාවිතා නොකරන නිසා Docker, නමුත් අපි ඩීමන් භාවිතා කරමු CRI-O, දියත් කිරීමට සහ ආරම්භ කිරීමට පෙර කුබර්නෙට්ස් ඔබට අවශ්‍ය ඩිරෙක්ටරිය ප්‍රථමයෙන් සාදා ඇති /var/lib/kubelet/config.yaml වින්‍යාස ගොනුවේ සුදුසු සැකසුම් සිදු කළ යුතුය:
      mkdir /var/lib/kubelet
      
      cat <<EOF > /var/lib/kubelet/config.yaml
      apiVersion: kubelet.config.k8s.io/v1beta1
      kind: KubeletConfiguration
      cgroupDriver: systemd
      EOF

    • ස්ථාපනය කිරීමේදී අපට හමු වන තුන්වන වැදගත් කරුණ: භාවිතා කළ ධාවකය අප විසින් පෙන්වා දී ඇතත් cgroup, සහ සම්මත වූ තර්ක හරහා එහි වින්‍යාසය කුබෙලට් යල් පැන ගොස් ඇත (ලේඛනවල පැහැදිලිව දක්වා ඇති පරිදි), අපි ගොනුවට තර්ක එකතු කළ යුතුය, එසේ නොමැතිනම් අපගේ පොකුර ආරම්භ නොවේ:
      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

    • දැන් අපිට ඩීමන් එක ඇක්ටිව් කරන්න පුළුවන් කුබෙලට්:
      sudo systemctl enable --now kubelet
      

      අභිරුචිකරණය කිරීමට පාලන තලය හෝ කම්කරුවා මිනිත්තු කිහිපයකින් නෝඩ්, ඔබට භාවිතා කළ හැකිය මෙම පිටපත සමඟ.

  3. අපගේ පොකුර ආරම්භ කිරීමට කාලයයි.
    • පොකුර ආරම්භ කිරීම සඳහා, විධානය ක්‍රියාත්මක කරන්න:
      kubeadm init --pod-network-cidr=10.244.0.0/16
      

      ප්‍රතිදානය අවසානයේ භාවිතා කිරීමට ඔබෙන් ඉල්ලා සිටින "kubeadm join ..." පොකුරට සම්බන්ධ වීමට විධානය හෝ අවම වශයෙන් නිශ්චිත ටෝකන ලිවීමට වග බලා ගන්න.

    • Pod ජාලය සඳහා ප්ලගිනය (CNI) ස්ථාපනය කරමු. භාවිතා කිරීමට මම නිර්දේශ කරමි කැලිකෝ. සමහර විට වඩාත් ජනප්රියයි ෆ්ලැනෙල් සමඟ අනුකූලතා ගැටළු ඇත nftablesසහ ඔව් කැලිකෝ - ව්‍යාපෘතිය මගින් නිර්දේශිත සහ සම්පුර්ණයෙන්ම පරීක්‍ෂා කරන ලද එකම CNI ක්‍රියාත්මක කිරීම කුබර්නෙට්ස්:
      kubectl --kubeconfig /etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml 

    • අපගේ පොකුරට සේවක නෝඩයක් සම්බන්ධ කිරීමට, ඔබ එය උපදෙස් 1 සහ 2 අනුව වින්‍යාස කිරීම හෝ භාවිතා කිරීම අවශ්‍ය වේ ස්ක්‍රිප්ට්, ඉන්පසු අපි පෙර පියවරේදී ලියා ඇති “kubeadm init...” ප්‍රතිදානයෙන් විධානය ක්‍රියාත්මක කරන්න:
      kubeadm join $CONTROL_PLANE_ADDRESS:6443 --token $TOKEN 
          --discovery-token-ca-cert-hash $TOKEN_HASH

    • අපගේ පොකුර ආරම්භ කර ක්‍රියා කිරීම ආරම්භ කර ඇත්දැයි පරීක්ෂා කරමු:
      kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
      

    සූදානම්! ඔබට දැනටමත් ඔබේ K8s පොකුරේ ගෙවීම් භාර දිය හැක.

ඉදිරියෙන් අප බලා සිටින දේ

ඉහත උපදෙස් ඔබට යම් කාලයක් සහ ස්නායු ඉතිරි කර ගැනීමට උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි.
කර්මාන්තයේ සිදුවන ක්‍රියාවලීන්ගේ ප්‍රතිඵලය බොහෝ විට රඳා පවතින්නේ ඒවා අදාළ ස්ථානයේ සිටින අනෙකුත් මෘදුකාංගවල අවසාන පරිශීලකයින් සහ සංවර්ධකයින් විසින් පිළිගන්නා ආකාරය මතය. වසර කිහිපයකින් OCI මුලපිරීම් කුමක් කරා ගෙන යනු ඇත්ද යන්න තවමත් සම්පූර්ණයෙන් පැහැදිලි නැත, නමුත් අපි සතුටින් බලා සිටිමු. අදහස් දැක්වීමේදී ඔබට දැන් ඔබේ අදහස බෙදා ගත හැකිය.

සුසරව සිටින්න!

මෙම ලිපිය පහත සඳහන් මූලාශ්‍රවලට ස්තුතිවන්ත විය.



මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න