CRI-O د کوبرنیټس لپاره د چلولو چاپیریال په توګه د ډاکر بدیل په توګه: په CentOS 8 کې تنظیم کول

سلام! زما نوم سرګي دی، زه په سرف کې DevOps یم. په سرف کې د DevOps ډیپارټمنټ هدف نه یوازې د متخصصینو ترمینځ متقابل عمل رامینځته کول او د کار پروسې مدغم کول دي ، بلکه په فعاله توګه د اوسني ټیکنالوژیو څیړنه او پلي کول دواړه په خپل زیربنا او د پیرودونکي زیربنا کې.

لاندې به زه د کانټینرونو لپاره د ټیکنالوژۍ سټیک کې د بدلونونو په اړه لږ څه وغږیږم چې موږ د توزیع مطالعې پرمهال ورسره مخ شوي یو CentOS 8 او د څه شی په اړه CRI-O او څنګه ژر تر ژره د اجرا وړ چاپیریال تنظیم کړئ کوبنیټس.

CRI-O د کوبرنیټس لپاره د چلولو چاپیریال په توګه د ډاکر بدیل په توګه: په CentOS 8 کې تنظیم کول

ولې ډاکر په CentOS 8 کې شامل نه دی؟

د وروستي لوی ریلیز نصبولو وروسته RHEL 8 او یا CentOS 8 یو څوک مرسته نشي کولی مګر خبرتیا: دا توزیع او رسمي ذخیره غوښتنلیک نلري ډاکر، کوم چې په ایډیالوژیک او فعال ډول کڅوړې ځای په ځای کوي پوډمین, ودان (په توزیع کې د ډیفالټ لخوا شتون لري) او CRI-O. دا د خلاص کانټینر نوښت (OCI) پروژې برخې په توګه د Red Hat لخوا د نورو شیانو په مینځ کې رامینځته شوي معیارونو عملي پلي کیدو له امله دی.

د OCI هدف، چې د لینکس بنسټ برخه ده، د کانټینر فارمیټونو او رن ټایمونو لپاره د خلاص صنعت معیارونه رامینځته کول دي چې په یوځل کې ډیری ستونزې حل کوي. لومړی، دوی د لینکس فلسفې سره مخالفت نه کوي (د بیلګې په توګه، په هغه برخه کې چې هر پروګرام باید یو عمل ترسره کړي، او ډاکر یو ډول ټول په یو ډول ترکیب دی). دوهم، دوی کولی شي په سافټویر کې ټولې شته نیمګړتیاوې له منځه یوسي ډاکر. دریم، دوی به د کانټینر شوي غوښتنلیکونو پلي کولو، اداره کولو او خدمت کولو لپاره د مخکښو سوداګریزو پلیټ فارمونو سوداګریز اړتیاوو سره په بشپړه توګه مطابقت ولري (د بیلګې په توګه، Red Hat OpenShift).

نيمګړتياوې ډاکر او د نوي سافټویر ګټې لا دمخه په تفصیل سره تشریح شوي دا مقاله، او د OCI پروژې دننه وړاندیز شوي د ټول سافټویر سټیک تفصيلي توضیحات او د دې معماري ب featuresې په رسمي اسنادو او پخپله د ریډ هټ مقالو کې موندل کیدی شي (خراب ندی مقاله په Red Hat بلاګ کې) او دریم اړخ بیاکتنې.

دا مهمه ده چې یادونه وکړو چې د وړاندیز شوي سټیک برخې کوم فعالیت لري:

  • پوډمین - د runC پروسې له لارې د کانټینرونو او عکس ذخیره کولو سره مستقیم تعامل؛
  • ودان - راجستر ته د عکسونو راټولول او پورته کول؛
  • CRI-O - د کانټینر آرکیسټریشن سیسټمونو لپاره د اجرا وړ چاپیریال (د مثال په توګه ، کوبرنیټس).

زه فکر کوم چې د سټیک اجزاو ترمینځ د متقابل عمل عمومي سکیم پوهیدو لپاره ، دا مشوره ورکول کیږي چې دلته د پیوستون ډیاګرام چمتو کړئ کوبنیټس c runC او د ټیټې کچې کتابتونونه کارول CRI-O:

CRI-O د کوبرنیټس لپاره د چلولو چاپیریال په توګه د ډاکر بدیل په توګه: په CentOS 8 کې تنظیم کول

CRI-O и کوبنیټس د ورته خوشې کیدو او ملاتړ دورې ته غاړه کیږدئ (د مطابقت میټریکس خورا ساده دی: لوی نسخې کوبنیټس и CRI-O همغږي)، او دا، د پراختیا کونکو لخوا د دې سټیک د عملیاتو بشپړ او هراړخیز ازموینې تمرکز په پام کې نیولو سره، موږ ته دا حق راکوي چې د هرې کارونې سناریوګانو لاندې په عملیاتو کې د اعظمي لاسته راوړنې ثبات تمه وکړو (نسباتي روښانتیا هم دلته ګټوره ده. CRI-O سره پرتله کول ډاکر د فعالیت د هدفي محدودیت له امله).

کله چې نصب کول کوبنیټس "سمه لار" لاره (د OCI په وینا، البته) کارول CRI-O په CentOS 8 موږ له ځینو کوچنیو ستونزو سره مخ شو، خو په بریالیتوب سره مو بریالي شول. زه به خوشحاله شم چې تاسو سره د نصب کولو او ترتیب کولو لارښوونې شریک کړم، کوم چې په مجموع کې به شاوخوا 10 دقیقې وخت ونیسي.

د CRI-O چوکاټ په کارولو سره په CentOS 8 کې Kubernetes ګمارلو څرنګوالی

شرطونه: لږترلږه د یو کوربه شتون (2 کور، 4 GB رام، لږترلږه 15 GB ذخیره کولو ځای) نصب سره 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لکه څنګه چې مخکې یادونه وشوه، د اړتیا وړ نسخه سره سمون خوري کوبنیټس)، د وروستي باثباته نسخې راهیسې کوبنیټس اوس مهال 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

    • دوهم مهم ټکی: ځکه چې موږ ډیمون نه کاروو ډاکر، مګر موږ ډیمون کاروو 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 …"، کوم چې تاسو څخه غوښتل شوي چې د محصول په پای کې وکاروئ، یا لږترلږه ټاکل شوي ټکيونه.

    • راځئ چې د پوډ شبکې لپاره پلگ ان (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

Add a comment