کوبرنتیز یک پلتفرم متن باز برای هماهنگی و مدیریت خودکار برنامههای کاربردی کانتینری است. یادگیری کوبرنتیز برای توسعهی DevOps کارآمد بسیار مهم شده است، زیرا سازمانهای بیشتری به سمت میکروسرویسها حرکت میکنند و از کانتینرها برای استقرار و مدیریت برنامههای کاربردی استفاده میکنند. در این آموزش، نحوه نصب و راهاندازی کوبرنتیز (K8s) روی اوبونتو ۲۴.۰۴ را بررسی خواهیم کرد. با این حال، قبل از آن، بیایید نگاهی سریع به پیش نیازها بیندازیم.
پیش نیازهای نصب کوبرنتیز روی اوبونتو ۲۴.۰۴
قبل از شروع نصب، اطمینان حاصل کنید که موارد زیر را دارید:
- اوبونتو ۲۴.۰۴ LTS نصب و پیکربندی شده است.
- حداقل ۲ گیگابایت رم آزاد (۴ گیگابایت یا بیشتر توصیه میشود).
- یک حساب کاربری با دسترسی sudo یا sys admin.
- دسترسی به ترمینال یا کامند لاین .
نصب کوبر بر روی اوبونتو
مرحله ۱ : بهروزرسانی و ارتقاء سیستم
قبل از شروع فرآیند نصب، لازم است مخزن پکت های خود را بهروزرسانی کنید. برای بهروزرسانی لیست بستهها و ارتقاء تمام بستههای نصبشده، دستور زیر را اجرا کنید.
sudo apt update && sudo apt upgrade -y
مرحله ۲ : نصب داکر
بعد از بهروزرسانی پکت ها، اولین قدم نصب داکر است. داکر یک پلتفرم متنباز است که استقرار برنامههای کاربردی را درون کانتینرهای سبک و قابل حمل خودکار میکند.
داکر را با اجرای این دستور نصب کنید:
sudo apt install -y docker.io
اکنون برای تأیید صحت نصب داکر، دستور زیر را اجرا کنید تا اطلاعات ورژن کنونی را چاپ کند:
sudo docker --version
مرحله ۳ : نصب اجزای کوبرنتیز
اکنون مخزن پکت های مورد نیاز برای اجرای کوبرنتیز را اضافه کنید:
# 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
# curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key |
sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
اکنون که بستههای خود را به روز رسانی کردید حال باید kubeadm، kubelet و kubectl را روی هر نود نصب کنید:
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
ثابت نگه داشتن ورژن بستهها
بستهها را در نسخه فعلی خود ثابت نگه دارید تا از بهروزرسانی خودکار جلوگیری شود. این برای حفظ پایداری و سازگاری کلاستر کوبرنتیز بسیار مهم است.
sudo apt-mark hold kubelet kubeadm kubectl
مرحله ۴ : غیرفعال کردن Swap
پس از قفل کردن بستهها در نسخه فعلی خود، Swap را برای هر نود غیرفعال کنید. غیرفعال کردن Swap تضمین میکند که کوبرنتیز میتواند منابع را به طور موثر مدیریت و تخصیص دهد و محیطی پایدارتر و قابل پیشبینیتر برای اجرای برنامههای کاربردی کانتینری فراهم کند.
دستورات زیر را برای غیرفعال کردن Swap اجرا کنید:
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
مرحله ۵ : استارت کردن نود اصلی
حالا که سوآپ را غیرفعال کردید، از kubeadm برای آغازینهسازی پیکربندی کلاستر کوبرنتیز روی نود اصلی استفاده کنید.
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
این دستور یک کلاستر کوبرنتیز جدید ایجاد میکند و پیکربندی اولیه را انجام میدهد. خروجی این دستور شامل دستوری برای پیکربندی kubectl برای دسترسی به کلاستر خواهد بود.
پس از راهاندازی کلاستر کوبرنتیز، پیامی نمایش داده میشود تحت عنوان :
Your Kubernetes control-plane has initialized successfully!
دستورهای ذکر شده در پیام را برای افزودن نودهای کارگر به کلاستر اجرا کنید.
برای شروع به استفاده از کلاستر خود، باید موارد زیر را به عنوان یک یوزر معمولی اجرا کنید:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
به طور جایگزین، اگر کاربر root هستید، میتوانید دستور زیر را اجرا کنید:
export KUBECONFIG=/etc/kubernetes/admin.conf
اکنون باید یک شبکه پاد در کلاستر خود دیپلوی کنید از گزینه های فهرست شده در ادرس :
https://kubernetes.io/docs/concepts/cluster-administration/addons/
این دستور را اجرا کنید :
kubectl apply -f [podnetwork].yaml
سپس میتوانید با اجرای دستور زیر روی هر نود کارگر به عنوان root به کلاستر بپیوندید :
kubeadm join 178.162.175.86:6443 --token jrbntb.3bx09qa373n82fze \
--discovery-token-ca-cert-hash sha256:f5a5ac97236f1843b9296bd3026d503918ce96d3e940c343481592cd57edc0c9
توجه:
- در خروجی، آدرس IP و توکن برای پیوستن نودهای کارگر خاص به کلاستر هستند. در محیط خود از مقادیر واقعی استفاده کنید.
- دستور ذکر شده برای افزودن نودهای کارگر به کلاستر ضروری است. این دستور را روی هر نود کارگر که میخواهید به کلاستر متصل شود اجرا کنید.
مرحله ۶ : پیکربندی kubectl برای نود اصلی
در مرحله بعد، فایل kubeconfig را برای کاربر root ست کنید. با ست کردن فایل kubeconfig برای کاربر root، کاربران میتوانند اطمینان حاصل کنند که کاربر root دسترسی و مجوزهای لازم برای مدیریت موثر کوبرنتیز را دارد.
دستورات زیر را برای ایجاد دایرکتوریها و فایلهای لازم اجرا کنید:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
برای تأیید وضعیت کلاستر ، دستور زیر را اجرا کنید:
kubectl get nodes
خروجی باید عبارت Ready را نمایش دهد. در غیر این صورت، برای حل مشکل به مستندات کوبرنتیز مراجعه کنید. برخی از علل احتمالی شامل کمبود منابع، مشکلات kubelet و مشکلات اتصال شبکه هستند.
مرحله ۷ : نصب شبکه پاد
اکنون برای فعال کردن ارتباط بین پادها، یک شبکه پاد را دیپلوی کنید. این مرحلهای حیاتی است، زیرا نبود یک شبکه پاد مناسب میتواند عملکرد و قابلیت اطمینان کلاستر کوبرنتیز را به شدت محدود کند. برای راهاندازی شبکه بین چندین نود در کلاستز کوبرنتیز، توصیه میشود Flannel را دیپلوی کنید.
توجه: به دلیل مسائل امنیتی، توصیه نمیشود فایلهای YAML را مستقیماً از منابع آنلاین اعمال کنید.
راه حل جایگزین:
- فایل kube-flannel.yml را از مخزن رسمی گیتهاب دانلود کنید:
# curl -LO
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml &&
kubectl apply -f kube-flannel.yml
-
محتوای فایل دانلود شده را بررسی کنید تا از صحت آن مطمئن شوید.
-
پس از بررسی محتوا، با دستور زیر فایل را روی کلاستر اعمال کنید:
kubectl apply -f kube-flannel.yml
پس از استقرار شبکه پاد، اطمینان حاصل کنید که همه نودها فعال هستند.
kubectl get nodes
مرحله ۸ : اتصال نودهای کارگر
در مرحله بعد، اطمینان حاصل کنید که containerd روی هر دو نود اصلی و کارگر نصب شده است. در غیر این صورت، با اجرای دستور زیر آن را نصب کنید:
sudo apt install containerd -y
پس از نصب containerd، آن را روی هر دو نود اصلی و کارگر شروع و فعال کنید:
sudo systemctl start containerd
sudo systemctl enable containerd
در نهایت، وضعیت containerd را بررسی کنید:
sudo systemctl status containerd
اگر خروجی تولید شده فعال بود، شما با موفقیت containerd را فعال کردهاید.
توجه: برای اتصال نودهای کارگر به کلاستر ، از دستور زیر استفاده کنید (اطلاعات را با اطلاعات واقعی جایگزین کنید):
kubeadm join <master_node_ip>:6443 --token <token> --discovery-token-ca-cert-hash <hash>
اطلاعات لازم برای اتصال را میتوانید از خروجی دستور kubeadm init
روی نود اصلی پیدا کنید.
مرحله ۹ : فعال کردن مسیریابی IP
پس از فعالسازی موفقیتآمیز containerd، پارامتر ip_forward را روی نودهای اصلی و کارگر به ۱ تنظیم کنید :
sudo sysctl -w net.ipv4.ip_forward=1
این کار به بستهها اجازه میدهد تا بین نودها مسیریابی شوند و ارتباط پادها در سراسر کلاستر را فعال میکند.
برای اعمال دائمی این تغییر، خط زیر را به فایل etc/sysctl.conf/ اضافه یا بهروزرسانی کنید:
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
سپس تنظیمات sysctl را برای اعمال تغییرات مجدداً بارگیری کنید:
sudo sysctl -p
مرحله ۱۰ : اتصال نودهای کارگر
روی هر نود کارگر، دستور join را که در مرحله استارت نود اصلی دریافت کردهاید، اجرا کنید. این دستور به شکل زیر است:
sudo kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
<token> , <master-port>, <master-ip> , <hash> را با مقادیر واقعی از خروجی استارت نود اصلی جایگزین کنید. این دستور نود کارگر را به کلاستر کوبرنتیز متصل میکند.
برای تأیید، دستور زیر را اجرا کنید:
kubectl get nodes
اگر نود کارگر با موفقیت به کلاستر کوبرنتیز متصل شده باشد، خروجی عبارت Ready را نمایش میدهد.
تبریک!!!! شما اکنون کوبرنتیز را با موفقیت نصب کردهاید.
مرحله ۱۱ : دیپلوی یک اپلیکیشن آزمایشی
برای بررسی موفقیتآمیز بودن نصب کوبرنتیز، یک برنامهی ساده Nginx را دیپلوی کنید.
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
توجه: نمایش مستقیم برنامهها به اینترنت از طریق NodePorts خطرات امنیتی دارد. قبل از انجام این مرحله، تمام پیامدهای امنیتی را در نظر بگیرید.
برای دسترسی به Nginx، میتوانید موقتاً فایروال را غیرفعال کنید یا پورتهای NodePort و Nginx را به فایروال اضافه کنید.
سرویس Nginx و NodePort مربوطه را پیدا کنید:
kubectl get svc
مهم: همیشه به خاطر داشته باشید که امنیت یک بخش حیاتی از هر محیط تولید است. استفاده از NodePort برای دسترسی عمومی توصیه نمیشود. برای دسترسی ایمنتر، از ابزارهای مدیریت ترافیک مانند Ingress Controller استفاده کنید!!
برای دسترسی به برنامه Nginx، به آدرس http://<node-ip>:<node-port> در مرورگر وب خود بروید.
<node-ip> را با آدرس IP یکی از نودهای کارگر و <node-port>را با شماره واقعی NodePort جایگزین کنید.
مرحله ۱۲ : بررسی وضعیت کلاستر
برای بررسی وضعیت کلاستر ، دستور زیر را اجرا کنید:
kubectl cluster-info
این دستور اطلاعات کلی در مورد کلاستر کوبرنتیز، از جمله نسخه کوبرنتیز، نسخه سرور و اند پوینت API سرور را نمایش میدهد.
برای بررسی وضعیت نودها، دستور زیر را اجرا کنید:
kubectl get nodes -o wide
این دستور اطلاعات دقیقی در مورد هر نود در کلاستر نمایش میدهد، از جمله نام نود، وضعیت، سیستم عامل، نقش، نسخه، آدرس IP داخلی، آدرس IP خارجی و سن نود.
توجه: استفاده از NodePorts برای دسترسی خارجی مناسب اهداف آزمایشی است، اما برای محیطهای تولید، پیادهسازی رویکرد امنتر مانند یک کنترلر ورودی (Ingress controller) را در نظر بگیرید.
نتیجهگیری
ایجاد یک کلاستر کوبرنتیز روی اوبونتو ۲۴.۰۴ شامل چندین فرآیند حیاتی است که از پیکربندی کلاستر و استقرار برنامهها تا تنظیم اجزای داکر و کوبرنتیز را در بر میگیرد. با دنبال کردن این راهنما، میتوانید با موفقیت یک کلاستر کوبرنتیز ایجاد و مدیریت کنید و به طور موثر برنامههای خود را استقرار، مقیاسبندی و نگهداری کنید. این تنظیم یک پایه قوی برای کار با برنامههای کاربردی کانتینری و بهبود گردش کار DevOps شما فراهم میکند.
دانشجوی مهندسی نرم افزار و علاقه مند به دواپس 🙂