کوبرنتیز یکی از نوآورانهترین فناوریهایی است که میتوانید برای استقرار، مقیاسگذاری و مدیریت اپلیکیشنها، بدون توجه به پلتفرم زیرساختی، از آن استفاده کنید. اگر شما یک مهندس DevOps یا توسعهدهنده نرمافزار هستید، قطعا با موقعیتهایی روبرو خواهید شد که باید کوبرنتیز را روی پلتفرمهای مختلف و با وابستگیهای لازم نصب کنید. این مقاله دستورالعملهای گامبهگام برای نصب کوبرنتیز روی اوبونتو را در اختیار شما قرار میدهد.
کوبرنتیز چیست؟
کوبرنتیز یک سیستم متنباز است که توسط گوگل توسعه داده شده و اکنون تحت نظارت بنیاد CNCF (Cloud Native Computing Foundation) قرار دارد. این سیستم، ارکستراسیون (هماهنگی) کانتینرها را ساده میکند و به توسعهدهندگان این امکان را میدهد که بدون درگیر شدن با پیچیدگیهای زیرساختی، اپلیکیشنهای خود را بسازند.
Kubernetes مدیریت و زمانبندی کانتینرها را ارائه میدهد و کاربران میتوانند رفتار اپلیکیشنها را در یک کلاستر (خوشه) مشخص کنند. این سیستم، زیرساخت زیرین را انتزاع میکند و وظایف مربوط به کانتینرها و استقرار اپلیکیشنها را تسهیل میبخشد.
مزایای کوبرنتیز
۱. مدیریت کانتینرها در گرههای مختلف: کوبرنتیز در مدیریت کانتینرها در گرههای (Nodes) متعدد و متنوع بسیار کارآمد است و به راحتی میتواند بار کاری را بین آنها توزیع کند.
۲. سازگاری با زیرساختهای ابری عمومی و خصوصی: کوبرنتیز با بسیاری از زیرساختهای ابر عمومی و خصوصی سازگار است و به شما امکان میدهد که اپلیکیشنهای خود را در محیطهای مختلف اجرا کنید.
۳. مقیاسپذیری خودکار اپلیکیشنها: کوبرنتیز این امکان را فراهم میکند که اپلیکیشنهای شما به صورت خودکار و براساس نیاز به منابع بیشتر، مقیاس (Scale) شوند تا عملکرد بهینهای داشته باشند.
۴. قابلیت Self-healing: یکی از ویژگیهای کلیدی کوبرنتیز، قابلیت خودترمیمی است که کانتینرهای معیوب را به صورت خودکار مجددا راهاندازی کرده و کانتینرهای ناسالم را جایگزین میکند.
پیشنیازها
برای نصب کوبرنتیز روی یک سیستم مانند سرور مجازی لینوکس با توزیع لینوکس اوبونتو، مطمئن شوید که دستگاه شما دارای مشخصات زیر است:
- ۲ پردازنده (CPU)
- حداقل ۲ گیگابایت رم (RAM)
- حداقل ۲ گیگابایت فضای دیسک (Disk Space)
- اتصال پایدار به اینترنت
اگر سرور شما این نیازمندیها را دارد، آمادهاید تا مراحل این آموزش را دنبال کنید. بیایید با فرآیند گامبهگام نصب کوبرنتیز روی اوبونتو شروع کنیم.
نصب کوبرنتیز روی اوبونتو: فرآیند گامبهگام
نصب کوبرنتیز فرآیند سادهای نیست. برای ایجاد یک کلاستر منعطف و با عملکرد بالا، باید علاوه بر نصب اجزای کوبرنتیز، مراحل دیگری را نیز انجام دهید. همچنین، باید ماشینها را به گونهای پیکربندی کنید که بتوانند با یکدیگر ارتباط برقرار کنند.
به طور کلی، نصب کوبرنتیز روی اوبونتو شامل مراحل زیر است:
- غیرفعال کردن Swap: برای عملکرد بهینه کوبرنتیز، باید قابلیت Swap در تمام گرهها غیرفعال شود.
- تنظیم نام میزبان (Hostname): نامهای میزبان (Hostnames) برای هر گره باید تنظیم شوند تا شناسایی آنها در کلاستر آسانتر باشد.
- راهاندازی پل (Bridge) IPV4 روی تمام گرهها: برای اطمینان از انتقال صحیح ترافیک شبکه بین کانتینرها، پل IPV4 باید روی تمام گرهها فعال شود.
- نصب اجزای کوبرنتیز روی تمام گرهها: اجزای اصلی شامل kubeadm، kubelet و kubectl باید روی هر گره نصب شوند.
- نصب داکر یا ابزار مناسب کانتینرسازی: برای اجرای کانتینرها، نیاز به نصب داکر یا سایر ابزارهای کانتینرسازی دارید.
- راهاندازی اولیه کلاستر کوبرنتیز: کلاستر باید با استفاده از دستور kubeadm init راهاندازی شود تا گره اصلی ایجاد گردد.
- پیکربندی Kubectl و Calico: از kubectl به عنوان ابزار خط فرمان برای مدیریت کلاستر استفاده میشود. Calico نیز برای راهاندازی شبکه و سیاستهای امنیتی بین کانتینرها ضروری است.
- اضافه کردن گرههای کارگر (Worker Nodes): در نهایت، گرههای کارگر به کلاستر اضافه میشوند تا بارهای کاری اپلیکیشنها توزیع شوند.
این مراحل به شما کمک میکند تا یک کلاستر کوبرنتیز پایدار و عملیاتی روی اوبونتو راهاندازی کنید.
مرحله ۱: غیرفعال کردن Swap
Swap فضایی روی هارد دیسک است که سیستمعامل از آن به عنوان رم مجازی استفاده میکند. سیستمعامل دادههایی که کمتر استفاده میشوند را به Swap منتقل میکند تا رم را برای کارهای فوریتر آزاد کند. با این حال، دسترسی به دادهها در Swap بسیار کندتر از رم است، زیرا هارد دیسکها کندتر از رم عمل میکنند.
کوبرنتیز برنامههای کاری را بر اساس منابع موجود زمانبندی میکند. اگر بارهای کاری شروع به استفاده از Swap کنند، کوبرنتیز ممکن است در تصمیمگیریهای دقیق برای زمانبندی دچار مشکل شود. به همین دلیل توصیه میشود قبل از نصب کوبرنتیز، Swap را غیرفعال کنید.
برای غیرفعال کردن Swap، میتوانید از دستورات زیر استفاده کنید:
۱. غیرفعال کردن موقت Swap:
sudo swapoff -a
این دستور به صورت موقت Swap را غیرفعال میکند.
۲. غیرفعال کردن دائمی Swap (پس از راهاندازی مجدد سیستم):
sudo sed -i '/ swap / s/^/#/' /etc/fstab
این دستور فایل پیکربندی /etc/fstab را تغییر میدهد و باعث میشود که Swap حتی پس از راهاندازی مجدد سیستم، غیرفعال بماند.
با این مراحل، شما اطمینان حاصل میکنید که Swap غیرفعال شده و کوبرنتیز میتواند به درستی منابع را مدیریت کند.
مرحله ۲: تنظیم نام میزبان (Hostname)
نام میزبان (Hostname) یک نام است که برای شناسایی دستگاه در یک شبکه استفاده میشود. در کلاستر کوبرنتیز، لازم است که به هر گره (Node) یک نام منحصربهفرد اختصاص داده شود تا کوبرنتیز بتواند گرهها را به درستی شناسایی و مدیریت کند.
تنظیم نام میزبان برای گره اصلی (Master Node) و گرههای کارگر (Worker Nodes):
۱. تنظیم نام میزبان برای گره اصلی (Master Node):
روی ماشینی که قرار است به عنوان گره اصلی (Master Node) عمل کند، دستور زیر را اجرا کنید:
sudo hostnamectl set-hostname "master-node"
۲. تنظیم نام میزبان برای گرههای کارگر (Worker Nodes):
برای گرههای کارگر، از همان دستورات استفاده کنید اما نام میزبان را متناسب با نقش گره تغییر دهید. به عنوان مثال:
sudo hostnamectl set-hostname "worker-node1" exec bash
اگر بیش از یک گره کارگر دارید، نام آنها را به ترتیب تغییر دهید:
sudo hostnamectl set-hostname "worker-node2" exec bash
نکات:
- گره اصلی (Master Node): master-node
- گره کارگر ۱ (Worker Node 1): worker-node1
- گره کارگر ۲ (Worker Node 2): worker-node2
با این کار، Kubernetes میتواند به درستی گرهها را شناسایی و مدیریت کند و ارتباط بین آنها سادهتر میشود.
مرحله ۳: بهروزرسانی فایل /etc/hosts برای رفع نام میزبان (Hostname Resolution)
تنظیم نام میزبان به تنهایی کافی نیست. برای اطمینان از اینکه گرهها میتوانند یکدیگر را پیدا کرده و با هم ارتباط برقرار کنند، باید نام میزبان هر گره به آدرس IP مربوطه در فایل /etc/hosts نگاشت شود. این کار باعث میشود که کلاستر کوبرنتیز بدون مشکل ارتباط برقرار کند.
مراحل بهروزرسانی فایل /etc/hosts:
۱. باز کردن فایل hosts برای ویرایش:
روی گره اصلی (Master Node) و گرههای کارگر (Worker Nodes)، دستور زیر را اجرا کنید تا فایل /etc/hosts باز شود:
sudo nano /etc/hosts
۲. اضافه کردن نگاشتهای IP به نام میزبان:
در انتهای فایل، خطوط زیر را اضافه کنید (آدرسهای IP را با مقادیر واقعی شبکه خود جایگزین کنید):
10.0.0.2 master-node 10.0.0.3 worker-node1 10.0.0.4 worker-node2
نمونه:
- 10.0.0.2 – آدرس IP گره اصلی (Master Node)
- 10.0.0.3 – آدرس IP اولین گره کارگر (Worker Node 1)
- 10.0.0.4 – آدرس IP دومین گره کارگر (Worker Node 2)
۳. ذخیره و خروج از ویرایشگر:
برای ذخیره تغییرات:
- کلیدهای Ctrl + X را بزنید.
- برای تأیید، Y را فشار دهید.
- سپس Enter بزنید.
نکات:
- این مرحله باید روی همه گرهها انجام شود تا ارتباط شبکهای بین آنها به درستی برقرار شود.
- اگر تعداد گرهها افزایش یابد، باید آدرس IP و نام میزبان گرههای جدید را به این فایل اضافه کنید.
با این کار، هر گره میتواند به راحتی گرههای دیگر را با استفاده از نام میزبان شناسایی کند و ارتباط برقرار نماید.
مرحله ۴: پیکربندی IPV4 Bridge روی تمام گرهها
برای اینکه ترافیک شبکه به درستی بین کانتینرها و گرهها منتقل شود، باید IPV4 Bridge را فعال کنیم. این کار به کوبرنتیز اجازه میدهد که قوانین فایروال و ترافیک شبکه را مدیریت کند و مطمئن شود که کانتینرها میتوانند با یکدیگر ارتباط برقرار کنند.
مراحل پیکربندی IPV4 Bridge روی تمام گرهها:
۱. ایجاد و پیکربندی ماژولهای مورد نیاز:
دستور زیر را روی هر گره (گره اصلی و گرههای کارگر) اجرا کنید:
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF
این دستور یک فایل پیکربندی ایجاد میکند که ماژولهای overlay و br_netfilter را بارگذاری میکند.
۲. بارگذاری ماژولها:
sudo modprobe overlay sudo modprobe br_netfilter
این دستورات ماژولها را به صورت دستی بارگذاری میکند تا بلافاصله فعال شوند.
۳. پیکربندی پارامترهای شبکه:
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF
این فایل پیکربندی اطمینان میدهد که Network Bridge میتواند ترافیک را فیلتر کند و قابلیت IP Forwarding فعال است.
۴. اعمال تغییرات بدون نیاز به راهاندازی مجدد:
sudo sysctl --system
این دستور تغییرات اعمالشده در پیکربندی شبکه را بلافاصله اعمال میکند، به این معنا که دیگر نیازی به ریبوت نخواهید داشت.
- overlay – برای پشتیبانی از شبکههای چندکانتینری و ارتباط آن به شبکه فیزیکی مورد نیاز است.
- br_netfilter – برای فیلتر کردن و عبور ترافیک از پل شبکه یا Network Bridge استفاده میشود.
- net.ipv4.ip_forward – به سیستم اجازه میدهد که ترافیک را بین شبکهها هدایت کند.
این تنظیمات برای اطمینان از عملکرد صحیح شبکه در کلاستر کوبرنتیز ضروری هستند و باید روی همه گرهها انجام شوند.
مرحله ۵: نصب kubelet، kubeadm و kubectl روی هر گره
برای ایجاد یک کلاستر کوبرنتیز، باید kubelet، kubeadm و kubectl را روی هر گره نصب کنیم. این ابزارها نقش مهمی در مدیریت کلاستر کوبرنتیز دارند:
- kubelet: عامل گره است که روی هر گره اجرا میشود و مسئول اطمینان از اجرای کانتینرها در پادها (Pods) طبق مشخصات تعریفشده است.
- kubeadm: برای راهاندازی اولیه کلاستر کوبرنتیز (Bootstrap) استفاده میشود و به راهاندازی گره اصلی (Master Node) و ارتباط گرههای کارگر (Worker Nodes) کمک میکند.
- kubectl: یک ابزار خط فرمان (CLI) است که برای مدیریت کلاستر، استقرار اپلیکیشنها، بررسی منابع و انجام عملیات مختلف استفاده میشود.
مراحل نصب:
۱. بهروزرسانی Package Index:
sudo apt-get update
۲. نصب ابزارهای ضروری برای دانلود بستهها به صورت امن:
sudo apt-get install -y apt-transport-https ca-certificates curl
۳. ایجاد دایرکتوری برای ذخیره کلید احراز هویت:
sudo mkdir /etc/apt/keyrings
۴. دریافت و ذخیره کلید عمومی کوبرنتیز (Kubernetes Public Key):
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
۵. اضافه کردن محل مخزن کوبرنتیز به لیست منابع بسته (Repositories):
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
۶. بهروزرسانی مجدد شاخص بستهها برای شناسایی مخزن جدید:
sudo apt-get update
۷. نصب kubelet، kubeadm و kubectl (نسخه 1.26.5):
sudo apt install -y kubelet=1.26.5-00 kubeadm=1.26.5-00 kubectl=1.26.5-00
نکات مهم:
نسخه مشخصشده (1.26.5) ممکن است بر اساس نیاز پروژه تغییر کند. میتوانید نسخه جدیدتری نصب کنید یا از دستور زیر برای نصب آخرین نسخه استفاده کنید:
sudo apt install -y kubelet kubeadm kubectl
قفل نسخهها: برای جلوگیری از بهروزرسانی ناخواسته، میتوانید نسخه نصبشده را قفل کنید:
sudo apt-mark hold kubelet kubeadm kubectl
با انجام این مراحل، kubelet، kubeadm و kubectl روی گرههای کلاستر نصب شده و آماده استفاده خواهند بود.
مرحله ۶: نصب Docker
داکر یک پلتفرم است که امکان ایجاد، توزیع و اجرای اپلیکیشنها در داخل کانتینرها را فراهم میکند. کانتینرها محیطی سبک و قابل حمل ایجاد میکنند که عملکرد یکسانی در محیطهای مختلف دارند. داکر به عنوان موتور کانتینرسازی (Container Runtime) در کوبرنتیز نقش مهمی ایفا میکند و به مدیریت و استقرار مؤثر اپلیکیشنهای کانتینری کمک میکند.
مراحل نصب Docker و پیکربندی containerd:
۱. نصب Docker روی هر گره:
sudo apt install docker.io
۲. ایجاد دایرکتوری پیکربندی containerd:
sudo mkdir /etc/containerd
ایجاد فایل پیکربندی پیشفرض و ذخیره آن به عنوان config.toml:
sudo sh -c "containerd config default > /etc/containerd/config.toml"
۳. ویرایش فایل config.toml برای تغییر مقدار SystemdCgroup:
پیدا کردن ورودی که SystemdCgroup = false است و تغییر آن به true:
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
این تغییر ضروری است زیرا کوبرنتیز از systemd برای مدیریت cgroups استفاده میکند و برای اطمینان از سازگاری، containerd نیز باید از این روش پیروی کند.
۴. راهاندازی مجدد سرویسها برای اعمال تغییرات:
راهاندازی مجدد سرویس containerd:
sudo systemctl restart containerd.service
راهاندازی مجدد سرویس kubelet:
sudo systemctl restart kubelet.service
این مرحله باعث میشود که تغییرات انجامشده در containerd اعمال شود و kubelet برای مدیریت کانتینرها آماده شود.
۵. فعال کردن سرویس kubelet برای اجرا در زمان راهاندازی (بوت):
sudo systemctl enable kubelet.service
این دستور اطمینان میدهد که سرویس kubelet در هنگام راهاندازی سیستم به صورت خودکار اجرا میشود.
مرحله ۷: راهاندازی اولیه کلاستر کوبرنتیز روی گره اصلی (Master Node)
وقتی با استفاده از kubeadm صفحه کنترل (Control Plane) کوبرنتیز را راهاندازی میکنید، چندین مؤلفه برای مدیریت و هماهنگی کلاستر مستقر میشوند. برخی از این مؤلفهها عبارتاند از:
- kube-apiserver – سرویس API که ارتباط بین کاربران و کلاستر را مدیریت میکند.
- kube-controller-manager – مسئول مدیریت کنترلرهای کلاستر است.
- kube-scheduler – وظیفه زمانبندی و تخصیص پادها (Pods) به گرهها را دارد.
- etcd – یک پایگاه داده توزیعشده که اطلاعات وضعیت کلاستر را ذخیره میکند.
- kube-proxy – مسئول مدیریت شبکه و مسیریابی ترافیک بین سرویسها و پادها است.
دانلود ایمیجهای مورد نیاز
برای راهاندازی این مؤلفهها، ابتدا باید ایمیجهای مربوط به آنها دانلود شوند. برای انجام این کار، دستور زیر را اجرا کنید:
sudo kubeadm config images pull
این دستور، ایمیجهای لازم را از مخازن رسمی کوبرنتیز دریافت کرده و آنها را برای استقرار آماده میکند.
این مرحله، پایه و اساس راهاندازی کلاستر کوبرنتیز است و بدون آن، کلاستر قادر به اجرای مؤلفههای اصلی نخواهد بود.
پس از دانلود ایمیجهای لازم، اکنون باید گره اصلی (Master Node) را راهاندازی کنید. این کار با اجرای دستور kubeadm init انجام میشود.
در این مرحله، از فلگ –pod-network-cidr استفاده میکنیم که محدوده آدرس IP را برای شبکه پادها (Pod Network) تعیین میکند. این محدوده برای اطمینان از ارتباط بین پادها و گرهها ضروری است.
دستور راهاندازی گره اصلی:
sudo kubeadm init --pod-network-cidr=10.10.0.0/16
–pod-network-cidr=10.10.0.0/16 محدوده IP را برای شبکه پادها تعیین میکند. این محدوده ممکن است بسته به نوع افزونه شبکه (Network Plugin) که قصد دارید نصب کنید، متفاوت باشد.
نکات مهم:
- این دستور فرآیند راهاندازی صفحه کنترل (Control Plane) را آغاز میکند و گره اصلی کلاستر را آماده میکند.
- پس از اتمام این فرآیند، اطلاعات لازم برای پیوستن گرههای کارگر (Worker Nodes) به کلاستر ارائه میشود.
پس از راهاندازی گره اصلی، باید شبکه پادها (مانند Calico یا Flannel) را نصب کنید تا ارتباط بین پادها برقرار شود.
پیکربندی kubectl برای مدیریت کلاستر در گره اصلی (Master Node):
برای مدیریت کلاستر کوبرنتیز، باید kubectl را روی گره اصلی پیکربندی کنید. این کار به شما امکان میدهد تا از خط فرمان برای تعامل با کلاستر و اجرای دستورات مدیریتی استفاده کنید.
مراحل انجام این کار به این صورت است:
۱. ایجاد دایرکتوری .kube در دایرکتوری هوم (Home Directory):
mkdir -p $HOME/.kube
این دستور دایرکتوری .kube را در Home Directory کاربر ایجاد میکند. این دایرکتوری محل ذخیره فایل پیکربندی برای دسترسی به کلاستر است.
۲. کپی کردن فایل پیکربندی کلاستر:
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
این دستور فایل پیکربندی کلاستر (admin.conf) را به مسیر .kube/config کپی میکند.
این فایل به kubectl امکان میدهد که به عنوان ادمین (Admin) به کلاستر متصل شود.
۳. تغییر مالکیت فایل پیکربندی:
sudo chown $(id -u):$(id -g) $HOME/.kube/config
این دستور مالکیت فایل پیکربندی را به کاربر فعلی تغییر میدهد.
با این کار، کاربر میتواند بدون نیاز به دسترسی روت (Root)، با استفاده از kubectl به کلاستر متصل شود.
مرحله ۸: پیکربندی kubectl و نصب Calico برای شبکه کلاستر
Calico یکی از افزونههای شبکه محبوب برای کوبرنتیز است که علاوه بر مدیریت شبکه پادها (Pods)، قابلیتهای امنیتی مانند تعریف سیاستهای شبکه (Network Policies) را فراهم میکند.
مراحل نصب و پیکربندی Calico روی گره اصلی (Master Node):
۱. استقرار اپراتور Calico:
برای شروع، اپراتور Calico را با استفاده از دستور زیر مستقر کنید:
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml
این دستور اپراتور Tigera را نصب میکند که مسئول استقرار و مدیریت Calico در کلاستر است.
۲. دانلود فایل منابع سفارشی (Custom Resources) برای Calico:
curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml
این فایل شامل تعریف منابعی است که Calico برای راهاندازی شبکه پادها از آنها استفاده میکند.
۳. تغییر CIDR در فایل منابع سفارشی:
باید CIDR پیشفرض موجود در فایل custom-resources.yaml را مطابق با محدوده IP که در زمان kubeadm init تعریف کردید، تغییر دهید.
sed -i 's/cidr: 192\.168\.0\.0\/16/cidr: 10.10.0.0\/16/g' custom-resources.yaml
این دستور، CIDR پیشفرض 192.168.0.0/16 را به 10.10.0.0/16 تغییر میدهد تا با شبکهای که قبلاً تعریف کردهاید مطابقت داشته باشد.
۴. ایجاد منابع مورد نیاز برای Calico:
اکنون منابع تعریفشده در فایل custom-resources.yaml را با دستور زیر ایجاد کنید:
kubectl create -f custom-resources.yaml
این دستور، منابع شبکه و سیاستهای مرتبط با Calico را ایجاد و در کلاستر اعمال میکند.
مرحله ۹: اضافه کردن گرههای کارگر (Worker Nodes) به کلاستر
پس از پیکربندی گره اصلی (Master Node)، میتوانید گرههای کارگر (Worker Nodes) را به کلاستر کوبرنتیز اضافه کنید. گرههای کارگر وظیفه اجرای پادها (Pods) و بارهای کاری را بر عهده دارند.
مراحل اضافه کردن گرههای کارگر:
۱. دریافت دستور kubeadm join از گره اصلی:
هنگام اجرای دستور kubeadm init روی گره اصلی، یک توکن و هش گواهی (Certificate Hash) تولید میشود که برای اضافه کردن گرههای کارگر استفاده میشود. این دستور معمولاً به شکل زیر است:
sudo kubeadm join <MASTER_NODE_IP>:<API_SERVER_PORT> --token <TOKEN> --discovery-token-ca-cert-hash sha256:<CERTIFICATE_HASH>
۲. اجرای دستور kubeadm join روی گرههای کارگر:
برای اضافه کردن هر گره کارگر به کلاستر، دستور kubeadm join را که از گره اصلی دریافت کردهاید، روی گره کارگر اجرا کنید:
sudo kubeadm join 10.0.0.2:6443 --token abcdef.1234567890abcdef --discovery-token-ca-cert-hash sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890
در این دستور:
- 10.0.0.2 – آدرس IP گره اصلی (Master Node)
- 6443 – پورت API Server
- abcdef.1234567890abcdef – توکن تولید شده توسط kubeadm init
- sha256:abcdef… – هش گواهی که برای احراز هویت استفاده میشود.
۳. تأیید اضافه شدن گرههای کارگر به کلاستر:
پس از اجرای دستور kubeadm join، به گره اصلی (Master Node) بازگردید و با دستور زیر بررسی کنید که گرههای کارگر به کلاستر اضافه شدهاند:
kubectl get nodes
خروجی مشابه زیر خواهد بود:
NAME STATUS ROLES AGE VERSION master-node Ready control-plane 1h v1.26.5 worker-node1 Ready <none> 5m v1.26.5 worker-node2 Ready <none> 3m v1.26.5
در این دستور Ready نشاندهنده آماده بودن گرهها برای اجرای پادها است.
اگر دستور kubeadm join را فراموش کردید، میتوانید با اجرای دستور زیر روی گره اصلی، توکن جدید ایجاد کنید:
sudo kubeadm token create --print-join-command
در صورتی که گرهها در وضعیت NotReady باشند، اطمینان حاصل کنید که Calico یا افزونه شبکه دیگری به درستی نصب شده باشد.
با این کار، گرههای کارگر به کلاستر اضافه شده و آماده اجرای بارهای کاری هستند.
مرحله ۱۰: تأیید کلاستر و انجام تست
اکنون که گرههای کارگر (Worker Nodes) را به کلاستر اضافه کردهاید، باید بررسی کنید که کلاستر به درستی ایجاد شده و همه گرهها و پادها (Pods) به درستی کار میکنند.
۱. بررسی گرههای کلاستر:
برای لیست کردن تمام گرههای موجود در کلاستر و بررسی وضعیت آنها، دستور زیر را اجرا کنید:
kubectl get nodes
خروجی مشابه زیر نمایش داده میشود:
NAME STATUS ROLES AGE VERSION master-node Ready control-plane 1h v1.26.5 worker-node1 Ready <none> 10m v1.26.5 worker-node2 Ready <none> 8m v1.26.5
در این دستور:
- STATUS: Ready نشان میدهد که گرهها به درستی به کلاستر متصل شده و آماده اجرای بارهای کاری هستند.
- اگر گرهای در وضعیت NotReady باشد، ممکن است افزونه شبکه (مانند Calico) به درستی نصب نشده یا مشکلی در پیکربندی گره وجود داشته باشد.
۲. بررسی پادهای کلاستر:
برای لیست کردن تمام پادهای فعال در تمام فضاینامها (Namespaces)، دستور زیر را اجرا کنید:
kubectl get po -A
خروجی مشابه زیر خواهد بود:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system calico-node-zv9k4 1/1 Running 0 5m kube-system coredns-565d847f94-8pmtv 1/1 Running 0 1h kube-system kube-proxy-xv9t7 1/1 Running 0 1h kube-system calico-kube-controllers-6dbbfdb6c8-7l9gz 1/1 Running 0 5m
در این دستور:
- STATUS: Running نشاندهنده این است که پادها به درستی اجرا شدهاند.
- اگر پادی در وضعیت Pending یا CrashLoopBackOff باشد، ممکن است مشکلی در شبکه یا پیکربندی آن وجود داشته باشد.
نکاتی برای عیبیابی (در صورت وجود مشکل)
برای بررسی جزئیات یک پاد خاص که اجرا نمیشود:
kubectl describe pod <POD_NAME> -n <NAMESPACE>
برای بررسی لاگهای یک پاد:
kubectl logs <POD_NAME> -n <NAMESPACE>
اگر گرهای در وضعیت NotReady است، میتوانید وضعیت آن را بررسی کنید:
kubectl describe node <NODE_NAME>
جمع بندی
این راهنما فرآیند نصب کوبرنتیز روی اوبونتو 22.04 و راهاندازی یک کلاستر را به طور جامع پوشش داد. در این مسیر، ابتدا بررسیهای سیستمی انجام شد تا اطمینان حاصل شود که سختافزار و نرمافزار برای نصب کوبرنتیز مناسب هستند. سپس، تنظیم نام میزبان (Hostname) برای هر گره انجام گرفت تا ارتباط بین گرهها به درستی برقرار شود. با دنبال کردن این مراحل، میتوانید یک کلاستر کوبرنتیز قابل اعتماد و انعطافپذیر ایجاد کنید که برای مدیریت بارهای کاری و استقرار اپلیکیشنها در محیطهای مختلف مناسب است.