daemonset

in Architetture Software, Informatica

Kubernetes – Daemonset

Reading Time: < 1 minute

In alcuni scenario potrebbe essere necessario eseguire uno specifico pod su tutti i nodi del cluster (oppure su una porzione di nodi selezionati ad esempio tramite un selettore). Scenari tipici potrebbero essere quelli per il monitoraggio e/o la raccolta di log.

DaemonSet è stato pensato proprio per questo: consente di distribuire uno o piu’ pod in modo che ogni nodo esegua un’instanza del pod stesso.

Il setup dei nodi tramite DaemonSet viene eseguito nella fase iniziale dell’avvio del cluster: questo comportamento permette ai pod interessati da un DaemonSet di essere avviati prima che siano stati pianificati i normali processi di distribuzione dei pod “tradizionali”.

Per definizione quindi un DaemonSet crea una copia di un pod su tutti i nodi del cluster (sempre che non siano stati definiti dei selettori).

Per la fase di setup di un oggetto di tipo DaemonSet viene utilizzato uno YAML con kind: DaemonSet.

DaemonSet può essere utilizzato per effettuare l’installazione di sofware sui nodi di un cluster posizionato nel cloud. In molti servizi cloud, infatti, un upgrade o lo scaling di un cluster può coinvolgere la cancellazione o la rigenerazione delle macchine virtuali sottostanti. Questo tipo di funzionamento può generare problemi nel caso in cui sia necessario avere uno specifico software installato su tutti i nodi. Proprio in questo scenario DaemonSet può essere considerato l’approccio corretto.

Differenze tra DaemonSet e ReplicaSet

Un ReplicaSet viene utilizzato quando un’applicazione è completamente indipendente dal nodo e ne possono essere eseguite molte copie su uno nodo specifico, senza particolari considerazioni.

Un DaemonSet viene utilizzato quando una singola copia dell’applicazione deve essere eseguita su tutti (o un sottoinsieme) di nodi di un cluster.