پروژهی Kata Containers از سال ۲۰۱۷ کار خودش رو شروع کرده و هماکنون توسط بنیاد OpenStack پشتیبانی میشه. Kata Containers درواقع کار Clear Containers رو داره ادامه میده که پروژهای از شرکت Intel بود که حالا توسعهاش متوقف شده. ایدهی Kata Containers آشتی دو دنیای ماشینهای مجازی و کانتینرها هست که در ادامه بیشتر باهاش آشنا میشیم.
امنیت، امنیت و امنیت! همانطور که میدانید کانتینرهای در لینوکس همگی بهصورت مشترک از کرنل، شبکه، I/O و مموری میزبان استفاده میکنند. ترکیب کرنل مشترک و آسیبپذیریهای احتمالی در لینوکس میتونه منجر به فرار یک کاربر از محدودیتهای موجود بشه و عملا به هاست دسترسی پیدا کنه.
در بسیاری از موارد که تنها یک کاربر در یک هاست موجود است شاید این مشکل زیاد حس نشه اما در محیطهای multi-tenant مثل public cloud ها که کاربران زیادی از یک هاست مشترک استفاده میکنند این مسئله یکی از دغدغههای اصلی است.
کانتینرهای لینوکسی از چیزی به نام cgroups برای تخصیص و مدیریت منابع و namespace ها استفاده میکنند. برای ایجاد محدودیت و ایزوله کردن محیط کانتینر موارد زیادی اعمال میشن که شامل استفاده از SELinux و AppArmor، دراپ کردن syscall ها با استفاده از seccomp و ... میشه. این روزها بحث sandbox کردن خیلی داغ شده که برای مثال gvisor رو ببینید.
توی زمینهی مورد بحث ما میشه گفت اصلیترین مشکل ماشینهای مجازی سنگینوزن بودن آنها و overhead بیشتر نسبت به کانتینرها هست.
راه حل Kata Containers برای این قضیه ترکیب کانتینرها و ماشینهای مجازی هست! درواقع ما با ماشینهای مجازیای طرف هستیم که قیافهی کانتینر به خودشون گرفتن، باشگاه رفتن وزن کم کردن و حالا سرعت و چابکی کانتینرها رو دارند.
در Kata Containers هر کانتینر روی یک ماشین مجازی سبکوزن اجرا میشه و اینطوری دسترسی به کرنل هاست نداره و توسط مجازیسازی سختافزاری از بقیهی کانتینرها ایزوله شده. ( در Kubernetes هر Pod روی یک ماشین مجازی مجزا اجرا میشه )
این معماری به Public Cloud ها این امکان رو میده که بدون نگرانی (نسبتا!) چندین کاربر رو روی یک کلاستر یا روی یک هاست میزبانی کنند.
همونطور که در تصویر بالا میبینید Kata Containers یک OCI-compatible runtime داره که به شما اجازه میده به راحتی از ابزارهای موجود مربوط به Docker و کلا OCI برای مدیریت Kata Containers استفاده کنید.
در مورد Kubernetes هم Kata Containers به شما امکان استفاده از طریق CRI میده ولی برای کوتاه نگه داشتن این پست وارد این بخش نمیشیم.
من توی این پست سعی کردم مطالبی که به نظرم برای آشنایی خوب بودن رو از چند منبع جمعآوری کنم که البته اگر میخواستید جزئیات بیشتری در رابطه با Kata Containers بخونید میتونید از چندتا لینک زیر شروع کنید.
A Minimalistic Guide to Kata Containers
10 Things You Need to Know about the Kata Containers Project
Why Kata Containers doesn’t replace Kubernetes
Kata Containers Documentations