در این مقاله به مفاهیم route reconciliation، Cloud Controller Manager و قابلیت gate با نام CloudControllerManagerWatchBasedRoutesReconciliation میپردازیم تا کارایی و پاسخدهی به رویدادها بهبود یابد.
Kubernetes v1.35 یک تغییر خوب برای Cloud Controller Manager (CCM) معرفی کرده تا کار با روترها به شکل مؤثرتری انجام شود ☁️⚙️
در نسخههای قبلی، از جمله 1.34، کنترلکنندهٔ مسیر در پیادهسازیهای CCM که با کتابخانهٔ k8s.io/cloud-provider ساخته شده بودند، آشتی مسیرها (route reconciliation) را بر اساس یک بازهٔ زمانی ثابت انجام میدادند. وقتی تغییر واقعی در مسیرها وجود نداشت، این روش منجر به درخواستهای غیرضروری API به ارائهدهندهٔ ابر میشد که میتواند بار اضافی و هزینههای تاخیر ایجاد کند. در مقابل، کنترلکنندههای دیگری که از همان کتابخانه استفاده میکردند، قبلاً به مکانیسمهایی تکیه داشتند که از اطلاعرسانها (informers / watches) برای جلوگیری از تماسهای بیمورد با API بهره میگرفتند 🔁
در v1.35 یک دروازهٔ ویژگی جدید معرفی شده تا رفتار کنترلکنندهٔ مسیر قابل تغییر باشد و بتوان از اطلاعرسانهای مبتنی بر watch استفاده کرد. نام این feature gate عبارت است از CloudControllerManagerWatchBasedRoutesReconciliation و در مرحلهٔ آلفا توسط SIG Cloud Provider به k8s.io/cloud-provider اضافه شده است. برای فعالسازی این ویژگی در پیادهسازی CCM خود میتوانید از این فلگ استفاده کنید:
<br>--feature-gate=CloudControllerManagerWatchBasedRoutesReconciliation=true<br>
وقتی این دروازه فعال شود، کنترلکننده اساساً روی رویدادهای مرتبط (مثلاً اضافه یا حذف شدن گرهها یا تغییر در فیلدهای مرتبط) واکنش نشان میدهد و در عین حال یک بازهٔ دورهای آشفته (jittered) نگه میدارد تا بازههای تعمیر کلی هم انجام شوند — بهصورت تصادفی بین حدود 12 تا 24 ساعت که هنگام شروع کنترلکننده انتخاب میشود. این تغییر منطق داخلی حلقهٔ آشتی را عوض نمیکند؛ یعنی ساختار اصلی reconcile باقی میماند و بنابراین کاربران نباید تغییرات قابلتوجهی در تنظیمات مسیر فعلی خود مشاهده کنند ✅
نکتهٔ عملی: از آنجایی که این قابلیت در وضعیت آلفا است، بهتر است ابتدا در محیطهای staging تست کنید و سپس در تولید فعال کنید. برای جزئیات فنی و دلایل طراحی، به KEP-5237 مراجعه کنید — آنجا توضیحات کاملتری از رفتارها، موارد لبه و تستها موجود است 📘