Skalieren CoreDNSPods für hohen DNS Verkehr - Amazon EKS

Hilf mit, diese Seite zu verbessern

Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Skalieren CoreDNSPods für hohen DNS Verkehr

Wenn Sie einen EKS Amazon-Cluster mit mindestens einem Knoten starten, Deployment von zwei Repliken des CoreDNS Images werden standardmäßig bereitgestellt, unabhängig von der Anzahl der in Ihrem Cluster bereitgestellten Knoten. Das Tool CoreDNS Pods bieten die Namensauflösung für alle Pods im Cluster. Anwendungen verwenden die Namensauflösung, um eine Verbindung zu Pods und Diensten im Cluster sowie zu Diensten außerhalb des Clusters herzustellen. Wenn die Anzahl der Anfragen zur Namensauflösung (Abfragen) von Pods zunimmt, CoreDNS Pods können überlastet und langsamer werden und Anfragen zurückweisen, die die Pods nicht bearbeiten können.

Um die erhöhte Belastung der zu bewältigen CoreDNS Pods, ziehen Sie ein Autoscaling-System in Betracht für CoreDNS. Amazon EKS kann die automatische Skalierung der verwalten CoreDNS Bereitstellung in der EKS Add-on-Version von CoreDNS. Das CoreDNS Autoscaler überwacht kontinuierlich den Clusterstatus, einschließlich der Anzahl der Knoten und CPU Kerne. Auf der Grundlage dieser Informationen passt der Controller dynamisch die Anzahl der Replikate des CoreDNS Bereitstellung in einem EKS Cluster. Diese Funktion funktioniert für CoreDNS v1.9und EKS Release-Version 1.25 und später. Weitere Informationen darüber, mit welchen Versionen kompatibel sind CoreDNS Autoscaling finden Sie im folgenden Abschnitt.

Wir empfehlen, diese Funktion zusammen mit anderen bewährten Methoden für EKS Cluster-Autoscaling zu verwenden, um die allgemeine Anwendungsverfügbarkeit und die Skalierbarkeit des Clusters zu verbessern.

Voraussetzungen

Damit Amazon Ihre EKS skalieren kann CoreDNS Für die Bereitstellung gibt es drei Voraussetzungen:

  • Sie müssen die EKSAdd-on-Version von verwenden CoreDNS.

  • Auf Ihrem Cluster müssen mindestens die Cluster-Mindestversionen und Plattformversionen ausgeführt werden.

  • Auf Ihrem Cluster muss mindestens die Mindestversion des EKS Add-ons von ausgeführt werden CoreDNS.

Minimale Cluster-Version

Autoskalierung von CoreDNS wird von einer neuen Komponente in der Cluster-Steuerebene ausgeführt, die von Amazon verwaltet wirdEKS. Aus diesem Grund müssen Sie Ihren Cluster auf eine EKS Version aktualisieren, die die Plattform-Mindestversion unterstützt, die die neue Komponente enthält.

Ein neuer EKS Amazon-Cluster. Informationen zum Bereitstellen finden Sie unter Erste Schritte mit Amazon EKS. Der Cluster muss Kubernetes Version 1.25 oder höher. Auf dem Cluster muss einer der folgenden ausgeführt werden Kubernetes Versionen und Plattformversionen, die in der folgenden Tabelle aufgeführt sind, oder eine neuere Version. Beachten Sie, dass irgendwelche Kubernetes und Plattformversionen, die später als die aufgeführten sind, werden ebenfalls unterstützt. Sie können Ihre aktuelle Version überprüfen Kubernetes Version durch Ersetzen my-cluster geben Sie den folgenden Befehl mit dem Namen Ihres Clusters ein und führen Sie dann den geänderten Befehl aus:

aws eks describe-cluster --name my-cluster --query cluster.version --output text
Kubernetes version Plattformversion

1.29.3

eks.7

1.28.8

eks.13

1.27.12

eks.17

1.26.15

eks.18

1.25.16

eks.19

Anmerkung

Jede Plattformversion von später Kubernetes Versionen werden ebenfalls unterstützt, zum Beispiel Kubernetes Version 1.30 von eks.1 und weiter.

Minimale EKS Zusatzversion

Kubernetes version 1.29 1.28 1.27 1.26 1.25
v1.11.1-eksbuild.9 v1.10.1-eksbuild.11 v1.10.1-eksbuild.11 v1.9.3-eksbuild.15 v1.9.3-eksbuild.15
  1. Stellen Sie sicher, dass Ihr Cluster der Cluster-Mindestversion entspricht oder diese übersteigt.

    Amazon EKS aktualisiert Cluster zwischen Plattformversionen derselben Kubernetes Version automatisch, und Sie können diesen Vorgang nicht selbst starten. Stattdessen können Sie Ihren Cluster auf den nächsten aktualisieren Kubernetes Version, und der Cluster wird auf diese K8s-Version und die neueste Plattformversion aktualisiert. Wenn Sie beispielsweise ein Upgrade von auf durchführen 1.251.26, wird der Cluster auf aktualisiert. 1.26.15 eks.18

    Neu Kubernetes Versionen führen manchmal zu erheblichen Änderungen. Daher empfehlen wir Ihnen, das Verhalten Ihrer Anwendungen zu testen, indem Sie einen separaten Cluster der neuen Anwendungen verwenden Kubernetes Version, bevor Sie Ihre Produktionscluster aktualisieren.

    Um einen Cluster auf einen neuen zu aktualisieren Kubernetes Version, folgen Sie dem Verfahren unterAktualisieren Sie den vorhandenen Cluster auf die neue Kubernetes-Version.

  2. Stellen Sie sicher, dass Sie das EKSAdd-on für haben CoreDNS, nicht das selbstverwaltete CoreDNS Einsatz.

    Je nachdem, mit welchem Tool Sie Ihren Cluster erstellt haben, ist der EKS Amazon-Zusatztyp derzeit möglicherweise nicht auf Ihrem Cluster installiert. Um zu sehen, welcher Typ des Add-Ons auf Ihrem Cluster installiert ist, können Sie den folgenden Befehl ausführen. Ersetzen Sie my-cluster mit dem Namen Ihres Clusters.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

    Wenn eine Versionsnummer zurückgegeben wird, haben Sie den EKS Amazon-Typ des Add-ons auf Ihrem Cluster installiert und können mit dem nächsten Schritt fortfahren. Wenn ein Fehler zurückgegeben wird, haben Sie den EKS Amazon-Typ des Add-ons nicht auf Ihrem Cluster installiert. Führen Sie die verbleibenden Schritte des Verfahrens ausErstelle die CoreDNS EKSAmazon-Zusatzprodukt, um die selbstverwaltete Version durch das EKS Amazon-Add-on zu ersetzen.

  3. Stellen Sie sicher, dass Ihr EKS Add-on für CoreDNS hat eine Version, die der Mindestversion des EKS Add-ons entspricht oder höher ist.

    Sehen Sie, welche Version des Container-Images derzeit auf Ihrem Cluster installiert ist. Sie können den folgenden Befehl einchecken AWS Management Console oder ausführen:

    kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3

    Eine Beispielausgabe sieht wie folgt aus.

    v1.10.1-eksbuild.13

    Vergleichen Sie diese Version mit der Mindestversion des EKS Add-ons im vorherigen Abschnitt. Falls erforderlich, aktualisieren Sie das EKS Add-on auf eine höhere Version, indem Sie das Verfahren befolgenAktualisiere das CoreDNS EKSAmazon-Zusatzprodukt.

  4. Fügen Sie die Autoscaling-Konfiguration zu den optionalen Konfigurationseinstellungen des EKS Add-ons hinzu.

    1. Öffnen Sie die EKS Amazon-Konsole unter https://console.aws.amazon.com/eks/home#/clusters.

    2. Wählen Sie im linken Navigationsbereich Clusters (Cluster) aus. Wählen Sie anschließend den Namen des Clusters aus, für den Sie das Add-On konfigurieren möchten.

    3. Wählen Sie die Registerkarte Add-ons.

    4. Wählen Sie das Feld oben rechts im CoreDNS Zusatzfeld und wählen Sie dann Bearbeiten.

    5. Auf der Seite „Konfigurieren“ CoreDNSSeite:

      1. Wählen Sie die Version aus, die Sie verwenden möchten. Wir empfehlen, dieselbe Version wie im vorherigen Schritt beizubehalten und Version und Konfiguration in separaten Aktionen zu aktualisieren.

      2. Erweitern Sie Optionale Konfigurationseinstellungen.

      3. Geben Sie den JSON Schlüssel "autoscaling": und den Wert eines verschachtelten JSON Objekts mit einem Schlüssel "enabled": und einem Wert true in das Feld Konfigurationswerte ein. Der resultierende Text muss ein gültiges JSON Objekt sein. Wenn dieser Schlüssel und dieser Wert die einzigen Daten im Textfeld sind, setzen Sie den Schlüssel und den Wert in geschweifte Klammern {}. Das folgende Beispiel zeigt, dass Autoscaling aktiviert ist:

        { "autoScaling": { "enabled": true } }
      4. (Optional) Sie können Mindest- und Höchstwerte angeben, deren Anzahl durch Autoscaling skaliert werden kann CoreDNS Pods zu.

        Das folgende Beispiel zeigt, dass Autoscaling aktiviert ist und alle optionalen Schlüssel Werte haben. Wir empfehlen die Mindestanzahl von CoreDNS Pods ist immer größer als 2, um die Stabilität des DNS Dienstes im Cluster zu gewährleisten.

        { "autoScaling": { "enabled": true, "minReplicas": 2, "maxReplicas": 10 } }
    6. Um die neue Konfiguration anzuwenden, ersetzen Sie die CoreDNS Pods, wählen Sie Änderungen speichern.

      Amazon EKS wendet Änderungen an den EKS Add-Ons an, indem es einen Rollout von Kubernetes Bereitstellung für CoreDNS. Den Status des Rollouts können Sie im Update-Verlauf des Add-ons im AWS Management Console und mit kubectl rollout status deployment/coredns --namespace kube-system verfolgen.

      kubectl rollouthat die folgenden Befehle:

      $ kubectl rollout history -- View rollout history pause -- Mark the provided resource as paused restart -- Restart a resource resume -- Resume a paused resource status -- Show the status of the rollout undo -- Undo a previous rollout

      Wenn der Rollout zu lange dauert, macht Amazon EKS den Rollout rückgängig und eine Nachricht mit dem Typ des Addon-Updates und dem Status Fehlgeschlagen wird zum Update-Verlauf des Add-ons hinzugefügt. Um Probleme zu untersuchen, beginnen Sie mit dem Verlauf des Rollouts und führen Sie Folgendes aus kubectl logs CoreDNS Pod, um die Logs von zu sehen CoreDNS.

  5. Wenn der neue Eintrag in der Update-Historie den Status Erfolgreich hat, ist der Rollout abgeschlossen und das Add-on verwendet die neue Konfiguration in allen CoreDNS Pods. Wenn Sie die Anzahl der Knoten und CPU Kerne der Knoten im Cluster ändern, EKS skaliert Amazon die Anzahl der Replikate des CoreDNS Bereitstellung.

  1. Stellen Sie sicher, dass Ihr Cluster der Cluster-Mindestversion entspricht oder diese übersteigt.

    Amazon EKS aktualisiert Cluster zwischen Plattformversionen derselben Kubernetes Version automatisch, und Sie können diesen Vorgang nicht selbst starten. Stattdessen können Sie Ihren Cluster auf den nächsten aktualisieren Kubernetes Version, und der Cluster wird auf diese K8s-Version und die neueste Plattformversion aktualisiert. Wenn Sie beispielsweise ein Upgrade von auf durchführen 1.251.26, wird der Cluster auf aktualisiert. 1.26.15 eks.18

    Neu Kubernetes Versionen führen manchmal zu erheblichen Änderungen. Daher empfehlen wir Ihnen, das Verhalten Ihrer Anwendungen zu testen, indem Sie einen separaten Cluster der neuen Anwendungen verwenden Kubernetes Version, bevor Sie Ihre Produktionscluster aktualisieren.

    Um einen Cluster auf einen neuen zu aktualisieren Kubernetes Version, folgen Sie dem Verfahren unterAktualisieren Sie den vorhandenen Cluster auf die neue Kubernetes-Version.

  2. Stellen Sie sicher, dass Sie das EKSAdd-on für haben CoreDNS, nicht das selbstverwaltete CoreDNS Einsatz.

    Je nachdem, mit welchem Tool Sie Ihren Cluster erstellt haben, ist der EKS Amazon-Zusatztyp derzeit möglicherweise nicht auf Ihrem Cluster installiert. Um zu sehen, welcher Typ des Add-Ons auf Ihrem Cluster installiert ist, können Sie den folgenden Befehl ausführen. Ersetzen Sie my-cluster mit dem Namen Ihres Clusters.

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text

    Wenn eine Versionsnummer zurückgegeben wird, haben Sie den EKS Amazon-Typ des Add-ons auf Ihrem Cluster installiert. Wenn ein Fehler zurückgegeben wird, haben Sie den EKS Amazon-Typ des Add-ons nicht auf Ihrem Cluster installiert. Führen Sie die verbleibenden Schritte des Verfahrens ausErstelle die CoreDNS EKSAmazon-Zusatzprodukt, um die selbstverwaltete Version durch das EKS Amazon-Add-on zu ersetzen.

  3. Stellen Sie sicher, dass Ihr EKS Add-on für CoreDNS hat eine Version, die der Mindestversion des EKS Add-ons entspricht oder höher ist.

    Sehen Sie, welche Version des Container-Images derzeit auf Ihrem Cluster installiert ist. Sie können den folgenden Befehl einchecken AWS Management Console oder ausführen:

    kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3

    Eine Beispielausgabe sieht wie folgt aus.

    v1.10.1-eksbuild.13

    Vergleichen Sie diese Version mit der Mindestversion des EKS Add-ons im vorherigen Abschnitt. Falls erforderlich, aktualisieren Sie das EKS Add-on auf eine höhere Version, indem Sie das Verfahren befolgenAktualisiere das CoreDNS EKSAmazon-Zusatzprodukt.

  4. Fügen Sie die Autoscaling-Konfiguration zu den optionalen Konfigurationseinstellungen des EKS Add-ons hinzu.

    Führen Sie den folgenden AWS CLI Befehl aus. my-clusterErsetzen Sie durch den Namen Ihres Clusters und die IAM Rolle ARN durch die Rolle, die Sie verwenden.

    aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true}}'

    Amazon EKS wendet Änderungen an den EKS Add-Ons an, indem es einen Rollout von Kubernetes Bereitstellung für CoreDNS. Den Status des Rollouts können Sie im Update-Verlauf des Add-ons im AWS Management Console und mit kubectl rollout status deployment/coredns --namespace kube-system verfolgen.

    kubectl rollouthat die folgenden Befehle:

    kubectl rollout history -- View rollout history pause -- Mark the provided resource as paused restart -- Restart a resource resume -- Resume a paused resource status -- Show the status of the rollout undo -- Undo a previous rollout

    Wenn der Rollout zu lange dauert, macht Amazon EKS den Rollout rückgängig und eine Nachricht mit dem Typ des Addon-Updates und dem Status Fehlgeschlagen wird zum Update-Verlauf des Add-ons hinzugefügt. Um Probleme zu untersuchen, beginnen Sie mit dem Verlauf des Rollouts und führen Sie Folgendes aus kubectl logs CoreDNS Pod, um die Logs von zu sehen CoreDNS.

  5. (Optional) Sie können Mindest- und Höchstwerte angeben, deren Anzahl durch Autoscaling skaliert werden kann CoreDNS Pods zu.

    Das folgende Beispiel zeigt, dass Autoscaling aktiviert ist und alle optionalen Schlüssel Werte haben. Wir empfehlen die Mindestanzahl von CoreDNS Pods ist immer größer als 2, um die Stabilität des DNS Dienstes im Cluster zu gewährleisten.

    aws eks update-addon --cluster-name my-cluster --addon-name coredns \ --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true,"minReplicas":2,"maxReplicas":10}}'
  6. Überprüfen Sie den Status des Updates für das Add-on, indem Sie den folgenden Befehl ausführen:

    aws eks describe-addon --cluster-name my-cluster --addon-name coredns \

    Wenn Sie diese Zeile sehen:"status": "ACTIVE", dann ist der Rollout abgeschlossen und das Add-on verwendet die neue Konfiguration in allen CoreDNS Pods. Wenn Sie die Anzahl der Knoten und CPU Kerne der Knoten im Cluster ändern, EKS skaliert Amazon die Anzahl der Replikate des CoreDNS Bereitstellung.