В июле ты обновляешь Kata Containers и получаешь другой runtime по умолчанию: вместо Go-реализации — runtime-rs. Старый runtime останется в поставке, но смена дефолта затронет новые установки и конфигурации, которые не закрепляют обработчик явно.
До релиза нужно проверить каждый пул нод: RuntimeClass, VMM, архитектуру процессоров и GPU passthrough. На выходе будет одно из трёх решений — перевести пул на runtime-rs, оставить на Go или отложить обновление.
Go-рантайм останется, но развивать его перестанут
Kata Containers 4.0.0 завершает переход проекта к Rust-first архитектуре. runtime-rs станет рантаймом по умолчанию, а Go-реализация получит статус deprecated.

Deprecated здесь не означает «удалён». После выхода 4.0 разработчики продолжат принимать исправления ошибок и уязвимостей для Go-рантайма, но перестанут добавлять в него функции.
Удалить старую реализацию могут не раньше Kata Containers 5.0.0. Эту версию прогнозируют через 18 месяцев после 4.0.0. Получается миграционное окно, а не повод ждать ещё полтора года: за это время нужно найти несовместимые пулы и убрать зависимость от deprecated runtime.
Сначала проверь, где runtime задан явно:
kubectl get runtimeclass
kubectl get runtimeclass -o yaml
Затем найди поды, которые выбирают RuntimeClass:
kubectl get pods -A \
-o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,RUNTIMECLASS:.spec.runtimeClassName'
Пустое поле не доказывает, что под использует Go или Rust. Оно показывает, что выбор делает конфигурация CRI на ноде. Её и нужно сопоставить с настройками RuntimeClass перед обновлением.
Первый фильтр — VMM и архитектура нод
runtime-rs поддерживает QEMU, Cloud Hypervisor, Firecracker и Dragonball. В список архитектур входят ARM64, x86_64, IBM s390x и IBM PowerPC; поддержка RISC-V пока экспериментальная.
Сними фактическую архитектуру по всем нодам:
kubectl get nodes \
-o custom-columns='NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,RUNTIME:.status.nodeInfo.containerRuntimeVersion'
VMM придётся проверить на самих нодах или в конфигурации Kata. Например, для containerd:
sudo grep -R -nE 'runtime_type|configuration|hypervisor' \
/etc/containerd /etc/kata-containers 2>/dev/null
Если пул работает на одном из четырёх заявленных VMM и поддерживаемой архитектуре, его можно включать в тест. Это только входной фильтр: совпавшие названия не подтверждают работу сети, томов, устройств и lifecycle hooks.
Kubernetes и Docker совместимы с Rust-рантаймом. Установить его можно из исходников или через kata-deploy. Для проверки не нужен новый оркестратор — достаточно отдельного пула нод в существующем кластере.
GPU-пулы требуют отдельного допуска
Оба runtime поддерживают NVIDIA GPU passthrough при использовании QEMU. Из этого нельзя вывести поддержку прежней GPU-конфигурации с Firecracker, Cloud Hypervisor или Dragonball.
Не смешивай GPU-пулы с обычными worker-нодами в одном результате теста. Даже если образы и сеть проходят одинаково, доступ к устройствам создаёт отдельную точку отказа.
Запусти на тестовом пуле ту же GPU-нагрузку, которая работает в продакшене. Проверяй не только обнаружение устройства внутри гостя, но и полный сценарий: инициализацию драйвера, выполнение задачи, завершение пода и повторный запуск на другой ноде.
Если текущая схема GPU passthrough зависит не от QEMU, зафиксируй это как блокер. Анонс 4.0 не даёт оснований считать остальные VMM взаимозаменяемыми для NVIDIA-нагрузок.
Заявления о памяти и cold start нужно перемерить
Разработчики связывают Rust-реализацию с меньшим потреблением памяти, улучшенной безопасностью и более низкой задержкой запуска. В опубликованном превью нет конфигурации стенда и абсолютных результатов, по которым можно рассчитать эффект для твоего кластера.
Сравнивай runtime-rs со своим Go-baseline. Возьми одинаковые ноды, образы, лимиты ресурсов, VMM и версии гостевого ядра. Иначе разницу между runtime и окружением не отделить.
Для каждого класса нагрузки прогони:
- cold start от создания пода до
Ready; - память ноды до запуска и после выхода на steady state;
- последовательный и случайный дисковый I/O;
- сетевой throughput и задержку;
- удаление, повторный запуск и эвакуацию пода;
- подключение PVC, Secret, ConfigMap и service account;
- GPU-задачу через QEMU — для пулов с NVIDIA.
Сохраняй сырые результаты, а не только среднее. Один зависший старт из 100 может быть важнее выигрыша в медиане, если SLO ограничивает p99.
Миграцию стоит закончить до июльского релиза
По плану проекта Kata Containers 3.30.0 должна выйти в мае, 3.31.0 — в июне, 4.0.0 — в июле. Значит, проверку можно провести на текущем кластере до смены дефолта.
Выдели тестовый пул и поставь runtime-rs через kata-deploy. Создай для него отдельный RuntimeClass, не меняя обработчик у рабочих подов. Затем перенеси копии нагрузок по одной: stateless, PVC, сетевые политики, рестарты, GPU.
Не переключай RuntimeClass всего кластера одним коммитом. Разные пулы могут зависеть от разных VMM, архитектур и устройств, поэтому им нужны отдельные решения.
Пул допускается на runtime-rs, если выполнены четыре условия:
- VMM и архитектура входят в заявленную матрицу поддержки.
- Образы, сеть, хранилище и lifecycle-сценарии прошли на тестовом пуле.
- Cold start, память и I/O укладываются в твой SLO.
- Для NVIDIA-пула отдельно прошёл passthrough через QEMU.
Если тест провалился, оставь этот пул на Go-рантайме и запиши точную несовместимость: образ, VMM, устройство, шаг воспроизведения и лог. После выхода 4.0 Go-реализация продолжит получать исправления ошибок и уязвимостей, а удалить её могут не раньше 5.0.0. Это даст время исправить конкретный блокер, не задерживая миграцию остальных нод.