La fin de Docker avec Kubernetes ?

La fin de Docker avec Kubernetes ?

Temps de lecture : 2 minutes

Début décembre, Kubernetes a annoncé la fin du support de Docker à partir de la version 1.20. Pourquoi ? Et qu’est-ce que cela change ? Nous allons voir cela dans cet article.

Kubernetes et les CRI

Kubernetes utilise une API normée appelée « CRI » (Container Runtime Interface) afin de gérer les conteneurs. Seulement, le produit de base « Docker » n’intègre pas entièrement cette spécification contrairement à containerd, cri-o ou podman (liste non exhaustive).

Pour fonctionner, Kubernetes utilise dockershim qui est une interface non normée permettant de faire la même chose qu’un CRI. Cependant, il est trop compliqué de maintenir à jour cette interface spécifique dans kubernetes alors qu’ils maintiennent déjà l’interface CRI.

C’est pourquoi containerd sera utilisé (ou autre) a la place de Docker (qui l’utilisait déjà)

Auparavant, k8s appelait dockershim pour se servir de containerd via Docker, maintenant il appellera directement containerd.

Kubernetes Containerd Integration Goes GA | Kubernetes
Source: kubernetes.io (résumé de la différence entre docker et containerd « pure » au niveau k8s)

Ils simplifient donc juste l’appel de containerd en évitant de passer par dockershim et Docker.

Compatibilité avec les images docker

Les images Docker sont au format OCI (Open Container Initiative), elles sont compatibles avec containerd ou cri-o, donc pas de soucis de compatibilité avec les images existantes.

Conclusion

Docker n’est qu’un utilitaire pour humain se servant de containerd en fond, Kubernetes veut simplement éviter de maintenir à jour l’interface dockershim qui ne respecte pas entièrement le format CRI pour se servir directement de containerd (ou autre) qui lui, respecte pleinement le format CRI.

Dockershim sera déprécié a partir de la version 1.20 et son support retiré entièrement à partir de la version 1.23.

Au final, ça ne change pas grand chose au niveau workload ou management (l’outil CLI docker est remplacé par l’outil ctr de containerd qui lui ressemble beaucoup)

Liens utiles (en anglais)

Article officiel de Kubernetes: https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/

FAQ concernant la fin de la prise en charge de dockershim: https://kubernetes.io/blog/2020/12/02/dockershim-faq/

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *