کوبرنتیس که اغلب بهصورت اختصاری K8s خوانده میشود (چون در کلمه Kubernetes، هشت حرف بین K و S وجود دارد)، یک پلتفرم ارکتسراسیون کانتینر منبع باز است. کوبرنتیس که توسط گوگل توسعه یافته است و اکنون توسط توسط بنیاد محاسبات بومی ابری (CNCF) نگهداری میشود؛ چارچوبی قوی را برای خودکارسازی استقرار، مقیاسبندی و مدیریت برنامههای کانتینری ارائه میکند.
کوبرنتیس قبل از اینکه در سال 2014 منبع باز شود، برای اولین بار توسط مهندسان گوگل توسعه داده شد. کوبرنتیس از نوادگان Borg بهحساب میآید؛ یک پلتفرم ارکستراسیون کانتینری که بهصورت درونسازمانی در گوگل استفاده میشود.
Kubernetes واژهای یونانی بهمعنای سکاندار یا خلبان است؛ بههمین دلیل در لوگوی کوبرنتیس یک سکان وجود دارد.
امروزه کوبرنتیس و اکوسیستم کانتینری در حال تبدیل شدن به یک پلتفرم محاسباتی همهمنظوره و اکوسیستمی هستند. این پلتفرم بهعنوان پایه و اساس زیرساختها و برنامههای ابری مدرن بهحساب میآید و در این زمینه رقیبی جدی برای ماشینهای مجازی (VM) است که احتمالا از آن پیشی خواهد گرفت.
این اکوسیستم سازمانها را قادر میسازد تا یک پلتفرم بهعنوان یک سرویس (PaaS) با بهرهوری بالا ارائه دهند که به وظایف و مسائل مربوط به زیرساختها و عملیات مرتبط با توسعه ابر بومی میپردازد. بهاین ترتیب تیمهای توسعه میتوانند فقط بر روی کدنویسی و نوآوری تمرکز کنند.
مفاهیم اولیه kubernetes
اگر بخواهیم بهطور دقیقتری به سوال kubernetes چیست پاسخ دهیم باید ابتدا با چند مفهوم اولیه آشنا شویم. در ادامه این مفاهیم را توضیح میدهیم.
کانتینرها
کانتینرها محیطهای رانتایم (Runtime) سبک و ایزولهای هستند که برنامهها و وابستگیهای آنها را پکیج میکنند. کوبرنتیس از فناوری کانتینر (مانند Docker) برای تبدیل برنامهها به کپسول و واحدهای پرتابل با قابلیت تکرار استفاده میکند. کانتینرها رفتار برنامه را در محیطهای مختلف فعال و فرآیند استقرار و مقیاسبندی برنامهها را ساده میکنند.
گرهها
گرهها که بهعنوان کارگر یا یک مینیون نیز شناخته میشود، یک ماشین فیزیکی یا مجازی است که برنامههای کانتینری را اجرا میکند. گرهها زیرساخت زیربنایی یک کلاستر کوبرنتیس را تشکیل میدهند و منابع لازم برای اجرای بارهای کاری برنامه را فراهم میکنند. هر گره دارای اجزای کوبرنتیسِ لازم برای ارتباط با کانتینرهای مستر و مدیریت است.
پادها (Pods)
یک Pod کوچکترین واحد قابل استقرار در کوبرنتیس است. پاد یک یا چند کانتینر را نشان میدهد که در یک محل قرار گرفتهاند و محکم بههم متصل شدهاند. کانتینرهای داخل یک پاد، از نام شبکه مشابه، آدرس IP و حجم ذخیرهسازی یکسانی بهره میبرند. پادها امکان قرارگیری کانتینترهای مرتبط را فراهم میکنند و ارتباطات بین کانتینری را تسهیل میکنند.
استقرار
استقرار در کوبرنتیس وضعیت مطلوب یک برنامه را مشخص میکند. آنها ایمیج کانتینر، منابع مورد نیاز، سیاستهای مقیاسبندی و سایر جزئیات مربوط به پیکربندی را مشخص میکنند. kubernetes با مدیریت خودکار استقرار و مقیاسبندی کپیهای برنامه، تضمین میکند که وضعیت واقعی برنامه با وضعیت مطلوب مطابقت دارد.
سرویس
سرویس یک بخش جداست که مجموعهای از پادها و خط مشی دسترسی به آنها را تعریف میکند. سرویس یک نقطه پایانی شبکه پایدار را فراهم میکند که خدمات دیگر یا مشتریان خارجی را قادر میسازد با پادها ارتباط برقرار کنند. سرویسها ماهیت پویای پادها را انتزاعی میکنند و به برنامهها اجازه میدهند بدون تاثیرگذاری بر اتصال، مقیاسبندی، جابهجا یا جایگزین شوند.
معماری کوبرنتیس به چه صورت است؟
کوبرنتیس kubernetes چیست
کوبرنتیس از نوعی معماری با مدل استاد-کارگر (Master-Worker) پیروی میکند که اجزای زیر را شامل میشود.
اجزای اصلی
سرور API: نقطه کنترل مرکزی برای کلاستر کوبرنتیس. این سرور API کوبرنتیس را افشا و درخواستهای کاربران، مدیران و سایر مولفهها را مدیریت میکند.
برنامهریز: مسئول قرار دادن پادها بر روی گرهها بر اساس در دسترس بودن منابع، محدودیتها و سیاستهای زمانبندی است.
مدیر کنترلر: کنترلرهای مختلفی را مدیریت میکند که وضعیت کلاستر را تنظیم کرده و از حفظ تنظیمات موردنظر مطمئن میشود.
Etcd: یک انبار کلید-مقدار توزیعشده که اطلاعات پیکربندی و وضعیت کلاستر را ذخیره میکند.
اجزای گره
کوبِلِت: عامل اصلی در حال اجرا بر روی هر گره، مسئول مدیریت پادها، راهاندازی و توقف کانتینرها و گزارش وضعیت گره به مستر.
کانتینر رانتایم: نرمافزاری که وظیفه اجرای کانتینرها بر روی گرهها را برعهده دارد. داکر یک انتخاب محبوب برای کانتینر رانتایم است؛ اما کوبرنتیس از سایر رانتایمها نیز پشتیبانی میکند.
کوب-پراکسی: اتصال شبکه و تعادل بار بین سرویسها و پادها را مدیریت میکند. بر اساس آدرسهای IP سرویس و پورت فورواردینگها، ترافیک را به پادهای مناسب هدایت میکند.
مقیاسپذیری
کوبرنتیس با افزودن یا حذف کپی بر اساس تقاضا، مقیاسدهی افقی برنامهها را امکانپذیر میکند. بهطور خودکار توزیع کپیها را در سراسر گرهها مدیریت و استفاده بهینه از منابع را تضمین میکند.
دسترسیپذیری بالا
کوبرنتیس مکانسیمهایی را برای اطمینان از در دسترس بودن برنامه و تحمل خطا ارائه میدهد. بهطور خودکار کانتینرهای مشکلدار را مجددا راهاندازی و آنها را در گرههای سالم برنامهریزی میکند. همچنین تعداد کپی موردنظر را برای دستیابی به اهداف تعریفشده در زمینه دسترسیپذیری حفظ میکند.
تعادل بار و کشف سرویس
کوبرنتیس تعادل بار داخلی و قابلیتهای کشف سرویس را ارائه میدهد. سرویسها یک نقطه پایانی پایدار شبکه را در معرض دید قرار میدهند و به ترافیک خارجی اجازه میدهند تا بهطور مساوی در چند پاد توزیع شود. کشف سرویس ارتباط یکپارچه بین سرویسهای درون کلاستر را امکانپذیر میکند.
بهروزرسانی و بازگردانی
کوبرنتیس از بهروزرسانیهای پیوسته پشتیبانی میکند و به برنامهها اجازه میدهد با حداقل زمان از کار افتادگی، بهروز شوند. بهتدریج کپیهای قدیمی را با نمونههای جدید جایگزین و از انتقال روان اطمینان حاصل میکند. در صورت بروز مشکل، کوبرنتیس بازگشت آسان به نسخههای قبلی را فعال و ثبات برنامه را تضمین میکند.
خود ترمیمی
کوبرنتیس بهطور مداوم بر سلامت برنامهها و گرهها نظارت میکند. بهطور خودکار کانتینرهایی را که در بررسیهای سلامت ناموفق هستند، ریاستارت میکند، گرههای ناموفق را جایگزین و وضعیت مطلوب برنامه را بدون دخالت انسان حفظ میکند.
کاربردها و عملکرد Kubernetes چیست؟
استقرار برنامه
Kubernetes استقرار برنامهها را با ارائه یک رویکرد اعلامی ساده میکند. توسعهدهندگان با استفاده از فایلهای YAML یا JSON وضعیت موردنظر برنامههای خود را تعریف و منابع، وابستگیها و پیکربندیهای مورد نیاز را مشخص میکنند.
کوبرنتیس این مشخصات را میگیرد و تضمین میکند که با هماهنگ کردن استقرار پادها و کانتینرها، بهحالت مطلوب دست مییابد.
برنامههای مقیاسبندی
مقیاسبندی برنامهها در کوبرنتیس ساده است. توسعهدهندگان میتوانند تعداد موردنظر کپی را برای پادهای خود تعریف کنند و کوبرنتیس بهطور خودکار تعداد کپیهای در حال اجرا را بر اساس استفاده از منابع و تقاضای کاربر تنظیم میکند.
مقیاسبندی افقی تضمین میکند که برنامههای میتوانند بدون مداخله دستی ترافیک افزایشیافته را مدیریت کنند.
بهروزرسانی و بازگردانی
کوبرنتیس از بهروزرسانیهای پیوسته پشتیبانی میکند و امکان استقرار یکپارچه نسخههای جدید برنامهها را بدون خرابی فراهم میکند. کوبرنتیس با جایگزینی پادهای قدیمی با موارد جدید، مطمئن میشود که برنامه در طول فرآیند بهروزرسانی در دسترس باقی میماند.
در صورت بروز هر مشکلی، کوبرنتیس از بازگردانی آسان نیز پشتیبانی میکند و همهچیز را به وضعیت پایدار قبلی باز میگرداند.
پایش و ثبت گزارش
کوبرنتیس با راهحلهای مختلف نظارت و گزارش ادغام میشود و بینشی را در مورد سلامت و عملکرد برنامهها و زیرساختها ارائه میدهد. ابزارهایی مانند Prometheus، Grafana و Elasticsearch را میتوان برای جمعآوری معیارها، تجسم دادهها و عیبیابی موثر استفاده کرد.
امنیت و احراز هویت
کوبرنتیس چندین ویژگی امنیتی برای محافظت از برنامهها و دادههای حساس ارائه میدهد. از مکانیسمهای احراز هویت و مجوز پشتیبانی و امکان کنترل دسترسی دقیق به منابع را فراهم میکند. علاوه بر این، کوبرنتیس ویژگیهایی مانند Secrets و ConfigMaps را برای مدیریت امن اطلاعات حساس ارائه میدهد.
داکر (Docker) یک پلتفرم منبع باز است که کانتینرسازی را رایج کرده و آن را در دسترس توسعهدهندگان قرار داده است. بدینترتیب راهی آسان و کارآمد برای پکیج کردن برنامهها و وابستگیهای آنها به واحدهای مستقل بهنام کانتینر فراهم میشود. کانتینرهای داکر سبک، پرتابل و ایزوله هستند و به برنامهها اجازه میدهند بهطور مداوم در محیطهای مختلف اجرا شوند.
کلاستر کوبرنتیس مجموعهای از ماشینهای فیزیکی یا مجازی است که گره نامیده میشوند و با همکاری یکدیگر برنامههای کانتینری را اجرا میکنند. این همان زیرساخت اساسی است که کوبرنتیس بر روی آن کار کرده و منابع و هماهنگی لازم را برای استقرار، مدیریت و مقیاسدهی برنامهها فراهم میکند.
کوبرنتیس و داکر اهداف مختلفی را دنبال میکنند و میتوانند بهعنوان فناوریهای مکمل دیده شوند:
داکر در درجه اول بر روی کانتینرسازی متمرکز است و راهی آسان را برای ساخت، پکیج کردن و توزیع برنامهها بهعنوان کانتینر ارائه میدهد. همچنین توسعه و استقرار محلی برنامهها را ساده میکند.
از طرف دیگر، کوبرنتیس برای مدیریت برنامههای کانتینری در محیطهای تولید طراحی شده است. این برنامه بر روی هماهنگی کانتینر، مقیاسپذیری، تحمل خطا و بهینهسازی منابع تمرکز دارد. کوبرنتیس مسئولیت مدیریت چرخه حیات کانتینرها را برعهده دارد و برنامهریزی، مقیاسبندی و نظارت موثر بر آنها را تضمین میکند.
کوبرنتیس یک پلتفرم ارکستراسیون کانتینر همهکاره و قدرتمند است که طیف گستردهای از موارد استفاده و مزایا را ارائه میدهد. در اینجا به برخی از کاربردهای رایج kubernetes اشاره کردیم.
استقرار و مدیریت برنامه
کوبرنتیس استقرار و مدیریت برنامههای کانتینری را ساده میکند. این رویکرد اعلامی به توسعهدهندگان اجازه میدهد تا وضعیت مطلوب برنامههای خود را تعریف کنند و به کوبرنتیس اجازه میدهد تا فرآیند استقرار را مدیریت کند. کوبرنتیس مطمئن میشود که تعداد موردنظر کپی در حال اجرا هستند؛ تعادل بار را مدیریت و بر سلامت برنامهها نظارت میکند.
مقیاسپذیری و مقیاسگیری خودکار
یکی از مزایای کلیدی کوبرنتیس توانایی آن در مقیاسدهی بدون دردسر برنامهها است. کوبرنتیس میتواند بهصورت پویا تعداد کپیها را بر اساس استفاده از منابع یا معیارهای تعریفشده توسط کاربر مقیاسدهی کند.
این رویکرد تضمین میکند که برنامهها بدون نیاز به مداخله دستی، امکان مدیریت ترافیک و تقاضای افزایشیافته را دارند.
دسترسیپذیری و تحمل خطای بالا
کوبرنتیس با ریاستارت کردن خودکار کانتینرهای ناموفق یا زمانبندی مجدد آنها در گرههای سالم در کلاستر، دسترسیپذیری بالا را تضمین میکند. سلامت پادها و گرهها بهطور مداوم کنترل شده و اقدامات پیشگیرانهای برای حفظ وضعیت مطلوب انجام میشود. این تحمل خطا زمان خرابی را به حداقل میرساند و قابلیت اطمینان برنامهها را بهبود میبخشد.
استقرار ابری چندگانه و هیبرید
کوبرنتیس قابلیت پرتابل بودن و انعطافپذیری را ارائه و به سازمانها اجازه میدهد تا برنامهها را در سرویسهای ابری ارائهشده توسط ارائهدهندگان مختلف یا دیتاسنترهای محلی مستقر کنند. زیرساختهای زیربنایی را تفکیک و جابهجایی برنامهها و جلوگیری از محدود شدن فروشنده را تسهیل میکند.
کوبرنتیس یک پلتفرم ثابت را برای مدیریت برنامهها در یک محیط ابری چندگانه یا هیبرید فراهم میکند.
استفاده از kubernetes در سرور مجازی
کوبرنتیس را میتوان روی سرور مجازی اجرا کرد. سرورهای مجازی زیرساخت لازم را برای استقرار و مدیریت یک کلاستر کوبرنتیس فراهم میکنند. در این بخش نحوه اجرای کوبرنتیس در سرور مجازی توضیح داده شده است.
انتخاب یک ارائهدهنده سرور مجازی
ارائهدهندهای را انتخاب کنید که از نظر قیمت، عملکرد، قابلیت اطمینان و در دسترس بودن، نیازهای شما را برآورده کند. سرورهای مجازی مبینهاست علاوه بر برخورداری از قیمتی مقرونبهصرفه، از بهترین و بهروزترین سختافزارهای سرور بهره مند بوده و در معتبرترین دیتاسنترهای سرتاسر جهان میزبانی میشوند.
مشخص کردن شرایط سرور مجازی
مجموعهای از مشخصات مورد نیاز سرورهای مجازی خود را بر اساس اندازه و مقیاسی که برای کلاستر کوبرنتیس خود نیاز دارید، مشخص کنید. هنگام انتخاب مشخصات سرور مجازی، عواملی مانند پردازنده، حافظه، فضای ذخیرهسازی و پهنای باند شبکه را در نظر بگیرید.
نصب کوبرنتیس
کوبرنتیس را با پیروی از دستورالعملهای نصب ارائهشده توسط اسناد کوبرنتیس، بر روی سرورهای مجازی نصب کنید. در این خصوص چندین گزینه وجود دارد؛ استفاده از kops، kubeadm یا یک سرویس مدیریتشده کوبرنتیس که توسط ارائهدهنده سرور مجازی شما در دسترس قرار میگیرد.
راهاندازی شبکه
برای اطمینان از اتصال در کلاستر کوبرنتیس، شبکه را برای سرورهای مجازی پیکربندی کنید. این کار شامل راهاندازی یک شبکه خصوصی (VPC) یا شبکههای همپوشان (Network Overlays) مانند Flannel، Calico یا Weave است که به کانتینرها اجازه میدهد بین سرورهای مجازی مختلف ارتباط برقرار کنند.
پیکبرندی گره اصلی کوبرنتیس
یکی از سرورهای مجازی را بهعنوان گره اصلی (Master) تعیین کنید. اجزای مربوط به سطح کنترل (Control Plane) مانند سرور API، زمانبندی، مدیر کنترلر و غیره را نصب و پیکربندی کنید.
اتصال گرههای کارگر
سرورهای مجازی باقیمانده را بهعنوان گرههای کارگر (Worker) پیکربندی و آنها را به کلاستر کوبرنتیس اضافه کنید. Kubelet و رانتایم کانتینر (مانند داکر) را روی هر گره کارگر نصب و سپس با استفاده از کردنشیالهای احراز هویت مناسب، آنها را به گره اصلی متصل کنید.
استقرار برنامهها
هنگامی که کلاستر کوبرنتیس راهاندازی و اجرا شد، میتوانید برنامههای کانتینری خود را با استفاده از مانیفستهای کوبرنتیس یا فایلهای استقرار، مستقر کنید. وضعیت موردنظر برنامههای خود را از نظر تعداد نسخهها، منابع مورد نیاز و تنظیمات شبکه تعریف کنید.
با دنبال کردن این مراحل، میتوانید کوبرنتیس را بر روی یک سرور مجازی لینوکس یا ویندوز اجرا و از منابع ارائهشده توسط سرورهای مجازی استفاده کنید. بهاینترتیب میتوانید از قابلیتهای ارکستراسیون کانتینر کوبرنتیس بهرهمند شوید و در عین حال از انعطافپذیری و مقیاسپذیری سرورهای مجازی استفاده کنید.
کوبرنتیس یک پلتفرم ارکستراسیون کانتینر منبع باز است که فرآیند استقرار، مقیاسدهی و مدیریت برنامههای کانتینری را خودکار میکند. کانتینرها پکیجهای نرمافزاری سبک، ایزوله و پرتابلی هستند که تمام وابستگیهای مورد نیاز برای اجرای یک برنامه را شامل میشود.
داکر در درجه اول بر روی کانتینرسازی متمرکز است؛ اما کوبرنتیس قابلیتهای هماهنگسازی و مدیریت را برای برنامههای کانتینری در مقیاسهای بزرگتر فراهم میکند. در واقع، آنها میتوانند مکمل یکدیگر باشند؛ در چنین شرایطی داکر بهعنوان رانتایم کانتینر در یک کلاستر کوبرنتیس استفاده میشود. درک مورد استفاده خاص و الزاماتی که دارید، در تعیین اینکه کدام ابزار یا ترکیبی از ابزارها به بهترین وجه با نیازهای شما مطابقت دارد کمک میکند.
کوبرنتیس روی سرور مجازی، ماشینهای مجازی میتوانند بهعنوان گرههای کوبرنتیس مستقر شوند و کلاستر کوبرنتیس در سراسر اینترنت قابل دسترسی باشد. این کلاستر دارای یک گره استاد-کارگر منحصربهفرد خواهد بود که کلاستر را مدیریت و بار کاری لازم را اجرا میکند.
17 Statistical Hypothesis Tests in Python (Cheat Sheet) - MachineLearningMastery.com
WordPress on Kubernetes Cluster — Step-by-Step Guide | by Syedusmanahmad | Medium
Kubernetes kubectl bash completion with alias - Stack Overflow
Exposing Apps With Services | Kubermatic
containers - How to expose nginx on public Ip using NodePort service in Kubernetes? - Stack Overflow
آشنایی با Volume در کوبرنتیز - مجله همروش
ایجاد storageClass از یک گلاستر استوریج در kubernetes – آکادمی لینوکس لرن