குபெர்னெட்டஸின் இயக்க நேர சூழலாக டோக்கருக்கு மாற்றாக CRI-O: CentOS 8 இல் அமைவு

வணக்கம்! என் பெயர் செர்ஜி, நான் சர்ஃபில் டெவொப்ஸ். சர்ஃபில் உள்ள DevOps துறையானது நிபுணர்களிடையே தொடர்புகளை ஏற்படுத்துவது மற்றும் பணி செயல்முறைகளை ஒருங்கிணைப்பது மட்டுமல்லாமல், அதன் சொந்த உள்கட்டமைப்பு மற்றும் வாடிக்கையாளரின் உள்கட்டமைப்பு ஆகிய இரண்டிலும் தற்போதைய தொழில்நுட்பங்களை தீவிரமாக ஆராய்ச்சி செய்து செயல்படுத்துவதையும் நோக்கமாகக் கொண்டுள்ளது.

விநியோகத்தைப் படிக்கும்போது நாங்கள் சந்தித்த கொள்கலன்களுக்கான தொழில்நுட்ப அடுக்கில் ஏற்பட்ட மாற்றங்களைப் பற்றி கீழே பேசுவேன் CentOS 8 மற்றும் அது என்ன என்பது பற்றி CRI-O மற்றும் எப்படி விரைவாக இயங்கக்கூடிய சூழலை அமைப்பது Kubernetes.

குபெர்னெட்டஸின் இயக்க நேர சூழலாக டோக்கருக்கு மாற்றாக CRI-O: CentOS 8 இல் அமைவு

ஏன் டோக்கர் CentOS 8 இல் சேர்க்கப்படவில்லை?

சமீபத்திய முக்கிய வெளியீடுகளை நிறுவிய பின் RHEL 8 அல்லது CentOS 8 யாரும் கவனிக்காமல் இருக்க முடியாது: இந்த விநியோகங்கள் மற்றும் அதிகாரப்பூர்வ களஞ்சியங்களில் பயன்பாடு இல்லை கூலியாள், இது கருத்தியல் ரீதியாகவும் செயல்பாட்டு ரீதியாகவும் தொகுப்புகளை மாற்றுகிறது போட்மேன், பில்டா (இயல்புநிலையாக விநியோகத்தில் உள்ளது) மற்றும் CRI-O. திறந்த கொள்கலன் முன்முயற்சி (OCI) திட்டத்தின் ஒரு பகுதியாக Red Hat ஆல் உருவாக்கப்பட்ட தரநிலைகளின் நடைமுறைச் செயலாக்கம் இதற்குக் காரணம்.

லினக்ஸ் அறக்கட்டளையின் ஒரு பகுதியாக இருக்கும் OCI இன் குறிக்கோள், ஒரே நேரத்தில் பல சிக்கல்களைத் தீர்க்கும் கொள்கலன் வடிவங்கள் மற்றும் இயக்க நேரங்களுக்கான திறந்த தொழில் தரநிலைகளை உருவாக்குவதாகும். முதலாவதாக, அவை லினக்ஸின் தத்துவத்திற்கு முரணாக இல்லை (உதாரணமாக, ஒவ்வொரு நிரலும் ஒரு செயலைச் செய்ய வேண்டும், மற்றும் கூலியாள் இது ஒரு வகையான ஆல்-இன்-ஒன் கூட்டு). இரண்டாவதாக, மென்பொருளில் இருக்கும் அனைத்து குறைபாடுகளையும் அவர்கள் நீக்க முடியும் கூலியாள். மூன்றாவதாக, கன்டெய்னரைஸ் செய்யப்பட்ட அப்ளிகேஷன்களை (உதாரணமாக, Red Hat OpenShift) வரிசைப்படுத்துதல், நிர்வகித்தல் மற்றும் வழங்குவதற்கான முன்னணி வணிகத் தளங்களின் வணிகத் தேவைகளுடன் அவை முழுமையாக இணக்கமாக இருக்கும்.

குறைபாடுகளை கூலியாள் மற்றும் புதிய மென்பொருளின் நன்மைகள் ஏற்கனவே சில விவரங்களில் விவரிக்கப்பட்டுள்ளன இந்த கட்டுரையில், மற்றும் OCI திட்டத்தில் வழங்கப்படும் முழு மென்பொருள் அடுக்கின் விரிவான விளக்கம் மற்றும் அதன் கட்டடக்கலை அம்சங்களை அதிகாரப்பூர்வ ஆவணங்கள் மற்றும் Red Hat இன் கட்டுரைகளில் காணலாம் (மோசமாக இல்லை கட்டுரை Red Hat வலைப்பதிவில்) மற்றும் மூன்றாம் தரப்பில் விமர்சனங்கள்.

முன்மொழியப்பட்ட அடுக்கின் கூறுகள் என்ன செயல்பாடுகளைக் கொண்டுள்ளன என்பதைக் கவனிக்க வேண்டியது அவசியம்:

  • போட்மேன் - ரன்சி செயல்முறை மூலம் கொள்கலன்கள் மற்றும் பட சேமிப்பகத்துடன் நேரடி தொடர்பு;
  • பில்டா - அசெம்பிளி மற்றும் பதிவேட்டில் படங்களை பதிவேற்றுதல்;
  • CRI-O - கொள்கலன் ஆர்கெஸ்ட்ரேஷன் அமைப்புகளுக்கான இயங்கக்கூடிய சூழல் (உதாரணமாக, குபெர்னெட்ஸ்).

அடுக்கின் கூறுகளுக்கிடையேயான தொடர்புகளின் பொதுவான திட்டத்தைப் புரிந்து கொள்ள, இங்கே இணைப்பு வரைபடத்தை வழங்குவது நல்லது என்று நான் நினைக்கிறேன். Kubernetes c ரன்சி மற்றும் குறைந்த அளவிலான நூலகங்களைப் பயன்படுத்துகிறது CRI-O:

குபெர்னெட்டஸின் இயக்க நேர சூழலாக டோக்கருக்கு மாற்றாக CRI-O: CentOS 8 இல் அமைவு

CRI-O и Kubernetes அதே வெளியீடு மற்றும் ஆதரவு சுழற்சியை கடைபிடிக்கவும் (இணக்க அணி மிகவும் எளிமையானது: முக்கிய பதிப்புகள் Kubernetes и CRI-O ஒத்துப்போகும்), மேலும் இது, டெவலப்பர்களால் இந்த அடுக்கின் செயல்பாட்டின் முழுமையான மற்றும் விரிவான சோதனையில் கவனம் செலுத்துவதன் மூலம், எந்தவொரு பயன்பாட்டு சூழ்நிலையிலும் செயல்பாட்டில் அதிகபட்ச அடையக்கூடிய நிலைத்தன்மையை எதிர்பார்க்கும் உரிமையை எங்களுக்கு வழங்குகிறது (உறவினர் லேசான தன்மையும் இங்கே நன்மை பயக்கும். CRI-O ஒப்பிடும்போது கூலியாள் செயல்பாட்டின் நோக்கத்துடன் வரம்பு காரணமாக).

நிறுவும் போது Kubernetes "சரியான வழி" வழி (OCI படி, நிச்சயமாக) பயன்படுத்தி CRI-O மீது CentOS 8 நாங்கள் சில சிறிய சிரமங்களை எதிர்கொண்டோம், இருப்பினும், நாங்கள் வெற்றிகரமாக சமாளித்தோம். நிறுவல் மற்றும் உள்ளமைவு வழிமுறைகளை உங்களுடன் பகிர்ந்து கொள்வதில் மகிழ்ச்சி அடைவேன், இது மொத்தம் 10 நிமிடங்கள் எடுக்கும்.

CRI-O கட்டமைப்பைப் பயன்படுத்தி CentOS 8 இல் Kubernetes ஐ எவ்வாறு பயன்படுத்துவது

முன்நிபந்தனைகள்: நிறுவப்பட்ட நிலையில் குறைந்தது ஒரு ஹோஸ்ட் (2 கோர்கள், 4 ஜிபி ரேம், குறைந்தது 15 ஜிபி சேமிப்பு) இருப்பது CentOS 8 (“சர்வர்” நிறுவல் சுயவிவரம் பரிந்துரைக்கப்படுகிறது), அத்துடன் உள்ளூர் DNS இல் உள்ளீடுகள் (கடைசி முயற்சியாக, நீங்கள் /etc/hosts இல் உள்ளீடு மூலம் பெறலாம்). மற்றும் மறக்க வேண்டாம் இடமாற்று முடக்கு.

ரூட் பயனராக ஹோஸ்டில் அனைத்து செயல்பாடுகளையும் செய்கிறோம், கவனமாக இருக்கவும்.

  1. முதல் கட்டத்தில், நாங்கள் OS ஐ உள்ளமைப்போம், CRI-O க்கான பூர்வாங்க சார்புகளை நிறுவி கட்டமைப்போம்.
    • OS ஐ புதுப்பிப்போம்:
      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, ஏற்கனவே குறிப்பிட்டுள்ளபடி, தேவையான பதிப்பைப் பொருத்தவும் Kubernetes), சமீபத்திய நிலையான பதிப்பிலிருந்து Kubernetes தற்போது 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. நிறுவல் மற்றும் செயல்படுத்துதல் Kubernetes.
    • தேவையான களஞ்சியத்தைச் சேர்ப்போம்:
      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
      

      இப்போது நாம் நிறுவலாம் Kubernetes (பதிப்பு 1.18, மேலே குறிப்பிட்டுள்ளபடி):

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

    • இரண்டாவது முக்கியமான நுணுக்கம்: நாங்கள் டீமானைப் பயன்படுத்தாததால் கூலியாள், ஆனால் நாங்கள் டெமானைப் பயன்படுத்துகிறோம் CRI-O, துவக்கம் மற்றும் துவக்கத்திற்கு முன் Kubernetes முதலில் விரும்பிய கோப்பகத்தை உருவாக்கிய பிறகு, /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) நிறுவுவோம். பயன்படுத்த பரிந்துரைக்கிறேன் காலிகோ. ஒருவேளை மிகவும் பிரபலமானது flannel உடன் பொருந்தக்கூடிய சிக்கல்கள் உள்ளன nftables, மற்றும் காலிகோ - திட்டத்தால் பரிந்துரைக்கப்பட்ட மற்றும் முழுமையாக சோதிக்கப்பட்ட ஒரே CNI செயல்படுத்தல் Kubernetes:
      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

கருத்தைச் சேர்