نصب Kubernetes روی اوبونتو از نوآورانه ترین فناوری هایی است که جهت استقرار، مقیاس گذاری و مدیریت برنامه ها بدون در نظر گرفتن پلتفرم زیربنایی استفاده می شود. Kubernetes یک برنامه متن باز و مدیریتی می باشد که توسط گوگل توسعه داده شده است و در حال حاضر زیر نظر CNCF به کارایی خود ادامه می دهد. تیم ما در این محتوای آموزشی تصمیم دارد دستورالعمل های گام به گام نحوه نصب Kubernetes در اوبونتو را در اختیار شما قرار دهد و تمام مراحل را به صورت ساده سازی شده و کاربردی ارائه دهد. برای اطلاعات بیشتر می توانید ما را همراهی نمایید.
فهرست مطالب
پیشنیازهای نصب Kubernetes در Ubuntu
- داشتن حداقل دو سرور برای اجرا اوبونتو 22.04
- دسترسی کامل به Command-line
- داشتن یک حساب کاربری با امتیاز Sudo
مراحل نصب Kubernetes روی اوبونتو
این راهنما تنها با دنبال کردن چند مرحله زیر به شما می آموزد که چگونه می توانید نصب Kubernetes روی اوبونتو را انجام دهید، اما به یاد داشته باشید که بدون رعایت پیشنیازهای ذکر شده ممکن است در مراحل نصب Kubernetes با مشکل رو به رو شوید:
مرحله اول: راه اندازی Docker
برای نصب Kubernetes در مراحل نصب Kubernetes روی اوبونتو، باید موتور کانتینری سازگار با CRI مانند Docker ،Containerd یا CRI-O داشته باشیم که در این راهنما از Docker کمک میگیریم. ابتدا لیست داکرها را بروز رسانی کنید:
sudo apt update
دستور زیر را برای نصب Docker وارد کنید:
sudo apt install docker.io -y
داکر با وارد کردن خط زیر فعال می شود:
sudo systemctl enable docker
خط بعدی می تواند نحوه کارکرد Docker را برای شما بررسی کند:
sudo systemctl status docker
اگر مشاهده کردید که Docker در حال حاضر کار نمی کند، دستور زیر را بکار ببرید:
sudo systemctl start docker
مرحله دوم: نصب Kubernetes
اکنون که به نصب Kubernetes در گام های نصب Kubernetes روی اوبونتو، رسیدیم برای افزودن مخزن Kubernetes به لیست منابع APT و نصب ابزارهای مربوطه مراحل زیر را دنبال کنید تا Kubernetes بر روی تمام Nodes ها نصب شود:
- امضا کلید Kubernetes
برای اطمینان از اینکه نرم افزار معتبری از Kubernetes را دانلود می کنید، باید Signing Key را دانلود کنید. فراموش نکنید که در هر Node باید از دستور Curl جهت دانلود کلید و ذخیره کردن آن کمک بگیرید که در این آموزش به صورت پیش فرض /etc/apt/keyrings/ در نظر گرفته شده است:
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
- اضافه کردن مخازن نرم افزار
Kubernetes به صورت پیش فرض در مخازن اوبونتو وجود ندارد، بنابراین باید دستور زیر را وارد کرد:
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
دستور بعدی را برای اطمینان حاصل کردن از بروز رسانی شدن تمام بسته ها اجرا کنید:
sudo apt update
- نصب ابزار Kubernetes
هر Deployment در نصب Kubernetes روی اوبونتو، از سه قسمت تشکیل شده است که در آن Kubeadm برای ردیابی سریع راهاندازی، Kubelet برای راه اندازی کانتینرها و Kubectl جهت تعامل با Nodes در نظر گرفته شده است. برای نصب همه این موارد دستورات ذکر شده را در هر Node اجرا کنید:
sudo apt install kubeadm kubelet kubectl
جهت پیشگیری کامل از نصب، ارتقا یا حذف خودکار بسته های مورد نظر در نصب Kubernetes روی اوبونتو، را با دستور زیر علامت گذاری کنید:
sudo apt-mark hold kubeadm kubelet kubectl
خروجی دستور بالا اطلاعات Basic Deployment را به شما نشان خواهد داد.
مرحله سوم: Deploy کردن Kubernetes
برای استقرار و یا به اصطلاح Deploy کردن باید با دنبال نمودن مراحل زیر ابتدا تنظیمات را وارد کرده و Cluster را مقدار دهی کنید تا بتوانید به Worker Node متصل شوید:
- مستقر کردن Kubernetes
از دستور Swapoff برای غیر فعال کردن تمام فضاهای Swap استفاده کنید:
sudo swapoff -a
در فایل /etc/fstab با دستور SED تنظیمات لازم را انجام دهید:
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
برای بارگیری ماژول های کانتینر از باز کردن یک فایل پیکربندی Containerd در ویرایشگر متنی مانند Nano استفاده کنید:
sudo nano /etc/modules-load.d/containerd.conf
در ادامه دستورات زیر را به فایل اضافه کنید:
overlay br_netfilter
فایل نهایی را ذخیره کنید و برای اضافه کردن ماژول ها از دستور Modprobe استفاده نمایید:
sudo modprobe overlay sudo modprobe br_netfilter
با دستور زیر فایلی به نام Kubernetes.conf باز کنید تا پیکربندی شبکه Kubernetes را انجام دهید:
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1
پیکربندی را مجدد بارگیری کنید:
sudo sysctl --system
- تعیین نام هاست مخصوص برای هر Server Node
در ادامه مراحل نصب Kubernetes روی اوبونتو یک نام هاست برای Node اصلی تعیین کنید:
sudo hostnamectl set-hostname master-node
Hostname را برای اولین Worker Node تعیین کنید:
sudo hostnamectl set-hostname worker01
اکنون می توانید در صورت وجود Worker Node های اضافه از آن ها برای داشتن Hostname های منحصر بفرد استفاده کنید. همچنین قابلیت ویرایش کردن فایل میزبان در هر Node به کمک آدرس های IP را خواهید داشت:
در نهایت برنامه را مجدد راه اندازی کنید، زیرا این کار موجب ذخیره نهایی Hostname خواهد شد. سپس به مراحل بعدی در نصب Kubernetes روی اوبونتو بروید:
- راه اندازی Kubernetes در Master Node
اکنون که نام هاست را تنظیم کرده اید باید در قدم بعدی به Node بروید و مراحل اولیه سازی را در Kubernetes دنبال نمایید. برای این کار فایل Kubelet را در یک ویرایشگر متنی باز کنید:
sudo nano /etc/default/kubelet
دستور زیر را به فایل اضافه کنید و ادامه دهید:
KUBELET_EXTRA_ARGS="--cgroup-driver=cgroupfs"
تغییرات را ذخیره کنید و برای انجام دادن پیکربندی، Kubelet را دوباره راه اندازی کنید:
sudo systemctl daemon- reload & sudo systemctl restart kubelet
اکنون فایل پیکربندی Daemon Docker را باز کنید و دستور بعدی را به آن اضافه نمایید:
sudo nano /etc/docker/daemon.json
Configuration Block را اضافه کنید:
{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" }
برای ادامه مراحل نصب Kubernetes روی اوبونتو، مجدد پیکربندی را بارگیری کرده و Docker را مجدد راه اندازی کنید:
sudo systemctl daemon-reload & sudo systemctl restart docker
حال فایل پیکربندی در Kubeadm را باز کنید و از دستور زیر استفاده کنید:
sudo nano /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
دستور زیر را اضافه کرده و ادامه دهید:
Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
فایل را ذخیره کنید و Kubelet را دوباره راه اندازی کنید:
sudo systemctl daemon-reload & sudo systemctl restart kubelet
اکنون Cluster را با Typing مقدار دهی اولیه و یا به اصطلاح Initialize کنید:
sudo kubeadm init --control-plane-endpoint=master-node --upload-certs
دستوری که به عنوان یک فرمان Kubeadm Join در خروجی نمایش داده می شود را یادداشت کرده و از آن برای اتصال Worker Nodes به The Cluster استفاده کنید.
یک دایرکتوری برای Kubernetes Cluster ایجاد کنید:
mkdir -p $HOME/.kube
فایل پیکربندی شده را در دایرکتوری کپی کنید:
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
در ادامه نصب Kubernetes روی اوبونتو، دستور Chown را جهت تغییر مالکیت دایرکتوری به کاربر و Node فعلی اجرا کنید:
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- مستقر کردن شبکه Pod در Cluster
برای ایجاد هماهنگی بین Nodes در Cluster، باید بخش Flannel را به Node اصلی هدایت کنید که در نتیجه لازم دارید تا از Kubectl برای نصب Flannel کمک بگیرید:
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
Node را با وارد کردن دستور زیر پاک کنید و به نصب Kubernetes روی اوبونتو ادامه دهید:
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
- ملحق کردن Worker Node به Cluster
ابتدا باید با دستور بعدی AppArmor را متوقف و غیر فعال کنید:
sudo systemctl stop apparmor && sudo systemctl disable apparmor
مجدد کانتینر را به راه بیندازید:
sudo systemctl restart containerd.service
دستور Kubeadm join را از این مرحله بر روی Worker Nodes اعمال کنید:
sudo kubeadm join [master-node-ip]:6443 --token [token] --discovery-token-ca-cert-hash sha256:[hash]
مقدارهای [master-node-ip]، [token] و [hash] را با مقادیر خروجی فرمان در Kubeadm join جایگزین کنید:
kubectl get nodes
سخن آخر
در این عنوان به صورت تخصصی نصب Kubernetes روی اوبونتو را بررسی کردیم و توضیح دادیم که چگونه می توانید این نصب را به ساده ترین حالت انجام دهید. بنابراین اکنون پس از طی این مراحل باید نصب Kubernetes روی اوبونتو به درستی انجام پذیرد. از همراهی شما ممنونیم و امیدواریم تجربه خوبی از نصب Kubernetes روی اوبونتو داشته باشید.