Formation
Kubernetes
Installation et configuration
Une formation
Ludovic Quenec'hdu
Une formation
Cursus Kubernetes
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
Une formation
Développeur
Architecte
OPS qui souhaite découvrir l’écosystème Docker /
Kubernetes
Public concerné
Une formation
Connaissances requises
Le runtime Docker
Une formation
Ludovic Quenec'hdu
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
Docker écosysteme
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
Architecture
• On trouve trois ressources :
• Docker Images
• Docker Registry
• Docker Container
Architecture
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.
Registry
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é
Les conteneurs
Les Conteneurs Docker
sont construits à partir
d’images de base ou des
images
« personnalisées »
Introduction à Kubernetes
Une formation
Ludovic Quenec'hdu
Une formation
Plan
Qu’est ce que Kubernetes?
Avantages de Kubernetes
Principe de Kubernetes
Qu’est ce que Kubernetes?
Qu’est ce que Kubernetes?
Orchestrateur
de container
Placement de la
charge de travail
État souhaité
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
Principe de Kubernetes
Configuration
déclarative
Contrôleurs API Serveur
Une formation
Ludovic Quenec'hdu
Comprendre l’API
Kubernetes
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
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
Les objets Kubernetes
POD Contrôleur Service Stockage
Beaucoup d’autres objets !
Comprendre les pods
Une formation
Ludovic Quenec'hdu
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
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
Comprendre les contrôleurs
Une formation
Ludovic Quenec'hdu
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
Comprendre les Services
Une formation
Ludovic Quenec'hdu
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,…
Comprendre le stockage
Une formation
Ludovic Quenec'hdu
Une formation
Un stockage
Volumes
PersistentVolumeClaim
PersistentVolume
Les composants
de Kubernetes
Une formation
Ludovic Quenec'hdu
Master Node - Worker Add-ons
Les composants de Kubenetes
Kubectl
Le master
Cluster store
Scheduler
API Server
Controler Manager
Les nœuds ou Workers
Kubelet
Kube proxy
Runtime
Docker
Cluster store
Scheduler
API Server
Controler Manager
Add-On
Le master
Une formation
Ludovic Quenec'hdu
Kube-API Server
Kube-apiserver
Composant sur le master qui
expose l’API Kubernetes
Il s’agit du front-end pour le plan
de contrôle Kubernetes
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
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
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
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
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
Une formation
Ludovic Quenec'hdu
Les Workers (node)
Les nœuds – Worker node
Cluster store
Scheduler
API Server
Controler Manager
Kubelet
Kube proxy
Runtime
Docker
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
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
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
Considération avant
d'installer Kube
Une formation
Ludovic Quenec'hdu
Une formation
Quelques considérations
Dans le cloud
• IaaS
• PaaS
On-Premise
• Bare-metal
• Machines virtuelles
• Cloud Privé
Lequel devriez-vous choisir?
Une formation
Où installer Kubernetes?
Haute disponibilité
Disaster Recovery – PAR
Scalability – mise a l’échelle
Méthodes d’installation
Une formation
Ludovic Quenec'hdu
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
Prérequis d’installation
Une formation
Ludovic Quenec'hdu
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
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
Une formation
Les ports Kubernetes
Composant Ports (tcp)
API 6443
ETCD 2379-2380
Scheduler 10251
Controler Manager 10252
Kubelet service 10250
Que va t'on installer ?
Une formation
Ludovic Quenec'hdu
Les paquets requis
Kubelet
Kubeadm
Kubectl
Container Runtime - Docker
Lab
worker1.alphorm.form
worker2.alphorm.form
worker3.alphorm.form master.alphorm.form
kubectl
Centos 7.x, autre Linux
Vmware, VirtualBox, KVM ….
Minimum : 2CPU, 2Go RAM, 100G DD
Déploiement avec Vagrant
Installation de
Kubernetes
Une formation
Ludovic Quenec'hdu
Déploiement avec Vagrant
Bootstrap avec
Kubeadm
Une formation
Ludovic Quenec'hdu
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
Comprendre l'autorité
de certification
Une formation
Ludovic Quenec'hdu
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
kubeconfig
Une formation
Ludovic Quenec'hdu
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
Initialisation du cluster
Une formation
Ludovic Quenec'hdu
Une formation
Démo
Déploiement de
la solution réseau
Une formation
Ludovic Quenec'hdu
https://kubernetes.io/docs/concepts/cluster-administration/networking/
Routage direct
Accessibilité entre les pods sur le nœud
Adresse IP unique, pas de NAT par pod
Solution :
• Flannel
• Calico
• Weave
Overlay Network
Kubectl create –f https://docs.projectcalico.org/v3.7/manifests/calico.yaml
Overlay Network
Ajout des noeuds
dans le cluster
Une formation
Ludovic Quenec'hdu
Une formation
Démo
Découvrir kubectl
Une formation
Ludovic Quenec'hdu
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?
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
Les ressources
nodes (no)
pods (po)
déploiement
services (svc)
Et autre encore
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
Une formation
Demo
Mon premier pod
Une formation
Ludovic Quenec'hdu
node
Le manifest de pod
Kubectl create –f pod.yaml
Une formation
Demo
Conclusion
Une formation
Ludovic Quenec'hdu
Une formation
Petit retour sur les conteneurs
Comprendre Kubernetes
Architecture de Kubernetes
Installation de Kubernetes
Création du cluster
Les pods
Bilan
Une formation
Prochaine formation Kubernetes
Alphorm.com Formation Kubernetes : Installation et Configuration

Alphorm.com Formation Kubernetes : Installation et Configuration