Por que o Kubernetes está deixando o Docker? - Gabriel Cavalcante

Por que o Kubernetes está deixando o Docker?

Foi pego de surpresa e não acompanha de perto a comunidade do Kubernetes? Fizemos esse pequeno post para ajudar a compreender o que todo mundo está falando. Certamente, é uma mudança importante, e SIM, vai quebrar seu cluster em upgrades para v1.20 ou posteriores…

Kubernetes realmente está deixando o Docker

A partir do Kubernetes v1.20 você receberá um warning sobre a depreciação do Docker. Para esta versão e as que vierem após ela, você precisa trocar o runtime utilizado.

O Docker contém diversos componentes para funcionar, o que inclui o containerd e outros itens, como interfaces que o tornam mais fácil de lidar. Contudo o containerd é um runtime por si só e não precisa necessariamente do Docker para funcionar.

What is containerd ? - Docker Blog

Acontece que toda essa “tralha”, que é muito útil para nós desenvolvedores, não é necessária para o Kubernetes. o Kubernetes precisa apenas do containerd para funcionar. O uso do Docker força o Kubernetes a usar um componente chamado dockershim para interagir com as partes que precisa. Por isso, o uso deste componente é necessário por conta da comunidade Docker não ser CRI compliant (Container Runtime Interface): o dockershim resolve justamente esta parte mas é um componente de software que precisa ser mantido apenas para usar o Docker como runtime no Kubernetes.

O excessivo esforço para manter esse componente levou a comunidade a tomar uma decisão: cortar a abstração e usar apenas o containerd como runtime do Kubernetes.

Isso significa que o Docker é ruim?

Não. Na verdade o Docker ainda é uma poderosa ferramenta. Porém, há o receio que, devido as decisões da comunidade Docker de ignorar o movimento das comunidades ao redor do tema (ver Open Container Initiative) , o aumento de incertezas quanto ao seu futuro traga algum prejuízo técnico maior que o observado agora.

Além disso, as imagens construídas com Docker continuarão sendo suportadas pelo Kubernetes, já que as imagens são compatíveis com a OCI. E o containerd sabe o que fazer com elas. Portanto, para desenvolvedores não haverá um alto impacto. Só o de refletir sobre as decisões do projeto Docker.