کلاستر کوبرنتیس (K8s) گروهی از نودهای (گرهها) محاسباتی یا ماشینهای کاری است که برنامههای کانتینری را اجراء میکنند. همچنین، کانتینریسازی فرآیند استقرار و اجراء نرمافزار است که کد برنامه را به همراه تمام فایلها و کتابخانههای موردنیاز برای اجراء در هر زیرساختی بستهبندی میکند. درهمین حال، کوبرنتیس، نرمافزار متن باز (open source) برای ارکستراسیون کانتینرها است که به شما امکان مدیریت، هماهنگی و زمانبندی کانتینرها را بهصورت مقیاسپذیر میدهد. کوبرنتیس، کانتینرها را در پادها (Pods) قرار میدهد و آنها را بر روی نودها اجراء میکند. یک کلاستر کوبرنتیس حداقل شامل یک نود اصلی و یک کنترل پلین است که کلاستر را مدیریت میکند. لازم به ذکر است که زمانیکه شما کوبرنتیس را مستقر میکنید، در واقع یک کلاستر کوبرنتیس را راهاندازی کردهاید.
اصول اولیه کوبرنتیس چیست؟
برای درک کلاستر کوبرنتیس، ابتدا باید اصول کانتینریسازی با کوبرنتیس را درک کنید.
یک کانتینر، یک برنامه یا میکروسرویس است که با وابستگیهای خود بستهبندی شده و بهعنوان یک محیط و برنامه مستقل، قابلاجراء است. برنامههای مدرن، معماری میکروسرویس توزیعشده را پذیرفتهاند که هر برنامه شامل صدها یا حتی هزاران جزء نرمافزاری مجزا است که بهطور مستقل اجراء میشوند. هر جزء یا میکروسرویس یک عملکرد مستقل را برای افزایش ماژولاریتی (ماژولار بودن) کد انجام میدهد. با ایجاد کانتینرهای مستقل برای هر سرویس، برنامهها میتوانند در چندین ماشین مستقر و توزیع شوند. میتوانید بارهای کاری و قابلیتهای محاسباتی میکروسرویسهای فردی را برای به حداکثر رساندن کارایی برنامه نیز مقیاسگذاری کنید.
کوبرنتیس، نرمافزاری متن باز برای ارکستراسیون کانتینرها است که مدیریت کانتینرها را در مقیاس، ساده میکند. این نرمافزار میتواند کانتینرها را زمانبندی، اجراء، راهاندازی و خاموش کند و وظایف مدیریتی را خودکار کند. توسعهدهندگان همچنین از مزایای کانتینریسازی در مقیاس بدون بار اداری اضافی بهرهمند میشوند.
مفاهیم اصلی کوبرنتیس
پاد
پاد، واحد استاندارد قابلاستقرار در کوبرنتیس است. پادها، شامل یک یا چند کانتینر هستند و کانتینرها درون پاد منابع سیستم مشترکی مانند ذخیرهسازی و شبکه را به اشتراک میگذارند. هر پاد یک آدرس IP منحصر به فرد دارد. کانتینرها درون یک پاد ایزوله نیستند و میتوان پادها و گروههای پاد را با اضافه کردن برچسبهای ویژگی، سازماندهی کرد.
نود (گره)
نود، ماشینی است که پادها را اجراء میکند. این، میتواند یک سرور فیزیکی یا مجازی باشد. اجزای موجود در یک نود نیز شامل Kubelet برای مدیریت نود و کانتینر، Kube-proxy برای پروکسی شبکه و محیط اجرایی کانتینر است.
برای اجرای کانتینرها، باید یک محیط اجرایی کانتینر سازگار بر روی نود نصب شده باشد. کوبرنیتس از چندین محیط اجرایی کانتینر مانند رابط محیط اجرایی کانتینر Kubernetes و سایر محیطها، پشتیبانی میکند.
مجموعه تکرار و استقرار
یک پاد یک اثر مستقل است و وقتی نود آن از کار میافتد، بهطور خودکار دوباره راهاندازی نمیشود. اگر یک یا چند پاد در یک مجموعه تکرار گروهبندی شوند، میتوانید مجموعههای تکرار را تعیین کنید که همیشه در نودها درحال اجراء باشند. این موضوع برای مقیاسگذاری و اطمینان از تداوم برنامهها و خدمات، حیاتی است. استقرار، شیء مدیریتی کوبرنتیس برای استقرار یک برنامه و همچنین بهروزرسانی یا بازگشت برنامه بدون قطع آن است.
سرویس و ورودی (Ingress)
از سرویس کوبرنتیس برای نمایش یک پاد یا گروهی از پادها در شبکه استفاده کنید تا تعاملاتی که طبق قوانین استاندارد ارتباط شبکه است، انجام شود. برای دسترسی به ترافیک عمومی اینترنت، یک ورودی کوبرنتیس به یک سرویس متصل میشود که سپس به یک یا چند پاد لینک میشود.
اجزاء کلاستر کوبرنتیس چیست؟
یک کلاستر کوبرنتیس گروهی از یک یا چند نود با پادهای درحال اجراء است. کنترل پلین کوبرنتیس، نودها و پادها را مدیریت میکند. اجزاء کنترل پلین شامل:
- سرور API کوبرنتیس است که ارتباطات درون کلاستر را مدیریت میکند.
- ذخیرهسازی (etcd) درجهت ثبت وضعیت پایدار کلاستر.
- زمانبند (kube-scheduler) برای مدیریت منابع نود و پادها.
- مدیر کنترلکننده (kube-controller-manager) در راستا کنترل نود و کارها.
- مدیر کنترلکننده ابری (cloud-controller-manager) برای ادغام با زیرساختهای ابری خاص ارائهدهنده.
از آنجا که کانتینرها ذخیرهسازی پایدار ندارند، برنامهها نیاز به ذخیرهسازی دادههایی دارند که باقی بمانند. درهمین حال، پادها ممکن است به دادههای مشترک نیز دسترسی نیاز داشته باشند. حجمهای پایدار نیز میتوانند به کلاستر اضافه شوند و مانند نودها در کلاستر به آنها ارجاع داده شود.
چگونه توسعهدهندگان با کلاستر کوبرنتیس کار میکنند؟
توسعهدهندگان ابتدا باید کوبرنتیس را روی یک نود اصلی و نودهای کاری نصب کنند. سپس میتوانند کلاستر را روی ماشینهای فیزیکی یا مجازی، بهصورت محلی، در یک مرکز داده (دیتا سنتر) یا در فضای ابری مستقر کنند.
نصب
برای شروع ساده با ماشینهای مجازی لینوکس، روی نود اصلی انتخابی، ابتدا باید موارد زیر را نصب کنید:
- داکر (Docker) یا هر نرمافزار کانتینری دیگر.
- کلید مخزن و مخزن کد کوبرنتیس.
- بسته kubeadm برای راهاندازی کلاستر.
- بسته kubelet برای هماهنگی نودها.
- بسته kubectl برای خط فرمان کلاستر.
این مراحل را روی سایر نودهای کاری نیز انجام دهید.
راهاندازی کلاستر
برای راهاندازی کلاستر، دستور (کامند) `kubeadm init` را روی نود اصلی اجرا کنید. شما باید یک فایل پیکربندی kube اضافه کنید و شبکه پاد را با یک فایل YAML مستقر کنید تا کلاستر آماده کار شود. دستور `kubeadm init`، یک دستور برای پیوستن تولید میکند که میتوان آنرا در خط فرمان نودهای کاری دیگر کپی و پیست کرد.
کار با کوبرنتیس
با داشبورد UI کوبرنتیس، توسعهدهندگان میتوانند برنامهها را در کلاستر ایجاد و مستقر کنند. برای دسترسی به داشبورد UI، دستور `kubectl proxy` را روی ماشین اصلی اجرا کنید. سپس UI در آدرس مشخص شده در دسترس خواهد بود.
مدیریت کلاستر کوبرنتیس چیست؟
مدیریت کلاستر کوبرنتیس به معنای مدیریت چندین کلاستر کوبرنتیس بهصورت مقیاسپذیر است. بهعنوان مثال، در یک محیط توسعه، تیم ممکن است به کلاسترهای تست، توسعه و تولید نیاز داشته باشد که هر یک در ماشینهای فیزیکی و مجازی توزیعشده در محل و فضای ابری اجرا میشوند.
برای مدیریت انواع مختلف کلاسترها، باید بتوانید عملیاتهایی مانند ایجاد و حذف، بهروزرسانی، نگهداری، پیکربندی مجدد، امنیت و گزارشدهی دادههای کلاستر را انجام دهید. مدیریت چندکلاستری نیز میتواند ازطریق ترکیبی از خدمات کوبرنتیس، ابزارهای تخصصی، پیکربندیها و بهترین شیوهها انجام شود.