CRI-O — лёгковесный контейнерный рантайм, разработанный для интеграции с Kubernetes через Container Runtime Interface (CRI). Проект возник в ответ на необходимость иметь минимальный и специализированный компонент, выполняющий только функции, необходимые оркестратору, и поддерживающий запуск контейнеров из образов, совместимых с OCI (Open Container Initiative). CRI-O реализует серверную сторону CRI, предоставляя Kubernetes стандартизированный интерфейс для управления жизненным циклом подов и контейнеров, при этом делегируя фактическое создание и изоляцию контейнеров совместимым OCI-рантаймам.
Архитектурно CRI-O стремится к простоте и модульности: он не включает в себя функционал, не связанный напрямую с выполнением контейнеров под управлением Kubernetes, что уменьшает поверхность кода и потенциальную область ошибок. CRI-O поддерживает управление образами, установку ограничений ресурсов, настройку сетевых пространств и интеграцию с системами хранения и сетевыми плагинами, используя стандартные спецификации OCI для совместимости с разнообразными рантаймами и образами. Проект развивается как свободное программное обеспечение и широко применяется в облачных и корпоративных средах, где требуется строгая интеграция с Kubernetes без дополнительного функционального нагромождения.
- Реализация CRI: обеспечивает серверную часть Container Runtime Interface для Kubernetes.
- Поддержка OCI: совместимость с OCI-совместимыми образами и рантаймами.
- Лёгкость и модульность: минималистичный дизайн, фокус на необходимых функциях для Kubernetes.
- Менеджмент образов: загрузка, кэширование и управление локальными образами контейнеров.
- Управление жизненным циклом: создание, запуск, остановка и удаление контейнеров и подов.
- Сетевые интеграции: взаимодействие с сетьевыми плагинами через стандартные интерфейсы CNI.
- Ограничения ресурсов: применение лимитов CPU, памяти и других cgroup-параметров.
- Логирование и диагностика: вывод логов контейнеров и предоставление данных для отладки и мониторинга.
- Безопасность: поддержка пространств имён, SELinux, AppArmor и других механизмов изоляции по конфигурации рантайма.
- Совместимость с Kubernetes: сертифицирован для работы с разными версиями Kubernetes и интегрируется в стандартные рабочие процессы кластера.