وبلاگ و اخبار

Kubernetes یا K8s چیست ؟

وبلاگ و اخبار

در اینجا به معرفی kubernetes می پردازیم که در واقع Kubernetes یا K8s چیست ؟

به عنوان یک پلتفرم منبع باز و توسعه پذیر است که برای مدیریت containerized workloads و سرویس ها به کار گرفته می شود که نتیجه آن آسانتر شدن پیکر بندی و اتوماسیون هست و از ابزارهای container مختلفی استفاده می کند که می توان به Docker اشاره کرد

kubernetes یک اکو سیستم بزرگ است که به سرعت در حال گسترش است و سرویس ها و خدمات و ابزارهای آنها به طور گسترده در دسترس است.

به طور کلی kubernetes  توسط گوگل طراحی شده است اما در حال حاضر Cloud Native Computing Foundation  مسئولیت آن را به عهده گرفته است

چرا به Kubernetes نیاز داریم؟

Kubernetes دارای ویژگی هایی است که به دسته های زیر تقیسم بندی می شوند:

a container platform
a microservices platform
a portable cloud platform

این ابزار یک محیط container-centric management را فراهم می کند و می تواند computing، networking،storage را هماهنگ کند .

می تواند به سادگی (Platform as a Service (PaaS و انعطاف پذیری (Infrastructure as a Service (IaaS را داشته باشد  و در سراسر زیر ساخت قابلیت portability را فراهم کند.

پلتفرم Kubernetes چگونه است؟

Kubernetes قابلیت های زیادی دارد و همیشه سناریو های زیادی وجود دارد که باعث می شود ویژگی های جدید کشف شوند

Application-specific workflows (گردش کار خاص نرم افزارها) می تواند سرعت توسعه دهنده گان را افزایش دهد به همین دلیل باید از پلتفرم  Kubernetes  استفاده شود تا اکوسیستمی از component ها و ابزار ها  ساخته شود تا بتوان به آسانی نرم افزار را گسترش داد و آن را مدیریت کرد.

برچسب ها به کاربران این امکان را می دهد تا به راحتی منابع خود را سازمان دهی کنند و Annotations  کاربران را قادر می سازد تا منابع خود را با اطلاعات سفارشی پیکر بندی کنند که این کار منجر به آسان شدن گردش کار(workflow) می شود.

Kubernetes control plane می تواند یک API در دسترس را برای کاربران و توسعه دهنده گان فراهم کند و کاربران می توانند controller خود را مانند scheduler (زمان بند) به همراه API خود ایجاد کنند. این طراحی با عث می شود که بسیاری از سیستم ها از Kubernetes  استفاده کنند

باید بدانیم که Kubernetes  یک سیستم (PaaS (Platform as a Service سنتی و همه جانبه نیست و از آنجایی که Kubernetes بیشتر در سطح container  است تادر سطح hardware  و یک سری از ویژگی های کلی PaaS  را عرضه می کند که عبارتند از deployment ,scaling ,load balancing , logging , monitoring .

Kubernetes هیچ محدودیتی در پشتیبانی از نرم افزار ها ندارد و هدف اصلی آن پشتیبانی از انواع مختلف workload( جریان کاری) که شامل : stateless , stateful, data-processing workloads می شود.

این ابزار سرویس هایی را در سطح application  مانند موارد زیر فراهم نمی کند:

  • middle ware
  • data-processing frameworks مانند Spark
  • databases مانند mysql

این اجزا می توانند در Kubernetes  اجرا شوند و یا  می توانند توسط مکانیزم های پرتابل در  برنامه های که در Kubernetes  اجرا می شوند در دسترس قرار بگیرند مانند Open Service Broker

واژه orchestration عبارت است از یک workflow(گردش کار) مشخص شده که باید به ترتیب اجرا شود برای مثال ابتدا باید A اجرا شود و پس از آن B و سپس C  که باید به این نکته توجه داشت که Kubernetes   صرفا یک سیستم orchestration  نیست بلکه مجموعه ای از فرآیند های کنترلی مستقل است که به طور مداوم حالت فعلی را برای حالت مورد نظر ارائه می دهد و مهم نیست که چگونه  گردش کار از A به C را دریافت می کنید و کنترل متمرکز نیز نیاز نیست در نتیجه به آسانی می شود از سیستم استفاده کرد و انعطاف پذیری و قدرت بیشتری را به همراه دارد.

چرا containerها؟

به  شکل زیر دقت کنید

Kubernetes چیست

با توجه به شکل بالا راه قدیمی برای اجرا برنامه ها بر روی host استفاده از  operating-system package manager بود این روش در اجرای نرم افزار و پیکر بندی آن و کتابخانه ها ناکارآمد بود. راه جدید اجرای container ها بر اساس مجازی سازی در سطح operating-system می باشد تا مجازی سازی در سطح سخت افزار و این container ها از یک دیگر و host جدا هستند  و نمی توانند فرآیند های یک دیگر را مشاهده کنند و فایل سیستمهای خود را دارند همچنین می توان استفاده از منابع محاسباتی را برای آنها محدود کرد. بعضی از مزایای container در زیر آمده است

ایجاد و استقرار برنامه های پرکاربرد (Agile application creation and deployment)

اشاره به سهولت در ایجاد container image نسبت به استفاده از VM image دارد

توسعه مستمر، یکپارچگی (Continuous development, integration, and deployment)

به صورت مکرر و قابل اعتماد container image را ایجاد می کند

Dev and Ops separation of concerns

اشاره به ایجاد application container image در زمان ساخت و انتشار (build/release time) نسبت به زمان توسعه(deployment time) دارد که در نتیجه می تواند به جدایی application از زیر ساخت منجر شود 

سازگاری با محیط  در طول توسعه، آزمایش و تولید(Environmental consistency across development, testing, and production)

قابلیت توزیع سیستم عامل و ابر به صورت پرتابل (Cloud and OS distribution portability)

که در هر جایی مانند Ubuntu, RHEL, CoreOS, on-prem, Google Kubernetes Engine اجرا می شود

جداسازی منابع (Resource isolation)

به کار گیری منابع(Resource utilization)

اشاره به راندمان بالا در استفاده از منابع دارد 


منبع:

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تعدادی از پروژه های پرساتک