Qu'est-ce que Kubernetes ?
Un orchestrateur de conteneurs : déploiement, mise à l'échelle et réparation automatiques
Un orchestrateur de conteneurs : déploiement, mise à l'échelle et réparation automatiques
La plus petite unité déployable : un ou plusieurs conteneurs qui partagent réseau et stockage
Un Pod seul n'est pas recréé si son nœud meurt : on passe par un Deployment
Une machine (VM ou physique) du cluster qui exécute des Pods
La porte d'entrée unique du cluster : tout passe par son API REST
La base clé-valeur distribuée qui stocke tout l'état du cluster
Choisir sur quel nœud placer chaque nouveau Pod
On décrit l'état désiré, pas les actions ; le cluster converge vers cet état tout seul
Faire tourner les boucles de réconciliation qui ramènent l'état observé vers l'état désiré
L'agent sur chaque nœud qui fait tourner les Pods qu'on lui assigne et rapporte leur état
L'objet qui gère une application sans état : nombre de réplicas, mises à jour progressives, retour arrière
Le contrôleur qui maintient un nombre fixe de Pods identiques en vie
Des paires clé/valeur sur les objets, utilisées par les sélecteurs pour les regrouper
Une IP et un nom DNS stables devant un groupe de Pods sélectionnés par labels
Seulement l'intérieur du cluster
Sur un même port (30000-32767) de chaque nœud du cluster
Le cloud provisionne un load balancer externe avec une IP publique qui pointe vers le Service
Des règles de routage HTTP/HTTPS (hôte, chemin) vers des Services, appliquées par un Ingress controller
À partitionner logiquement un cluster : équipes, environnements, quotas, droits
Un objet qui stocke de la configuration non sensible, injectée en variables d'env ou en fichiers
Non par défaut : juste encodé en base64, lisible par qui a le droit de le lire
kubectl apply -f fichier.yaml
kubectl describe pod
Le conteneur plante en boucle ; Kubernetes attend de plus en plus longtemps entre deux relances
kubectl logs
kubectl exec -it
Il redémarre le conteneur
Il retire le Pod des endpoints du Service, sans le redémarrer
À laisser du temps au démarrage avant que la liveness ne commence à tuer le conteneur
Les ressources (CPU, mémoire) garanties, que le scheduler réserve sur le nœud pour placer le Pod
Un de ses processus est tué par le noyau (OOMKilled), en général le principal, et le conteneur redémarre
Le nœud n'arrive pas à télécharger l'image du conteneur
Accepté par l'API mais pas encore placé : le plus souvent, aucun nœud ne convient
La demande de stockage d'un Pod : « je veux 10 Gi en lecture-écriture », sans dire d'où
Un contrôleur pour applications à état : identité réseau stable et volume propre par Pod
Un contrôleur qui garantit un Pod sur chaque nœud du cluster (ou sur les nœuds sélectionnés)
Un contrôleur qui lance des Pods jusqu'à ce que la tâche se termine avec succès
Ajuste automatiquement le nombre de réplicas d'un Deployment (ou StatefulSet) selon une métrique
kubectl rollout undo deployment/
Le nombre de Pods en plus du nombre voulu pendant la bascule
api.prod.svc.cluster.local
Le gestionnaire de paquets de Kubernetes : des charts, templates YAML paramétrables
Un ensemble de droits (verbes sur des ressources) limité à un namespace
L'identité d'un Pod auprès de l'API Kubernetes
Un taint repousse les Pods d'un nœud ; seule une toleration correspondante permet d'y être placé
Non : il parle à un runtime CRI, containerd en général ; Docker Engine reste possible via cri-dockerd
Dans le fichier kubeconfig (~/.kube/config), organisé en contextes
Une extension de l'API Kubernetes : on y ajoute ses propres types d'objets
Oui : le réseau Kubernetes est plat, tout Pod joint tout Pod
Non : Mi est une puissance de 2 (1 Mi = 1 048 576 octets), M est décimal (1 000 000)
Le nombre de Pods qui peuvent manquer par rapport au nombre voulu pendant la bascule
Pour des droits sur tout le cluster ou sur des ressources non namespacées (nœuds, namespaces, PV)
Par un RoleBinding (ou ClusterRoleBinding) qui lie le rôle à un utilisateur, un groupe ou un ServiceAccount
Il est ralenti (throttling), pas tué
Un contrôleur qui crée un Job à intervalle régulier, selon une expression cron
Maintenir sur chaque nœud les règles réseau qui font fonctionner les Services
Un pare-feu déclaratif entre Pods : qui peut parler à qui, sélectionné par labels et namespaces
kubectl rollout restart deployment/