Automatische Skalierung CoreDNS - Amazon EKS

Helfen Sie 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.

Automatische Skalierung CoreDNS

Wenn Sie einen Amazon EKS-Cluster mit mindestens einem Knoten starten, werden standardmäßig zwei Replikate des CoreDNS Images bereitgestellt, unabhängig von der Anzahl der in Ihrem Cluster bereitgestellten Knoten. Deployment Die 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, können die CoreDNS Pods überlastet und langsamer werden und Anfragen zurückweisen, die die Pods nicht verarbeiten können.

Um die erhöhte Belastung der CoreDNS Pods zu bewältigen, sollten Sie ein Autoscaling-System für in Betracht ziehen. CoreDNS Amazon EKS kann die automatische Skalierung der CoreDNS Bereitstellung in der EKS-Add-on-Version von CoreDNS verwalten. Dieser CoreDNS Autoscaler überwacht kontinuierlich den Clusterstatus, einschließlich der Anzahl der Knoten und CPU-Kerne. Auf der Grundlage dieser Informationen passt der Controller die Anzahl der Replikate der CoreDNS Bereitstellung in einem EKS-Cluster dynamisch an. Diese Funktion funktioniert für jede CoreDNS v1.9 EKS-Release-Version 1.25 und höher. Weitere Informationen darüber, welche Versionen mit CoreDNS Autoscaling kompatibel sind, 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 EKS Ihre CoreDNS Bereitstellung skalieren kann, gibt es drei Voraussetzungen:

  • Sie müssen die EKS Add-on-Version von verwendenCoreDNS.

  • 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 CoreDNS werden.

Minimale Cluster-Version

Die automatische Skalierung von CoreDNS erfolgt durch eine neue Komponente in der Cluster-Steuerebene, die von Amazon EKS verwaltet wird. Aus diesem Grund müssen Sie Ihren Cluster auf eine EKS-Version aktualisieren, die die minimale Plattformversion unterstützt, die die neue Komponente enthält.

Ein neuer Amazon-EKS-Cluster. Informationen zum Bereitstellen finden Sie unter Erste Schritte mit Amazon EKS. Der Cluster muss Kubernetes Version 1.25 oder höher aufweisen. Auf dem Cluster muss eine der in der folgenden Tabelle aufgeführten Kubernetes Versionen und Plattformversionen oder eine neuere Version ausgeführt werden. Beachten Sie, dass alle Kubernetes- und Plattformversionen, die über die aufgeführten hinausgehen, ebenfalls unterstützt werden. Sie können Ihre aktuelle Kubernetes-Version überprüfen, indem Sie my-cluster im folgenden Befehl durch den Namen Ihres Clusters ersetzen und dann den geänderten Befehl ausführen:

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 späterer Kubernetes Versionen wird ebenfalls unterstützt, z. B. Kubernetes Versionen 1.30 von eks.1 und ab.

Mindestversion des EKS-Add-ons

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

Konfiguration von CoreDNS Autoscaling im AWS Management Console

  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 die nächste Kubernetes Version aktualisieren, und der Cluster wird auf diese K8s-Version und die neueste Plattformversion aktualisiert. Wenn Sie beispielsweise von auf aktualisieren 1.251.26, wird der Cluster auf aktualisiert. 1.26.15 eks.18

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

    Gehen Sie wie unter beschrieben vor, um einen Cluster auf eine neue Kubernetes Version zu aktualisierenAktualisieren Sie den vorhandenen Cluster auf die neue Kubernetes-Version.

  2. Stellen Sie sicher, dass Sie das EKS-Add-on für CoreDNS und nicht für die selbstverwaltete CoreDNS Bereitstellung haben.

    Je nachdem, mit welchem Tool Sie Ihr Cluster erstellt haben, ist der Add-on vom Typ Amazon EKS möglicherweise derzeit 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 Amazon EKS-Typ des Add-ons auf Ihrem Cluster installiert und können mit dem nächsten Schritt fortfahren. Wenn Sie eine Versionsnummer zurückgeben, wird der Amazon-EKS-Typ des Add-Ons auf Ihrem Cluster installiert. Führen Sie die verbleibenden Schritte des Verfahrens ausAdd-on vom Typ Amazon EKS erstellen, um die selbstverwaltete Version durch das Amazon EKS-Add-on zu ersetzen.

  3. Stellen Sie sicher, dass Ihr EKS-Add-on für dieselbe oder eine höhere Version als die Mindestversion des EKS-Add-ons installiert CoreDNS 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.11

    Vergleichen Sie diese Version mit der Mindestversion des EKS Add-ons im vorherigen Abschnitt. Aktualisieren Sie das EKS-Add-on bei Bedarf auf eine höhere Version, indem Sie das Verfahren befolgenAktualisieren des Amazon-EKS-Add-ons.

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

    1. Öffnen Sie die Amazon-EKS-Konsole unterhttps://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 Add-On-Feld aus und wählen Sie dann Bearbeiten.

    5. Auf der CoreDNS Seite „Konfigurieren“:

      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 JSON-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, auf die Autoscaling die Anzahl der CoreDNS Pods skalieren kann.

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

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

      Amazon EKS wendet Änderungen an den EKS-Add-Ons mithilfe eines Rollouts von Kubernetes Deployment for CoreDNS an. Sie können den Status des Rollouts im Update-Verlauf des Add-ons in und mit verfolgen. AWS Management Console kubectl rollout status deployment/coredns --namespace kube-system

      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 Meldung mit dem Typ Addon-Update 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 starten Sie es kubectl logs auf einem CoreDNS Pod, um die Protokolle von einzusehen. CoreDNS

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

Konfiguration von CoreDNS Autoscaling im AWS Command Line Interface

  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 die nächste Kubernetes Version aktualisieren, und der Cluster wird auf diese K8s-Version und die neueste Plattformversion aktualisiert. Wenn Sie beispielsweise von auf aktualisieren 1.251.26, wird der Cluster auf aktualisiert. 1.26.15 eks.18

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

    Gehen Sie wie unter beschrieben vor, um einen Cluster auf eine neue Kubernetes Version zu aktualisierenAktualisieren Sie den vorhandenen Cluster auf die neue Kubernetes-Version.

  2. Stellen Sie sicher, dass Sie das EKS-Add-on für CoreDNS und nicht für die selbstverwaltete CoreDNS Bereitstellung haben.

    Je nachdem, mit welchem Tool Sie Ihr Cluster erstellt haben, ist der Add-on vom Typ Amazon EKS möglicherweise derzeit 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 Sie eine Versionsnummer zurückgeben, wird der Amazon-EKS-Typ des Add-Ons auf Ihrem Cluster installiert. Wenn Sie eine Versionsnummer zurückgeben, wird der Amazon-EKS-Typ des Add-Ons auf Ihrem Cluster installiert. Führen Sie die verbleibenden Schritte des Verfahrens ausAdd-on vom Typ Amazon EKS erstellen, um die selbstverwaltete Version durch das Amazon EKS-Add-on zu ersetzen.

  3. Stellen Sie sicher, dass Ihr EKS-Add-on für dieselbe oder eine höhere Version als die Mindestversion des EKS-Add-ons installiert CoreDNS 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.11

    Vergleichen Sie diese Version mit der Mindestversion des EKS Add-ons im vorherigen Abschnitt. Aktualisieren Sie das EKS-Add-on bei Bedarf auf eine höhere Version, indem Sie das Verfahren befolgenAktualisieren des Amazon-EKS-Add-ons.

  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. Ersetzen Sie my-cluster durch den Namen Ihres Clusters und den IAM-Rollen-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 mithilfe eines Rollouts von Kubernetes Deployment for CoreDNS an. Sie können den Status des Rollouts im Update-Verlauf des Add-ons in und mit verfolgen. AWS Management Console kubectl rollout status deployment/coredns --namespace kube-system

    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 Meldung mit dem Typ Addon-Update 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 starten Sie es kubectl logs auf einem CoreDNS Pod, um die Protokolle von einzusehen. CoreDNS

  5. (Optional) Sie können Mindest- und Höchstwerte angeben, auf die Autoscaling die Anzahl der CoreDNS Pods skalieren kann.

    Das folgende Beispiel zeigt, dass Autoscaling aktiviert ist und alle optionalen Schlüssel Werte haben. Wir empfehlen, dass die Mindestanzahl von CoreDNS Pods immer größer als 2 ist, 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", 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, skaliert Amazon EKS die Anzahl der Replikate der CoreDNS Bereitstellung.