Kubernetes est un orchestrateur de conteneur open source, initialement développé par les ingénieurs Google. C’est maintenant la plate-forme de référence pour administrer des clusters d’application basé sur des conteneurs.
Dans cette formation, vous découvrirez l’API de Kubernetes et les ressources essentiels au déploiement d’application basés sur des conteneurs. Vous apprendrez en apprendrez en détail l’architecture de Kubernetes et les communications entre les différents composants du plan de contrôle. Vous serez en mesure de décrire en détail les différentes installations de Kubernetes et toutes les phases d’un déploiement de cluster Kubernetes. Enfin vous apprendrez a utilisé le cli kubectl afin de contrôler votre cluster et vous déploierez votre première application basée sur des conteneurs.
3. Une formation
Introduction
1. Petit retour sur les conteneurs
2. Comprendre Kubernetes
3. Architecture de Kubernetes
4. Installation de Kubernetes
5. Création du cluster
6. Les pods
Conclusion
Plan de la formation
8. Le modèle de container
Un container, c’est :
• Pas d’émulation de matériel
• Pas de noyau
• Un accès direct au matériel
• Très léger, déploiement rapide,
gain de performances
10. Docker
Docker permet construire des applications conteneurisées
avec ses dépendances,
de déployer rapidement,
d’exécuter avec fiabilité quel que soit l'environnement Linux
11. Architecture
• On trouve trois ressources :
• Docker Images
• Docker Registry
• Docker Container
Architecture
12. Les images
• Les images Docker sont des modèles en lecture seule à partir desquels les
conteneurs sont créés.
• Chaque image est constituée d'une série de couches. Pour ce faire Docker utilise
le système de fichiers UnionFS afin de combiner ces couches en une seule image.
14. Registry
Le registre Docker est une bibliothèque, un magasin d’images,
un repository
Le Docker Hub est la bibliothèque officielle Docker.
Des images sont disponibles de toutes les distributions,
d’énormément d’applications
Ces images sont téléchargeables, mais également
« chargeables » sur le Hub.
On “Pull” et “push” des images
Création d’un Registre privé
19. Qu’est ce que Kubernetes?
Orchestrateur
de container
Placement de la
charge de travail
État souhaité
20. Une formation
Avantages de Kubernetes
Vitesse de déploiement
Capacité à absorber rapidement le
changement
Capacité à récupérer rapidement
Abstraction de la complexité du
cluster
23. Avantages de kubernetes
Les objets :
• Une collection de primitives qui
représentent l'état du système
Configuration du système :
• Déclaratif
• Impératif
24. Avantages de kubernetes
Une API RESTful qui s'exécute sur HTTP ou
HTTPS à l'aide de JSON
• La façon d’intérargir avec le cluster
• La façon pour Kubernetes d’intérargir avec le cluster
• Informations sérialisées et conservées
27. Une formation
Les pods
La plus petite unité gérée par Kubernetes
Contient une collection de conteneur
C’est votre application
N’a pas de cycle de vie
Ephémère
28. Une formation
Les pods
Le travail de Kubernetes consiste à faire
fonctionner vos pods
Plus précisément en s’assurant l'état
souhaité
• L’état : le pod est-il opérationnel ?
• Santé : l'application dans le Pod est elle en cours
d'exécution ?
Liveness Probes
30. Une formation
Un contrôleur
Crée et gère les pods pour nous
Définie l’état souhaité
Réponds à l’état et à la santé du pod
ReplicaSet : nombre de réplicas
Deployment : gère le déploiement
des replicaSet
32. Une formation
Un service
Ajoute de la persistance à notre monde
éphémère
Abstraction du réseau pour l'accès au pod
IP et Nom DNS du service
Redéploiement automatique des pods
Expose les pods au monde extérieur
Load balancing, NAT des ports,…
42. Scheduler
Kube-API Server
Kube-scheduler
Le Scheduler surveille les pods nouvellement
créés qui ne sont pas assignés à un nœud et
sélectionne un nœud sur lequel ils vont
s’exécuter
Les facteurs pris en compte pour les décisions
de planification (scheduling) comprennent les
exigences individuelles et collectives en
ressources, les contraintes
matérielles/logicielles/politiques, les
spécifications d’affinité et d’anti-affinité, la
localisation des données
43. Cluster store
Scheduler
Kube-API Server
ETCD
Base de données clé-valeur consistante
et hautement disponible utilisée comme
mémoire de sauvegarde pour toutes les
données du cluster
Si votre cluster Kubernetes utilise etcd
comme mémoire de sauvegarde,
assurez-vous d’avoir un plan de back
up pour ces données
44. Cluster store
Scheduler
Kube-API Server
Controller Manager
Kube-controller-manager
Composant du master qui exécute
les contrôleurs
Logiquement, chaque contrôleur est un
processus à part mais, pour réduire la
complexité, les contrôleurs sont tous
compilés dans un seul binaire et
s’exécutent dans un seul processus
45. Cluster store
Scheduler
Kube-API Server
Le master
Ces contrôleurs incluent :
Node Controller : Responsable de
détecter et apporter une réponse
lorsqu’un nœud tombe en panne
Replication Controller : Responsable de
maintenir le bon nombre de pods pour
chaque objet ReplicationSet dans le
systèmeController Manager
46. Cluster store
Scheduler
Kube-API Server
Le master
Endpoints Controller : Remplit les
objets Endpoints (c’est-à-dire joint les
Services aux Pods)
Service Account & Token Controllers :
Créent des comptes par défaut et des
jetons d’accès à l’API pour les nouveaux
namespaces
Controller Manager
48. Les nœuds – Worker node
Cluster store
Scheduler
API Server
Controler Manager
Kubelet
Kube proxy
Runtime
Docker
49. Les nœuds – Kubelet
Un agent qui s’exécute sur chaque nœud du cluster. Il
s’assure que les conteneurs fonctionnent dans un pod
Le kubelet prend un ensemble de PodSpecs fournis
par divers mécanismes et s’assure du fonctionnement
et de la santé des conteneurs décrits dans ces
PodSpecs
Kubelet
50. Les nœuds – Kube-proxy
kube-proxy est un proxy réseau qui s’exécute sur chaque
nœud du cluster et implémente une partie du concept
de Service Kubernetes
kube-proxy maintient les règles réseau sur les nœuds. Ces
règles réseau permettent une communication réseau vers les
Pods depuis des sessions réseau à l’intérieur ou à l’extérieur
du cluster
kube-proxy utilise la couche de filtrage de paquets du
système d’exploitation s’il y en a une et qu’elle est disponible.
Sinon, kube-proxy transmet le trafic lui-même
Kubelet
Kube proxy
51. Les nœuds – Kubelet
L’environnement d’exécution de conteneurs est le
logiciel responsable de l’exécution des conteneurs
Kubernetes est compatible avec plusieurs
environnements d’exécution de conteneur:
Docker, containerd, cri-o, rktlet
ainsi que toute implémentation de Kubernetes CRI
(Container Runtime Interface)
Kubelet
Kube proxy
Runtime
Docker
56. Une formation
Quels types d’installation
Sur votre bureau Linux, Windows, Macos :
Minikube
From scratch : Un peu abandonné !
Via Kubeadm : A préférer
Dans le Cloud
• GKE – Google Kubernetes Engine
• EKS – Elastic Kubernetes Service
58. Une formation
Le Master
Une distribution Linux
• Ubuntu/Debian
• Centos/Red hat..
Ressources matérielles
• 2 CPU
• 2 Go de RAM
Un runtime de container
• Docker
• containerd
59. Une formation
Les Workers
Une distribution Linux
• Ubuntu/Debian
• Centos/Red hat..
Ressources matérielles
• 1 CPU
• 1 Go de RAM
Un runtime de container
• Docker
• containerd
60. Une formation
Les ports Kubernetes
Composant Ports (tcp)
API 6443
ETCD 2379-2380
Scheduler 10251
Controler Manager 10252
Kubelet service 10250
61. Que va t'on installer ?
Une formation
Ludovic Quenec'hdu
68. Une formation
Processus de déploiement
Vérification des prérequis
Création du CA
Génération des fichiers kubeconfig
Création des manifest de pods
Démarrage du plan de control
« taint » le serveur maitre
Création des token de jonction au cluster
Déploiement des services DNS et kube-proxy
Kubeadm --init
70. Une formation
CA
Autorité Auto-signée
Peut faire partie d’une PKI
Sécurisation des communications du cluster
Authentification des utilisateurs et du service
kubelets
Distribué sur chaque nœud
72. Une formation
Pourquoi kubeconfig?
Utilisé pour définir comment se connecter à
votre cluster
Informations sur le certificat
Emplacement du cluster : /etc/Kubernetes
admin.conf (kubernetes-admin)
kubelet.conf
controller-manager.conf
scheduler.conf
81. Une formation
Outil CLI principal
Contrôler le cluster Kubernetes
• Opérations : ce que vous voulez faire
• Ressources : sur quoi
• Sortie : s'il y a une sortie, quel format?
Kubectl?
82. Les opérations
apply/create : créer des ressources
run : démarrer un pod à partir d'une image
explain : documentation des ressources
delete : supprimer des ressources
get : liste des ressources
describe : des informations détaillées sur les ressources
exec : exécute une commande dans un conteneur
logs : afficher les journaux sur un conteneur
84. La sortie
Spécifiez le format de sortie de kubectl :
large : sortie d'informations supplémentaires vers
stdout
yaml : Objet API formaté YAML
json : Objet API formaté JSON
90. Une formation
Petit retour sur les conteneurs
Comprendre Kubernetes
Architecture de Kubernetes
Installation de Kubernetes
Création du cluster
Les pods
Bilan