Kubernetes - Guide pratique
Sébastien Goasguen et Michael Hausenblas
First Interactive
Introductionvii
Lectorat principalvii
Motivation des auteursvii
Structure du livreviii
À propos des versions de Kubernetesviii
Environnement technique présupposéviii
Fichiers source des exemplesx
Conventions typographiquesx
Réutilisation des exemplesxi
Pour nous contacterxii
Remerciementsxii
1. Pour débuter avec Kubernetes1
Utiliser Kubernetes sans l'installer1
Installer kubectl (le client Kubernetes)2
Installer Minikube pour utiliser une instance locale de Kubernetes4
Développer localement avec Minikube5
Démarrer une application sur Minikube6
Accéder au tableau de bord Minikube7
2. Créer un cluster Kubernetes11
Installer kubeadm pour créer un cluster Kubernetes11
Amorcer un cluster Kubernetes avec kubeadm13
Télécharger une version de Kubernetes depuis GitHub14
Télécharger les binaires client et serveur15
Utiliser une image hyperkube pour exécuter un noeud maître Kubernetes avec Docker16
Écrire un fichier unité systemd pour exécuter des composants Kubernetes18
Créer un cluster Kubernetes dans GKE21
Créer un cluster Kubernetes dans ACS (Azure Container Service)22
3. Apprendre à utiliser le client Kubernetes27
Obtenir la liste des ressources27
Supprimer des ressources28
Surveiller les changements de ressources avec kubectl30
Éditer des ressources avec kubectl30
Demander une description des ressources des champs à kubectl31
4. Créer et modifier des charges de travail simples33
Créer un déploiement avec kubectl33
Créer des objets à partir d'un fichier manifeste34
Rédiger un manifeste de pod35
Lancer un déploiement via un manifeste37
Actualiser un déploiement40
5. Utiliser les services43
Créer un service pour y exposer votre application44
Vérifier l'entrée DNS d'un service46
Changer le type d'un service46
Déployer un contrôleur Ingress sur Minikube49
Rendre des services accessibles de l'extérieur du cluster50
6. Explorer l'API Kubernetes et les métadonnées clés53
Découvrir les points d'extrémité API d'un serveur API53
Structure d'un manifeste Kubernetes55
Créer un espace de noms pour éviter les collisions56
Définir des quotas dans un espace de noms57
Étiqueter un objet avec un label58
Utiliser des labels dans des requêtes59
Ajouter une annotation et une ressource61
7. Gérer des charges de travail spécialisées63
Exécuter un job de traitement par lot63
Exécuter une tâche planifiée dans un pod65
Démarrer un démon d'infrastructure par noeud66
Gérer des applications Stateful et leader/suiveur68
Influencer le comportement au démarrage des pods71
8. Volumes et données de configuration75
Échanger des données entre conteneurs par un volume local75
Passage d'une clé d'accès API à un pod via un secret77
Fournir des données de configuration à une application81
Utiliser un volume persistant avec Minikube83
Maîtriser la persistance de données sur Minikube87
Approvisionnement dynamique de stockage persistant sur GKE90
9. Adaptation à la charge (scaling)93
Redimensionner un déploiement94
Redimensionner automatiquement un cluster dans GKE94
Redimensionner automatiquement un cluster AWS99
Redimensionnement horizontal de pod dans GKE99
10. Sécurité103
Fournir un identifiant unique par application103
Lister et visualiser les informations de contrôle d'accès106
Contrôler l'accès aux ressources110
Sécuriser des pods112
11. Supervision et journalisation (logging)115
Accéder aux journaux d'un conteneur116
Récupérer d'une avarie avec une sonde de vitalité117
Retenir le trafic vers un pod avec une sonde de disponibilité118
Ajouter des sondes de vitalité et de disponibilité à un déploiement119
Activer Heapster sur Minikube pour surveiller des ressources121
Utiliser Prometheus sur Minikube123
Utiliser EFK sur Minikube128
12. Maintenance et dépannage133
Activer l'autocomplétion de kubectl133
Retirer un pod d'un service134
Accéder à un service ClusterIP de l'extérieur du cluster135
Comprendre et analyser les statuts des ressources136
Déboguer un pod139
Obtenir une vue détaillée du statut d'un cluster142
Ajouter des noeuds de travail Kubernetes144
Retirer un noeud pour maintenance145
Gérer le composant etcd147
13. Développer pour Kubernetes151
Compiler les sources151
Compiler un seul composant152
Interagir avec l'API Kubernetes depuis un client Python153
Enrichir l'API par des définitions de ressources personnalisées (CRD)154
14. L'écosystème Kubernetes159
Installer le gestionnaire de paquetages Helm159
Utiliser Helm pour installer des applications160
Créer votre charte pour empaqueter une application avec Helm161
Convertir un fichier compose Docker en manifeste Kubernetes163
Créer un cluster Kubernetes avec kubicorn164
Stockage de secrets cryptés dans un versionneur169
Déployer des fonctions avec kubeless171
15. Ressources175
Ressources générales175
Tutoriels et exemples175
Index