حلقه تطبیق: کنترلرهای کوبرنیتیز چگونه وضعیت مطلوب را در یک سیستم توزیعشده حفظ میکنند
کوبرنیتیز برای سرپا نگهداشتن زیرساخت، به یک چرخه پیوسته از مشاهده و اصلاح متکی است. این هماهنگکننده با جایگزین کردن اسکریپتهای دستوری با یک موتور قطعی مقایسه وضعیت، سازگاری نهایی را در سراسر سیستمهای توزیعشده تضمین میکند.
به قلم نیما موسوی
این خبر را به اشتراک بگذارید
- مهندسان پلتفرم
- مدافعان زیرساخت اعلانی که برای حذف دستورالعملهای دستی ارزش قائل هستند.
- منتقدان زیرساخت
- مهندسانی که پیچیدگی دیباگ کردن تغییرات وضعیت ناهمگام را برجسته میکنند.
- اکوسیستم فروشندگان
- نهادهای تجاری که الگوی تطبیق را به عنوان عملیات خودکار بازاریابی میکنند.
دیدگاههایی که این گزارش پوشش نداده
- توسعهدهندگان برنامهها که باید کدهای خود را برای اجرا در محیطهایی که پیوسته در حال تغییرند، تطبیق دهند.
- حسابرسان امنیتی که ریسک کنترلرهای خودکار با دسترسیهای سطح بالا را ارزیابی میکنند.
نکات کلیدی
- کنترلرهای کوبرنیتیز بر اساس یک حلقه تطبیق پیوسته کار میکنند، نه یک اسکریپت مرحلهبهمرحله.
- این حلقه تفاوت بین وضعیت مطلوب و وضعیت فعلی را محاسبه میکند.
- زیرساخت اعلانی به سیستمها اجازه میدهد بدون نیاز به کدهای صریح مدیریت خطا، از خرابیهای غیرمنتظره بازیابی شوند.
- کنترلرهای سفارشی که با نام اپراتورها شناخته میشوند، این الگو را به برنامههای خارجی مانند پایگاههای داده تعمیم میدهند.
- کل این معماری به در دسترس بودن بالای سرور ایپیآی و ایتیسیدی وابسته است.
برای اینکه هر سیستم توزیعشدهای بتواند بازیابی خود را خودکار کند، یک شرط الزامآور باید برقرار باشد: سیستم به یک منبع حقیقت مطلق و دستنخورده و دیدی بدون مانع به سختافزار واقعی نیاز دارد. اگر یک صفحه کنترل نتواند واقعیت را مشاهده کند یا آن را تغییر دهد، هماهنگسازی غیرممکن است. در کوبرنیتیز، این شرط توسط سرور ایپیآی و پایگاه داده ایتیسیدی که وضعیت مطلوب اعلانی را در خود نگه میدارند، برآورده میشود. تا زمانی که این وضعیت در دسترس باشد، کلاستر میتواند خود را از تقریباً هر خرابی بازسازی کند.
صنعت نرمافزارهای سازمانی، کوبرنیتیز را با هیاهوی فراوان به عنوان یک هماهنگکننده «خودترمیمشونده» و تقریباً هوشمند که قادر به تصمیمگیری خودکار است، بازاریابی میکند. فروشندگان مرتباً اصطلاحاتی مانند «عملیات مبتنی بر هوش مصنوعی» را به محصولات زیرساختی خود میچسبانند. اما واقعیتی که در کدهای این سیستم پیادهسازی شده، بسیار مکانیکیتر و قطعیتر است. این یک هوش مصنوعی نیست؛ بلکه مجموعهای از حلقههای بینهایت است که در پسزمینه اجرا میشوند.
در قلب این سیستم، حلقه تطبیق قرار دارد. بر اساس مستندات رسمی کوبرنیتیز که در سپتامبر ۲۰۲۴ بهروزرسانی شده است: «یک کنترلر حداقل یک نوع منبع کوبرنیتیز را ردیابی میکند. این اشیاء دارای یک فیلد اسپک هستند که وضعیت مطلوب را نشان میدهد.» تنها مسئولیت کنترلر این است که وضعیت فعلی کلاستر را با آن وضعیت مطلوب مطابقت دهد.[5]
این حلقه یک فرآیند سهمرحلهای دقیق و پایانناپذیر را اجرا میکند: مشاهده، مقایسه و اقدام. این سیستم یک اسکریپت از پیشتعریفشده یا یک جریان کاری مرحلهبهمرحله را اجرا نمیکند. در عوض، تفاوت بین دو فیلد تودرتو را محاسبه میکند. فیلد اسپک آنچه را که کاربر میخواهد اعلام میکند—مانند اجرای دقیقاً سه نسخه از یک وبسرور. فیلد استاتوس آنچه را که در واقعیت روی سختافزار وجود دارد، گزارش میدهد.[2]
زیرساختهای سنتی به شدت به دستورات امری متکی بودند. مهندسان اسکریپتهایی مینوشتند که دنبالهای از مراحل را اجرا میکرد: تامین یک ماشین مجازی، نصب وابستگیها، اجرای برنامه. اگر مرحله دوم به دلیل قطعی شبکه با شکست مواجه میشد، اسکریپت از کار میافتاد و سیستم را در یک وضعیت نامعلوم و خراب رها میکرد که برای رفع آن به دخالت انسان نیاز بود.
مهندسان اسکریپتهایی مینوشتند که دنبالهای از مراحل را اجرا میکرد: تامین یک ماشین مجازی، نصب وابستگیها، اجرای برنامه.
از آنجا که حلقه تطبیق ماهیتی اعلانی دارد، برایش مهم نیست که سیستم چگونه به وضعیت فعلی خود رسیده است. اگر یک سرور فیزیکی برق خود را از دست بدهد و سه پاد برنامه از دسترس خارج شوند، کنترلر نیازی به یک اسکریپت خاص مدیریت خطا برای قطعی برق ندارد. او به سادگی بیدار میشود، میبیند که تعداد پادهای واقعی صفر است در حالی که تعداد مطلوب سه است، و دستوراتی را به سرور ایپیآی صادر میکند تا سه پاد جدید ایجاد کند.[3]
یک نیاز حیاتی برای این معماری، ویژگی همتوانی است. تابع تطبیق کنترلر باید بتواند صدها بار بدون ایجاد عوارض جانبی ناخواسته اجرا شود. راهنمای فنی سال ۲۰۲۱ شرکت ردهت خاطرنشان میکند: «هنگام توسعه اپراتورها، حلقه تطبیق کنترلر باید همتوان باشد.» اگر وضعیت مطلوب از قبل برآورده شده باشد، حلقه تفاوت را ارزیابی میکند، واریانس را صفر مییابد و هیچ اقدامی انجام نمیدهد.[1]
در صفحه کنترل کوبرنیتیز، مؤلفهای به نام مدیر کنترلر این حلقهها را به طور پیوسته اجرا میکند. کنترلرهای داخلی، منابع بومی را مدیریت میکنند. به عنوان مثال، کنترلر رپلیکاست اطمینان حاصل میکند که تعداد صحیحی از پادها در حال اجرا هستند، در حالی که کنترلر جاب وظایف محدود را اجرا میکند. ردهت توضیح میدهد: «مدیر کنترلر یک حلقه کنترلی را اجرا میکند که به هر کنترلر اجازه میدهد با فراخوانی متد تطبیق خود اجرا شود.»[1]
این معماری به گونهای طراحی شده که قابل توسعه باشد. صنعت به شدت روی «اپراتورها» مانور تبلیغاتی داده است—کنترلرهای سفارشی که حلقه تطبیق را روی سیستمهای خارجی یا پیچیده مانند پایگاههای داده، صفهای پیام و لایههای کش اعمال میکنند. با تعریف یک منبع سفارشی، تیمهای مهندسی میتوانند مفاهیم خاص یک دامنه را به کوبرنیتیز آموزش دهند.[2]
در حالی که فروشندگان این اپراتورها را به عنوان «مدیران پایگاه داده خودکار» میفروشند، قابلیتی که در عمل ارائه میشود اساساً فقط یک منبع سفارشی است که با یک حلقه تطبیق استاندارد جفت شده است. این قابلیت، فراخوانیهای ایپیآی خاص یک دامنه را کدگذاری میکند—مانند نحوه تهیه نسخه پشتیبان ایمن از یک پایگاه داده پستگرسکیوال—اما مکانیزم زیربنایی همان مقایسه ساده بین فیلدهای اسپک و استاتوس باقی میماند.[6]
با مقیاسپذیری کلاسترها به هزاران نود، اجرای یک حلقه تطبیق واحد به یک گلوگاه عملکردی تبدیل میشود. کنترلرها میتوانند برای تطبیق همزمان پیکربندی شوند و چندین رویداد را به طور همزمان پردازش کنند. با این حال، این امر شرایط رقابتی را به وجود میآورد. بر اساس مستندات گیتهاب در مورد تطبیق همزمان، مکانیزمهای قفلگذاری دقیق یا کنترل همزمانی خوشبینانه مورد نیاز است تا اطمینان حاصل شود که دو حلقه در یک میلیثانیه دقیقاً یک شیء را تغییر نمیدهند.[4]
حلقه تطبیق یک راهحل ظریف برای مدیریت سیستمهای توزیعشده است، اما یک محدودیت سخت دارد. این الگو فرض میکند که صفحه کنترل در دسترسپذیری بالایی قرار دارد و میتوان به سرور ایپیآی متصل شد. اگر پایگاه داده ایتیسیدی از کار بیفتد یا خراب شود، حلقه، حافظه خود را از وضعیت مطلوب از دست میدهد. در آن نقطه، سیستم به طور کامل از ترمیم باز میایستد و واقعیت مکانیکی پنهان در پس بازاریابیهای خودکارسازی را آشکار میکند.[6]
اصطلاحات کلیدی
- حلقه تطبیق
- چرخه پیوسته مشاهده، مقایسه و اقدام که کوبرنیتیز برای حفظ وضعیت مطلوب یک سیستم از آن استفاده میکند.
- وضعیت مطلوب
- پیکربندی اعلامشده توسط کاربر، که معمولاً در ایتیسیدی ذخیره میشود و جزئیات نحوه ظاهر سیستم را مشخص میکند.
- همتوانی
- ویژگی یک عملیات که در آن اجرای چندین باره آن، همان نتیجهای را تولید میکند که یک بار اجرای آن به همراه دارد.
- تعریف منبع سفارشی
- افزونهای برای ایپیآی کوبرنیتیز که به کاربران اجازه میدهد اشیاء خاص دامنه خود را برای مدیریت توسط کنترلرها تعریف کنند.
منابع
[1]Red Hat Developerمهندسان پلتفرمKubernetes Operators 101, Part 2: How operators work
مطالعه در Red Hat Developer →
[2]Chainguardاکوسیستم فروشندگانThe Principle of Reconciliation
مطالعه در Chainguard →
[3]PlanetScaleمهندسان پلتفرمThe feedback loops behind Kubernetes
مطالعه در PlanetScale →
[4]GitHubمنتقدان زیرساختkubernetes-controller-tutorial/docs/concurrent_reconciling.md at main
مطالعه در GitHub →
[5]Kubernetesاکوسیستم فروشندگانControllers | Kubernetes
مطالعه در Kubernetes →
[6]تیم سردبیری کوهستانتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
نظرات
بیشتر در فناوری
مشاهده همه →معماری خانه هوشمند
چرا پردازش محلی در خانههای هوشمند، تاخیر و وابستگی به اینترنت را از بین میبرد اما هوش مصنوعی پیچیده را فدا میکند
9 منبع
مجوزهای نرمافزاری
بند ویروسی: چرا مجوز GPL متنباز بودن آثار مشتقشده را الزامی میکند، اما مجوز MIT نه
8 منبع
حریم خصوصی وب
کالبدشکافی انگشتنگاری مرورگر: سایتها واقعاً چگونه شما را بدون کوکی ردیابی میکنند؟
4 منبع
امنیت سایبری
مایکروسافت با رفع ۶۲۱ نقص امنیتی رکورد زد؛ هوش مصنوعی کشف آسیبپذیریها را متحول میکند
6 منبع
هر زاویه. هر روز.
دریافت فناوری اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.




