Zum Hauptinhalt springen
  1. Beiträge/
  2. Kleines Homelab/
  3. k3s-prod: Kubernetes Cluster Konfiguration und Anwendungsbereitstellung/

CoreDNS

Inhaltsverzeichnis

CoreDNS
#

Deployment
#

Argo Deployment

Quelle
#

Das Projekt basiert auf dem CoreDNS GitHub Repository. Das Helm-Chart stammt aus dem CoreDNS Helm Charts Repository.

Dokumentation
#

Funktion
#

CoreDNS ist ein fundamentaler Bestandteil des Kubernetes-Clusters und verantwortlich für die Namensauflösung (DNS). Es ermöglicht Pods und Services, sich gegenseitig über ihre Namen zu finden (z.B. my-service.my-namespace.svc.cluster.local). Es ist so konfiguriert, dass es Anfragen für interne Cluster-Domains beantwortet und alle anderen Anfragen an Upstream-DNS-Server weiterleitet.

Lokale Anpassungen
#

Die Konfiguration erfolgt über die values.yaml-Datei.

Wichtige Einstellungen
#

  • Replikas: Es werden drei Replikate von CoreDNS betrieben, um Hochverfügbarkeit zu gewährleisten.
  • Dual-Stack: Der Service ist für den Dual-Stack-Betrieb (IPv4 und IPv6) konfiguriert.
  • Plugins: Eine Reihe von Plugins ist aktiviert, darunter:
    • kubernetes: Für die Auflösung von Kubernetes-Services und -Pods.
    • forward: Leitet Anfragen, die nicht vom kubernetes-Plugin aufgelöst werden können, an die DNS-Server in /etc/resolv.conf weiter.
    • cache: Cacht DNS-Antworten, um die Latenz zu verringern und die Last auf den Upstream-Servern zu reduzieren.
    • prometheus: Stellt Metriken für das Monitoring bereit.
  • Scheduling: CoreDNS-Pods werden bevorzugt auf den Control-Plane-Nodes ausgeführt und sind über topologySpreadConstraints auf verschiedene Nodes und Zonen verteilt, um die Ausfallsicherheit zu erhöhen.

Installation
#

Die Anwendung wird mittels Kustomize und Helm durch ArgoCD im Kubernetes-Cluster bereitgestellt. Die Konfiguration befindet sich im apps/coredns-Verzeichnis. Eine manuelle Installation kann mit folgendem Befehl durchgeführt werden:

1kubectl kustomize --enable-helm apps/coredns | kubectl apply -n kube-system -f -

Abhängigkeiten
#

CoreDNS ist eine Kernkomponente von Kubernetes und hat keine externen Anwendungsabhängigkeiten, ist aber für die Funktion fast aller anderen Anwendungen im Cluster kritisch.

Per E-Mail antworten
Fabrice Kirchner
Autor
Fabrice Kirchner
stolzer Vater, Nerd, Admin