Kubernetes چیست؟
کوبرنتیس یک ابزار هماهنگسازی برای کانتینر و برنامهها(نرم افزارها) است که به کاربران امکان میدهد این هماهنگسازی را نسبت به سایر ابزارهای قدیمی با کارایی بیشتری انجام دهند.
گوگل طی همکاری و مشارکت با بنیاد لینوکس، بنیاد رایانش ابری Cloud (CNCF) را تشکیل داد که Kubernetes را میزبانی میکند.
چرا باید از Kubernetes استفاده شود؟
یکی از بزرگترین چالشها برای مشاغلی که از روشهای DevOps و قابلیتهای ابری استفاده میکنند، حفظ محیطهای مشترک و سازگار در طول چرخه حیات برنامه است.
کانتینرها در زمینه پکیجینگ تمام وابستگیهای ضروری در تصاویر گسسته، مشکل تغییر میزبانی نرم افزارها را برطرف کرده اند. لذا کانتینرها سازگاری را در بین سیستم عاملهای ابری و معماریهای میکروسرویسها حفظ میکنند. کوبرنتیس استاندارد بالفعل برای نحوه تنظیم و استقرار کانتینرها است.
کاربران IT و و کسب و کارها و سازمانها میتوانند با بکارگیری کانتینرها و Kubernetes تلاش خود را به جای زیرساختها، بر توسعه برنامهها متمرکز کنند.
کوبرنتیس به کاربران متخصص اجازه میدهد، برای اجرای برنامه بهترین میزبان را براساس نیازهای تجاری خود انتخاب کنند. مقیاس و میزان دسترسی به ابر عمومی، برای برخی از برنامهها عامل تعیین کنندهای خواهد بود. برای بعضی نرم افزارها دیگر عوامل مانند محل داده، امنیت یا سایر موضوعات مهم است که باعث می شود نیازمند استقرار در محل سازمان باشند.
بعضی اوقات راه حلهای متداول میتوانند پیچیده باشند و تیمهای فنی را مجبور می کند با صرف وقت و هزینه زیاد، انرژی زیادی را صرف راه اندازی سیستم ها کنند. پلتفرمی مانند کوبرنتیس با امکان انتخاب بین خدمات محلی میزبانی و ابرهای عمومی، میتواند تصمیمگیری و انتخاب را برای متخصصان آسانتر کند. یک راه حل مدیریت نرم افزار کانتینری میتواند این چالشها را ساده تر کند.
کوبرنتیس امکانات زیادی ارائه میدهد که در زیر به بخشی از آنها پرداخته ایم:
- اجرا و مدیریت کانتینرها
- خودکارسازی و مقیاسپذیری
- استقرار و گسترش برنامههای stateless و stateful
- ایجاد و پیکربندی ورودیها
- مدیریت سلامت نرم افزار، کشف سرویس، مقیاسپذیری خودکار و متعادلسازی بار شبکه و سرویسهای درخواستی
Kubernetes چگونه کار میکند؟
در مرکز Kubernetes، خوشه قرار دارد. در واقع خوشه یک گروه از نودها (node) است که بارهای کانتینر را برنامه ریزی و اجرا میکنند وpods نامیده میشوند. هر خوشه شامل مسترنودها (Master Node) و نودهای کارگر (worker Node) است و تمام نودهای کوبرنتیس باید از طریق زمان اجرای کانتینر، پیکربندی شوند.
مستر نود یا نودها به عنوان هسته خوشه، همه فعالیتها را تعیین میکند. فعالیتهایی شامل:
- تعیین میکند کدام pod روی کدام worker node اجرا خواهد شد.
- وضعیت مطلوب برنامهها را حفظ میکند.
- برنامهها را مقیاسبندی میکند.
- به روزرسانیهای جدید را ارائه میدهد.
نودهای کارگر، نرم افزارها را اجرا میکنند و ممکن است در کلاستر چندین نود وجود داشته باشد. برای افزایش ظرفیت خوشه خود میتوانید نودهای کارگر را مقیاسبندی کنید.
بارهای کاری یا برنامههایی که نودهای کارگر اجرا میکنند، pods نامیده میشوند. Pod، کانتینری است که مواردی مانند: نحوه اجرای کانتینرها، مرجع یا لوکیشن image ها و گاهی اوقات حجم داده را در بر میگیرد. هر Pod دارای یک آدرس IP است. جزئیات مهم این چنینی، مدل کوبرنتیس را از راه حلهای سنتی مدیریت کانتینر متمایز میکند.
مسترنودها و نودهای کارگر میتوانند یک ماشین مجازی و یا یک رایانه فیزیکی باشند که در مرکز داده شما مشغول به کار است.
کانتینرها
کانتینرها شبیه ماشینهای مجازی هستند که به شما امکان میدهند چندین ماشین مجازی را در یک سرور فیزیکی اجرا کنید. مجازیسازی اجازه میدهد نرم افزارها برای استفاده بهتر از منابع، با استفاده از ماشینهای مجازی در یک سرور فیزیکی تفکیک شوند.
یک کانتینر دارای سیستم فایل، CPU، حافظه و فضای پردازش خاص خود است. اما کانتینرها در هسته اصلی، بدون یک سیستم عامل مهمان از ایزولاسیون یا همان جداسازی استفاده میکنند. بنابراین برنامهها در محیطهای خودگردان و مستقل، محصور میشوند.
Kubernetes and Docker
در حال حاضر داکر، محبوبترین پلت فرم کانتینر محسوب میشود. اگرچه ایده جداسازی محیط کاملاً مربوط به گذشته است و در گذشته نرمافزارهای کانتینر دیگری نیز وجود داشته، اما Docker در زمان مناسبی به بازار عرضه شد و از همان ابتدا منبع باز بود.
Docker یا Docker Engine به شما امکان ساخت و راه اندازی کانتینرها را میدهد. علاوه براین، Docker Hub نیز وجود دارد که سرویسی برای ذخیره و اشتراک image ها است.
در حالی که داکر برای بستهبندی و توزیع برنامههای کانتینردار یک استاندارد باز ارائه داد، چالشهای جدیدی بوجود آمد:
- چگونه همه این کانتینرها هماهنگ و برنامه ریزی میشوند؟
- چگونه همه کانتینرهای مختلف در برنامه شما با یکدیگر ارتباط برقرار میکنند؟
- چگونه میتوان نمونههای کانتینر را مقیاسپذیر کرد؟
خیلی زود راه حلهایی برای هماهنگی کانتینرها ظهور کرد. Kubernetes، Mesos و Docker Swarm چند گزینه محبوب به حساب میآیند.
Kubernetes پلتفرم تنظیم کانتینر است که در گوگل به عنوان یک سیستم جامع برای خودکارسازی استقرار، زمانبندی و مقیاسگذاری برنامههای کانتینر دار، توسعه داده شده است. Kubernetes، بسیاری از ابزارهای کانتینرسازی مانند داکر را پشتیبانی میکند.
Kubernetes and networking
داکر و Kubernetes در زمینه نحوه استفاده از شبکه با یکدیگر تفاوت دارند. کانتینرهای داکر از یک رابط پل مجازی استفاده میکنند. کانتینرهای داکر فقط در صورتی میتوانند با کانتینرهای دیگر ارتباط برقرار کنند که، روی یک پل مجازی از ماشین مجازی مشابه و یکسان استفاده کنند.
کانتینرهای موجود در ماشینهای مجازی مختلف نمیتوانند با یکدیگر ارتباط برقرار کنند. در حقیقت، ممکن است دامنههای شبکه و آدرس IP آنها دقیقاً یکسان باشد. این بدان معنی است که، شبکه محلی container-to-container وجود ندارد، مگر اینکه در همان ماشین مجازی میزبانی شوند. بنابراین شما باید قوانینی برای پروکسی و یا ارتباط بین پورتها ایجاد کنید.
هنگامی که گوگل Kubernetes را ساخت، سه قانون زیر را گذاشت:
- همه کانتینرها میتوانند بدون ترجمه آدرس شبکه (NAT)، با کانتینرهای دیگر ارتباط برقرار کنند. هیچ پروکسی یا انتقال پورتی وجود ندارد و همه آنها میتوانند با شکل محلی و بومی ارتباط برقرار کنند.
- همه کانتینرها میتوانند بدون NAT (زیر شبکه) با سایر نودها ارتباط برقرار کنند. البته برعکس این موضوع نیز صدق میکند.
- کانتینرها IP خاص خود را دارند (IP آنها مجازی نیست).
اطلاعاتی در مورد Kubernetes که ممکن است کمتر شنیده باشید
- کوبرنتیس از سیستم ارکستراسیون کانتینر داخلی گوگل به نام Borg الهام گرفته شده است. بنیانگذاران کوبرنتیس همگی کارمندان سابق گوگل بودند که با بورگ تجربه داشتند.
- نام “کوبرنتیس ” از کلمه یونانی “خلبان” یا “سکاندار” گرفته شده است. این نشان دهنده نقش سیستم در هدایت و مدیریت برنامه های کاربردی کانتینری است.
- کوبرنتیس دارای یک فرآیند داخلی برای مقیاس بندی خودکار برنامه ها بر اساس استفاده از منابع است. این امر به عنوان مقیاسکننده خودکار غلاف افقی (HPA) شناخته میشود، و میتوان آن را به گونهای پیکربندی کرد که بر اساس میزان مصرف CPU، میزان استفاده از حافظه یا معیارهای سفارشی دیگر، آن را افزایش یا کاهش دهد.
- کوبرنتیس دارای یک ویژگی به نام StatefulSets است که به برنامه های stateful مانند پایگاه داده اجازه می دهد تا به روشی قابل اعتمادتر و مقیاس پذیرتر مستقر و مدیریت شوند. StatefulSets تضمین می کند که هر نمونه از یک برنامه یک هویت منحصر به فرد دارد و داده ها به طور مداوم در راه اندازی مجدد ذخیره می شوند.
- کوبرنتیس دارای یک مدل شبکه قدرتمند است که به کانتینرها اجازه می دهد با یکدیگر در گره های مختلف در یک خوشه ارتباط برقرار کنند. این امر از طریق قابلیتی به نام Service Abstraction حاصل می شود که یک آدرس IP پایدار و نام DNS برای گروهی از کانتینرها ارائه می دهد.
- کوبرنتیس دارای یک ویژگی داخلی برای بهروزرسانیهای چرخشی است که به برنامهها اجازه میدهد بدون توقف بهروزرسانی شوند. این امر با جایگزینی تدریجی نمونههای قدیمی یک برنامه با نمونههای جدید و در عین حال نظارت بر سلامت نرم افزار در طول فرآیند بهروزرسانی به دست میآید.
- کوبرنتیس دارای یک سیستم قوی برای مدیریت اطلاعات است که به داده های حساس مانند رمزهای عبور و کلیدهای API اجازه می دهد تا به طور ایمن ذخیره شوند و توسط برنامه ها قابل دسترسی باشند.
- کوبرنتیس دارای یک ویژگی به نام Pod Presets است که به شما امکان می دهد تنظیمات پیکربندی رایج را به طور خودکار در گروه هایی از pod ها اعمال کنید. این می تواند مدیریت برنامه های بزرگ و پیچیده را ساده کند.
- کوبرنتیس دارای یک معماری پلاگین است که اجازه می دهد تا عملکردهای سفارشی به سیستم اضافه شود. این امکان گسترش Kubernetes را با ویژگی های جدید شبکه، ذخیره سازی و امنیتی فراهم می کند.
- کوبرنتیس دارای یک جامعه بزرگ و فعال از توسعه دهندگان و کاربران است که به توسعه ابزارها و برنامه های افزودنی متعدد برای سیستم کمک کرده است. اینها شامل ابزارهایی برای نظارت، ثبت و اشکال زدایی خوشه های کوبرنتیس ، و همچنین برنامه های افزودنی برای ادغام Kubernetes با سیستم های دیگر مانند خطوط لوله CI/CD و مش های خدماتی است.
- کوبرنتیس اغلب به صورت اختصاری “K8s” خوانده می شود، زیرا 8 حرف بین “K” و “s” در “Kubernetes” وجود دارد.
- اولین نسخه کوبرنتیس در سال 2014 منتشر شد و در سال 2015 توسط گوگل منبع باز شد. از آن زمان، این سیستم به یکی از محبوب ترین سیستم های ارکستراسیون کانتینر در جهان تبدیل شده است.
- کوبرنتیس به زبان برنامه نویسی Go نوشته شده است و از ذخیره کلید-مقدار توزیع شده etcd برای ذخیره داده های پیکربندی استفاده می کند.
- کوبرنتیس مفهومی به نام «برچسبها» دارد که به منابعی مانند پادها و سرویسها اجازه میدهد بر اساس معیارهای تعریفشده توسط کاربر سازماندهی و گروهبندی شوند. این امر مدیریت برنامه های بزرگ و پیچیده با اجزای مختلف را آسان می کند.
- کوبرنتیس دارای یک مکانیسم خود ترمیمی داخلی است که به طور خودکار کانتینرها و گره های خراب را در یک خوشه شناسایی و جایگزین می کند.
- کوبرنتیس مفهومی به نام «اپراتورها» دارد، که کنترلکنندههای سفارشی هستند که میتوانند برای خودکارسازی وظایف برنامههای پیچیده مانند پشتیبانگیری، ارتقاء و مقیاسگذاری پایگاه داده استفاده شوند.
- کوبرنتیس را می توان بر روی پلتفرم های مختلف، از جمله ارائه دهندگان خدمات ابر عمومی و خصوصی، مراکز داده داخلی و حتی در خوشه های Raspberry Pi اجرا کرد.
- کوبرنتیس توسط بسیاری از سازمانها و شرکتهای بزرگ برای تامین زیرساخت برنامههای کانتینری آنها، از جمله شرکتهایی مانند Airbnb، Dropbox و Shopify استفاده میشود.
- کوبرنتیس دارای یک طلسم یا نماد خوش یمن به نام “Kube” است که نمادی از آرم Kubernetes است. Kube اغلب به عنوان یک شخصیت دوستانه و کارتونی به تصویر کشیده می شود که به کاربران کمک می کند تا پیچیدگی های سیستم کوبرنتیس را مرور کنند.
شرکتها، سازمانها و پلتفرمهایی که از کوبرنتیس استفاده می کنند
Kubernetes توسط بسیاری از سازمان های بزرگ و ارائه دهندگان خدمات ابری برای مدیریت برنامه های کاربردی کانتینری استفاده می شود.
Google Cloud Platform کوبرنتیس در ابتدا در Google توسعه داده شد و این شرکت یک سرویس کوبرنتیس مدیریت شده به نام Google Kubernetes Engine (GKE) را به عنوان بخشی از پیشنهاد Google Cloud Platform (GCP) خود به مشتریان خود ارائه می دهد.
خدمات وب آمازون: آمازون همچنین یک سرویس کوبرنتیس مدیریت شده به نام Amazon Elastic Kubernetes Service (EKS) را به عنوان بخشی از پلت فرم خدمات وب آمازون (AWS) ارائه می دهد.
Microsoft Azure: مایکروسافت یک سرویس کوبرنتیس مدیریت شده به نام Azure Kubernetes Service (AKS) را به عنوان بخشی از پلت فرم ابری Azure خود ارائه می دهد.
IBM Cloud آی بی ام نیز یک سرویس کوبرنتیس مدیریت شده به نام IBM Cloud Kubernetes Service را به عنوان بخشی از پلت فرم ابری خود ارائه می دهد.
DigitalOcean: DigitalOcean یک سرویس کوبرنتیس نام DigitalOcean Kubernetes را به عنوان بخشی از پلت فرم ابری خود ارائه می دهد.
Red Hat OpenShift یک پلتفرم کوبرنتیس سازمانی است که توسط Red Hat ارائه شده است و شامل ویژگی های آپشنال در امنیت، انطباق و توسعه برنامه است.
VMware Tanzu: یک پلتفرم مبتنی بر کوبرنتیس است که توسط VMware ارائه شده است و شامل ابزارهایی برای ساخت و استقرار برنامه های کاربردی ابری است.
GitLab یک سیستم یکپارچه کوبرنتیس ارائه می دهد که به توسعه دهندگان این امکان را می دهد تا به راحتی برنامه های خود را مستقیماً از پلتفرم GitLab در یک کلاستر Kubernetes مستقر کنند.
نتفلیکس: نتفلیکس از کوبرنتیس برای مدیریت بارهای کاری کانتینری خود استفاده می کند که شامل بسیاری از برنامه ها و خدمات حیاتی این شرکت می شود.
SoundCloud: SoundCloud از کوبرنتیس برای مدیریت معماری میکروسرویسهای خود استفاده میکند، که به این شرکت اجازه میدهد تا به سرعت ویژگیهای جدیدی را برای پلتفرم پخش موسیقی خود توسعه داده و به کار گیرد.
[/av_textblock]
[av_one_full first min_height=” vertical_alignment=’av-align-top’ space=” row_boxshadow=” row_boxshadow_color=” row_boxshadow_width=’10’ custom_margin=” margin=’0px’ mobile_breaking=” min_col_height=” padding=” svg_div_top=” svg_div_top_color=’#333333′ svg_div_top_width=’100′ svg_div_top_height=’50’ svg_div_top_max_height=’none’ svg_div_top_flip=” svg_div_top_invert=” svg_div_top_front=” svg_div_top_opacity=” svg_div_top_preview=” svg_div_bottom=” svg_div_bottom_color=’#333333′ svg_div_bottom_width=’100′ svg_div_bottom_height=’50’ svg_div_bottom_max_height=’none’ svg_div_bottom_flip=” svg_div_bottom_invert=” svg_div_bottom_front=” svg_div_bottom_opacity=” svg_div_bottom_preview=” border=” border_style=’solid’ border_color=” radius=” column_boxshadow=” column_boxshadow_color=” column_boxshadow_width=’10’ background=’bg_color’ background_color=” background_gradient_direction=’vertical’ background_gradient_color1=’#000000′ background_gradient_color2=’#ffffff’ background_gradient_color3=” src=” background_position=’top left’ background_repeat=’no-repeat’ highlight=” highlight_size=” animation=” link=” linktarget=” link_hover=” title_attr=” alt_attr=” mobile_display=” id=” custom_class=” template_class=” aria_label=” av_uid=’av-249gifu’ sc_version=’1.0′]
[av_hr class=’default’ icon_select=’yes’ icon=’ue808′ position=’center’ shadow=’no-shadow’ height=’50’ custom_border=’av-border-thin’ custom_width=’50px’ custom_margin_top=’30px’ custom_margin_bottom=’30px’ custom_border_color=” custom_icon_color=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” id=” custom_class=” template_class=” av_uid=’av-1teu0fu’ sc_version=’1.0′]
[av_social_share title=’اشتراک این مطلب’ style=’minimal’ buttons=’custom’ share_twitter=’aviaTBshare_twitter’ share_linkedin=’aviaTBshare_linkedin’ share_mail=’aviaTBshare_mail’ av_uid=’av-k4b6xs3w’ custom_class=” admin_preview_bg=”]
[av_hr class=’default’ icon_select=’yes’ icon=’ue808′ position=’center’ shadow=’no-shadow’ height=’50’ custom_border=’av-border-thin’ custom_width=’50px’ custom_margin_top=’30px’ custom_margin_bottom=’30px’ custom_border_color=” custom_icon_color=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” id=” custom_class=” template_class=” av_uid=’av-15re07u’ sc_version=’1.0′]
[av_postslider link=’category’ wc_prod_visible=” wc_prod_hidden=’hide’ wc_prod_featured=” prod_order_by=” prod_order=” date_filter=” date_filter_start=” date_filter_end=” date_filter_format=’yy/mm/dd’ items=’6′ offset=’0′ contents=’title’ columns=’3′ preview_mode=’auto’ image_size=’portfolio’ autoplay=’no’ interval=’5′ img_scrset=” lazy_loading=’disabled’ alb_description=” id=” custom_class=” template_class=” av_uid=’av-l0f3s1lo’ sc_version=’1.0′]
[av_hr class=’default’ icon_select=’yes’ icon=’ue808′ position=’center’ shadow=’no-shadow’ height=’50’ custom_border=’av-border-thin’ custom_width=’50px’ custom_margin_top=’30px’ custom_margin_bottom=’30px’ custom_border_color=” custom_icon_color=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” id=” custom_class=” template_class=” av_uid=’av-qc9fru’ sc_version=’1.0′]
[av_comments_list av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av_uid=’av-s1xy1m’]
[/av_one_full]