شرکتهای بزرگ و کوچک باید بطور مداوم برنامههای کاربردی خود را ارتقاء دهند تا در صف اول رقابت باقی بمانند. بر این اساس، استفاده از Container و میکروسرویسها به عنوان الگوی برترِ توسعهی نرمافزار برای بروزرسانی برنامهها پدیدار شد. در این میان پلتفرم Kubernetes برای کمک به مدیریت پیادهسازی و دسترسی به برنامههای Container شده، به ویژه خودکارسازی و تنظیم Container، ایجاد شد. Kubernetes پروژهای Open-Source است که در اصل برای مدیریت چرخهی عمر صدها هزار Container در Google ساخته شده است و Open-Sourceی است که توسط Cloud Native Computing Foundation یا به اختصار CNCF اداره میشود. از آنجا که گوگل پلتفرم Kubernetes را در سال 2015 به صورت Open-Source ایجاد کرد، اکنون با یک اکوسیستم غنی و خدمات رو به رشد، پشتیبانی و ابزارهای مختلف تبدیل به پلتفرم تنظیم Container شده است. بررسی CNCF در سال 2019 نشان میدهد که 78 درصد از کاربران شرکتکننده در نظرسنجی در حال حاضر از Kubernetes استفاده میکنند. این میزان نسبت به سال 2018، 58 درصد افزایش داشته است. علاوه بر این، 18 درصد از این کاربران بیش از 5000 Container تولید کردهاند.
معماری و اجزای پلتفرم Kubernetes
وقتی که کاربر برای اولین بار Kubernetes را راهاندازی میکند، یک کلاستر Kubernetes دریافت میکند که حاوی مولفههای زیادی است. در این مطلب در خصوص برخی از اجزاء مربوط به پیادهسازی VMware vSphere همراه با پلتفرم Kubernetes آمده است.
Node
دو نوع Node اصلی در Kubernetes وجود دارد: Master و Worker.
Master Node مجموعهای از Worker Nodeها را در زمان بارِکاری مدیریت میکند و از اجزاء زیر تشکیل شدهاست.
- Kube-apiserver که مانند Front End برای کلاستر عمل میکند. کلیهی ارتباطات خارجی با کلاستر از طریق Apiserver انجام میشود.
- Kube-Controller-Manager مجموعهای از کنترلکنندهها را برای کلاستر در حال اجرا، به کار میگیرد. Controller-Manager، بر سراسر کلاستر نظارت میکند.
- Kube-Scheduler بر اساس رویدادهایی که در Etcd رخ میدهد، فعالیت Worker Nodeها را برنامهریزی میکند.
- Kube-Scheduler نودهای بهینه را برای Podهای تازه ایجاد شده یا Podهای برنامهریزی نشده، انتخاب میکند.
- Etcd یک دیتابیس کلاستر مانند است که برای ذخیرهسازی و تکرار حالت کلاستر Kubernetes از آن استفاده میشود.
راهکار Kubernetes چیست و چه مزایایی دارد
ویدیوهای بیشتر درباره Kubernetes
Pod
Pod مجموعهای از یک یا چند Container است. Podها توسط Kubelet در حال اجرا بر روی هر Node اداره میشوند. این Kubelet تمام Podspecهای اختصاص داده شده به خود را نظارت میکند و در طول چرخهی عمر خود با مقایسهی Pod واقعی با حالت مورد نظر که در Podspec تعریف شده، وظایف مشخص شده را انجام میدهد.
Kubelet
Kubelet، یک Agent در هر Kubernetes Node است که اجرای آنها را در یک Pod تضمین میکند. این Kubelet بر تمام Podspecهای اختصاص دادهشده به خود نظارت میکند و در طول چرخهی عمر خود با مقایسهی وضعیت Pod واقعی با حالت مورد نظر که در Podspec تعریف شده، وظایف مشخص شده را انجام میدهد.
شکل 1 نحوهی اتصال این اجزاء و کار با یکدیگر را نشان میدهد.
VMware vSphere با پلتفرم Kubernetes صرفا یک معماری جدید از vSphere است که از Kubernetes به عنوان Control Plane استفاده میکند. این راهکار منحصرا برای اجرای بارهای کاری قدیمی و برنامههای Native جدید مناسب است و به توسعهدهندگان این امکان را میدهد تا برای مدیریت منابع Cloud (مانند ماشینهای مجازی یا VMها)، دیسکها و شبکهها از Kubernetes API استفاده کنند. ضمن اینکه مدیران مجازیسازی را قادر میسازد تا به جای سروکار داشتن با VMهای شخصی، تمام برنامههای کاربردی را مدیریت کنند. البته علیرغم همهی مزایایی که پیادهسازی پلتفرم Kubernetes دارد باز هم شرکتها و اشخاص به دلایلی در برابر این کار مقاومت میکنند.
طبق بررسی CNCF در سال 2019، سه مانع اصلی در پذیرش Kubernetes، تغییرات فرهنگی (43 درصد)، امنیت (40 درصد) و پیچیدگی آن (38درصد) است که VMware vSphere همراه با Kubernetes هر سه این موانع را داراست.
جهت مشاوره رایگان و یا راه اندازی زیرساخت مجازی سازی دیتاسنتر با کارشناسان شرکت APK تماس بگیرید. |
VMware vSphere همراه با پلتفرم Kubernetes بهترینها را ارائه میدهد و تمام نیازهای کاربران را برآورده میکند. مدیران زیرساختهای مجازی یا به عبارتی VI میتوانند با استفاده از ابزارهای فعلی مدیریت vSphere، کلاسترهایی را بر اساس تقاضا برای پشتیبانی توسعهدهندگان فراهم کنند. مانند vSphere Client، vSphere PowerCLI و APIها برای مدیریت VMها.
VMware vSphere همراه با Kubernetes شبیه یک کلاستر استاندارد Kubernetes است و مانند آن عمل میکند و میتواند از APIهای استاندارد Kubernetes برای تعریف منابع لازم مانند ذخیره سازی و شبکه استفاده کند. با استفاده از این رویکرد، دیگر نیازی به یادگیری یا استفاده از APIها، Client یا زیرساخت vSphere نیست.
VMware vSphere همراه با Kubernetes دارای دو نوع کلاستر است که به صورت Native قابل اجرا هستند:
کلاستر vSphere Supervisor یک Kubernetes Control Plane برای کلاستر vSphere VMware Tanzu Kubernetes Grid است که Guest Cluster یا کلاستر مهمان نیز نامیده میشود و یک کلاستر مبتنی بر استاندارد بوده و کاملا با Kubernetes مطابق با Upstream سازگار است.
کلاستر vSphere Supervisor
کلاستر vSphere Supervisor نوع خاصی از کلاستر Kubernetes است که به جای استفاده از Linux nodeها از VMware ESXi Hostها به عنوان Worker Nodeاستفاده میکند. یعنی از یک Kubelet سفارشی به نام Spherelet که مستقیما با ESXi Hypervisor ادغام شده، استفاده میکند.
Spherelet مسئول کلیهی اوضاع چرخهی عمر، تنظیمات و کلیهی تعاملات بین Podهاست. همچنین هرگونه وابستگی به Pod مانند دسترسی به تصاویر، شبکه و حجم و پیکربندی صحیح را تضمین میکند. علاوه بر این، Spherelet به صورت دوره ای وضعیت اجرای درست Pod در دامنهاش را گزارش میدهد، بنابراین برنامهریز Kubernetes و Master K8s API میتوانند در صورت لزوم اقدام به تصحیح کنند.
کلاستر Tanzu Kubernetes Grid یا کلاستر Guest
کلاستر vSphere Supervisor برای vSphere دارای پلتفرم Kubernetes به عنوان Control Plane عمل میکند و با وجودی که از Kubernetes استفاده میکند، ولی کلاستر مطابق با Kubernetes نیست. از سوی دیگر، کلاسترTanzu Kubernetes Grid ایجاد شده که کلاسترهای کاملا سازگار با پلتفرم Kubernetes را برای توسعهدهندگان مهیا کند تا از آن مانند سرویسی استفاده کنند که از دستورات استاندارد Kubernetes پیروی میکند.
Namespaceها در vSphere دارای Kubernetes
Namespace برای مدیریت در محیطهایی که شامل کاربران زیادی در چندین تیم یا پروژه است، استفاده میشود. Namespaceها مانند یک راهکار برای تقسیم منابع کلاستر و جداکردن مجوزها در بین کاربران استفاده میشود. یک سازمان میتواند چهار Namespace برای محیطهای مختلف مانند Front-End، DB و آنالیز ایجاد کند.