کوبرنتیس چیست؟
- Kubernetes چیست؟
- ظروف چیست؟
- ارکستراسیون کانتینری با Kubernetes
- معماری Kubernetes
- مش سرویس ایستیو
- محاسبات Knative و بدون سرور
- Kubernetes GitHub متعهد و شواهد بیشتری از محبوبیت فزاینده است
- آموزش های Kubernetes
Kubernetes چیست؟
Kubernetes برای اولین بار توسط مهندسان در گوگل توسعه داده شد و قبل از اینکه در سال 2014 منبع باز شود. این از نوادگان Borg است، یک پلت فرم ارکستراسیون کانتینری که در داخل گوگل استفاده می شود. Kubernetes یونانی به معنای سکاندار یا خلبان است، از این رو سکان در آرم Kubernetes .
امروزه، Kubernetes و اکوسیستم کانتینری وسیعتر در حال تبدیل شدن به یک پلتفرم محاسباتی همه منظوره و اکوسیستمی هستند که رقیب ماشینهای مجازی (VMs) بهعنوان بلوکهای اساسی زیرساختها و برنامههای ابری مدرن – اگر نگوییم از آن فراتر میرود. این اکوسیستم سازمانها را قادر میسازد تا یک پلتفرم بهعنوان یک سرویس (PaaS) با بهرهوری بالا ارائه دهند که به وظایف و مسائل مربوط به زیرساختها و عملیات مرتبط با توسعه ابر بومی میپردازد تا تیمهای توسعه بتوانند تنها بر روی کدنویسی و نوآوری تمرکز کنند.
ظروف چیست؟
کانتینرها اجزای نرم افزاری سبک وزن و قابل اجرا هستند که کد منبع برنامه را با تمام کتابخانه های سیستم عامل (OS) و وابستگی های مورد نیاز برای اجرای کد در هر محیطی ترکیب می کنند.
کانتینرها از نوعی مجازی سازی سیستم عامل (OS) بهره می برند که به چندین برنامه اجازه می دهد با جداسازی فرآیندها و کنترل میزان CPU، حافظه و دیسکی که این فرآیندها می توانند به آن دسترسی داشته باشند، یک نمونه از یک سیستم عامل را به اشتراک بگذارند. از آنجایی که کانتینرها نسبت به ماشینهای مجازی (VM) کوچکتر، از نظر منابع کارآمدتر و قابل حملتر هستند ، به واحدهای محاسباتی واقعی برنامههای کاربردی مدرن ابری تبدیل شدهاند .
در یک مطالعه اخیر IBM کاربران چندین مزیت فنی و تجاری خاص ناشی از پذیرش کانتینرها و فناوری های مرتبط را گزارش کردند.
کانتینرها در مقابل ماشین های مجازی در مقابل زیرساخت های سنتی
درک کانتینرها به عنوان آخرین نقطه در پیوستار اتوماسیون و انتزاع زیرساخت های فناوری اطلاعات ممکن است آسان تر یا مفیدتر باشد.
در زیرساختهای سنتی، برنامهها بر روی یک سرور فیزیکی اجرا میشوند و تمام منابعی را که میتوانند دریافت کنند، به دست میآورند. این به شما این امکان را می دهد که چندین برنامه را روی یک سرور واحد اجرا کنید و امیدوار باشید که یکی منابع را به قیمت سایرین مصرف نکند یا یک سرور را برای هر برنامه اختصاص دهد، که منابع را هدر می دهد و مقیاس نمی شود.
ماشینهای مجازی (VMs) سرورهایی هستند که از سختافزار واقعی کامپیوتر انتزاع میشوند و شما را قادر میسازند چندین ماشین مجازی را روی یک سرور فیزیکی یا یک ماشین مجازی که بیش از یک سرور فیزیکی را پوشش میدهد، اجرا کنید. هر VM نمونه سیستمعامل خود را اجرا میکند، و میتوانید هر برنامه را در VM خودش جدا کنید، و این احتمال را کاهش میدهد که برنامههایی که روی سختافزار فیزیکی یکسانی اجرا میشوند، روی یکدیگر تأثیر بگذارند. ماشین های مجازی از منابع بهتر استفاده می کنند و نسبت به زیرساخت های سنتی بسیار آسان تر و مقرون به صرفه تر هستند. و، آنها یکبار مصرف هستند – وقتی دیگر نیازی به اجرای برنامه ندارید، VM را حذف می کنید.
کانتینرها این انتزاع را به سطح بالاتری میبرند – بهویژه، علاوه بر اشتراکگذاری سختافزار مجازیسازی شده، یک هسته سیستمعامل مجازیسازی شده زیربنایی را نیز به اشتراک میگذارند. کانتینرها همان انزوا، مقیاسپذیری و دور ریختن ماشینهای مجازی را ارائه میکنند، اما از آنجایی که محموله نمونه سیستمعامل خود را حمل نمیکنند، وزن کمتری دارند (یعنی فضای کمتری را اشغال میکنند) نسبت به ماشینهای مجازی. آنها از نظر منابع کارآمدتر هستند – به شما امکان می دهند برنامه های بیشتری را روی ماشین های کمتر (مجازی و فیزیکی) با نمونه های سیستم عامل کمتری اجرا کنید. کانتینرها به راحتی در محیط های دسکتاپ، مرکز داده و محیط های ابری قابل حمل هستند. و آنها برای شیوه های توسعه Agile و DevOps مناسب هستند.
داکر چیست؟
Docker محبوب ترین ابزار برای ایجاد و اجرای کانتینرهای Linux® است. در حالی که اشکال اولیه کانتینرها دههها پیش معرفی شدند (با فناوریهایی مانند FreeBSD Jails و AIX Workload Partitions)، کانتینرها در سال 2013 زمانی که Docker آنها را با یک پیادهسازی جدید سازگار با توسعهدهندگان و سازگار با فضای ابری در اختیار تودهها قرار داد، دموکراتیزه شدند.
Docker به عنوان یک پروژه منبع باز شروع شد، اما امروزه به Docker Inc. نیز اشاره می کند، شرکتی که Docker را تولید می کند – یک جعبه ابزار کانتینر تجاری که بر روی پروژه منبع باز ساخته می شود (و این پیشرفت ها را به جامعه منبع باز ارائه می دهد).
Docker بر اساس فناوری کانتینر لینوکس سنتی (LXC) ساخته شده است، اما مجازیسازی دقیقتر فرآیندهای هسته لینوکس را امکانپذیر میکند و ویژگیهایی را اضافه میکند تا کانتینرها را برای توسعهدهندگان آسانتر برای ساخت، استقرار، مدیریت و ایمن کند.
در حالی که امروزه پلتفرمهای کانتینر جایگزین وجود دارند (مانند Open Container Initiative (OCI)، CoreOS، و Canonical (Ubuntu) LXD)، Docker به قدری ترجیح داده میشود که تقریباً مترادف با کانتینرها است و گاهی اوقات بهعنوان رقیب فناوریهای مکمل مانند کانتینر اشتباه میشود. Kubernetes (به ویدیوی “Kubernetes در مقابل، Docker: It’s Not a Either/A Question” در ادامه زیر مراجعه کنید).
با تکثیر کانتینرها – امروزه، یک سازمان ممکن است صدها یا هزاران نفر از آنها را داشته باشد – به تیم های عملیاتی برای برنامه ریزی و خودکارسازی استقرار کانتینر، شبکه سازی ، مقیاس پذیری و در دسترس بودن نیاز است. و به این ترتیب، بازار ارکستراسیون کانتینری متولد شد.
در حالی که سایر گزینههای ارکستراسیون کانتینر – به ویژه Docker Swarm و Apache Mesos – در اوایل مورد توجه قرار گرفتند، Kubernetes به سرعت به محبوبترین پروژه تبدیل شد (در واقع، در یک مقطع، سریعترین پروژه در حال رشد در تاریخ نرمافزار منبع باز بود). .
توسعه دهندگان Kubernetes را به دلیل گستردگی عملکرد، اکوسیستم گسترده و رو به رشد ابزارهای پشتیبان منبع باز، و پشتیبانی و قابلیت حمل آن در میان ارائه دهندگان خدمات ابری، انتخاب کرده و ادامه می دهند. همه ارائه دهندگان ابر عمومی پیشرو – از جمله خدمات وب آمازون (AWS)، Google Cloud، IBM Cloud و Microsoft Azure – خدمات کاملاً مدیریت شده Kubernetes را ارائه می دهند.
Kubernetes چه می کند؟
Kubernetes وظایف مربوط به کانتینر را در طول چرخه عمر برنامه زمانبندی و خودکار می کند، از جمله:
- Deployment : تعداد مشخصی از کانتینرها را در یک میزبان مشخص مستقر کرده و آنها را در حالت دلخواه در حال اجرا نگه دارید.
- Rollouts : rollout تغییری در استقرار است. Kubernetes به شما امکان میدهد عرضهها را شروع، مکث، از سرگیری یا بازگردانی کنید.
- کشف سرویس : Kubernetes می تواند به طور خودکار یک کانتینر را با استفاده از نام DNS یا آدرس IP در معرض اینترنت یا سایر کانتینرها قرار دهد.
- تأمین فضای ذخیرهسازی : Kubernetes را تنظیم کنید تا در صورت نیاز، ذخیرهسازی محلی یا ابری دائمی را برای کانتینرهای شما نصب کند.
- تعادل بار : بر اساس استفاده از CPU یا معیارهای سفارشی، تعادل بار Kubernetes می تواند برای حفظ عملکرد و ثبات، بار کاری را در سراسر شبکه توزیع کند.
- مقیاسبندی خودکار : هنگامی که ترافیک افزایش مییابد، مقیاس خودکار Kubernetes میتواند در صورت نیاز، خوشههای جدیدی را برای مدیریت بار کاری اضافی ایجاد کند.
- خوددرمانی برای در دسترس بودن بالا : هنگامی که یک کانتینر از کار می افتد، Kubernetes می تواند آن را مجدداً راه اندازی یا جایگزین کند تا از خرابی جلوگیری شود. همچنین میتواند ظروف را که مطابق با الزامات بررسی سلامت شما نیستند را از بین ببرد.
Kubernetes vs Docker
اگر تا اینجا خوانده باشید، قبلاً متوجه شده اید که اگرچه Kubernetes جایگزینی برای Docker Swarm است، (برخلاف تصور غلط رایج رایج) جایگزین یا رقیبی برای خود Docker نیست.
در واقع، اگر شما مشتاقانه Docker را پذیرفته اید و در حال ایجاد استقرار کانتینر مبتنی بر Docker در مقیاس بزرگ هستید، ارکستراسیون Kubernetes گام بعدی منطقی برای مدیریت این بارهای کاری است.
اجزای اصلی معماری Kubernetes شامل موارد زیر است:
خوشه ها و گره ها (محاسبه)
خوشه ها بلوک های سازنده معماری Kubernetes هستند. خوشه ها از گره هایی تشکیل شده اند که هر یک نشان دهنده یک میزبان محاسباتی (ماشین مجازی یا فیزیکی) است.
هر خوشه از یک گره اصلی تشکیل شده است که به عنوان طرح کنترل برای خوشه عمل می کند و چندین گره کارگری که برنامه های کاربردی کانتینری را مستقر، اجرا و مدیریت می کنند. گره اصلی یک سرویس زمانبندی را اجرا می کند که زمان و مکان استقرار کانتینرها را بر اساس الزامات استقرار مجموعه توسعه دهنده و ظرفیت محاسباتی موجود خودکار می کند. هر گره کارگر شامل ابزاری است که برای مدیریت کانتینرها استفاده می شود – مانند Docker – و یک عامل نرم افزاری به نام Kubelet که دستورات را از گره اصلی دریافت و اجرا می کند.
توسعه دهندگان عملیات خوشه را با استفاده از kubectl مدیریت می کنند ، یک رابط خط فرمان (cli) که مستقیماً با Kubernetes API ارتباط برقرار می کند.
پادها و استقرارها (نرم افزار)
پادها گروههایی از کانتینرها هستند که منابع محاسباتی و شبکه یکسانی را به اشتراک میگذارند. آنها همچنین واحد مقیاس پذیری در Kubernetes هستند: اگر یک کانتینر در یک غلاف بیشتر از آنچه که می تواند حمل کند ترافیک دریافت می کند، Kubernetes غلاف را به سایر گره های خوشه تکرار می کند. به همین دلیل، تمرین خوبی است که غلاف ها را فشرده نگه دارید تا فقط حاوی ظروف باشد که باید منابع مشترکی داشته باشند.
استقرار ایجاد و وضعیت برنامه کانتینری را کنترل می کند و آن را در حال اجرا نگه می دارد . مشخص می کند که چه تعداد کپی از یک غلاف باید روی خوشه اجرا شود. اگر یک pod شکست بخورد، استقرار یک pod جدید ایجاد می کند.
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
بسیار مقالات خوب و ارزشمندی در اختیار عموم قرار میدین واقعا عالی هستین موفق باشین.
از نظر ارزشمند شما سپاسگزاریم. موفق باشید.