Qu'est-ce qu'un DaemonSet ?
Un DaemonSet garantit qu'un Pod tourne sur chaque nœud du cluster (ou sur un sous-ensemble de nœuds).
Cas d'usage
- Agents de monitoring (Prometheus Node Exporter, Datadog)
- Collecteurs de logs (Fluentd, Filebeat)
- Drivers de stockage (Ceph, GlusterFS)
- Agents de securite
- Proxies reseau (kube-proxy)
DaemonSet YAML
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd
namespace: kube-system
spec:
selector:
matchLabels:
app: fluentd
template:
metadata:
labels:
app: fluentd
spec:
containers:
- name: fluentd
image: fluent/fluentd:v1.14
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
Node Selector
Deployer uniquement sur certains nœuds :
spec:
template:
spec:
nodeSelector:
disktype: ssd
Tolerations
Permettre le deploiement sur des nœuds avec taints :
spec:
template:
spec:
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
Update Strategy
spec:
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
Best practice : Utilisez des DaemonSets pour les outils d'infrastructure qui doivent tourner sur tous les nœuds.