Filter by دسته‌ها
chatGTP
ابزارهای هوش مصنوعی
اخبار
گزارش
تیتر یک
چندرسانه ای
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
دانش روز
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
رویدادها
جیتکس
کاربردهای هوش مصنوعی
کتابخانه
اشخاص
شرکت‌های هوش مصنوعی
محصولات و مدل‌های هوش مصنوعی
مفاهیم
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
مقاله
 کوبرنتیس چیست؟

کوبرنتیس چیست؟

زمان مطالعه: 4 دقیقه

نسخه‌های متعددی از «کوبرنتیس» پیش‌پیکربندی شده وجود دارد که از جمله مهم‌ترینِ آنها می‌توان به «Minikube» و «Microk8s» اشاره کرد. مقاله حاضر بر آن است تا فرایند نصب و راه‌اندازی را از ابتدا توضیح دهد و جزئیات بیشتری را در اختیار خوانندگان قرار دهد.

کوبرنتیس یکپارچه نیست و اجزای متعددی کنار هم کار می‌کنند تا به هدف مورد نظر برسند. بسیاری از جنبه‌های آن تا حدی به جادو شبیه است. در این مقاله به بررسی این جنبه‌ها خواهیم پرداخت.

کوبرنتیس

برای اینکه گام به گام در این مقاله پیش برویم، ضروری است به VM توجه داشته باشید. این مورد در بخش‌های بعدی بیشتر توضیح داده خواهد شد. باید اطلاعات پیشرفته‌ای هم در خصوص لینوکس، خط فرمان لینوکس و شبکه داشته باشید. همچنین توصیه می‌کنیم بسیار صبور باشید. در آغاز کار، می‌خواهیم جزئیات یک VM را با Ubuntu 18.04، دو vCPU، حافظه 4G و 50 گیگ هارد توضیح دهیم. ما از KVM استفاده میکنیم.

[irp posts=”8179″]

مراحل زیر را برای راه‌اندازیِ آن در هاستِ اصلی طی کردیم:ماشین مجازیِ ما «kubel» نام دارد. تغییراتی که در این ماشین ایجاد کردیم، به این صورت است: RAM به 4096، اندازه دیسک به 50 و Vcpu به 2 تغییر پیدا کرد. باید از نصبِ سرور OpenSSH اطمینان حاصل کنید.

با پایان این کار و برخورداری از آدرس IP، می‌توانید آن را به فایل /etc/hosts اضافه کنید تا با نام خودش به آن دسترسی داشته باشید. اگر می‌خواهید اطلاعات بیشتری درباره KVM و چگونگی نصب آن بدست آورید، می‌توانید به این مقاله مراجعه کنید: «Playing with VMs and Kubernetes».

در این مقاله به هاستی که KVM رو آن نصب شده است میزبان اصلی نامیده میشود و هاستی که از آن جهت توسعه برنامه استفاده میشود (که می‌توان یک لپ تاپ یا PC باشد) رایانه محلی نامیده میشود. اگر از ماشین مجازی ابری استفاده می‌کنید، میزبان اصلی نخواهید داشت.

در چنین مواردی باید بدانید چه اقدامی در پانل کنترل ابری یا خط فرمانِ رایانه محلی لازم است تا به صورت یک میزبان اصلی عمل کند (مثل فرمان gloud در پلتفرم ابری گوگل). اولین چیزی که به آن نیاز است، فرمان‌های kubeadm/kubectl/kubelet  است. جهت راهنمای نصب از official installation (نصب رسمی) استفاده می‌کنیم اما برای Ubuntu 18.04 VM. برای اینکه ماشین مجازی خود را برای نصب آماده کنید، در ابتدا باید از خاموش بودنِ سوآپ (swap) مطمئن شوید.

 

ls / # make sure your swapfile is called swapfile

sudo swapoff -v /swapfile

sudo vi /etc/fstab # remove the line for the swapfile

sudo rm /swapfile

 

اگر می‌خواهید بیش از یک گره بسازید، باید مطمئن شوید که ماشین‌های مجازی‌تان با آدرس‌های منحصربفرد MAC و محصول UUID ساخته شده‌اند. KVM این کار را برای شما انجام میدهد. احتمالاً اکثر ماشین‌های مجازی منحصربفرد خواهند بود، مگر اینکه ماشین مجازی فعلی را کلون کنید. در اقدام بعدی، باید پل‌ها و overlyها را با افزودن چند خط به فایل /etc/modules-load.d/modules.conf  فعال کنید.

 

overlay
br_netfilter

 

چند خط دیگر به فایل /etc/sysctl.conf  اضافه کنید:

 

# added for kubernetes bridge
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1

 

سپس، ماشین مجازی‌تان را مجدداً بوت کنید. باید این ماشین مجازی جدید هیچ قاعده iptables نداشته باشد. برای بررسی این موضوع می‌توانید از فرمان sudo iptables -L  استفاده کنید.

 

Chain INPUT (policy ACCEPT)
target     prot opt source               destinationChain FORWARD (policy ACCEPT)
target     prot opt source               destinationChain OUTPUT (policy ACCEPT)
target     prot opt source               destination

 

اگر قدری دلهره دارید، می‌توانید پورت‌ها را فقط به موارد لیست‌شده در «نصب رسمی» محدود کنید، اما این کار مثل پا گذاشتن روی مین است. چون کوبرنتیس یک سیستم هماهنگی کانتینر است، به سیستم کانتینری احتیاج داریم که بتواند کار هماهنگی و مدیریت را به خوبی انجام دهد. می‌توانید از چند سیستم کانتینر استفاده کنید، اما در مقاله حاضر از containerd استفاده می‌شود. برای نصب آن در Ubuntu 18.04 اجرای دو خط زیر کافی است:

 

sudo apt-get update
sudo apt-get install containerd

 

باید نتیجۀ زیر به دست آید:

 

/var/run/containerd/containerd.sock.

 

حالا می‌توانید kubeadm/kubectl/kubelet را نصب کنید:

 

sudo apt-get update && sudo apt-get install -y apt-transport-https curl gnupg2

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list

deb https://apt.kubernetes.io/ kubernetes-xenial main

EOF

sudo apt-get update

sudo apt-get install -y kubelet kubeadm kubectl

sudo apt-mark hold kubelet kubeadm kubectl

 

بسته kubeadm به عنوان API اصلی در کوبرنتیس استفاده می‌شود. در واقع بسته kubectl  یک رابط خط-فرمان در API کوبرنتیس است. بسته kubelet  با سیستم مدیریت کانتینر پیوند می‌خورَد تا پادها به اجرا درآیند. اکنون فرصت را غنیمت می‌شماریم تا نگاهی به واژه‌ها و اصطلاحات تخصصی در این بخش بپردازیم.

کل مجموعه در کوبرنتیس «cluster» یا خوشه نام دارد. هر خوشه می‌تواند یک یا چند گره داشته باشد. دو نوع گره با نام‌های «control-plane» و «worker» وجود دارد. فقط باید یک گره «control-plane» وجود داشته باشد. )البته می‌توانید از چند «control-plane» در سیستم HA استفاده کنید.

[irp posts=”14736″]

این گره «control-plane» همان چیزی است که در مقاله حاضر به بررسی‌اش می‌پردازیم. اگر گره‌های «worker» را بعدها اضافه کنیم، همه این مراحل باید تکرار شود. برای اینکه ببینیم آیا kubeadm  به constrained  که پیشتر نصب کردیم دسترسی دارد یا خیر، می‌توانیم sudo kubeadm config images pull  را اجرا کنیم. این بخش قدری نیاز به اندیشه دارد.

کوبرنتیس به رابط شبکه کانتینر یا CNI نیاز دارد تا همه پادها بتوانند با یکدیگر ارتباط داشته باشند. اما برای اینکه خوشه را راه‌اندازی کنیم، باید اطلاعاتی درباره چگونگیِ استفادۀ آن از CNI داشته باشیم.

بنابراین، باید سرانجام یک CNI انتخاب کنیم تا کار با آن ادامه پیدا کند چرا که CNI های مختلفی وجود دارد. ما Flannel انتخاب می‌کنیم. به صورت پیش فرض Flannel از CIDR های 10.244.0.0/16 استفاده می‌کند بنابراین از فرمان init استفاده کنیم. بیایید این فرایند را با هم امتحان کنیم و ببینیم چه نتیجه‌ای به دست می‌آید.

 

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

 

بله، کار با موفقیت به انجام رسید، اما  باید چند مرحله دیگر در خصوص یکی از گره‌ها طی کنیم. چند مرحله نیز در پایان فرمان init  وجود دارد که اهمیت زیادی دارد. اگر می‌خواهید گره‌های «worker» را در بخش‌های بعد ایجاد کنید، مطمئن شوید که فرمان join را کپی کرده باشید تا بعد به آن مراجعه کنید.

توکنی که فهرست‌بندی شد، تنها 24 ساعت دوام می‌آورد. پس اگر می‌خواهید گره تازه‌ای بعد از آن بسازید، باید توکن جدیدی با فرمان kubeadm token create  درست کنید.
حالا بیایید پیکربندی را در جایی قابل دسترس برای استفادۀ kubectl قرار دهیم.

 

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

این کار موجب ایجاد فایل پیکربندیِ پیش‌فرض خواهد شد که kubectl از آن استفاده می‌کند. سپس نیاز به اجرای kubectl config view  داریم. خروجیِ حاصل از فرمان init این پیام را به ما می‌دهد که باید CNIرا به کار ببریم. در پایانِ این کار، به پیکربندی مورد نیاز در GitHub دسترسی خواهیم داشت. اکنون نوبت به بکارگیری آن رسیده است:

kubectl apply -f

 

حالا ببینید که آیا این امکان وجود دارد همه چیز را با kubectl get all –all-namespaces  اجرا کنید یا خیر. باید فهرستی از مظنون‌های احتمالی درست کنید. فایل پیکربندی را به میزبان اصلی کپی کنید. در این صورت می‌توانید به خوشه جدیدتان دسترسی پیدا کنید. ما آن را در فایل ~/.kube/kube1config  کپی کرده و متغیر KUBECONFIG  را به کار خواهیم بست تا نیازی به ادغام با فایل‌های پیکربندیِ موجود نباشد.

 

اکنون، اجرایِ kubectl get all –all-namespaces  در میزبان اصلی باید فهرست یکسانی را حاصل آورد. حالا می‌خواهیم همه مراحل ذکر شده در این مقاله را تا kubeadm init  تکرار کنیم. پس از پایان این کار، ماشین مجازی جدیدی تحت عنوان «kube2» ایجاد شده و به نصب contianerd, kubeadm, kubectl  می‌پردازیم. به جای استفاده از فرمان kubeadm init ، از فرمان kubeadm join  که در kubeadm init ذخیره کردیم، استفاده می‌کنیم. حالا بیایید ببینیم چه نتیجه‌ای حاصل آمد:

 

NAME STATUS ROLES AGE VERSION
kube1 Ready master 73m v1.18.1
kube2 Ready <none> 65s v1.18.1

 

میانگین امتیاز / 5. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
[wpforms id="48325"]