مهاجرت زندهٔ ماشین مجازی تو کوبرنتیز، بدون قطعی شبکه
خلاصهٔ کاملتر
این پست ادامهٔ یه سری نوشتهٔ تیگراست دربارهٔ اینکه چرا مهاجرت زندهٔ ماشین مجازی (VM Live Migration) تو کوبرنتیز سخته. خلاصهٔ مسئله اینه: برای یه VM، آدرس IP فقط یه شماره نیست، هویتشه. پس نسخهٔ «جدید» روی نود مقصد باید با همون IP بالا بیاد — کاری که کوبرنتیز ذاتاً براش ساخته نشده — و ترافیک هم فقط وقتی باید سوییچ کنه که سیاستهای امنیتی شبکه از قبل سر جاشون باشن.
به گفتهٔ نویسنده، کلیکو تو نسخهٔ v3.32.0 هر دوی اینها رو میده و بقیهٔ پست یه کارگاه خودتانجامبدهست: تو حدود پنج دقیقه یه کلاستر سهنودی با KIND بالا میآری، کلیکو و KubeVirt رو نصب میکنی، یه VM میسازی و زنده جابهجاش میکنی. پیشنیازها لینوکس یا ویندوز با WSL2 (مک پشتیبانی نمیشه)، داکر یا پادمن با حداقل ۸ گیگ رم، و ابزارهای kubectl، KIND و virtctl هستن.
نکتهٔ فنی اصلی سه تا تنظیمه که کل بار رو به دوش میکشن. اول kubeVirtVMAddressPersistence تو کانفیگ IPAM کلیکو که باعث میشه آدرس VM موقع جابهجایی حفظ شه. دوم انوتیشن allow-pod-bridge-network-live-migration روی خود VM، چون KubeVirt بدون اون مهاجرت در حالت bridge رو بلاک میکنه. سوم شبکهٔ bridge روی پاد نتورک، که تنها حالتیه که کلیکو میتونه توش IP رو نگه داره.
برای اینکه این حالت کار کنه باید پرچم permitBridgeInterfaceOnPodNetwork تو کانفیگ سطح کلاستر KubeVirt روشن باشه. نویسنده یادآوری میکنه که این پرچم معمولاً پیشفرض روشنه، ولی بعضی ادمینها به دلایل امنیتی یا معماری خاموشش میکنن — پس قبل از شروع باید چکش کنی.
خود عمل مهاجرت پشت یه دستور ساده مخفی شده و کل پیچیدگی هماهنگی بین اجزای کلیکو و KubeVirt پشت پرده اتفاق میافته: کلیکو سمت شبکه و امنیت رو میگیره و KubeVirt چرخهٔ حیات محاسباتی رو، یعنی انتقال حافظهٔ مهمان روی سیم و سپردن CPU به نود جدید. برای دیدن این «رقص»، پست یه اپ observer معرفی میکنه که موقع مهاجرت اطلاعات کلاستر رو جمع میکنه و گزارش قابل جستوجو تو قالب Markdown، JSON و HTML میسازه.
نتیجهٔ عددی هم جالبه. تو دو گزارش مستقل مهاجرت، پیکربندی BGP + IP-in-IP هیچ قطعیای تو پروب TCP نشون نداده و کل مهاجرت حدود ۱ دقیقه و ۱۳.۷ ثانیه طول کشیده؛ در حالی که VXLAN + BGP یک ثانیه قطعی داشته و کل زمانش به ۱ دقیقه و ۴۴.۵ ثانیه رسیده. یعنی انتخاب دیتاپلین مستقیم روی تجربهٔ کاربر نهایی اثر میذاره.
جمعبندی نویسنده اینه که اگه اون سه تنظیم درست باشه، یه VM استیتفول با اتصالهای TCP بازش و هویت دستنخورده بین ماشینها جابهجا میشه و اپ observer فقط این اتفاق رو قابل اثبات میکنه.
نکات کلیدی:
- مهاجرت زندهٔ VM تو کوبرنتیز به حفظ IP و آماده بودن سیاستهای امنیتی قبل از سوییچ ترافیک وابستهست
- کلیکو v3.32.0 این قابلیت رو اضافه کرده؛ نسخهٔ دقیق مهمه
- سه تنظیم کلیدی: kubeVirtVMAddressPersistence، انوتیشن allow-pod-bridge-network-live-migration و شبکهٔ bridge
- تو تستهای تیگرا، BGP + IP-in-IP قطعی صفر و VXLAN + BGP یک ثانیه قطعی داشته
- مک برای این سناریو پشتیبانی نمیشه؛ لینوکس یا ویندوز با WSL2 لازمه




