Premier article d’une série consacrée à Kubernetes.

Celui-ci est une présentation générale.

Présentation

Dans le monde des conteneurs, il y a d’abord eu les moteurs de conteneurs historiques comme LXC ou Docker. De manière très réductrice, on peut dire qu’ils servent à faire fonctionner des conteneurs.

Avec un petit nombre de conteneurs et une architecture simple, les moteurs de conteneurs (container engines) permettent d’exécuter des conteneurs mais pas de les orchester.

Des outils comme docker-compose permettent d’orchestrer les conteneurs quand on a une architecture un peu plus complexe notamment un service avec plusieurs conteneurs (ex: Web / DB / Cache).

Puis quand il s’est agit d’orchestrer un cluster de conteneurs avec plusieurs noeuds, Kubernetes s’est imposé comme le maître du domaine.

Enfin, tous les fournisseurs de Cloud ont désormais leur service de Kubernetes managé et de container as a service.

Composants de Kubernetes

Kube1

  • Master : Serveur qui contrôle les nodes. Il est capable de distribuer les Pods sur plusieurs Nodes en fonction des ressources (scalabilité horizontale).
  • Nodes : Serveurs d’exécution de conteneurs (VMs) qui font tourner des Pods
  • Pods : Environnement d’exécution pouvant contenir 1 ou plusieurs conteneurs Docker
  • Conteneurs : Tous les conteneurs d’un même Pod partagent les mêmes ressources (IP, Ports, Volumes)
  • Kubelets : Exécuté sur les nodes, il permet de savoir les ressources disponibles sur un serveur et d’indiquer au Control plane du master qu’un Pod est tombé
  • Services : Point d’entrée LoadBalancé. IP virtuelle pour rediriger le trafic.
  • Control plane : Le cerveau de Kube.
    • ETCD : Base de données clé-valeur distribuée. Stocke toutes les données du cluster.
    • API Server
    • Scheduler
    • Cloud controller manager

Kube2

Kubernetes managés dans le cloud

  • EKS chez Amazon
  • GKE chez Google
  • AKS chez Azure

Services partiellement managés :

  • Le Cloud Provider gère le control plane
  • Le client gère
    • les Worker nodes qu’il ajoute au control plane
    • les déploiements, les services, les Pods
    • Toute la partie applicative

Kube3