اگر با Kubernetes کار کرده باشید، حتماً با واژهی Node مواجه شدهاید. اما دقیقاً Node در کوبرنتیز چیست؟ چه اجزایی دارد؟ و چگونه در معماری کلی کوبرنتیز نقش بازی میکند؟
در این پست، به طور جامع و کاربردی به بررسی Node در کوبرنتیز میپردازیم. با ما همراه باشید تا با ساختار داخلی، اجزا، و نقش حیاتی آن در اجرای بارهای کاری (workloads) آشنا شوید.
Node در کوبرنتیز چیست؟
Node (نود) در کوبرنتیز، در سادهترین تعریف، یک ماشین (فیزیکی یا مجازی) است که وظیفه اجرای Podها را بر عهده دارد. هر کلاستر کوبرنتیز از تعدادی Node تشکیل شده است. این نودها توسط Control Plane مدیریت میشوند و مسئول اجرای اپلیکیشنها هستند.
به عبارت دیگر: اگر کوبرنتیز یک ارکستر بزرگ باشد، نودها نوازندگانی هستند که قطعات را اجرا میکنند!
انواع Node در کوبرنتیز
- Master Node (کنترلگر): مدیریت کلاستر، زمانبندی پادها، تصمیمگیری در مورد مقیاسپذیری، و نگهداری از وضعیت کلی سیستم.
- Worker Node (نود کاری): اجرای پادها و کانتینرها؛ شامل منابع پردازشی واقعی (CPU، RAM) برای اپلیکیشنها.
اجزای اصلی Node در کوبرنتیز
هر نود، فارغ از نوع آن، شامل چند مؤلفه کلیدی است:
1. kubelet
یک Agent سبکوزن که روی هر نود اجرا میشود. وظیفهی kubelet این است که پادهایی که توسط کنترل پلین برای این نود تعیین شدهاند را مدیریت و مانیتور کند.
2. Container Runtime
این مؤلفه مسئول اجرای واقعی کانتینرهاست. به عنوان مثال، میتواند Docker، containerd یا CRI-O باشد.
3. kube-proxy
یک کامپوننت شبکهای که وظیفه مدیریت قوانین فایروال و Load Balancing بین پادها را بر عهده دارد.
4. Pod(s)
هر نود میتواند چندین پاد اجرا کند. هر پاد معمولاً یک یا چند کانتینر مرتبط را در خود دارد.
ارتباط Node با سایر اجزای کوبرنتیز
زمانی که شما یک پاد تعریف میکنید، Scheduler تصمیم میگیرد که آن پاد روی کدام نود اجرا شود. سپس kubelet روی آن نود، عملیات اجرای کانتینرها را آغاز میکند. شبکه توسط kube-proxy تنظیم شده و منابع توسط Container Runtime اختصاص داده میشوند.
وضعیتهای نود (Node Conditions)
هر نود ممکن است وضعیتهای مختلفی داشته باشد، از جمله:
- Ready: نود در دسترس است و میتواند پاد اجرا کند.
- NotReady: نود آماده نیست (مثلاً به دلیل قطع شبکه یا خطا در runtime).
- SchedulingDisabled: نود از زمانبندی پاد جدید غیرفعال شده است.
پس برای درک Nodeها:
- هر نود یک ماشین فیزیکی یا VM است
- kubelet و kube-proxy روی هر نود اجرا میشوند
- نودها توسط Control Plane مدیریت میشوند
- نودها مسئول اجرای Podها هستند
- Container Runtime مانند Docker اجرای کانتینرها را بر عهده دارد
چرا شناخت Node اهمیت دارد؟
درک صحیح از Nodeها در Kubernetes برای مانیتورینگ، مدیریت منابع، مقیاسپذیری و حتی دیباگ کردن مشکلات مربوط به اجرای اپلیکیشنها ضروری است. نودها نقطهی اتصال دنیای ابری به اپلیکیشنهای واقعی شما هستند.
جمعبندی
در این مقاله با مفهوم Node در کوبرنتیز، انواع آن، اجزای داخلی و نحوهی عملکرد آن آشنا شدیم. آشنایی با نودها، قدم اول برای حرفهای شدن در Kubernetes و DevOps است.