سه سطح مقیاس خودکار در Kubernetes: نحوه استفاده موثر از آنها

سه سطح مقیاس خودکار در Kubernetes: نحوه استفاده موثر از آنها
برای تسلط کامل بر Kubernetes، باید راه‌های مختلفی برای مقیاس‌سازی منابع خوشه‌ای بدانید: توسط با توجه به توسعه دهندگان سیستم، این یکی از وظایف اصلی Kubernetes است. ما یک نمای کلی از مکانیسم‌های تغییر اندازه خودکار افقی و عمودی و همچنین توصیه‌هایی در مورد نحوه استفاده مؤثر از آنها ارائه کرده‌ایم.

مقاله Kubernetes Autoscaling 101: Cluster Autoscaler، Horizontal Autoscaler و Vertical Pod Autoscaler ترجمه شده توسط تیمی که مقیاس خودکار را در Kubernetes aaS از Mail.ru.

چرا مهم است که به پوسته پوسته شدن فکر کنید

کوبرنیتس - ابزاری برای مدیریت منابع و ارکستراسیون. البته، خوب است که با ویژگی های جالب استقرار، نظارت و مدیریت پادها (پادها گروهی از کانتینرها هستند که در پاسخ به یک درخواست راه اندازی می شوند) خوب است.

با این حال، باید به سؤالات زیر نیز فکر کنید:

  1. چگونه ماژول ها و برنامه ها را مقیاس بندی کنیم؟
  2. چگونه کانتینرها را عملیاتی و کارآمد نگه داریم؟
  3. چگونه به تغییرات مداوم کد و حجم کاری کاربران پاسخ دهیم؟

پیکربندی خوشه‌های Kubernetes برای متعادل کردن منابع و عملکرد می‌تواند چالش برانگیز باشد و به دانش تخصصی در مورد عملکرد داخلی Kubernetes نیاز دارد. حجم کاری برنامه یا خدمات شما می تواند در طول روز یا حتی در طول یک ساعت در نوسان باشد، بنابراین ایجاد تعادل بهتر است به عنوان یک فرآیند مداوم در نظر گرفته شود.

سطوح مقیاس خودکار Kubernetes

مقیاس خودکار مؤثر نیاز به هماهنگی بین دو سطح دارد:

  1. سطح پاد شامل افقی (Horizontal Pod Autoscaler، HPA) و Autoscaler عمودی (Vertical Pod Autoscaler، VPA). این مقیاس منابع موجود برای ظروف شما را افزایش می دهد.
  2. سطح کلاستر، که توسط Cluster Autoscaler (CA) مدیریت می شود، که تعداد گره های درون خوشه را افزایش یا کاهش می دهد.

ماژول Autoscaler افقی (HPA).

همانطور که از نام آن پیداست، HPA تعداد کپی های غلاف را کاهش می دهد. بیشتر devops از CPU و بار حافظه به عنوان محرک برای تغییر تعداد replica ها استفاده می کنند. با این حال، می توان مقیاس سیستم را بر اساس معیارهای سفارشی، آنها ترکیبی از یا حتی معیارهای خارجی.

نمودار عملیاتی HPA سطح بالا:

  1. HPA به طور مداوم مقادیر متریک مشخص شده در حین نصب را در فاصله زمانی پیش فرض 30 ثانیه بررسی می کند.
  2. HPA تلاش می کند تا در صورت رسیدن به آستانه تعیین شده، تعداد ماژول ها را افزایش دهد.
  3. HPA تعداد کپی ها را در کنترلر استقرار/تکرار به روز می کند.
  4. سپس کنترل‌کننده استقرار/تکثیر ماژول‌های اضافی لازم را مستقر می‌کند.

سه سطح مقیاس خودکار در Kubernetes: نحوه استفاده موثر از آنها
HPA فرآیند استقرار ماژول را با رسیدن به آستانه متریک شروع می کند

هنگام استفاده از HPA، موارد زیر را در نظر بگیرید:

  • فاصله بررسی پیش فرض HPA 30 ثانیه است. توسط پرچم تنظیم شده است horizontal-pod-autoscaler-sync-period در مدیر کنترلر
  • خطای نسبی پیش فرض 10 درصد است.
  • پس از آخرین افزایش تعداد ماژول ها، HPA انتظار دارد که معیارها در عرض سه دقیقه تثبیت شوند. این فاصله توسط پرچم تعیین می شود horizontal-pod-autoscaler-upscale-delay.
  • پس از آخرین کاهش تعداد ماژول ها، HPA به مدت پنج دقیقه منتظر می ماند تا تثبیت شود. این فاصله توسط پرچم تعیین می شود horizontal-pod-autoscaler-downscale-delay.
  • HPA به جای کنترلرهای تکرار، با اشیاء استقرار بهتر کار می کند. مقیاس خودکار افقی با به روز رسانی نورد ناسازگار است، که به طور مستقیم کنترل کننده های تکرار را دستکاری می کند. با استقرار، تعداد کپی ها به طور مستقیم به اشیاء استقرار بستگی دارد.

مقیاس خودکار عمودی غلاف ها

مقیاس خودکار عمودی (VPA) بیشتر (یا کمتر) زمان یا حافظه CPU را به پادهای موجود اختصاص می دهد. مناسب برای پادهای دارای وضعیت یا بدون حالت، اما عمدتاً برای خدمات دولتی در نظر گرفته شده است. با این حال، اگر نیاز به تنظیم خودکار مقدار منابع تخصیص داده شده اولیه دارید، می توانید از VPA برای ماژول های بدون حالت نیز استفاده کنید.

VPA همچنین به رویدادهای OOM (خارج از حافظه) پاسخ می دهد. تغییر زمان و حافظه CPU نیاز به راه اندازی مجدد پادها دارد. هنگام راه اندازی مجدد، VPA به بودجه تخصیص احترام می گذارد (بودجه توزیع غلاف، PDB) برای تضمین حداقل تعداد ماژول های مورد نیاز.

شما می توانید حداقل و حداکثر منابع را برای هر ماژول تنظیم کنید. بنابراین، می توانید حداکثر مقدار حافظه اختصاص داده شده را به 8 گیگابایت محدود کنید. این در صورتی مفید است که گره‌های فعلی قطعاً نتوانند بیش از 8 گیگابایت حافظه در هر ظرف اختصاص دهند. مشخصات دقیق و مکانیسم عملیاتی در شرح داده شده است ویکی رسمی VPA.

علاوه بر این، VPA یک عملکرد توصیه جالب (VPA Recommender) دارد. استفاده از منابع و رویدادهای OOM همه ماژول ها را برای پیشنهاد مقادیر جدید حافظه و زمان CPU بر اساس یک الگوریتم هوشمند بر اساس معیارهای تاریخی، بررسی می کند. همچنین یک API وجود دارد که یک دسته پاد را می گیرد و مقادیر منبع پیشنهادی را برمی گرداند.

شایان ذکر است که VPA Recommender "محدودیت" منابع را ردیابی نمی کند. این ممکن است منجر به انحصار ماژول منابع در گره ها شود. بهتر است برای جلوگیری از مصرف زیاد حافظه یا پردازنده، محدودیت را در سطح فضای نام تنظیم کنید.

طرح عملیاتی VPA سطح بالا:

  1. VPA به طور مداوم مقادیر متریک مشخص شده در حین نصب را در فاصله پیش فرض 10 ثانیه بررسی می کند.
  2. در صورت رسیدن به آستانه مشخص شده، VPA تلاش می کند تا مقدار تخصیص یافته منابع را تغییر دهد.
  3. VPA تعداد منابع موجود در کنترلر استقرار/تکرار را به روز می کند.
  4. هنگامی که ماژول ها راه اندازی مجدد می شوند، تمام منابع جدید به نمونه های ایجاد شده اعمال می شوند.

سه سطح مقیاس خودکار در Kubernetes: نحوه استفاده موثر از آنها
VPA مقدار مورد نیاز منابع را اضافه می کند

لطفاً هنگام استفاده از VPA به نکات زیر توجه کنید:

  • پوسته پوسته شدن نیاز به راه اندازی مجدد اجباری غلاف دارد. این برای جلوگیری از عملکرد ناپایدار پس از ایجاد تغییرات ضروری است. برای قابلیت اطمینان، ماژول ها مجدداً راه اندازی می شوند و بر اساس منابع جدید تخصیص یافته در بین گره ها توزیع می شوند.
  • VPA و HPA هنوز با یکدیگر سازگار نیستند و نمی توانند روی یک پاد اجرا شوند. اگر از هر دو مکانیسم مقیاس‌بندی در یک کلاستر استفاده می‌کنید، مطمئن شوید که تنظیمات شما از فعال شدن آن‌ها بر روی یک اشیاء جلوگیری می‌کند.
  • VPA درخواست های کانتینر را برای منابع فقط بر اساس استفاده گذشته و فعلی تنظیم می کند. محدودیت استفاده از منابع را تعیین نمی کند. ممکن است مشکلاتی در مورد درست کار نکردن برنامه‌ها و شروع به تسخیر منابع بیشتر و بیشتر وجود داشته باشد، این امر منجر به خاموش کردن این پاد توسط Kubernetes می‌شود.
  • VPA هنوز در مرحله اولیه توسعه است. آماده باشید که سیستم ممکن است در آینده نزدیک دستخوش تغییراتی شود. می توانید در مورد آن بخوانید محدودیت های شناخته شده и برنامه های توسعه. بنابراین، برنامه‌هایی برای اجرای عملیات مشترک VPA و HPA، و همچنین استقرار ماژول‌ها به همراه یک سیاست مقیاس خودکار عمودی برای آنها وجود دارد (به عنوان مثال، یک برچسب ویژه "نیاز به VPA دارد".

مقیاس خودکار یک خوشه Kubernetes

Cluster Autoscaler (CA) تعداد گره ها را بر اساس تعداد غلاف های انتظار تغییر می دهد. سیستم به طور دوره ای ماژول های معلق را بررسی می کند - و در صورت نیاز به منابع بیشتر و اگر خوشه از محدودیت های تعیین شده تجاوز نکند، اندازه خوشه را افزایش می دهد. CA با ارائه‌دهنده خدمات ابری ارتباط برقرار می‌کند، گره‌های اضافی را از آن درخواست می‌کند، یا گره‌های غیرفعال را آزاد می‌کند. اولین نسخه عمومی موجود CA در Kubernetes 1.8 معرفی شد.

طرح سطح بالای عملیات SA:

  1. CA ماژول ها را در حالت معلق در فاصله پیش فرض 10 ثانیه بررسی می کند.
  2. اگر یک یا چند غلاف در حالت آماده به کار باشند، زیرا خوشه منابع کافی برای تخصیص آنها را ندارد، سعی می کند یک یا چند گره اضافی را فراهم کند.
  3. هنگامی که ارائه‌دهنده خدمات ابری گره مورد نیاز را اختصاص می‌دهد، به خوشه می‌پیوندد و آماده سرویس دهی به پادها است.
  4. زمانبندی Kubernetes، غلاف های معلق را در گره جدید توزیع می کند. اگر پس از این، برخی از ماژول ها همچنان در حالت انتظار باقی بمانند، این فرآیند تکرار می شود و گره های جدید به خوشه اضافه می شوند.

سه سطح مقیاس خودکار در Kubernetes: نحوه استفاده موثر از آنها
تهیه خودکار گره های خوشه ای در ابر

هنگام استفاده از CA موارد زیر را در نظر بگیرید:

  • CA تضمین می کند که همه پادها در کلاستر بدون توجه به بار CPU، فضایی برای اجرا دارند. همچنین سعی می کند اطمینان حاصل کند که هیچ گره غیر ضروری در خوشه وجود ندارد.
  • CA نیاز به مقیاس را پس از تقریباً 30 ثانیه ثبت می کند.
  • هنگامی که دیگر نیازی به گره نیست، CA به طور پیش فرض 10 دقیقه منتظر می ماند تا سیستم را کوچک کند.
  • سیستم مقیاس خودکار دارای مفهوم بسط دهنده است. اینها استراتژی‌های مختلفی برای انتخاب گروهی از گره‌ها هستند که گره‌های جدیدی به آن‌ها اضافه می‌شوند.
  • از گزینه به طور مسئولانه استفاده کنید cluster-autoscaler.kubernetes.io/safe-to-evict (درست). اگر پادهای زیادی نصب کنید، یا اگر بسیاری از آنها در تمام گره ها پراکنده باشند، تا حد زیادی توانایی بزرگ کردن خوشه را از دست خواهید داد.
  • استفاده کنید PodDisruptionBudgetsبرای جلوگیری از حذف پادها، که می تواند باعث خرابی کامل بخش هایی از برنامه شما شود.

نحوه تعامل خودکار مقیاس‌کننده‌های Kubernetes با یکدیگر

برای هماهنگی کامل، مقیاس خودکار باید هم در سطح پاد (HPA/VPA) و هم در سطح خوشه اعمال شود. آنها نسبتاً ساده با یکدیگر تعامل دارند:

  1. HPA ها یا VPA ها کپی های غلاف یا منابع اختصاص داده شده به غلاف های موجود را به روز می کنند.
  2. اگر گره های کافی برای مقیاس بندی برنامه ریزی شده وجود نداشته باشد، CA متوجه وجود غلاف ها در حالت انتظار می شود.
  3. CA گره های جدیدی را اختصاص می دهد.
  4. ماژول ها به گره های جدید توزیع می شوند.

سه سطح مقیاس خودکار در Kubernetes: نحوه استفاده موثر از آنها
سیستم کوچک سازی مشترک Kubernetes

اشتباهات رایج در مقیاس خودکار Kubernetes

چندین مشکل رایج وجود دارد که هنگام تلاش برای پیاده سازی مقیاس خودکار با آنها مواجه می شوند.

HPA و VPA به معیارها و برخی داده های تاریخی بستگی دارند. اگر منابع کافی تخصیص داده نشود، ماژول ها به حداقل می رسند و قادر به تولید معیارها نخواهند بود. در این حالت، مقیاس خودکار هرگز اتفاق نخواهد افتاد.

خود عمل مقیاس بندی به زمان حساس است. ما می خواهیم ماژول ها و خوشه ها به سرعت مقیاس شوند - قبل از اینکه کاربران متوجه هر گونه مشکل یا خرابی شوند. بنابراین میانگین زمان پوسته پوسته شدن غلاف و خوشه باید در نظر گرفته شود.

سناریوی ایده آل - 4 دقیقه:

  1. 30 ثانیه. به روز رسانی معیارهای هدف: 30-60 ثانیه.
  2. 30 ثانیه. HPA مقادیر متریک را بررسی می کند: 30 ثانیه.
  3. کمتر از 2 ثانیه. پادها ایجاد می شوند و به حالت انتظار می روند: 1 ثانیه.
  4. کمتر از 2 ثانیه. CA ماژول های انتظار را می بیند و تماس ها را به گره های تامین ارسال می کند: 1 ثانیه.
  5. 3 دقیقه. ارائه دهنده ابر گره ها را اختصاص می دهد. K8s منتظر می ماند تا آماده شود: تا 10 دقیقه (بسته به عوامل متعددی).

بدترین حالت (واقع بینانه تر) - 12 دقیقه:

  1. 30 ثانیه. معیارهای هدف را به روز کنید.
  2. 30 ثانیه. HPA مقادیر متریک را بررسی می کند.
  3. کمتر از 2 ثانیه. غلاف ها ایجاد می شوند و وارد حالت آماده به کار می شوند.
  4. کمتر از 2 ثانیه. CA ماژول های انتظار را می بیند و برای تهیه گره ها تماس می گیرد.
  5. 10 دقیقه. ارائه دهنده ابر گره ها را اختصاص می دهد. K8s منتظر می ماند تا آماده شود. زمان انتظار به عوامل مختلفی مانند تاخیر فروشنده، تاخیر سیستم عامل و ابزارهای پشتیبانی بستگی دارد.

مکانیسم های مقیاس بندی ارائه دهندگان ابر را با CA ما اشتباه نگیرید. دومی در یک خوشه Kubernetes اجرا می شود، در حالی که موتور ارائه دهنده ابر بر اساس توزیع گره کار می کند. نمی داند چه خبر است با غلاف یا برنامه شما. این سیستم ها به صورت موازی کار می کنند.

نحوه مدیریت مقیاس پذیری در Kubernetes

  1. Kubernetes یک ابزار مدیریت منابع و ارکستراسیون است. عملیات مدیریت پادها و منابع خوشه نقطه عطفی در تسلط بر Kubernetes است.
  2. منطق مقیاس پذیری غلاف را با در نظر گرفتن HPA و VPA درک کنید.
  3. CA فقط در صورتی باید استفاده شود که درک خوبی از نیازهای غلاف و ظروف خود داشته باشید.
  4. برای پیکربندی بهینه یک خوشه، باید بدانید که چگونه سیستم های مقیاس بندی مختلف با هم کار می کنند.
  5. هنگام تخمین زمان مقیاس بندی، بدترین و بهترین سناریوها را در نظر داشته باشید.

منبع: www.habr.com

اضافه کردن نظر