Daemonset
Prérequis
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.
Preparation
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=dockerSi 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_proxyAjouter 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 nodesSi 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.1Ayant minikube installé et dans votre PATH, puis exécutez :
minikube node addkubectl get nodesNAME STATUS ROLES AGE VERSION
kube Ready master 54m v1.23.1
kube-m02 Ready <none> 2m50s v1.23.1Daemonset
Le DaemonSet est créé à l’aide de la ressource Kubernetes DaemonSet :
vim apps/kubefiles/nginx-daemonset.yamlapiVersion: 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: nginxkubectl apply -f apps/kubefiles/nginx-daemonset.yaml
kubectl get pods -o wideNAME 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.yamlA vous de jouer !!!
Dans K8s, les DaemonSets sont souvent utilisés pour configurer certaines choses sur les nœuds.
Créez un DaemonSet nommé configurator, il doit :
être dans l’espace de noms configurator
utiliser l’image bash
monter /configurator en tant que volume HostPath sur le nœud sur lequel il s’exécute
écrire aba997ac-1c89-4d64 dans le fichier /configurator/config sur son nœud via la commande : section
être maintenu en fonctionnement à l’aide de sleep 1d ou d’une commande similaire après la commande d’écriture du fichier.
Il n’y a pas de taint sur aucun nœud, ce qui signifie qu’aucune tolérance n’est nécessaire.