
در این مقاله قصد داریم یک kubernetes cluster را با حداقل منابع برای مقاصد آموزشی و محیط آزمایشی راهاندازی کنیم.
تعریف سناریو:
۳ ماشین مجازی با مشخصات زیر و با سیستم عامل لینوکس و توزیع Debian 12 :
|
data/ |
var/ |
/ directory |
RAM |
CPU |
|
|
10 GB |
20 GB |
20 GB |
4 GB |
2 cores |
Master node |
|
10 GB |
30 GB |
20 GB |
8 GB |
4 cores |
Worker node 1 |
|
10 GB |
30 GB |
20 GB |
8 GB |
4 cores |
Worker node 2 |
نصب RKE2 Kubernetes server service بر روی master node و سپس نصب rke2 agent service بر روی worker node ها و همچنین اضافه کردن این worker ها به master node
پیشنیازها
قبل از هرکاری پیشنهاد میکنیم صفحه رسمی rke2 را مطالعه کنید تا بصورت دقیق با تمام پیشنیازها و … آشنا شوید. (صفحه رسمی RKE2)
اما اصلیترین موارد را در ادامه ذکر میکنیم.
قبل از هرکاری از یکتا بودن hostname های سرورهایی که قرار است در cluster کوبرنتیز سهیم باشند اطمینان حاصل کنید.
در سیستم عامل لینوکس میتوانید نام hostname را در این مسیرها ویرایش کنید و سپس با راهاندازی مجدد سیستمعامل تنظیمات را نهایی کنید.
sudo nano /etc/hosts sudo nano /etc/hostname
همچنین توجه داشته باشید که machine-id ها نیز برای هر ماشین باید یکتا باشد وگرنه در زمان اضافه کردن worker ها به master node به مشکل خواهیم خورد. برای تغییر machine-id دستور های زیر را وارد کنید و سپس سیستم را یکبار راه اندازی مجدد یا restart کنید تا مقادیر جدید بصورت خودکار ساخته شوند.
sudo truncate -s 0 /etc/machine-id sudo rm /var/lib/dbus/machine-id sudo ln -s /etc/machine-id /var/lib/dbus/machine-id
در نهایت برای انتخاب سخت افزار مناسب برای ماشینهای مجازی کلاستر خود میتوانید از این جدول کمک بگیرید.
* دقت کنید که حداقل cpu مورد نظر ۲ هسته است (ولی ۴ هسته پیشنهاد میشود) و همینطور حداقل RAM 4GB است (ولی حداقل 8GB توصیه میشود)

* نکته دیگری که باید رعایت شود این است که توصیه میشود برای جلوگیری از باراضافه روی پردازنده، node ها را در دسته های ۵۰ تایی اضافه کنید
* همچنین باید به این نکته توجه داشته باشید که همیشه بیشتر از یک master node داشته باشید و همیشه تعداد فرد را برای ایجاد master node ها انتخاب کنید.
اگر از firewall استفاده میکنید حتمأ به جدول زیر توجه کنید و پورت های مورد نیاز cluster را در rule های firewall خود مجاز کنید.

همچنین مهم است که ساعت تمام سرورها با یکدیگر sync باشند و به روز باشند زیرا ممکن است بعدأ به مشکل بر بخورند.
نکته آخر این است که برای راه اندازی kubernetes cluster باید حتمأ دسترسی super user داشته باشید.
نصب بر روی server node
نصب rke2-server.service بر روی master node
برای نصب سرویس server، به master node متصل میشویم. و دستور زیر را وارد میکنیم تا پروسه دانلود و نصب آغازشود.
curl -sfL https://get.rke2.io | sh -
فعال کردن rke2-server.service
systemctl enable rke2-server.service
راهاندازی service
systemctl start rke2-server.service
دنبال کردن لاگها (دلبخواهی)
ذر صورت نیاز میتوانید با استفاده از این دستور، لاگها را دنبال کنید. (مفید برای ایرادیابی)
journalctl -u rke2-server -f
بعد از انجام دادن مراحل بالا:
- سرویس rke2-server نصب خواهد شد. سرویس rke2-server جوری تنظیم خواهد شد که بعد از راهاندازی مجدد (چه به دست کاربر و چه درصورت crash کردن) دوباره اجرا شده و شروع به کار کند.
- ابزار اضافه در مسیر /var/lib/rancher/rke2/bin/ نصب خواهند شد. که شامل : kubectl , crictl و ctr میشوند. البته اینها بصورت پیشفرض روی مسیر نصبی شما نخواهند بود.
- دو اسکریپت پاکسازی با نام های rke2-killall.sh و rke2-uninstall.sh نیز در مسیرهای زیر اضافه خواهند شد:
- برای فایل سیستمهای عادی : /usr/local/bin/
- برای فایل سیستمهای btrfs و فقط خواندنی: /opt/rke2/bin/
- فایل kubeconfig را میتوانید در آدرس /etc/rancher/rke2/rke2.yaml/ پیدا کنید.
- یک فایل Token نیز برای اضافه کردن nodeهای دیگر شامل master یا worker نیز در آدرس /var/lib/rancher/rke2/server/node-token/ ساخته خواهد شد.
نکته: درصورت تمایل برای اضافه کردن بیش از یک server node، حتمأ تعداد فرد را انتخاب کنید چرا که در این صورت خواهد بود که quorum حفظ خواهد شد. (منبع)
نصب بر روی worker node
دقت داشته باشید که تمام دستورات را با دسترسی sudo اجرا کنید.
اجرای نصاب
curl -sfL https://get.rke2.io | INSTALL_RKE2_TYPE="agent" sh -
فعال کردن rke2-agent.service
systemctl enable rke2-agent.service
پیکربندی rke2-agent.service
mkdir -p /etc/rancher/rke2/ vim /etc/rancher/rke2/config.yaml
محتوای فایل config.yaml
server: https://<server>:9345 token: <token from server node>
* حتمأ به فاصلهها دقت فراوان کنید.
نکته: پراسسهای rke2 server برای رجیستر کردن nodeهای جدید، روی پورت 9345 گوش میدهند. همچنین kubernetes API روی پورت 6443 در دسترس خواهد بود.
شروع کردن سرویس
systemctl start rke2-agent.service
دنبال کردن لاگها (در صورت نیاز)
journalctl -u rke2-agent -f
نکته: دوباره به این موضوع اشاره میکنیم که هر ماشین باید hostname منحصر به فرد خود را داشته باشد.
اما اگر ماشین های شما hostname منحصر به فرد نداشت در فایل config.yaml، مقدار node-name را اضافه کنید و یک hostname منحصر به فرد و مجاز انتخاب کنید.
همچنین برای مطالعه بیشتر درباره config.yaml میتوانید از این بخش اقدام کنید.
فعال کردن kubectl روی سیستم لینوکسی خود
برای اینکه جهت اعمال تنظیمات cluster خود مجبور نباشید هر دفعه به سرور master خود ssh بزنید، کافیست فایل پیکربندی تولید شده در زمان راهاندازی cluster را از روی master node برداشته و به سیستم لینوکسی خود اضافه کنیم.
فایل کانفیگ را به سیستم خود منتفل کنید: فایل کانفیگ در master node در آدرس /etc/rancher/rke2/rke2.yaml/ میباشد.
فایل را باز کنید و در بخش server ، آدرس پورت lan سرور master node خود را وارد کنید.
$ mkdir -p ~/.kube/config/ $ scp <Masternode-Username>@<Masternode-IP>:/etc/rancher/rke2/rke2.yaml ~/.kube/config/ سپس با استفاده از یک ویرایشگر متن مانند nano فایل را ویرایش کنید $ echo "export KUBECONFIG="~/.kube/config/rke2.yaml"" >> ~/.bashrc $ source ~/.bashrc
حالا درصورت انجام مراحل به درستی با استفاده از دستور زیر میتوانید تمام node های عضو cluster را مشاهده کنید.
$ kubectl get node