Kubernetes и Docker: почему все испугались?

Недавно разработчики Kubernetes анонсировали изменение: с версии 1.20 Kubernetes перестанет использовать Docker как исполняемую среду контейнеров. И тут сообщество начало бить в набат. “Как можно отказаться от Docker, если все с ним работают?”

Просто надо читать дальше, чем заголовки новостей. Оказывается, что всё не так страшно.

Что нам сообщили в Kubernetes?

В Kubernetes вместо Docker будут использовать среду на базе Container Runtime Interface (CRI), созданного специально для K8s. Образы Docker будут и дальше работать в средах выполнения.

Конечные юзеры Kubernetes почти не заметят разницы, а Docker всё равно остаётся прекрасным инструментом для сборки контейнеров. docker-build образы так же будут работать с Kubernetes.

Если вы пользуетесь GKE или EKS, убедитесь в работе воркеров с поддерживаемой версией исполняемой среды до окончания поддержки Docker. Обновите продвинутые настройки с учетом актуальных требований к среде выполнения и окружению.

Во время обновления до 1.20 вы получите уведомление о неактуальности Docker, а полностью от него откажутся с версии 1.23 в конце 2021 года. Тогда придётся перейти на совместимую среду с поддержкой выбранного вами докер-демона.

От чего переполох?

В Kubernetes есть container runtime — исполняемая среда контейнеров. Она отвечает за загрузку и запуск образов контейнеров. Docker популярен для организации этой среды, но он не разработан для интеграции с K8s.

В Docker есть высокоуровневая среда для контейнеров containerd, которая лишь часть всего стека. Сам Docker популярен из-за кучи дополнений для упрощения взаимодействия разработчика с инструментом. Но UX-решения не так важны в Kubernetes.

K8s приходится взаимодействовать с containerd через инструмент Dockershim вместо взаимодействия напрямую. Эту прослойку тоже нужно обслуживать, она может баговать и создавать проблемы. Это просто лишняя ступень. Поэтому в Kubernetes v1.23 Dockershim удалят из Kubelet, и Docker лишится поддержки как среда. 

Если вы используете сокет Docker в обычном рабочем процесса, после перехода на другую среду работать с ним не получится.

Докерфайлам жить?

Docker создаёт OCI-образы, а они все одинаковы для Kubernetes независимо от инструмента для их сборки. Стандарт никто не отменял, поэтому изменений для разработки совсем нет.

Нововведение не добавляет проблем, а упрощает взаимодействие в перспективе. Вам либо не нужно делать вовсе ничего, либо заняться минимальной настройкой, чтобы всё стало ещё удобнее.

Залишити відповідь

Дякуємо, що поділились