در قسمت اول از مقالهی بررسی عملکرد vSphere Integrated Containers Engine، به معرفی Containerها، Imageها و Volumeها و مفهوم Runtime و Package در کانتینر پرداختیم و در قسمت دوم به بررسی سناریوهای مختلف در زمینه پیاده سازیContainer پرداخته شد و در این مقاله که قسمت آخر میباشد به عملکرد vSphere Integrated Containers Engine اشاره میگردد.
vSphere Integrated Containers Engine از قابلیت پورتال بودن فرمت Docker Image بهره میبرد تا خود را به عنوان یک بستر مناسب برای پیادهسازی سازمانی ارائه دهد. توسعهدهندگان، Containerها را روی یک سیستم ایجاد کرده و آنها را بر روی Registry قرار میدهند. Containerها توسط سیستم دیگری تست شده و برای عملیات، مورد تایید قرار میگیرند. سپس vSphere Integrated Containers Engine میتواند Containerها را ازRegistry بردارد و آنها را در vSphere پیادهسازی نماید.
مفاهیم vSphere Integrated Containers Engine
اگر یک نمودار وِن را در نظر بگیریم که کارکرد vSphere یک دایره باشد و کارکرد Docker دایرهی دیگر، همپوشانی بسیار زیادی بین این دو دایره وجود خواهد داشت. هدف vSphere Integrated Containers Engine این است که تا جایی که ممکن است دایرهی vSphere را بزرگتر کند و قابلیتهایی از Docker که موجود نیستند را نیز اضافه کرده و تا حد ممکن از کدهای خود Docker مجددا استفاده نماید. در نتیجه، با این تکنیک نباید نباید قابلیت پورتال بودن فرمت Docker Image از بین برود و باید کاملا برای یک Client Docker شفاف باشد. در ادامه مفاهیم کلیدی و اجزایی که این امر را ممکن میسازند، شرح داده میشود.
ماشینهای مجازی Container
ماشینهای مجازی Container که توسط vSphere Integrated Containers Engine ایجاد شده اند، دارای تمامی ویژگیهای Containerهای نرمافزاری هستند:
- یک لایه ذخیره سازی که قابلیت آنرا دارد که بصورت اختیاری به تعدادی Volume از نوع Persistent متصل نمود.
- یک سیستم عامل سفارشی لینوکسی که طوری طراحی شده است که تنها به عنوان یک Kernel شناخته شود و نیازمند این است که Imageها کاربردی باشند.
- مکانیزمی برای اتصال لایههای فقط خواندنی (Read-Only)
- شناسه فرآیندPID 1 که با نام Tether شناخته میشود، واحد کنترل در ماشین مجازی Container را گسترش میدهد.
- روشهای متفاوتی از پیکربندی و حالت ورود (Ingress) و خروج (Egress) وجود دارد، که به خوبی تعریف شدهاند.
- پیکربندی خودکار برای انواع توپولوژیهای شبکهای.
Container آمادهسازی شده، حاوی هیچ سیستم عاملی نیست، در واقع:
- ماشین مجازی Container از ISOیی بوت میشود که حاوی هستهی اصلی Photon Linux باشد. لازم به ذکر است که ماشینهای مجازی Container، سیستم عامل Photon را کامل اجرا نمیکنند.
- ماشین مجازیContainer با یک Container Image پیکربندی شده است که به عنوان یک دیسک Mount میگردد.
- لایههای Container Image به مانند سلسله مراتبی از دیسکهای فقط خواندنی Snapshot نمایش داده میشوند که زیر مجموعه هم هستند و تغییرات در بالاترین سطح این سلسله مراتب ذخیره میگردد.
- Volume Container، VMDKهای فرمتشده هستند که به عنوان دیسک متصل شده و بر روی یک Datastore قرار میگیرند.
- شبکهها، Port Groupهایی میباشند که به عنوان vNICها متصل شدهاند.
Hostهای Container مجازی
یک Container Host مجازی یا به اختصار (VCH)، معادل کاربردی یک Linux VM است که Docker را اجرا میکند، که مزیتهایی قابل توجه خودش را دارا میباشد. یک VCH دارای عناصر زیر است:
- یک استخر کلاستربندیشدهای از منابع که ماشینهای مجازی Container درون آن آمادهسازی میگردند.
- نام گذاری واحد و یکپارچه برایContainer به گونهای که Single-Tenant میباشد.
- ارائه یک Docker API Endpoint ایزوله شده.
- احراز هویت برای استفاده و پیکربندی زیرساخت مجازی ازپیش تاییدشده.
- یک شبکهی خصوصی که Containerها به طور پیشفرض به آن متصل هستند.
اگر VCH در یک کلاستر vCenter Server پیادهسازی شود، برای تمام سرورهای درون کلاستر پوشش امنیتی ایجاد کرده و انعطافپذیری و استفادهی پویا از منابع سرور را به طور معمول، فراهم مینماید.
یک VCH از جنبههای زیر، به طور کاربردی با یک Container Host قدیمی متفاوت است:
- VCH به طور طبیعی با آمادهسازی برای اهداف vSphere، کلاستربندی و برنامهریزی پویا را فرا میگیرد.
- محدودیتهای منابع به طور پویا قابل پیکربندی میباشد و تاثیری روی Containerها ندارند.
- Containerها هستهی اشتراکی ندارند.
- هیچ Image Cacheی به صورت Local وجود ندارد. آنها بر روی یک Datastore در کلاستری که در زمان پیادهسازی VCH، مشخص میگردد نگه داشته میشوند.
- Storage مشترک خواندن-نوشتن (Read-Write) وجود ندارد.
VCH یک Appliance چند کاربردی است که به عنوان یک vAPP در یک کلاستر vCenter Server یا در یک Pool Resource روی یک ESXi Host پیادهسازی میگردد. vAPP یا Pool Resource، رابطهی والد-فرزندی مفیدی را در vSphere Web Client فراهم میکند تا بتوان به آسانی ماشینهای مجازی Containerی که درون یک VCH آمادهسازی شدهاند را شناسایی نمود. همچنین میتوان محدودیتهای منبع را روی vAPP مشخص کرد. میتوان چندین VCH را روی یک Pool Resource یا درون یک کلاستر vCenter Server آمادهسازی نمود.
VCH Endpoint VM
VCH Endpoint در واقع ماشینی میباشد که درون vAPP یا Pool Resource اجرا میگردد. بین یک VCH و یک VCH Endpoint VM رابطهی یکبهیک وجود دارد. VCH Endpoint VM دارای کاربردهای زیر است:
- سرویسی که VCH به آن نیاز دارد را اجرا مینماید.
- یک Remote API ایمن را برای Client فراهم میکند.
- دستورات Docker را دریافت کرده و آن دستورات را به درخواستهای API و ساختارهای زیرساختی vSphere ترجمه میکند.
- Forwarding شبکه را فراهم مینماید تا پورتهای رو به Containerها را بتوان روی VCH Endoint VM باز کرد و Containerها بتوانند به یک شبکهی عمومی دسترسی پیدا کنند.
- چرخهی عمر Containerها، محل نگهداری Image، محل نگهداریVolume ها و حالت Container را مدیریت میکند.
- Logging و مانیتورینگ سرویسهای خود و Containerهای خود را فراهم مینماید.
چرخهی عمر VCH Endpoint VM توسط یک ابزار به نام Vic-Machine مدیریت میگردد.
معرفی ابزار Vic-Machine
ابزار Vic-Machine، دستوری است برای ویندوز، Linux و OSX، که چرخهی عمر VCHها را مدیریت میکند و برای استفادهی مدیران vSphere طراحی شده است. Vic-Machine پردازنده، شبکه، فضای ذخیرهسازی و کاربر vSphere را به عنوان ورودی دریافت کرده و یک VCH به عنوان خروجی ایجاد میکند. این ابزار دارای ویژگیهای اضافی زیر است:
- Certificateهایی را برای احراز هویت Docker Client TLS ایجاد مینماید.
- بررسی میکند که پیشنیازها برای پیادهسازی VCH روی کلاستر یا Host فراهم شده باشند، برای مثال فایروال، Licenseها و موارد دیگر به درستی پیکربندی شده باشند.
- VCHهای موجود را برای Debug کردن، پیکربندی مینماید.
- VCHها را فهرست کرده و حذف مینماید.
ــــــــــــــــــــــــــ
بررسی ویژگی های vSphere Integrated Containers Engine – قسمت اول
بررسی ویژگی های vSphere Integrated Containers Engine – قسمت دوم
بررسی ویژگی های vSphere Integrated Containers Engine – قسمت سوم (پایانی)