Что такое CRI-O?

CRI-O — это реализация интерфейса выполнения контейнеров (CRI) для Kubernetes с использованием образов и сред выполнения «Open Container Initiative» (OCI). Проект был запущен в 2016 году компанией Red Hat и передан «Cloud Native Computing Foundation» (CNCF) весной 2019 года.

Как работает CRI-O?

Чтобы понять, как работает CRI-O и как он взаимодействует со смежными технологиями, стоит взглянуть на историческое развитие виртуализации на основе контейнеров. Основой для ее создания послужило программное обеспечение Docker, которое сделало виртуализацию отдельных приложений на основе легких контейнеров мейнстримом. До этого виртуализация понималась в основном как использование виртуальных машин. Виртуальная машина содержит целую операционную систему, в то время как несколько контейнеров имеют доступ к общему ядру операционной системы.

От Docker к Kubernetes и CRI-O

Контейнер обычно содержит одно приложение, которое часто предоставляет микросервис. При практическом использовании для реализации приложения несколько контейнеров обычно управляются совместно. Скоординированное управление целыми группами контейнеров известно как оркестровка.

Даже если оркестровка с помощью Docker и таких инструментов, как Docker Swarm, вполне осуществима, Kubernetes преобладает в качестве альтернативы Docker. Kubernetes объединяет несколько контейнеров в так называемый pod. Подсистемы, в свою очередь, запускаются на так называемых узлах — это могут быть как физические, так и виртуальные машины.

Одной из основных проблем Docker была его монолитная архитектура. Демон Docker запускался с правами root и отвечал за множество различных задач: от загрузки образов контейнеров до их выполнения в среде исполнения и создания новых образов. Такое слияние независимых областей нарушает принцип разработки программного обеспечения «Разделение забот» и на практике приводит к проблемам безопасности. Поэтому были предприняты усилия по разделению отдельных компонентов.

Когда Kubernetes была выпущена, демон Kubernetes kubelet содержал жестко закодированную среду выполнения Docker. Однако вскоре стала очевидной необходимость поддержки других сред исполнения. Модулизация отдельных аспектов обещала упрощение разработки и повышение безопасности. Чтобы сделать различные среды выполнения совместимыми с Kubernetes, был определен интерфейс: Container Runtime Interface (CRI). CRI-O является конкретной реализацией этого интерфейса.

Примечание

Используйте Kubernetes уже сегодня — с помощью Managed Kubernetes от IONOS.

Архитектура и функции CRI-O

В состав CRI-O входят следующие компоненты:

  • Программная библиотека containers/image для загрузки образов контейнеров из различных онлайн-источников.
  • Программная библиотека containers/storage для управления слоями контейнеров и создания файловой системы для контейнерных капсул.
  • OCI-совместимая среда выполнения для запуска контейнера; стандартной средой выполнения является runC, но можно использовать и другие OCI-совместимые среды выполнения, например, Kata Containers.
  • Сетевой интерфейс контейнера (CNI), используемый для создания сети для стручка; используются плагины для Flannel, Weave и OpenShift-SDN.
  • Инструмент мониторинга контейнеров conmon для непрерывного мониторинга контейнера.

CRI-O часто используется в сочетании с инструментом управления стручками Podman. Это происходит потому, что Podman опирается на те же библиотеки для загрузки образов контейнеров и управления слоями контейнеров, что и CRI-O.

В принципе, использование CRI-O состоит из следующих шагов:

  1. Загрузить образ контейнера OCI
  2. Извлечение образа в пакет файловой системы OCI runtime
  3. Выполнение контейнера под управлением среды выполнения OCI.

Когда используется CRI-O?

В настоящее время CRI-O в основном используется как часть линейки продуктов OpenShift компании Red Hat. Реализации OpenShift существуют для облачных платформ всех основных провайдеров. Кроме того, программное обеспечение может работать как часть OpenShift Container Platform в публичных или частных центрах обработки данных. Ниже представлен обзор различных продуктов OpenShift:

Продукт Инфраструктура Управляется Поддерживается
Red Hat OpenShift Dedicated AWS, Google Cloud Red Hat Red Hat
Microsoft Azure Red Hat OpenShift Microsoft Azure Red Hat и Microsoft Red Hat и Microsoft
Amazon Red Hat OpenShift AWS Red Hat и AWS Red Hat и AWS
Red Hat OpenShift на IBM Cloud Облако IBM IBM Red Hat и IBM
Red Hat OpenShift Online Красная шляпа Красная шляпа Red Hat
Red Hat OpenShift Container Platform Частное облако, публичное облако, физическая машина, виртуальная машина, Edge Kunde Red Hat, другие
Red Hat OpenShift Kubernetes Engine Частное облако, публичное облако, физическая машина, виртуальная машина, Edge Kunde Red Hat, другие

Что отличает CRI-O от других Runtimes?

CRI-O — это относительно новая разработка в области виртуализации контейнеров. Исторически сложилось так, что существует несколько альтернативных вариантов исполнения контейнеров. Возможно, самым уникальным преимуществом CRI-O является его исключительная ориентация на Kubernetes как среду. С CRI-O Kubernetes может выполнять контейнеры напрямую, без дополнительных инструментов или специальных изменений в коде. CRI-O напрямую поддерживает существующие, OCI-совместимые среды исполнения. Ниже представлен обзор активно разрабатываемых и часто используемых режимов выполнения:

Время выполнения Тип Описание
runC Низкоуровневая среда выполнения OCI Де-факто стандартная среда выполнения, возникшая из Docker и написанная на Go
crun Низкоуровневый OCI Runtime Высокопроизводительная среда выполнения; реализована на C вместо Go
Контейнеры Kata Виртуализированная среда выполнения OCI Использует легковесную виртуальную машину (VM)
containerd Высокоуровневая среда выполнения CRI Используется стандартный runC
CRI-O Облегченный CRI Runtime Может использовать runC, crun, Kata Containers и др.

Оцените статью
cdelat.ru
Добавить комментарий