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: nginxReplicaSet #
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: mysqlDaemonSet #
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: fluentdJob #
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: NeverCronJob #
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: OnFailureChoisir 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.