r/selfhosted · u/admin ·

Docker vs Kubernetes : lequel choisir ?

Docker ou Kubernetes : lequel choisir ?

Docker et Kubernetes sont souvent associés, mais ils ne répondent pas au même besoin.

Docker

Sert principalement à construire et exécuter des conteneurs.

Un conteneur permet d'empaqueter une application avec ce dont elle a besoin pour fonctionner de manière isolée et reproductible.

Docker est parfaitement adapté pour :

  • développer une application ;
  • tester un environnement ;
  • faire tourner quelques services ;
  • héberger une application sur un VPS ;
  • gérer une petite infrastructure.

Par exemple, une application avec une API, PostgreSQL et Redis peut très bien fonctionner avec Docker Compose.

Serveur
├── API
├── PostgreSQL
└── Redis

Pas besoin de sortir Kubernetes pour trois conteneurs.

Kubernetes

Intervient lorsque l'infrastructure devient beaucoup plus complexe.

Il permet d'orchestrer automatiquement des conteneurs répartis sur plusieurs machines.

Il peut notamment gérer :

  • plusieurs instances d'une application ;
  • le redémarrage automatique ;
  • le scaling ;
  • la répartition des services ;
  • les déploiements progressifs ;
  • la haute disponibilité.

Par exemple :

       Load Balancer
       /     |     \
    Node 1 Node 2 Node 3
      API    API    API

Si vous devez gérer des dizaines ou des centaines de services sur plusieurs machines, Kubernetes devient beaucoup plus intéressant.

La règle simple

Docker : « Je veux faire tourner mes conteneurs. »

Docker Compose : « Je veux gérer plusieurs conteneurs simplement. »

Kubernetes : « Je veux automatiser l'orchestration d'une infrastructure distribuée. »

Kubernetes est puissant, mais il ajoute aussi beaucoup de complexité. Pour une petite application, Docker peut largement suffire.

N'utilisez donc pas Kubernetes parce que c'est à la mode : utilisez-le lorsque votre infrastructure est suffisamment complexe pour justifier son orchestration.