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
enLogstash
. - Voer een daemon voor knooppuntbewaking uit, zoals
Prometheus
. - Voer een daemon voor clusteropslag uit, zoals
glusterd
ofceph
.
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.