Introduction
Dans Kubernetes, les gestionnaires de déploiement orchestrent et automatisent le cycle de vie des applications conteneurisées. Ils assurent la montée en charge, la redondance et la gestion des ressources pour les applications, permettant ainsi une architecture scalable et tolérante aux pannes.
Deployment
Gestionnaire pour les applications stateless.
-
Présentation
Le Deployment permet de déployer et gérer les applications sans état. Il maintient le nombre souhaité de Pods actifs, gère les mises à jour et les rollbacks, et offre des options de scaling horizontal.
-
Cas d'utilisation
Utilisé pour les applications web, API ou tout service stateless qui peut facilement être reproduit sans dépendances sur un stockage persistant.
-
Exemple
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-deployment
spec:
replicas: 3
selector:
matchLabels:
app: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example
image: nginx
ReplicaSet
Maintien du nombre de réplicas de Pods.
-
Présentation
Le ReplicaSet est utilisé pour maintenir un nombre constant de Pods identiques dans le cluster. Les Deployments s'appuient souvent sur ReplicaSets pour gérer la création et la mise à jour des Pods.
-
Cas d'utilisation
Utilisé en interne par les Deployments pour assurer un nombre de Pods stables en fonctionnement.
StatefulSet
Pour les applications nécessitant un stockage persistant.
-
Présentation
Le StatefulSet est utilisé pour les applications nécessitant une persistance de données. Chaque Pod dispose d'une identité unique, préservée lors de la recréation du Pod, et est associé à un volume de stockage dédié.
-
Cas d'utilisation
Bases de données, systèmes de fichiers distribués, ou toute application nécessitant un identifiant unique ou un état persistant.
-
Exemple
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: example-statefulset
spec:
serviceName: "example"
replicas: 3
selector:
matchLabels:
app: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example
image: mysql
DaemonSet
Assure qu'un Pod tourne sur chaque nœud.
-
Présentation
Un DaemonSet garantit l'exécution d'un Pod sur chaque nœud du cluster. Utilisé pour des tâches de surveillance, d'analyse des journaux ou de maintenance réseau.
-
Cas d'utilisation
Agents de monitoring, collecte des logs, et tout service nécessitant une présence sur chaque nœud.
-
Exemple
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: example-daemonset
spec:
selector:
matchLabels:
name: example
template:
metadata:
labels:
name: example
spec:
containers:
- name: example
image: fluentd
Job
Exécution de tâches ponctuelles.
-
Présentation
Le Job exécute des Pods pour accomplir une tâche ponctuelle, et s'arrête lorsque celle-ci est terminée. Il est particulièrement adapté pour les processus de traitement de données ou les scripts de maintenance.
-
Cas d'utilisation
Tâches ponctuelles comme des analyses de données ou des traitements de lot.
-
Exemple
apiVersion: batch/v1
kind: Job
metadata:
name: example-job
spec:
template:
spec:
containers:
- name: example
image: busybox
command: ["echo", "Hello, Kubernetes!"]
restartPolicy: Never
CronJob
Planification de tâches récurrentes.
-
Présentation
Un CronJob permet de planifier des tâches récurrentes selon une syntaxe crontab. Il est utile pour les sauvegardes, la génération de rapports, ou toute tâche périodique.
-
Cas d'utilisation
Tâches récurrentes comme les sauvegardes ou le nettoyage des données.
-
Exemple
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: example-cronjob
spec:
schedule: "*/5 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: example
image: busybox
command: ["echo", "Hello from CronJob"]
restartPolicy: OnFailure
Choisir un gestionnaire de déploiement
- Pour des applications stateless : utilisez Deployment.
- Pour des applications stateful nécessitant des identifiants persistants : préférez StatefulSet.
- Pour les tâches à exécuter sur chaque nœud : optez pour un DaemonSet.
- Pour des tâches ponctuelles : Job est recommandé.
- Pour des tâches récurrentes : CronJob est idéal.
Date de publication: 2023-06-03T09:40:00+08:00
Date de modification: 2024-10-30T14:47:31
Auteur:
- Martin LEKPA : Tech Lead et formateur Observabilité