Kubernetes استقرار، مدیریت، مقیاسبندی و موارد دیگر برنامه مبتنی بر کانتینر را خودکار میکند. در اینجا همه چیزهایی است که باید در مورد Kubernetes بدانید.
- ارکستراسیون کانتینر چیست؟
- Kubernetes چیست؟
- Google و Kubernetes
- Kubernetes در مقابل Docker
- کوبرنتس در مقابل مزوس
- معماری Kubernetes
- مزایای استفاده از Kubernetes
- از کجا Kubernetes را دریافت کنیم
- آموزش Kubernetes
- گواهینامه Kubernetes
Kubernetes یک پلت فرم منبع باز محبوب برای ارکستراسیون کانتینر است—یعنی برای مدیریت برنامههای ساخته شده از زمانهای اجرا متعدد و عمدتاً مستقل به نام کانتینر.
از زمان راهاندازی Docker در سال ۲۰۱۳، کانتینرها به طور فزایندهای محبوب شدهاند، اما هماهنگی برنامههای کاربردی بزرگ در بسیاری از کانتینرها دشوار است.
Kubernetes مدیریت برنامههای کانتینری را در مقیاس بسیار آسانتر میکند. این به یک بازیگر کلیدی در انقلاب کانتینر تبدیل شده است.
ارکستراسیون کانتینر چیست؟
مانند ماشینهای مجازی، کانتینرها از تفکیک نگرانیها پشتیبانی میکنند، اما آنها این کار را با سربار بسیار کمتر و انعطافپذیری بیشتر انجام میدهند. در نتیجه، کانتینرها طرز فکر ما در مورد توسعه، استقرار و نگهداری نرم افزار را تغییر داده اند.
در یک معماری کانتینری، سرویسهای مختلفی که یک برنامه کاربردی را تشکیل میدهند در کانتینرهای جداگانه بستهبندی میشوند و در مجموعهای از ماشینهای فیزیکی یا مجازی مستقر میشوند. اما این امر نیاز به ارکستراسیون کانتینر را ایجاد میکند – ابزاری که استقرار، مدیریت، مقیاسبندی، شبکهسازی و در دسترس بودن برنامههای مبتنی بر کانتینر را خودکار میکند.
Kubernetes چیست؟
Kubernetes یک پروژه متن باز است که به یکی از محبوب ترین ابزارهای هماهنگ سازی کانتینر تبدیل شده است. این به شما امکان می دهد برنامه های چند کانتینری را در مقیاس اجرا و مدیریت کنید. در حالی که در عمل Kubernetes اغلب با Docker، بهترین پلتفرم کانتینریسازی شناخته شده استفاده میشود، همچنین میتواند با هر سیستم کانتینری که با استانداردهای Open Container Initiative (OCI) برای قالبهای تصویر کانتینر و زمانهای اجرا مطابقت دارد، کار کند. (پادمن موتور کانتینری محبوب دیگری است که با داکر رقابت می کند.)
از آنجایی که Kubernetes منبع باز است، با محدودیتهای نسبتاً کمی، میتواند آزادانه توسط هر کسی که میخواهد کانتینرها را اجرا کند، بیشتر در هر جایی که میخواهد آنها را اجرا کند – در محل، در ابر عمومی یا هر دو.
Google و Kubernetes
Kubernetes زندگی خود را به عنوان یک پروژه در Google آغاز کرد. این جانشینی برای Google Borg است – البته نه از نسل مستقیم – ابزار مدیریت کانتینر قبلی که Google به صورت داخلی از آن استفاده می کرد. Google در سال ۲۰۱۴ Kubernetes را منبع باز کرد، تا حدی به این دلیل که معماری های میکروسرویس های توزیع شده که Kubernetes تسهیل می کند، اجرای برنامه ها را در فضای ابری آسان می کند. گوگل استفاده از کانتینرها، میکروسرویسها و Kubernetes را بهعنوان بهطور بالقوه سوق دادن مشتریان به سمت سرویسهای ابری خود میبیند (اگرچه Kubernetes مطمئناً با Azure و AWS نیز کار میکند). Kubernetes در حال حاضر توسط Cloud Native Computing Foundation نگهداری میشود که خود تحت چتر بنیاد لینوکس است. p>
Kubernetes در مقابل Docker
Kubernetes جایگزین Docker نمی شود بلکه آن را تقویت می کند. با این حال، Kubernetes را جایگزین برخی از فناوریهای سطح بالاتری میکند که در اطراف Docker ظهور کردهاند.
یکی از این فناوریها حالت ازدحام داکر است، سیستمی برای مدیریت دستهای از موتورهای داکر از آن به عنوان “ازدحام” یاد می شود – اساساً یک سیستم ارکستراسیون کوچک. استفاده از حالت ازدحام Docker به جای Kubernetes هنوز امکان پذیر است، اما Docker Inc. Kubernetes را به بخشی کلیدی از پشتیبانی Docker تبدیل کرده است.
در مقیاسی حتی کوچکتر، Docker همچنین Docker Compose را نیز دارد، راهی برای بالا آوردن یک مولتی برنامه کانتینر بر روی یک میزبان واحد. اگر فقط میخواهید یک برنامه چند کانتینری را روی یک ماشین اجرا کنید، بدون اینکه آن را در یک خوشه پخش کنید، Docker Compose آن سناریو را پوشش میدهد.
Kubernetes به طور قابل توجهی پیچیده تر از حالت ازدحام Docker یا Docker Compose است و برای استقرار به کار بیشتری نیاز دارد. اما باز هم، این کار در نظر گرفته شده است تا در درازمدت بازدهی بزرگی را ارائه دهد – زیرساخت کاربردی قابل مدیریت تر و انعطاف پذیرتر در تولید. برای کارهای توسعه و خوشه های کانتینر کوچکتر، حالت ازدحام Docker یک انتخاب ساده تر است. و برای استقرار تک ماشینی برنامههای چند کانتینری، Docker Compose وجود دارد.
کوبرنتس در مقابل مزوس
پروژه دیگری که ممکن است به عنوان رقیب Kubernetes درباره آن شنیده باشید Mesos است. Mesos یک پروژه آپاچی است که در ابتدا از توسعه دهندگان توییتر پدید آمد. در واقع به عنوان پاسخی به پروژه Google Borg.
Mesos در واقع خدمات ارکستراسیون کانتینر را ارائه می دهد، اما جاه طلبی های آن بسیار فراتر از این است: هدف آن نوعی سیستم عامل ابری است که می تواند اجزای کانتینری و غیر کانتینری را هماهنگ کند. برای این منظور، بسیاری از پلتفرمهای مختلف میتوانند در Mesos اجرا شوند—از جمله خود Kubernetes.
Mesos همچنین اخیراً توسعه بسیار کمتری نسبت به Kubernetes دریافت کرده است. آخرین نسخه قابل توجه آن در سال ۲۰۲۰ بود. در مقابل، Kubernetes به طور مرتب به روز می شود.
معماری Kubernetes
معماری Kubernetes بر اساس چندین مفهوم و انتزاع کلیدی است. برخی از اینها تغییراتی در تم های آشنا هستند در حالی که برخی دیگر منحصر به Kubernetes هستند.
خوشه های Kubernetes
بالاترین سطح انتزاع Kubernetes، خوشه، به گروهی از ماشینهایی که Kubernetes را اجرا میکنند (که خود یک برنامه خوشهای است) و کانتینرهای مدیریت شده توسط آن اشاره دارد. ماشینهای موجود در یک خوشه به عنوان گرههای کارگر شناخته میشوند. یک خوشه Kubernetes باید یک master داشته باشد، سیستمی که همه ماشین های Kubernetes دیگر را در خوشه فرمان می دهد و کنترل می کند. این سیستم از رابطی به نام صفحه کنترل استفاده می کند.
راهاندازی Kubernetes بسیار در دسترس (HA) میتواند صفحه کنترل را در چندین ماشین تکرار کند. داده های پیکربندی برای خوشه (ذخیره شده در Etcd) همچنین می تواند در سراسر گره ها تکرار شود. اما در هر زمان معین، فقط یک استاد میتواند زمانبندی کار و کنترلر-مدیر را اجرا کند.
گرهها و غلافهای Kubernetes
هر خوشه حاوی گره Kubernetes است. گره ها ممکن است ماشین های فیزیکی یا ماشین های مجازی باشند. باز هم، ایده انتزاعی است: هر برنامه ای که در حال اجرا باشد، Kubernetes استقرار روی آن بستر را مدیریت می کند. Kubernetes حتی این امکان را فراهم میکند که اطمینان حاصل شود که کانتینرهای خاص فقط روی زیرسطحهای خاصی اجرا میشوند – برای مثال، فقط ماشینهای مجازی یا فقط فلز خالی.
گره ها pods را اجرا می کنند، ابتدایی ترین اشیاء Kubernetes. هر پاد یک نمونه از یک برنامه کاربردی یا فرآیند در حال اجرا در Kubernetes را نشان می دهد و از یک یا چند کانتینر تشکیل شده است. Kubernetes شروع میکند، متوقف میشود، و همه کانتینرها را در یک پاد به صورت گروهی تکرار میکند. پادها توجه کاربر را به برنامه به جای خود ظروف نگه می دارند. Etcd، یک فروشگاه توزیع شده با ارزش کلید، جزئیات مربوط به نحوه پیکربندی Kubernetes را از وضعیت pods به بالا نگه میدارد.
پادها بر روی گرهها در صورت نیاز ایجاد و از بین میروند تا با حالت دلخواه مطابقت داشته باشند که توسط کاربر در تعریف پاد مشخص شده است. Kubernetes انتزاعی به نام کنترلکننده ارائه میکند که نحوه چرخاندن و چرخاندن غلافها را توضیح میدهد. بیرون، و چرخید. یک کنترلکننده ساده کنترلکننده استقرار است، که فرض میکند هر غلاف فاقد حالت است و میتواند در صورت لزوم متوقف یا شروع شود. برای بزرگ کردن یا کاهش مقیاس یک برنامه، به روز رسانی برنامه به نسخه جدید، یا برگرداندن یک برنامه به نسخه خوب-شناخته شده در صورت وجود مشکل استفاده می شود. برای برنامههایی که نوعی حالت پایدار دارند، از یک کنترلکننده StatefulSet استفاده کنید. . کنترلرهای دیگری نیز وجود دارند که سناریوهای دیگری را مدیریت می کنند.
خدمات Kubernetes
از آنجایی که غلاف ها در صورت نیاز زندگی می کنند و می میرند، ما به یک انتزاع متفاوت برای برخورد با چرخه عمر برنامه نیاز داریم. فرض بر این است که یک برنامه یک موجودیت پایدار باشد، حتی زمانی که غلافهایی که کانتینرهایی را که برنامه را تشکیل میدهند، خود ثابت نیستند. برای این منظور، Kubernetes یک انتزاع به نام سرویس ارائه میکند.
یک سرویس در Kubernetes توضیح میدهد که چگونه میتوان به یک گروه معین از pods (یا سایر اشیاء Kubernetes) از طریق شبکه دسترسی داشت. همانطور که مستندات Kubernetes بیان می کند، پادهایی که انتهای پشتی یک برنامه را تشکیل می دهند ممکن است تغییر کنند، اما قسمت جلویی نباید در مورد آن بداند یا آن را ردیابی کند. خدمات این جزئیات را مدیریت می کنند.
چند قطعه دیگر در داخل Kubernetes تصویر را کامل می کند. برنامهریز حجمهای کاری را به گرهها تقسیم میکند تا در بین آنها متعادل شوند. منابع، و به طوری که استقرار الزامات تعاریف برنامه را برآورده می کند. مدیر کنترلکننده تضمین میکند که وضعیت سیستم – برنامهها، بارهای کاری، و به همین ترتیب—با حالت دلخواه تعریف شده در تنظیمات پیکربندی Etcd مطابقت دارد.
به خاطر داشته باشید که هیچ یک از مکانیسمهای سطح پایین مورد استفاده توسط کانتینرها، مانند خود Docker، با Kubernetes جایگزین نمیشوند. در عوض، Kubernetes مجموعه بزرگتری از انتزاعات را برای استفاده از این مکانیسمها به منظور حفظ برنامههای کاربردی در مقیاس ارائه میکند.
خط مشی های Kubernetes
خطمشیها در Kubernetes تضمین میکنند که پادها به استانداردهای رفتاری خاصی پایبند هستند. به عنوان مثال، خطمشیها از استفاده بیش از حد از CPU، حافظه، شناسههای پردازش یا فضای دیسک جلوگیری میکنند. چنین “محدوده های محدود” به صورت نسبی برای CPU ها بیان می شوند (مثلاً ۵۰ ٪ از یک رشته سخت افزاری) و شرایط مطلق برای حافظه (به عنوان مثال، ۲۰۰ مگابایت). این محدودیتها را میتوان با سهمیههای منابع ترکیب کرد تا اطمینان حاصل شود که تیمهای مختلف Kubernetes < em>کاربران (برخلاف برنامههای کاربردی عموما) دسترسی برابر به منابع دارند.
ورود کوبرنتس
خدمات Kubernetes به عنوان در یک خوشه اجرا میشوند. اما شما می خواهید بتوانید از دنیای خارج به این خدمات دسترسی داشته باشید. چندین مؤلفه Kubernetes این کار را با درجات مختلف سادگی و استحکام تسهیل میکنند، از جمله NodePort و LoadBalancer. مؤلفه ای که بیشترین انعطاف پذیری را دارد Ingress است، یک API که دسترسی خارجی به خدمات یک خوشه، معمولاً از طریق HTTP.
Ingress برای تنظیم صحیح نیاز به کمی پیکربندی دارد. متیو پالمر، که کتابی در مورد توسعه Kubernetes نوشت، در وبسایت او مراحل را طی میکند.
Kubernetes با پرومتئوس
یک نیاز رایج در برنامههای کانتینری، بهویژه در مقیاس، قابل مشاهده بودن است – دانستن اینکه برنامهها چه کاری انجام میدهند و در کجا ممکن است مشکل داشته باشند. مؤلفههای Kubernetes میتوانند معیارهایی را منتشر کنند که توسط Prometheus، ابزار نظارت منبع باز ایجاد شده برای کار در ارتباط با Kubernetes و سایر فناوریهای بومی ابری.
داشبورد Kubernetes
یکی از مؤلفههای Kubernetes که به شما کمک میکند در بالای همه این مؤلفههای دیگر باقی بمانید، داشبورد، یک رابط کاربری مبتنی بر وب که میتوانید برای استقرار و عیبیابی برنامهها و مدیریت منابع کلاستر استفاده کنید. داشبورد به طور پیشفرض نصب نشده است، اما افزودن آن دشوار نیست.
ویدئوی مرتبط: Kubernetes چیست؟
در این ویدیوی ۹۰ ثانیهای، درباره Kubernetes، سیستم منبع باز برای خودکارسازی برنامههای کانتینری، از یکی از مخترعان این فناوری، جو بدا، بنیانگذار و مدیر ارشد فناوری هپتیو، بیاموزید.
پست های مرتبط
Kubernetes چیست؟ پلت فرم برنامه بعدی شما
Kubernetes چیست؟ پلت فرم برنامه بعدی شما
Kubernetes چیست؟ پلت فرم برنامه بعدی شما