Créer des daemonSets Kubernetes
S’applique à : AKS sur Azure Stack HCI 22H2, AKS sur Windows Server
Cet article explique comment créer et utiliser un DaemonSet Kubernetes dans AKS activé par Azure Arc pour vous assurer qu’une copie d’un pod est toujours disponible sur chaque nœud Worker d’un cluster. Vous pouvez utiliser un DaemonSet pour améliorer les performances du cluster en vous assurant qu’une application s’exécute sur tous les nœuds Worker et pour déployer des pods qui effectuent la maintenance et fournissent des services de support pour les nœuds.
Vue d’ensemble des DaemonSets
Un DaemonSet est un objet Kubernetes qui garantit qu’une copie d’un pod défini dans la configuration est toujours disponible sur chaque nœud Worker d’un cluster. Quand un nouveau nœud est ajouté à un cluster, le DaemonSet alloue automatiquement le pod sur ce nœud.
De même, lorsqu’un nœud est supprimé, le pod en cours d’exécution sur le nœud est également supprimé et n’est pas replanifié sur un autre nœud (par exemple, comme cela se produit avec ReplicaSets). Cela vous permet de surmonter les limitations de planification Kubernetes et de vous assurer qu’une application spécifique est déployée sur tous les nœuds du cluster.
Les DaemonSets peuvent améliorer les performances globales du cluster. Par exemple, vous pouvez les utiliser afin de déployer des pods pour effectuer des tâches de maintenance et prendre en charge des services sur chaque nœud :
- Exécutez un démon de collection de journaux, tel que
Fluentd
etLogstash
. - Exécutez un démon de surveillance de nœud, tel que
Prometheus
. - Exécutez un démon de stockage de cluster, tel que
glusterd
ouceph
.
Bien que les DaemonSets créent un pod sur chaque nœud par défaut, vous pouvez limiter le nombre de nœuds acceptables en prédéfinissant le champ du sélecteur de nœud dans le fichier YAML. Le contrôleur DaemonSet crée uniquement des pods sur des nœuds qui correspondent au sélecteur de nœud.
En général, un DaemonSet déploie un type de démon sur tous les nœuds, mais il est possible que plusieurs DaemonSets contrôlent un type de démon avec des étiquettes différentes. Une étiquette Kubernetes spécifie les règles de déploiement en fonction des caractéristiques de nœuds individuels.
Pour plus d’informations sur l’utilisation de DaemonSets, consultez Kubernetes DaemonSets.
Créer un DaemonSet
Utilisez un fichier YAML pour décrire un DaemonSet, puis créez-le avec la commande kubectl create
ou kubectl apply
(par exemple, kubectl create –f example-daemon.yaml
).
L’exemple suivant décrit les fonctionnalités d’un fichier de configuration DaemonSet avec une image nginx :
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: nginx
name: example-daemon
spec:
template:
metadata: null
labels:
app: nginx
containers: null
name: nginx
image: nginx
Pour voir l’état actuel du DaemonSet, utilisez la commande kubectl describe
(par exemple, kubectl describe daemonset example-daemon
).
Limiter DaemonSet à des nœuds spécifiques
Par défaut, les DaemonSets créent des pods sur tous les nœuds d’un cluster. Toutefois, avec des sélecteurs de nœud, vous pouvez les configurer pour créer des pods uniquement dans des nœuds spécifiques. Si vous souhaitez limiter un DaemonSet à des nœuds spécifiques, utilisez la commande kubectl label
.
Mettre à jour un DaemonSet
Vous pouvez mettre à jour un DaemonSet avec la commande kubectl edit ds<NAME>
. Toutefois, il est recommandé de modifier le fichier de configuration d’origine, puis d’utiliser la kubectl apply
commande lors de sa création initiale. Après avoir appliqué une mise à jour, vous pouvez afficher l’état de la mise à jour à l’aide de la kubectl rollout status ds <daemonset-name>
commande.
Supprimer un DaemonSet
Pour supprimer un DaemonSet, utilisez la commande kubectl delete
(par exemple, kubectl delete –f example-daemon.yaml -n monitoring
). Vous devez être prudent lorsque vous spécifiez le nom du fichier DaemonSet, car la suppression d’un DaemonSet nettoie tous les pods qu’il a déployés.