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.

Consiglio

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
yaml

Attivazione 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
shell

Questo 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
shell

Il 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
shell

Verifica dei pod

Per ottenere una panoramica più dettagliata sui pod creati, utilizza questo comando:

kubectl get pods
shell

L’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
shell

Eliminazione 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
shell

Restrizione 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
yaml

In 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.

Managed Kubernetes
Orchestrazione sicura dei carichi di lavoro dei container
  • Configurazione automatica dei cluster Kubernetes
  • Archiviazione persistente completamente integrata
  • Assistenza clienti 24/7
Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top