DaemonSet in Kubernetes: gestione efficiente dei cluster
I DaemonSet in Kubernetes facilitano la gestione delle applicazioni o dei servizi che devi eseguire su ciascun nodo del cluster. La configurazione e le modifiche di un DaemonSet si applicano automaticamente a tutti i nodi.
Che cosa sono i DaemonSet in Kubernetes?
I DaemonSet in Kubernetes sono risorse che garantiscono l’esecuzione di almeno un’istanza di un determinato pod su ciascun nodo del cluster. L’applicazione o il servizio sono quindi presenti globalmente nell’intero ambiente cluster. Essi sono particolarmente utili per attività quali monitoraggio, tenuta dei registri o servizi di rete, che devono esistere su ogni nodo del cluster. Un notevole vantaggio dei DaemonSet è la loro scalabilità, poiché avviano automaticamente i pod ed eliminano quelli già esistenti quando i nodi presentano errori o vengono rimossi. In questo modo i DaemonSet migliorano l’affidabilità e semplificano la gestione dei cluster.
Con la soluzione cloud Managed Kubernetes di IONOS puoi trarre vantaggio dall’impostazione automatizzata dei cluster, con elevate prestazioni per i carichi di lavoro e sicurezza in caso di anomalie.
Configurazione di DaemonSet in Kubernetes
La distribuzione dei pod è controllabile in modo granulare sulla base delle proprietà dei nodi, dei requisiti delle risorse o di altri criteri definiti dall’utente. Nelle parti seguenti ti spieghiamo come configurare e utilizzare un DaemonSet.
Creazione di un file YAML per il DaemonSet
Innanzitutto, devi definire la configurazione del DaemonSet in un file YAML, contenente informazioni come il nome del DaemonSet, il tipo di pod utilizzato e le impostazioni specifiche per il posizionamento sui nodi.
Quello che segue è un esempio di file YAML che crea un pod con un container NGINX su ciascun nodo:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-daemonset
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: nginx:latest
yamlAttivazione della configurazione YAML
Apri la riga di comando e accedi alla cartella in cui si trova il file YAML del DaemonSet. Quindi esegui il comando kubectl apply
per applicare la configurazione sul tuo cluster Kubernetes:
kubectl apply -f daemonset.yaml
shellQuesto comando comunica al cluster Kubernetes di creare o aggiornare le risorse definite nel file YAML.
Verifica del DaemonSet in Kubernetes
Controlla che i pod desiderati siano stati avviati correttamente su ciascun nodo.
kubectl get daemonset
shellIl risultato di questo comando contiene informazioni importanti, tra cui:
- DESIRED: il numero di pod desiderati che devono essere creati da DaemonSet.
- CURRENT: il numero effettivo di pod messi a disposizione.
- READY: il numero di pod messi a disposizione e operativi.
- UP-TO-DATE: il numero di pod che attualmente si trovano allo stato più aggiornato per quanto riguarda la configurazione DaemonSet.
- AVAILABLE: il numero di pod operativi che non sono limitati da altre risorse, ad esempio affinità o tolleranze.
- NODE SELECTOR: etichette per i nodi su cui deve essere eseguito il DaemonSet (se configurato).
- AGE: il tempo trascorso dalla creazione del DaemonSet.
Nel nostro esempio puoi notare come il DaemonSet di Kubernetes nginx-daemonset
contenga tre pod richiesti e come attualmente ci siano tre pod in esecuzione sui nodi.
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
nginx-daemonset 3 3 3 3 3 <none> 5m
shellVerifica dei pod
Per ottenere una panoramica più dettagliata sui pod creati, utilizza questo comando:
kubectl get pods
shellL’output mostra lo stato dei pod con informazioni su disponibilità, integrità e tempo di esecuzione.
NAME READY STATUS RESTARTS AGE
nginx-daemonset-abcde 1/1 Running 0 5m
nginx-daemonset-fghij 1/1 Running 0 5m
nginx-daemonset-klmno 1/1 Running 0 5m
shellEliminazione di DaemonSet
Per prima cosa devi controllare quali DaemonSet sono presenti nel tuo cluster. Inserisci il comando kubectl delete daemonset
, seguito dal nome del DaemonSet che desideri eliminare dalla console. Ad esempio:
kubectl delete daemonset nginx-daemonset
shellRestrizione di DaemonSet in Kubernetes a determinati nodi
Per eseguire i DaemonSet solo su nodi specifici di un cluster Kubernetes puoi utilizzare i selettori di nodo o le affinità nella configurazione del DaemonSet. In questo modo puoi specificare i nodi su cui creare i pod dei DaemonSet.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-daemonset
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
custom-label: special-node
containers:
- name: nginx-container
image: nginx:latest
yamlIn questo esempio, DaemonSet è configurato per girare solo sui nodi con l’etichetta custom-label: special-node
.
Comunicazione con i pod del DaemonSet
La comunicazione con i pod Daemon in Kubernetes può avvenire in vari modi a seconda delle esigenze della tua applicazione.
- Push: in questo scenario, i pod del DaemonSet inviano attivamente dati o aggiornamenti a un servizio esterno. Questo servizio esterno può essere, ad esempio, un database statistico oppure un sistema di log centralizzato. I pod del DaemonSet non possiedono client di per sé e non inizializzano alcuna connessione in entrata.
- NodeIP e porta nota: con questo metodo, ogni pod del DaemonSet utilizza una porta specifica sul nodo per essere raggiungibile. I client conoscono l’elenco degli IP dei nodi disponibili e accedono ai pod attraverso l’IP e la porta del nodo corrispondenti.
- DNS: utilizzando un
__headless service__
con lo stesso selettore pod del DaemonSet di Kubernetes puoi abilitare la risoluzione DNS per ogni singolo pod. I client possono quindi comunicare con i pod del DaemonSet utilizzando la risorsa endpoint o richiamando record di tipo A dal DNS. - Service: la creazione di un servizio regolare di Kubernetes con lo stesso selettore pod consente ai client di accedere ai pod del DaemonSet. Questa operazione viene eseguita tramite l’indirizzo IP del cluster del servizio. Ricorda che questa possibilità non garantisce il raggiungimento di un nodo specifico. Il servizio inoltrerà invece la richiesta a uno dei pod disponibili del DaemonSet.
Per informazioni dettagliate sulla gestione dei cluster per principianti consulta il tutorial di Kubernetes nella nostra guida.
- Configurazione automatica dei cluster Kubernetes
- Archiviazione persistente completamente integrata
- Assistenza clienti 24/7