Démystifions le fonctionnement interne de Kubernetes

~$ whoami

Denis GERMAIN

@zwindler(@framapiaf.org)

#geek 👨‍💻 #SF 🤖👽 #courseAPied 🏃‍♂️


*Les slides de ce talk sont sur le blog

Démystifions le fonctionnement interne de Kubernetes

Mais d'abord, on parle de quoi ?

C'est quoi, un container ?

C'est une boite !

  • Processus (ou logiciel)
  • Exécuté par un "runtime"
  • Isolé des autres processus de l'hôte
  • Pas forcément (microVMs, container , WASM ...)

C'est quoi, Kubernetes ?

  • Orchestrateur de containers
  • Inspiré par un outil interne de Google
  • Open sourcé et donné à la CNCF en 2015
  • A gagné la "guerre des orchestrateurs"
    • Docker swarm
    • Mesos Marathon

Mais concrètement ?

  • Permet de déployer de l'infra avec des APIs
  • C'est ✨ auto-magique ✨
    • Haute disponibilité native
    • Gestion de la mise à l'échelle
    • Gestion cycles de vie des applications
    • Extensibilité

Quelques notions ?

Pod : Unité de compute Kubernetes. Ensemble de containers qui partagent une IP et des volumes.

Node ou Worker : Serveur informatique qui héberge les Pods

Déployer une application

3 APIs :

Et en YAML, ça donne quoi ?

OK. Comment ça marche,

sous le capot 🚗 ?

But du jeu

  • Déployer ce support HTML à l'aide de manifests YAML
  • Déployer Kubernetes 1.26, binaire par binaire

github.com/zwindler/demystifions-kubernetes

API server

Centralise toutes les APIs disponibles (& extensible !)

Chaque API est une couche d'abstraction pour de l'infra

etcd

  • base de données clé/valeur
  • distribuée / fault-tolerant (raft)
  • mécanisme de "watch"

center

It's time to D-D-D-D-D-DEMO !

center

"C'est bien, mais pas suffisant."

Controller Manager

Like a real manager, he's not the one doing the real work

Les controllers sont des boucles de contrôles :

  • Abonnement à des événements
  • Actions en conséquences

Quelques controllers

Mais aussi :

  • CRDs / operators
  • Fournisseurs de stockage (CSI)

Suite de la démo

center

Scheduler

Détermine où positionner un nouveau Pod en fonction de contraintes :

  • Réservations CPUs/RAM
  • Affinité/anti-affinité / nodeSelector
  • taints/toleration
  • Noeuds en maintenance
  • ...

Documentation officielle - scheduler

Suite de la démo

center

Container runtime

Pour exécuter le(s) container(s) du Pod, il faut un container runtime

Historiquement,
(dockershim plus supporté depuis Kubernetes 1.24)

Souvent containerd, mais il y a plein d'alternatives !

kubelet

  • Envoie/réception des informations sur le Node
  • Pilotage du container runtime
    • ajout/suppression de Pods
    • surveillance de l'état de santé des Pods

Documentation officielle - kubelet

Réseau interne dans Kubernetes

Chaque Pod a une IP. On utilise des iptables, ipvs, ou eBPF pour simuler le réseau (et virtuel) interne de

center

CNI plugin

  • Container Network Interface
  • Réseau interne de Kubernetes
  • CNI plugins : implémentations du standard. Exemples :

kube-proxy

Cette IP n'existe pas, Néo

Suite de la démo

center

IngressController

Router des requêtes HTTP(S)

  • l'IngressController est un logiciel tiers qui gère des Ingress

Note: Ingress API en cours de remplacement par la Gateway API (plus puissante et plus agnostique)

Suite de la démo

center

Au final, , c'est...

  • un serveur d'API
  • un scheduler
  • des boucles de contrôles
  • un container runtime
  • un réseau virtuel commun

@zwindler(@framapiaf.org)

Slides et sources sur blog.zwindler.fr/conférences

Sources

Dépôts / articles

Talks / conférences sur le même sujet

Backup slides

Ce qui se passe quand je fais kubectl apply

center

Source : A Guide to Kubernetes Admission Controllers

Comment marche le Scheduler ?

center

Comment marche le Scheduler ?

center

Comment marche le Scheduler ?

center