فهرست محتوا
کوبرنتیز چیست؟
کوبرنتیز (به آن K8s نیز میگویند) سیستم متنبازی است که با استفاده از آن میتوان پیادهسازی، مقیاسبندی (Scaling) و مدیریت برنامههای کانتینری را به صورت خودکار انجام داد و بنابراین تیمهای توسعه میتوانند تمرکز خود را بیشتر بر روی نوآوری و بهینهسازی کدهای خود بگذارند. Kubernetes کانتینرها را با هدف مدیریت و جستجوی آسان آنها در واحدهایی مشخص سازماندهی میکند. در فناوری کانتینرسازی، برنامهها در کانتینرهایی ایزوله (Isolated) قرار میگیرند و تمام کانتینرها نیز از یک سیستمعامل (Operating System) مشترک استفاده میکنند که انجام اینکار باعث کاهش هزینهها و بهینهسازی مصرف منابع سختافزاری و نرمافزاری میشود. محبوبیت نرمافزار کوبرنتیز با توجه به استقبال گسترده سازمانها و شرکتها از فناوری کانتینرسازی، به صورت قابل توجهی افزایش یافته است. این پلتفرم ابتدا توسط گوگل طراحی شد و امروزه توسط بنیاد رایانش ابری بومی (Cloud Native Computing Foundation) توسعه داده میشود. توسعهدهندگان همچنین با استفاده از دستورات داخلی Kubernetes میتوانند برنامههای کانتینری را مقیاسبندی، مدیریت، ویرایش و پیادهسازی کنند. این پلتفرم با زبان برنامهنویسی Go نوشته شده و در سال ۲۰۱۴ به صورت متنباز در اختیار کاربران قرار گرفت. کوبرنتیز ۱۵ سال است که توسط گوگل مورد استفاده قرار میگیرد و جوامع متنباز مختلفی نیز از سرتاسر دنیا در توسعه آن مشارکت دارند. کوبرنتیز با خودکارسازی فرآیند ارکستراسیون (Orchestration) کانتینرها، تا حد زیادی باعث صرفهجویی در زمان توسعه و تحویل برنامهها میشود. امروزه کوبرنتیز و در کل فناوری کانتینرسازی در حال تبدیل شدن به یک اکوسیستم محاسباتی همهمنظوره هستند و بدینترتیب میتوانیم آنها را رقیب جدی ماشینهای مجازی (VMs) در نظر بگیریم. Kubernetes در محیطهای اختصاصی، عمومی و ابری قابل اجرا بوده و کاربران میتوانند از آن برای مدیریت میکروسرویسها نیز استفاده کنند. سرویسها و ابزارهای کوبرنتیز به راحتی در دسترس بوده و این پلتفرم چند منظوره از پشتیبانی بسیار خوبی نیز برخوردار میباشد. البته پلتفرمهای مدیریت کانتینر دیگری نیز وجود دارد اما هیچیک از آنها به اندازه Kubernetes محبوب نیستند. جدیدترین نسخه Kubernetes در هنگام انتشار این مقاله، نسخه ۱.۲۷ است که در آوریل ۲۰۲۳ منتشر شد. برای اطلاع از سایر نسخهها نیز میتوانید به وبسایت رسمی کوبرنتیز مراجعه کنید.
کانتینر چیست؟
کانتینرها (Containers) مولفههای نرمافزاری سبکی هستند که در محیطی ایزوله، کدهای منبع برنامهها و اپلیکیشنها را با کتابخانههای سیستمعامل و تمام ابزارهای مورد نیاز برای اجرای کدها ترکیب میکنند که این امر باعث افزایش چمشگیر سرعت استقرار، توسعه و تحویل برنامهها میشود. کانتینرها از نوعی فناوری مجازیسازی استفاده میکنند که به برنامههای موجود در کانتینرها اجازه میدهد تا بسته به نیازی که دارند، به صورت مشترک از منابع نرمافزاری و سختافزاری سیستم استفاده کنند. کانتینرها عملکردی مشابه ماشینهای مجازی دارند و هر یک دارای سیستم عامل، فایلهای سیستمی، پردازنده و حافظه مخصوص به خود هستند. کانتینرها با توجه به حجم کم ، معماری منحصربهفرد و استفاده از تنها یک سیستم عامل، نسبت به ماشینهای مجازی به منابع بسیار کمتری نیاز دارند. کانتینرها ممکن است مجبور شوند تعداد زیادی برنامه پیچیده را به صورت همزمان اجرا کنند که این مسئله مدیریت آنها را کمی دشوار میکند اما با وجود ابزار قدرتمند Kubernetes این مشکل قابل حل است. داکر (Docker) مهمترین پلتفرم کانتینری میباشد که توسط میلیونها توسعهدهنده از سرتاسر دنیا مورد استفاده قرار می گیرد. همانطور که اشاره شد کانتینرها در محیطی ایزوله قرار دارند و بنابراین عملکرد آنها تاثیری بر سایر کانتینرها و برنامههای داخل آنها نمیگذارد.
کوبرنتیز چگونه کار میکند؟
ساختمان کوبرنتیز دارای بلوکهایی به نام خوشه (Cluster) میباشد که هر خوشه نیز خود از دو بخش واحد کنترل (Control Plane) و گرهها (ماشینهای محاسباتی) تشکیل میشود. خوشه کوبرنتیز در مجموع باعث بهبود عملکرد و سرعت پردازش برنامههای کانتینری و در کل شبکه میشود. هر گره (Node) یک ماشینی فیزیکی یا مجازی است که Podها را اجرا میکند و واحد کنترل نیز وظیفه مدیریت و حفظ وضعیت خوشهها را برعهده دارد و باعث خودکارسازی بسیاری از فرآیندها میشود. به عنوان مثال واحد کنترل میتواند بر چگونگی اجرای برنامههای کانتینری نظارت کند. واحد کنترل Kubernetes در واقع دستورات (Commands) را از مدیر سیستم (Sysadmin) یا متخصص DevOps دریافت و آنها را به گرههای مشخصی منتقل میکند. کوبرنتیز برای انجام وظایف خود نیاز به یک سیستمعامل (مانند لینوکس) دارد و با Podهای در حال اجرا نیز تعامل میکند.
مزایای کوبرنتیز کدامند؟
عملکرد بالا
کوبرنتیز از عملکرد بسیار خوبی برخوردار میباشد تا حدی که شرکتی مانند گوگل به لطف این پلتفرم قدرتمند میتواند بدون هیچ مشکلی در هفته میلیاردها کانتینر را ایجاد و اجرا کند.
خودکارسازی فرآیندها
Kubernetes یک ابزار اتوماسیون (Automation) حرفهای است و با استفاده از دستورات داخلی آن میتوانید بسیاری از فرآیندهای مرتبط با برنامههای کانتینری را به صورت خودکار انجام دهید و بنابراین استفاده از پلتفرم کوبرنتیز باعث صرفهجویی در وقت و افزایش بهرهوری توسعهدهندگان میشود.
مدیریت قدرتمند
مدیریت دستی هزاران کانتینر بسیار دشوار است. کوبرنتیز فرآیندهای محاسباتی، شبکهسازی، ذخیرهسازی و بسیاری از موارد دیگر را به راحتی مدیریت میکند و بنابراین توسعهدهندگان میتوانند تمرکز خود را بیشتر بر روی توسعه برنامههای خود بگذارند.
نظارت بر سلامت خدمات
کوبرنتیز به طور خودکار سلامتی سرویسهای شما را مورد بررسی قرار میدهد و در صورت از کار افتادن یا متوقف شدن کانتینری، آن را مجدداً راهاندازی میکند و تنها پس از اطمینان از عملکرد صحیح خدمات شما، آنها را در دسترس کاربران قرار میدهد. انجام این کار باعث صرفهجویی در وقت و افزایش نرخ آپتایم (Uptime) میشود.
قابلیت انتقالپذیری بالا
Kubernetes از قابلیت انتقالپذیری بالایی برخوردار است و این یعنی میتوانید برنامههای کانتینری خود را برای اجرا به محیطهای مختلفی ( محیطهای مجازی، سرورهای Bare Metal، …) منتقل کنید.
کاهش هزینهها
کوبرنتیز با بهینهسازی مصرف منابع، مقیاسبندی خودکار و انعطافپذیری بالا باعث کاهش هزینههای شما میشود و بیشتر قابلیتهای آن نیز متنباز و رایگان هستند.
مقیاسپذیری خودکار
مقیاسپذیری برنامههای مبتنی بر ابر بومی به صورت افقی (Horizontal Scaling) انجام میشود. Kubernetes دارای قابلیت «مقیاسپذیری خودکار» بوده و منابع مورد نیاز کانتینرها را به صورت خودکار در اختیار آنها قرار میدهد. معماری کوبرنتیز به گونهای است که میتواند از سیستمهای قدرتمند هم پشتیبانی کند و بنابراین بدون هیچ مشکلی میتوانید زیرساخت کامپیوتری خود را ارتقا دهید.
پشتیبانی از API
ساختار اصلی کوبرنتیز مبتنی بر معماری REST API بوده و از طریق برنامهنویسی میتوان قسمتهای مختلف آن را مدیریت کرد.
پشتیبانی از فناوری چندابری
کاربران Kubernetes میتوانند از قابلیت چندابری بهرهمند شوند. شما میتوانید تمام کارهای خود را در یک فضای ابری واحد قرار دهید و یا آنها را در بسترهای ابری مختلف توزیع کنید. استفاده از فناوری چند ابری باعث بهبود عملکرد و انعطافپذیری زیرساختها (سرورهای ابر عمومی، ابر خصوصی، سرورهای داخلی و …) میشود.
دسترسی به منابع آنلاین
جوامع کاربری Kubernetes در اینترنت بسیار فعال هستند و در صورت بروز هر نوع مشکلی در پلتفرم کوبرنتیز خودتان میتوانید به آسانی راهحلی برای آن پیدا کنید.
کوبرنتیز از چه قسمتهایی تشکیل شده است؟
پلتفرم Kubernetes از قسمتهای مختلفی تشکیل شده است که هر یک وظیفه خاصی را انجام میدهند. در ادامه با اجزا و اصطلاحات مرتبط با کوبرنتیز آشنا میشویم.
خوشهها: خوشهها (Cluster) مهمترین قسمت Kubernetes هستند و هر خوشه به گروهی از ماشینهایی گفته میشود که کوبرنتیز را اجرا میکنند. هر خوشه در مجموع از یک واحد کنترل و گرهها تشکیل شده است.
گرهها: گرهها (Nodes) ماشینهایی هستند که وظیفه آنها اجرای Podها و انجام وظایف تعیین شده از طرف واحد کنترل میباشد.
واحد کنترل: واحد کنترل (Control Plane) مجموعهای از فرآیندهایی است که گرههای کوبرنتیز را مدیریت میکنند.
Pod: هر Pod نمونهای از یک فرآیند در حال اجرا در کوبرنتیز میباشد که خود از یک یا چند کانتینر تشکیل شده و بر روی گرهای واحد مستقر میشود.
Replication controller: این ابزار مشخص میکند که چند نسخه یکسان از یک Pod باید در قسمتهای مختلف یک خوشه اجرا شوند.
Kubelet: این سرویس بر روی گرهها اجرا میشود و از راهاندازی و اجرای صحیح کانتینرها اطمینان حاصل میکند.
kubectl: ابزار پیکربندی خط فرمان کوبرنتیز میباشد که با استفاده از آن میتوان خوشهها را کنترل کرد.
Service: سرویس در کوبرنتیز چگونگی دسترسی به Podهای در حال اجرا در شبکه را مشخص میکند.
Kube-apiserver: بخشی از واحد کنترل کوبرنتیز است که وظیفه تأیید، پیکربندی و بهروزرسانی دادههایی مانند پادها، سرویسها، Replication controller و بسیاری از موارد دیگر را برعهده دارد و یک API مبتنی بر کوبرنتیز را در اختیار کاربران قرار میدهد. Kube-apiserver همچنین این امکان را فراهم میکند تا اجزای مختلف خوشهها باهم ارتباط برقرار کنند.
etcd: پایگاهدادهای است که تمام دادههای مرتبط با خوشههای Kubernetes را در خود ذخیره میکند.
Kube-Proxy: یک پروکسی شبکه و بخشی از مفهوم سرویس در کوبرنتیز است که بر روی هر گره کوبرنتیز اجرا میشود. Kube-Proxy دستورالعملهای و قوانین شبکه را بر روی گرهها حفظ میکند.
خطمشی کوبرنتیز:
Kubernetes دارای Policy یا خطمشیهایی میباشد که تضمین میکنند Podها به استانداردهای رفتاری خاصی پایبند هستند. به عنوان مثال، خطمشیها میتوانند مانع از استفاده بیش از حد Podها از CPU، RAM و یا فضای ذخیرهسازی شوند.
سوالات متداول
ماشینمجازی چیست؟
به نسخه مجازی یا شبیهسازی شده یک کامپیوتر فیزیکی، ماشین مجازی میگویند. ماشینهای مجازی برای تعامل با کامپیوتر فیزیکی نیاز به نرمافزاری به نام هایپروایزر (Hypervisor) دارند. این نرمافزار منابع مورد نیاز ماشینهای مجازی را در اختیار آنها قرار میدهد. به ماشین مجازی در اصطلاح کامپیوتری مهمان (Guest) و به دستگاه فیزیکی که ماشین مجازی بر روی آن قرار دارد نیز میزبان (Host) میگویند.
میکروسرویس چیست؟
میکروسرویس که به آن معماری میکروسرویس نیز گفته میشود، رویکردی ساختاری برای توسعه نرمافزارها میباشد که در آن نرمافزارها از سرویسهای مستقل کوچکی تشکیل میشوند. این سرویسهای مستقل از طریق APIهای مشخصی باهم ارتباط برقرار میکنند. معماری Microserviceها نیز به گونهای است که باعث بهبود مقیاسپذیری، تحویل و توسعه برنامهها و اپلیکیشنها میشود.
داکر چیست؟
داکر (Docker) پلتفرم نرمافزاری متنبازی است که توسعهدهندگان با استفاده از آن میتوانند به آسانی کانتینرهایی را ایجاد، مستقر، اجرا و مدیریت کنند. داکر برنامهها را داخل کانیتنرهایی ایزوله قرار میدهد و هر کانتینر نیز شامل کتابخانهها، ابزارهای سیستم و در مجموع هر آنچه که توسعهدهندگان برای توسعه برنامههای خود به آن نیاز دارند میباشد. برای کسب اطلاعات بیشتر لطفا مقاله داکر چیست را مطالعه کنید.
در تهیه این مقاله از مقالات وبسایتهای معتبری مانند ibm ،techtarget و oracle استفاده شده است.