Un DaemonSet garantit que tous les nœuds exécutent une copie d’un Pod. Lorsque des nœuds sont ajoutés au cluster, des Pods leur sont ajoutés automatiquement. Lorsque les nœuds sont supprimés, ils ne sont pas replanifiés mais supprimés.
Ainsi, DaemonSet vous permet de déployer un Pod sur tous les nœuds.
Si vous exécutez ce tutoriel dans Minikube, vous devez déployer un premier noeud en utilisant le driver docker :
minikube stop
minikube delete --all
minikube start --driver=docker
Si vous avez un proxy
minikube stop
minikube delete --all
minikube start --docker-env HTTPS_PROXY=$HTTPS_PROXY --docker-env HTTP_PROXY=$HTTP_PROXY --docker-env=NO_PROXY=$no_proxy
Ajouter des nœuds supplémentaires pour exécuter cette partie du tutoriel. Vérifiez le nombre de nœuds que vous avez delpoyés en exécutant :
kubectl get nodes
Si un seul nœud est présent, vous devez créer un nouveau nœud en suivant les étapes suivantes :
NAME STATUS ROLES AGE VERSION
kube Ready master 54m v1.23.1
Ayant minikube installé et dans votre PATH, puis exécutez :
minikube node add
kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube Ready master 54m v1.23.1
kube-m02 Ready <none> 2m50s v1.23.1
Le DaemonSet est créé à l’aide de la ressource Kubernetes DaemonSet :
vim apps/kubefiles/nginx-daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-daemonset
labels:
app: nginx-daemonset
spec:
selector:
matchLabels:
app: nginx-daemonset
template:
metadata:
labels:
app: nginx-daemonset
spec:
containers:
- name: nginx-daemonset
image: nginx
kubectl apply -f apps/kubefiles/nginx-daemonset.yaml
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-daemonset-jl2t5 1/1 Running 0 23s 10.244.0.2 multinode <none> <none>
nginx-daemonset-r64ql 1/1 Running 0 23s 10.244.1.2 multinode-m02 <none> <none>
Remarquez qu’une instance du pod Nginx est déployée sur chaque nœud.
Supprimer les ressources
kubectl delete -f apps/kubefiles/quarkus-daemonset.yaml