رویکردی نوین در مجازی سازی

نوشته شده توسط  admin2 بازدید 187 بار 25 شهریور 1397
کوبرنتس (Kubernetes) یک پلتفرم متن‌باز مدیریت کانتِینِر (Container) است که توسط کمپانی گوگل توسعه‌یافته و در ژوئن 2014 در دسترس عموم قرارگرفته است. هدف از طراحی و عرضه کوبرنتس این بوده که پیاده‌سازی و مدیریت سیستم‌های توزیع‌شده پیچیده برای توسعه‌دهندگانی که به کانتینرهای لینوکس علاقه‌مند هستند، ساده‌تر شود. قبل از این‌که به شرح پلتفرم کوبرنتس و جزئیات مرتبط با آن بپردازیم، مروری اجمالی بر مفهوم کانتینر خواهیم داشت.کانتینر، یک رویکرد نوین در مجازی‌سازیماشین‌های مجازی (Virtual Machines) را هر فرد فعال در حوزه فناوری اطلاعات حداقل یک‌بار استفاده کرده است. فناوری ماشین مجازی این امکان را فراهم می‌آورد که یک سیستم‌عامل روی سیستم‌عامل دیگری اجرا شود. به‌عنوان نمونه سیستم‌عامل مهمان (Guest OS) روی سیستم‌عامل میزبان (Host OS) اجراشده است. (شکل 1- سمت چپ) مزیت‌های ماشین مجازی آن‌چنان گسترده است که ذکر آن در این مختصر نمی‌گنجد. فقط به ذکر این‌ یک مورد بسنده می‌کنیم که نرم‌افزارهای تحت ویندوز را به‌سادگی می‌توان روی یک کامپیوتر دارای سیستم‌عامل لینوکس، با بهره‌گیری از ماشین مجازی اجرا کرد.کانتینر نیز به‌عنوان شیوه‌ای جدید در مجازی‌سازی تا حدی مشابه ماشین مجازی است، با این تفاوت که برای اجرای نرم‌افزار از همان هسته سیستم‌عامل میزبان بهره می‌برد (شکل 1- سمت راست). البته که کانتینر همه مزایای ماشین مجازی را ندارد، اما در نقطه مقابل دیگر به نصب سیستم‌عامل جدید نیاز نیست و در مصرف منابع صرفه‌جویی می‌شود. برای آشنایی بیشتر با کانتینرها، به مقاله‌های مربوط به آن در ماهنامه شبکه شماره 195 مراجعه کنید.
 

کوبرنتس چیست؟

کوبرنتس (به گفته اهالی فن K8) سومین سیستم مدیریت کانتینر به شمار می‌رود که گوگل طراحی کرده است. دو مورد اول به‌نام Borg و Omega بودند که برای استفاده داخلی نوشته‌ شده بودند. همانند امگا، K8 نیز معماری زمان‌بندی هسته را بهبود بخشیده و یک حافظه ذخیره‌سازی مشترک و دائمی را در هسته گنجانده است. تفاوت آن با امگا در این است که حافظه مستقیم در دسترس اجزای مورد اعتماد لایه کنترلی (control plane) نیست و در عوض از طریق REST API قابل‌دسترس است. در کوبرنتس API ای که عملیات REST را مدیریت می‌کند، همانند سایر API ها است.
در سال 2015 بنیاد لینوکس و کمپانی گوگل، نیروهایشان را برای ایجاد بنیاد CNCF (سرنام Cloud Native Computing) متمرکز کردند و کوبرنتس به‌عنوان فناوری پایه در نظر گرفته شد. نسخه پایدار آن نیز در دسامبر 2017 عرضه شد. نمایی از داشبورد کوبرنتس در شکل (2) و معماری
کوبرنتس در شکل (3) به تصویر کشیده شده است. اجزای داخل شکل در ادامه متن شرح داده می‌شوند. (شکل 2 و 3)
 

با کوبرنتس چه‌کاری می‌توان انجام داد؟

کوبرنتس شرکت‌ها را قادر می‌کند توان پردازشی بیشتری را هنگام اجرای نرم‌افزارها به دست آورند. کوبرنتس مدیریت، پیاده‌سازی، زمان‌بندی و کارهای عملیاتی کانتینرهای برنامه را روی کلاستری از ماشین‌ها به‌صورت خودکار درمی‌آورد. تعداد این کانتینرها گاهی به صدها هزار عدد می‌رسد که در محیط خصوصی، ابر یا محیط‌های ترکیبی قرار دارند. همچنین کوبرنتس توسعه‌دهندگان را برای ایجاد یک محیط با محوریت کانتینر(container-centric) یاری می‌بخشد.

به‌عنوان یک پلتفرم، کوبرنتس می‌تواند با سایر فناوری‌ها ترکیب شود برای دستیابی به کارکردهای بیشتر. ضمن این‌که تعداد برنامه‌های مورد پشتیبانی نیز محدود نیست. برخی سیستم‌های پلتفرم به‌عنوان سرویس (PaaS) روی کوبرنتس اجرا می‌شوند. تفاوت کوبرنتس به‌عنوان یک پلتفرم با سیستم‌های PaaS این است که میان‌افزار ارائه نمی‌کند، سورس‌کد پیاده نمی‌کند و برنامه نیز اجرا نمی‌کند.

ارزش کوبرنتس و سرویس‌های کانتینر

کوبرنتس و سرویس‌های کانتینر به کاربران این توانایی و قابلیت را می‌دهد تا زمانی‌که یک نرم‌افزار از یک محیط پردازشی به یک محیط پردازشی دیگر منتقل می‌شود، به‌صورت قابل‌اطمینان اجرا شود. در این میان سازگاری دو محیط پردازشی نیز اهمیتی ندارد. چنین رویه‌ای توسعه‌دهندگان نرم‌افزار و مدیران فناوری اطلاعات را قادر می‌کند که چندین کانتینر برنامه را روی یک سیستم‌عامل مشترک در میان چندین کلاستر سرور (که گره یا Node نامیده می‌شوند) اجرا کنند.
کانتینرِ برنامه‌ها از یکدیگر ایزوله هستند، اما یک کرنل مشترک سیستم‌عامل دارند و میزبان (همان قسمت‌های مشترک سیستم‌عامل) به‌صورت فقط خواندنی (read-only) است. با این رویکرد، همه اجزای برنامه از زیرساخت میزبان جدا می‌شوند که پیاده‌سازی و مقیاس‌ بخشیدن به سیستم را در ابرها و سیستم‌های عامل مختلف ساده می‌کند.
کانتینرها سبک ‌وزن‌تر از ماشین‌های مجازی (VM) هستند (گاهی تنها چند مگابایت حجم دارند) و منابع کمتری را نیز مصرف می‌کنند. یک کانتینر معمولا شامل یک اپلیکیشن، وابستگی‌های آن، کتابخانه‌ها، فایل‌های باینری و پیکربندی است. در نقطه مقابل، یک VM شامل محیط اجرایی به همراه سیستم‌عامل خودش است که آن را سنگین می‌کند و قابلیت جابه‌جایی کمتری را به همراه دارد. 

 
جدول (1) برخی از کلیدواژه‌های مرتبط با پلتفرم کوبرنتس را توضیح می‌دهد.
 
API منعطف، با اینترفیس RESTful که وضعیت کلاستر را در خود نگه می‌دارد. Kubernetes API
اینترفیس خط فرمان Kubectl
یک agent که وظیفه دارد بررسی کند کانتینرها مشکلی نداشته باشند و مطابق دستورالعمل اجرا شوند. Kubelet
فایل‌هایی که موجب اجرای برنامه درون کانتینر می‌شوند. Image
فایل هایی که موجب اجرای برنامه درون کانتینر می شوند Pod
یک سرور master به همراه تعدادی worker که اجرای کانتینر را بر عهده دارند. Cluster
یک ماشین worker که توسط master مدیریت می‌شود. Node
ابزاری برای اجرای کلاستر درون ماشین مجازی روی یک کامپیوتر Minikube
یک حلقه کنترلی که بررسی می‌کند وضعیت مطلوب با وضعیت واقعی کلاستر یکسان باشد. Controller
         
جدول 1

داکر یا کوبرنتس؟
داکر سُوارم (Docker Swarm) یکی دیگر از پلتفرم‌هایی است که برای مدیریت کانتینر یک سال زودتر از کوبرنتس روانه بازار شده و محبوبیت آن در صنعت بیشتر از کانتینر بوده است. با این‌حال، داکر در زمینه مدیریت کلاستر قدرت کوبرنتس را ندارد، زیرا ابزاری برای لاگ گرفتن و مانیتورینگ فضای کاری در آن تعبیه نشده است.
کوبرنتس به همکاری تجاری خود با شرکت‌های متعددی چون eBay، SAP، فیلیپس، هوم آفیس، گولدمن ساچز، مونزو، پوکمون گو و چندین شرکت نام ‌آشنای دیگر در حوزه‌های مختلف می‌بالد. کوبرنتس همانند داکر سوارم، با هدف محدود کردن استفاده سخت‌افزار و منطبق ساختن آن با نیازمندی‌های کسب‌وکار طراحی‌شده است. درواقع هر دو این محصولات به کاهش هزینه‌ها منجر می‌شوند.

در نقطه مقابل، داکر سوارم ادعا می‌کند پراستفاده‌ترین پلتفرم مدیریت کانتینر در سراسر جهان است. این دو نرم‌افزار هم روی لینوکس و هم روی ویندوز اجرا می‌شوند. حال پرسشی که مطرح می‌شود این است: «کدام‌یک بهتر است؟» یا به‌عبارت‌دیگر، «کدام‌یک از این دو پلتفرم برای کسب‌وکار من مفیدتر است؟» در ادامه به پاسخ این پرسش خواهیم پرداخت.
داکر نرم‌افزاری متن‌باز است؛ عبارتی مورد علاقه برای همه مدیران فناوری اطلاعات که از نظر بودجه محدود هستند. البته این ویژگی تنها برای نسخه Community برقرار است که ابزارهای پایه‌ای همچون بیلدهای خودکار را به‌صورت سرویس شامل می‌شود. داکر را می‌توان به‌صورت رایگان و بدون خریداری نسخه اینترپرایز (که هیچ پشتیبانی در خصوص مدیریت یکپارچه طول عمر یا زیرساخت مورد تایید نسخه پولی آن ندارد.) دانلود کرد.
کوبرنتس کاملا متن‌باز است و بسیاری از توسعه‌دهندگان، از نرم‌افزار به‌صورت آزمون ‌و خطا برای به کار بردن آن در نیازمندی‌های خاص یک کسب‌وکار بهره می‌برند. پشتیبانی پولی و سرویس‌های مرتبط از طریق سازمان‌هایی همچون CoreOS قابل دریافت است. در هرحال، کمک فنی از طریق جامعه برنامه‌نویسان مرتبط با هر دو پلتفرم در وب‌سایت استک‌اورفلو در دسترس کاربران آن‌ها است. کوبرنتس به اکوسیستم متنوع خود از ابزارهای پیاده‌سازی و مدیریت کانتینرها افتخار می‌کند و داکر نیز به فریم‌ورک امن‌سازی‌شده خود به‌عنوان یک نقطه قوت اشاره می‌کند. در واقع، کوبرنتس می‌تواند از موتور داکر برای افزایش قابلیت‌های مدیریتی خود استفاده کند.

نسخه اینترپرایز داکر که برای تهیه آن باید دست‌به‌جیب شد، به‌عنوان یک محصول Containers-as-a-Service به بازار عرضه‌شده و امکان مدیریت برنامه‌ها را روی یک داشبورد یکپارچه فراهم می‌کند. فروشندگان رسمی این محصول عبارتند از: مایکروسافت، Canonical، IBM و HPE. قیمت به ازای هر نود نیز در زمان نگارش این متن حدود 600 تا 3000 پوند است و گاهی هم قیمت آن به میزان پشتیبانی مورد نیاز بستگی دارد.
نتیجه نهایی این‌که انتخاب بین داکر و کوبرنتس چندان موضوعیت ندارد، زیرا این دو در قابلیت‌هایی که عرضه می‌کنند، اندکی متفاوت هستند. البته کوبرنتس به دلیل ویژگی ماژولار انعطاف‌پذیرتر است. ضمن این‌که گوگل آن را توسعه داده، پس این پلتفرم دیدگاه‌های سرویس‌دهندگان وب را دنبال می‌کند.
مدیران فناوری اطلاعات هر شرکت باید به این پرسش پاسخ دهند که کدام نرم‌افزارها یا سرویس‌ها را می‌خواهند به‌صورت کانتینرشده در بیاورند و چه دلیلی برای این کار دارند. در این‌صورت مشخص خواهد شد که کدام ابزار برای کار آن‌ها مناسب‌تر است.

نظرات کاربران

تصویر امنیتی تصویر امنیتی جدید