Kubernetes реализует свой собственный контейнер или использует контейнеры Docker или оба? - PullRequest
0 голосов
/ 25 февраля 2019

Kubernetes реализует свой собственный контейнер или использует контейнеры Docker или оба?

Может ли Kubernetes реализовать контейнер, который не является контейнером Docker?

Ответы [ 3 ]

0 голосов
/ 25 февраля 2019

Kubernetes реализует оболочку над существующим контейнером (контейнерами) док-станции, которая называется pods.Причиной использования pod, а не непосредственно контейнера, является то, что kubernetes требуется больше информации для организации таких контейнеров, как restart policy, liveness probe, readiness probe.liveness probe определяет, что контейнер внутри модулей активен или нет, политика перезапуска определяет, что делать с контейнером в случае его сбоя.Проверка готовности определяет, что контейнер готов к отправке.

Таким образом, вместо добавления этих свойств в существующий контейнер, kubernetes решил написать оболочку для контейнеров со всей необходимой дополнительной информацией.

0 голосов
/ 04 июня 2019

Может ли Kubernetes реализовать контейнер, который не является контейнером Docker?

Kubernetes может организовать контейнер, не являющийся Docker, и это из-за кри-о

Как объяснено в Кубич :

Вопреки тому, что вы, возможно, слышали, тамЕсть больше способов запуска контейнеров, чем просто инструмент docker.
На самом деле число вариантов увеличивается, например:

  • runc : инструмент CLI для порождения и запуска контейнеров в соответствии со спецификацией OCI .
    ( OCI: Инициатива открытых контейнеров : открытая структура управления дляявная цель создания открытых отраслевых стандартов для форматов контейнеров и времени выполнения)

  • rkt из CoreOS , в настоящее время (июнь 2019 г.) почти мертв,и с множественные нерешенные проблемы безопасности .

  • фракция : чСреда выполнения контейнеров на основе ypervisor для Kubernetes, которая позволяет Kubernetes запускать контейнеры и контейнеры непосредственно внутри гипервизоров через runV .
    Это легковесный и портативный, но может обеспечить гораздо более сильную изоляцию снезависимое ядро, чем среды выполнения контейнеров на основе пространства имен linux.

  • cri-containerd : плагин Containerd для интерфейса среды выполнения контейнера Kubernetes (запущенкак автономный cri-containerd двоичный файл, который сейчас ( с марта 2018 ) закончен.cri-containerd переходит от автономного двоичного файла, который обращается к containerd, к плагину в containerd.

  • и более.

Большинство из них следуют стандарту OCI , определяющему, как среды выполнения запускают и запускают ваши контейнеры , но их не хватаетстандартный способ взаимодействия с оркестратором .
Это усложняет работу таких инструментов, как kubernetes, которые запускаются поверх среды выполнения контейнера, обеспечивая вам оркестровку, высокую доступность и управление.

Поэтому Kubernetes ввел стандартный API, чтобы иметь возможность общаться и управлять средой выполнения контейнера.Этот API называется Interface Runtime Interface (CRI), декабрь 2016 .

Существующие среды выполнения контейнеров, такие как Docker, используют «shim» ( dockershim ) для взаимодействия междуKubernetes и время выполнения, но есть и другой способ, используя интерфейс, который был разработан для работы с CRI изначально.И вот тут-то и появляется CRI-O.

Введение в CRI-O

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

По состоянию на 6 сентября 2018 CRI-O больше не является проектом инкубатора, но теперь является официальной частью семейства инструментов Kubernetes.

Итакважно иметь постоянное состояние cri-o, чтобы получить связь между Kubernetes и контейнерами, которые он организует.

См. " Cloud Native Computing Foundation принимает среду выполнения CRI-O + учебное пособие "

Включает схему архитектуры:

https://i2.wp.com/cri-o.io/assets/images/architecture.png?resize=940%2C564&ssl=1

Последовательность запуска нового модуля

  1. Плоскость управления Kubernetes связывается с kubelet, чтобы запустить модуль.
  2. kublet перенаправляет запрос к демону CRI-O через CRI kubernetes (интерфейс среды выполнения контейнера) для запуска нового модуля.
  3. Загруженное изображение распаковывается в корневые файловые системы контейнера с использованием библиотеки контейнеров / хранилища.
  4. После создания rootfs для контейнера CRI-O генерирует json-файл спецификации среды выполнения OCI, описывающий, как запустить контейнер.
  5. CRI-O затем запускает среду выполнения, совместимую с OCI, используя спецификацию для запускаКонтейнерный процесс.
    По умолчанию время выполнения OCI runc.
  6. Каждый контейнер контролируется отдельным conmon процессом.
  7. Сеть для модуля настраивается с помощью CNI (Контейнерный сетевой интерфейс) , поэтому любой плагин CNI можно использовать с CRI-O.
0 голосов
/ 25 февраля 2019

Kubernetes - это кластерная технология и инструмент для управления контейнером.Он помогает в развертывании контейнеров, управлении его жизненным циклом, развертывании обновлений, откате, масштабировании, масштабировании, сети, маршрутизации и многом другом - все, что вам нужно для запуска служб приложений внутри контейнеров.

Docker - этоТехнология vitrualization, которая объединяет приложения, среды выполнения и зависимости в образ, который может быть развернут как контейнер.

K8 под капотом использует докер для развертывания контейнеров.В дополнение к docker. Поддерживаются и другие контейнерные технологии, такие как rkt и crio

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...