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

ولې ډاکر په 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 и کوبنیټس د ورته خوشې کیدو او ملاتړ دورې ته غاړه کیږدئ (د مطابقت میټریکس خورا ساده دی: لوی نسخې کوبنیټس и 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 کې د ننوتلو سره ترلاسه کړئ). او مه هېروئ .
موږ ټول عملیات په کوربه کې د روټ کارونکي په توګه ترسره کوو، محتاط اوسئ.
- په لومړي ګام کې، موږ به OS تنظیم کړو، د CRI-O لپاره لومړني انحصارونه نصب او تنظیم کړو.
- راځئ چې OS تازه کړو:
dnf -y update
- بیا تاسو اړتیا لرئ د فایر وال او SELinux تنظیم کړئ. دلته هرڅه په چاپیریال پورې اړه لري په کوم کې چې زموږ کوربه یا کوربه به کار وکړي. تاسو کولی شئ د سپارښتنو سره سم د اور وژنې وال تنظیم کړئ ، یا، که تاسو په یوه باوري شبکه کې یاست یا د دریمې ډلې فایروال کاروئ، د ډیفالټ زون په باور بدل کړئ یا فایر وال بند کړئ:
firewall-cmd --set-default-zone trusted firewall-cmd --reloadد فایر وال بندولو لپاره تاسو کولی شئ لاندې کمانډ وکاروئ:
systemctl disable --now firewalldSELinux باید بند شي یا "اجازې" حالت ته لاړ شي:
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
- راځئ چې OS تازه کړو:
- نصب او فعالول کوبنیټس.
- راځئ چې اړین ذخیره اضافه کړو:
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د دودولو لپاره کنټرول الوتکه او یا کارګر نوډونه په دقیقو کې، تاسو کولی شئ وکاروئ .
- راځئ چې اړین ذخیره اضافه کړو:
- دا زموږ د کلستر د پیل کولو وخت دی.
- د کلستر د پیل کولو لپاره، کمانډ چل کړئ:
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 نوښتونه به په څو کلونو کې څه لامل شي ، مګر موږ به په خوښۍ سره ګورو. تاسو کولی شئ همدا اوس خپل نظر په نظرونو کې شریک کړئ.
پاتې شه!
دا مقاله د لاندې سرچینو څخه مننه ښکاره شوه:
- د کانټینر چلولو وختونو په اړه برخه
- په انټرنیټ کې د CRI-O پروژه
- د Red Hat بلاګ مقالې: , او ډیری نور
سرچینه: www.habr.com
