Condividi tramite


Creare DaemonSet di Kubernetes

Si applica a: AKS su Azure Locale 22H2, AKS su Windows Server

Questo articolo descrive come creare e usare un DaemonSet kubernetes nel servizio Azure Kubernetes abilitato da Azure Arc per garantire che una copia di un pod sia sempre disponibile in ogni nodo di lavoro in un cluster. È possibile usare un DaemonSet per migliorare le prestazioni del cluster assicurandosi che un'app venga eseguita in tutti i nodi di lavoro e per distribuire i pod che eseguono la manutenzione e forniscono servizi di supporto per i nodi.

Panoramica di DaemonSets

Un DaemonSet è un oggetto Kubernetes che garantisce che una copia di un pod definito nella configurazione sia sempre disponibile in ogni nodo di lavoro in un cluster. Quando un nuovo nodo viene aggiunto a un cluster, DaemonSet alloca automaticamente il pod in tale nodo.

Analogamente, quando un nodo viene eliminato, viene eliminato anche il pod in esecuzione nel nodo e non viene riprogrammato in un altro nodo( ad esempio, come accade con ReplicaSet). In questo modo è possibile superare le limitazioni di pianificazione di Kubernetes e assicurarsi che un'applicazione specifica venga distribuita in tutti i nodi all'interno del cluster.

DaemonSets può migliorare le prestazioni complessive del cluster. Ad esempio, è possibile usarli per distribuire pod per eseguire attività di manutenzione e servizi di supporto in ogni nodo:

  • Eseguire un daemon di raccolta di log, ad esempio Fluentd e Logstash.
  • Eseguire un daemon di monitoraggio dei nodi, ad esempio Prometheus.
  • Eseguire un daemon di archiviazione cluster, ad esempio glusterd o ceph.

Sebbene i DaemonSet creino un pod in ogni nodo per impostazione predefinita, è possibile limitare il numero di nodi accettabili impostando il campo del selettore del nodo nel file YAML. Il controller DaemonSet crea solo pod nei nodi che corrispondono al selettore di nodo.

In genere, un DaemonSet distribuisce un tipo daemon in tutti i nodi, ma è possibile avere più DaemonSet controllare un tipo daemon usando etichette diverse. Un'etichetta Kubernetes specifica le regole di distribuzione in base alle caratteristiche dei singoli nodi.

Per altre informazioni su come usare DaemonSets, vedere Kubernetes DaemonSets.

Creare un DaemonSet

Si descrive un DaemonSet usando un file YAML e quindi lo si crea usando i kubectl create comandi o kubectl apply , ad esempio kubectl create –f example-daemon.yaml.

L'esempio seguente descrive le funzionalità di un file di configurazione DaemonSet usando un'immagine nginx:

---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: nginx
  name: example-daemon
spec:
  template:
    metadata: null
    labels:
      app: nginx
containers: null
name: nginx
image: nginx

Per visualizzare lo stato corrente del DaemonSet, usare il kubectl describe comando , ad esempio kubectl describe daemonset example-daemon.

Limitare DaemonSet a nodi specifici

Per impostazione predefinita, i DaemonSet creano pod in tutti i nodi di un cluster, ma con i selettori di nodo, è possibile configurarli per creare pod solo in nodi specifici. Se si vuole limitare un oggetto DaemonSet a nodi specifici, usare il kubectl label comando .

Aggiornare un DaemonSet

È possibile aggiornare un oggetto DaemonSet usando il kubectl edit ds<NAME> comando . È tuttavia consigliabile modificare il file di configurazione originale e quindi usare il kubectl apply comando al momento della creazione iniziale. Dopo aver applicato un aggiornamento, è possibile visualizzare lo stato dell'aggiornamento usando il kubectl rollout status ds <daemonset-name> comando .

Eliminare un DaemonSet

Per rimuovere un oggetto DaemonSet, usare il kubectl delete comando , ad esempio kubectl delete –f example-daemon.yaml -n monitoring. È consigliabile prestare attenzione quando si specifica il nome del file DaemonSet, perché l'eliminazione di un DaemonSet pulisce tutti i pod distribuiti.

Passaggi successivi