VK Cloud

Kubernetes прекращает поддержку Docker как среды выполнения контейнеров

4 декабря 2020 г.
_blog_head_43.png

В официальном блоге разработчиков Kubernetes вышла новость, которая на первый взгляд звучит пугающе: Kubernetes отказывается от Docker.

Мы разобрались, что это значит для пользователей Kubernetes, в том числе для тех, кто использует наш облачный сервис — вместе с Александром Волынским, архитектором облачной платформы VK Cloud (бывш. MCS), и Павлом Селивановым, ведущим DevOps-инженером VK Cloud (бывш. MCS).

Что случилось на самом деле

В Kubernetes есть интерфейс CRI, который позволяет использовать разные среды выполнения контейнеров, например Docker, cri-o или containerd. Docker сам по себе не поддерживает CRI, поэтому разработчики Kubernetes создали прослойку — dockershim, она задумывалась только как временное решение. Такая прослойка — своеобразный «костыль», тормозит развитие CRI, не поддерживает cgroups v2 и user namespaces, а также имеет некоторые проблемы с безопасностью.

Поэтому разработчики Kubernetes решили прекратить поддержку этой прослойки, а значит и Docker в роли среды выполнения контейнеров.

«Kubernetes станет безопаснее и надежнее. Docker не создавался с учетом использования внутри Kubernetes. Теперь убирают поддержку одной части Docker, выполняющую одну из десятков функций внутри большой схемы Kubernetes. Ее заменяют на cloud-native среду, которая лучше приспособлена к работе в такой сложной системе».

Александр Волынский, архитектор облачной платформы VK Cloud (бывш. MCS)

Docker-контейнеры будут работать как прежде: что же изменится для разработчиков, администраторов и пользователей KaaS

Для разработчиков ничего не изменится, они также продолжат пользоваться Docker-контейнерами. Просто эти контейнеры будут выполняться в другой среде. Упрощая, можно сказать, что внутри черного ящика меняется механизм работы, но входные и выходные параметры от этого не изменятся. Снаружи ящика все будет работать, как раньше.

Это возможно, так как Docker создает образы по общепринятому стандарту OCI. Любой OCI-совместимый образ, независимо от способа его создания, будет работать в Kubernetes одинаково.

«Изменения затрагивают только способ запуска контейнеров внутри кластера Кубернетис. Для конечных пользователей ничего не изменится. Они все также смогут описывать свои образы с помощью Dockerfile и собирать из с помощью docker build».

Павел Селиванов, ведущий DevOps-инженер VK Cloud (бывш. MCS)

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

Пользователям Kubernetes как сервис волноваться не о чем: поддержкой и обновлениями кластера занимается провайдер, скорее всего, ничего делать не придется.

«Клиентам нашего Kubernetes не нужно никак готовиться. Образы Docker продолжат работать внутри Kubernetes, а мы также сможем запускать их в наших кластерах. Как провайдеру, нам предстоит решить вопрос обновления, но пользователей это не затронет. Мы постараемся сделать максимально бесшовную миграцию. Если в каких-то продвинутых сценариях понадобятся изменения со стороны пользователей, подготовим подробные инструкции и поможем.

Кроме того, до обновления еще долго — у нас версия Kubernetes 1.17, как проверенная и стабильная, а полностью уберут поддержку только в версии 1.23. У нас достаточно времени полностью подготовиться и внести нужные изменения».

Александр Волынский, архитектор облачной платформы VK Cloud (бывш. MCS)

До полного прекращения поддержки еще год. В релизе 1.20 Kubernetes будет просто помечать среду выполнения Docker как устаревшую. А окончально она удалится не раньше релиза 1.23, который планируется в конце 2021 года.

Узнавайте о выходе новых статей в блоге первыми!

Будем держать в курсе новостей и облачных трендов

section-subscribe_2x.png
    section-subscribe_2x.png
    Теги: Технологии, devops, контейнеры, микросервисная архитектура, docker, контейнеризация, микросервисы
    Ссылка скопирована
    Поделиться

    Почитать по теме

    _blog_head_158.png
    24 июля

    External Secrets Operator в Managed Kubernetes: безопасное управление секретами без ручной работы

    _blog_head_100.png
    24 июля

    S3-CSI в Managed Kubernetes: масштабирование приложений без потери общих файлов

    40+ готовых сервисов