Kubernetes¶
Ces notes sont complémentaires aux slides du cours DevOps avec Kubernetes.
Clients¶
Pods¶
Le concept de Pods est introduit dans les slides du cours DevOps avec Kubernetes et à l'aide d'exemples (mborne/k8s-exemples - Pod).
Il est intéressant dans un second temps de s'intéresser aux concepts suivants :
-
Les init containers pouvant être exploité pour :
- Préparer des données en disposant d'outils supplémentaires (ex : télécharger un fichier avec curl)
- Retarder le démarrage d'un conteneur (ex : attente du démarrage d'un service, de la fin de l'exécution d'un traitement,...)
- Traiter des aspects de sécurité (ex : consommation de secret, isolation du main conteneurs,...)
-
Les liveness, readiness et startup probes utilisées pour surveiller le bon fonctionnement des conteneurs.
Charges de travail¶
Les concepts suivants relatif à la gestion des Pods sont présentés dans les slides :
- Deployment pour un service sans état.
- StatefulSet pour un service avec état.
- DaemonSet pour exécuter un Pod par noeud.
- Job pour une tâche ponctuelle.
- CronJob pour une tâche périodique.
Remarque :
- Les concepts de ReplicaSet et de Rolling Update sont passés sous silence.
Exposition de services¶
Les concepts suivants sont présentés dans les slides :
Gestion de la configuration¶
Pour la gestion de la configuration, nous trouvons principalement les concepts suivants permettant d'injecter des variables d'environnements et des fichiers de configuration dans les conteneurs :
Remarques :
- La présence d'un type distinct entre ConfigMap et Secret permet principalement de limiter les accès à ces derniers (RBAC).
- Les secrets ne sont pas chiffrés (simple encodage en base64)
Les volumes et le stockage¶
c.f. Kubernetes - les volumes et le stockage qui présente les concepts correspondants (PersistentVolume, PersistentVolumeClaim, StorageClass,...)
Authenfication¶
c.f. kubernetes.io - Authenticating qui présente le modèle utilisateur (username: string, groups: string[],...) et le concept de ServiceAccount.
Gestion des droits¶
c.f. kubernetes.io - Using RBAC Authorization qui présente les concepts :
- Role et ClusterRole permettant de définir les actions autorisées ("get", "watch", "list",...) sur les différentes resources ("pods", "services",...)
- RoleBinding et ClusterRoleBinding permettant d'associer les Role et ClusterRole aux utilisateurs.
Ressources¶
Documentation officielle :
- kubernetes.io - Working with Kubernetes Objects
- kubernetes.io - Concepts
- kubernetes.io - API reference
- kubernetes.io - Recommended Labels
Formations :
Articles et vidéos :
- medium.com - K8s: Deployments vs StatefulSets vs DaemonSets
- bryanbende.com - K3s on Raspberry Pi - Volumes and Storage
- www.youtube.com - Understanding Kubernetes Networking. Part 2: POD Network, CNI, and Flannel CNI Plug-in
Outils :