Delen via


Kubernetes DaemonSets maken

Van toepassing op: AKS in Azure Local 22H2, AKS op Windows Server

In dit artikel wordt beschreven hoe u een Kubernetes DaemonSet maakt en gebruikt in AKS die is ingeschakeld door Azure Arc om ervoor te zorgen dat een kopie van een pod altijd beschikbaar is op elk werkknooppunt in een cluster. U kunt een DaemonSet gebruiken om de clusterprestaties te verbeteren door ervoor te zorgen dat een app wordt uitgevoerd op alle werkknooppunten en pods implementeert die onderhoud uitvoeren en ondersteuningsservices bieden voor knooppunten.

Overzicht van DaemonSets

Een DaemonSet is een Kubernetes-object dat ervoor zorgt dat een kopie van een pod die in de configuratie is gedefinieerd, altijd beschikbaar is op elk werkknooppunt in een cluster. Wanneer een nieuw knooppunt wordt toegevoegd aan een cluster, wijst de DaemonSet de pod automatisch toe op dat knooppunt.

Wanneer een knooppunt wordt verwijderd, wordt de pod die op het knooppunt wordt uitgevoerd, ook verwijderd en wordt deze niet opnieuw gepland op een ander knooppunt (bijvoorbeeld als bij ReplicaSets). Hiermee kunt u beperkingen voor Kubernetes-planning overwinnen en ervoor zorgen dat een specifieke toepassing op alle knooppunten in het cluster wordt geïmplementeerd.

DaemonSets kan de algehele clusterprestaties verbeteren. U kunt ze bijvoorbeeld gebruiken om pods te implementeren om onderhoudstaken en ondersteuningsservices uit te voeren op elk knooppunt:

  • Voer een daemon voor logboekverzamelingen uit, zoals Fluentd en Logstash.
  • Voer een daemon voor knooppuntbewaking uit, zoals Prometheus.
  • Voer een daemon voor clusteropslag uit, zoals glusterd of ceph.

Hoewel DaemonSets standaard een pod op elk knooppunt maakt, kunt u het aantal acceptabele knooppunten beperken door het veld voor de knooppuntkiezer in het YAML-bestand vooraf te definiëren. De DaemonSet-controller maakt alleen pods op knooppunten die overeenkomen met de knooppuntkiezer.

Meestal implementeert één DaemonSet één daemontype op alle knooppunten, maar het is mogelijk om meerdere DaemonSets één daemontype te laten beheren met behulp van verschillende labels. Een Kubernetes-label specificeert implementatieregels op basis van de kenmerken van afzonderlijke knooppunten.

Zie Kubernetes DaemonSets voor meer informatie over het gebruik van DaemonSets.

Een DaemonSet maken

U beschrijft een DaemonSet met behulp van een YAML-bestand en maakt het vervolgens met behulp van de kubectl create of kubectl apply opdrachten (bijvoorbeeld kubectl create –f example-daemon.yaml).

In het volgende voorbeeld worden de functies van een DaemonSet-configuratiebestand beschreven met behulp van een nginx-installatiekopieën:

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

Als u de huidige status van de DaemonSet wilt weergeven, gebruikt u de kubectl describe opdracht (bijvoorbeeld kubectl describe daemonset example-daemon).

DaemonSet beperken tot specifieke knooppunten

DaemonSets maakt standaard pods op alle knooppunten in een cluster, maar met knooppuntkiezers kunt u deze configureren om alleen pods in specifieke knooppunten te maken. Als u een DaemonSet wilt beperken tot specifieke knooppunten, gebruikt u de kubectl label opdracht.

Een DaemonSet bijwerken

U kunt een DaemonSet bijwerken met behulp van de kubectl edit ds<NAME> opdracht. Het is echter raadzaam om het oorspronkelijke configuratiebestand te bewerken en vervolgens de kubectl apply opdracht te gebruiken toen het in eerste instantie werd gemaakt. Nadat u een update hebt toegepast, kunt u de updatestatus weergeven met behulp van de kubectl rollout status ds <daemonset-name> opdracht.

Een DaemonSet verwijderen

Als u een DaemonSet wilt verwijderen, gebruikt u de kubectl delete opdracht (bijvoorbeeld kubectl delete –f example-daemon.yaml -n monitoring). U moet voorzichtig zijn bij het opgeven van de naam van het DaemonSet-bestand, omdat het verwijderen van een DaemonSet alle pods opschoont die zijn geïmplementeerd.

Volgende stappen