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.
Arbeiten mit dem CoreDNS-Amazon-EKS-Add-on
CoreDNS ist ein flexibler, erweiterbarer DNS-Server, der als Kubernetes-Cluster-DNS dienen kann. Wenn Sie einen Amazon-EKS-Cluster mit mindestens einem Knoten starten, werden standardmäßig zwei Replikate des CoreDNS-Image bereitgestellt, unabhängig von der Anzahl der in Ihrem Cluster bereitgestellten Knoten. Die CoreDNS-Pods bieten die Namensauflösung für alle Pods im Cluster. Die CoreDNS-Pods können auf Fargate-Knoten bereitgestellt werden, wenn Ihr Cluster ein AWS Fargate Profil mit einem Namespace enthält, der dem Namespace für das CoreDNS-deployment
entspricht. Weitere Informationen zu CoreDNS finden Sie unter Verwenden von CoreDNS für die Serviceerkennung
In der folgenden Tabelle finden Sie die aktuelle Version des Kubernetes-Add-ons, die für jede Amazon-EKS-Cluster-Version verfügbar ist.
Kubernetes-Version | 1.29 |
1.28 |
1.27 |
1.26 |
1.25 |
1.24 |
1.23 |
---|---|---|---|---|---|---|---|
v1.11.1-eksbuild.6 |
v1.10.1-eksbuild.7 |
v1.10.1-eksbuild.7 |
v1.9.3-eksbuild.11 |
v1.9.3-eksbuild.11 |
v1.9.3-eksbuild.11 |
v1.8.7-eksbuild.10 |
Wichtig
Wenn Sie dieses Add-on selbst verwalten, stimmen die Versionen in der Tabelle möglicherweise nicht mit den verfügbaren selbstverwalteten Versionen überein. Weitere Hinweise zur Aktualisierung des selbstverwalteten Typs dieses Add-ons finden Sie unter Aktualisieren des selbstverwalteten -Add-ons.
Wichtige Überlegungen zum CoreDNS-Upgrade
-
Um die Stabilität und Verfügbarkeit der CoreDNS Deployment zu verbessern, werden die Versionen
v1.9.3-eksbuild.5
und neuer undv1.10.1-eksbuild.2
mit einemPodDisruptionBudget
bereitgestellt. Wenn Sie ein vorhandenesPodDisruptionBudget
bereitgestellt haben, schlägt Ihr Upgrade auf diese Versionen möglicherweise fehl. Schlägt das Upgrade fehl, sollte das Problem durch Ausführen einer der folgenden Aufgaben gelöst werden:-
Wenn Sie das Upgrade des Amazon-EKS-Add-ons durchführen, entscheiden Sie sich dafür, die vorhandenen Einstellungen als Konfliktlösungsoption zu überschreiben. Wenn Sie weitere benutzerdefinierte Einstellungen für die Deployment vorgenommen haben, stellen Sie sicher, dass Sie Ihre Einstellungen vor dem Upgrade sichern, damit Sie Ihre anderen benutzerdefinierten Einstellungen nach dem Upgrade erneut anwenden können.
-
Entfernen Sie Ihr vorhandenes
PodDisruptionBudget
und versuchen Sie das Upgrade erneut.
-
-
In EKS-Add-On-Versionen
v1.9.3-eksbuild.3
und höher sowiev1.10.1-eksbuild.6
und höher legt die CoreDNS-Deployment diereadinessProbe
für die Verwendung des/ready
Endpunkts fest. Dieser Endpunkt ist in derCorefile
-Konfigurationsdatei für CoreDNS aktiviert.Wenn Sie eine benutzerdefinierte
Corefile
verwenden, müssen Sie dasready
Plugin zur Konfiguration hinzufügen, sodass der/ready
Endpunkt in CoreDNS aktiv ist, damit er von der Probe verwendet werden kann. -
In EKS-Add-On-Versionen
v1.9.3-eksbuild.7
und höher sowiev1.10.1-eksbuild.4
und höher können Sie dasPodDisruptionBudget
ändern. Sie können das Add-on bearbeiten und diese Einstellungen in den optionalen Konfigurationseinstellungen mithilfe der Felder im folgenden Beispiel ändern. Dieses Beispiel zeigt das Standard-PodDisruptionBudget
.{ "podDisruptionBudget": { "enabled": true, "maxUnavailable": 1 } }
Sie können
maxUnavailable
oderminAvailable
festlegen, aber Sie können nicht beide gleichzeitig in einem einzelnenPodDisruptionBudget
festlegen. Weitere Informationen zuPodDisruptionBudgets
finden Sie unter Angeben einesPodDisruptionBudget
in der Kubernetes-Dokumentation. Beachten Sie, dass, wenn Sie
enabled
auffalse
festlegen, dasPodDisruptionBudget
nicht entfernt wird. Nachdem Sie dieses Feld auffalse
gesetzt haben, müssen Sie dasPodDisruptionBudget
-Objekt löschen. Ähnlich verhält es sich, wenn Sie das Add-on bearbeiten, um nach dem Upgrade auf eine Version mit einemPodDisruptionBudget
eine ältere Version des Add-ons zu verwenden (das Add-On herunterstufen). DasPodDisruptionBudget
wird nicht entfernt. Führen Sie den folgenden Befehl aus, um dasPodDisruptionBudget
zu löschen:kubectl delete poddisruptionbudget coredns -n kube-system
-
Ändern Sie in EKS-Add-On-Versionen
v1.10.1-eksbuild.5
und höher die Standardtoleranz vonnode-role.kubernetes.io/master:NoSchedule
in ,node-role.kubernetes.io/control-plane:NoSchedule
um KEP 2067 zu entsprechen. Weitere Informationen über KEP 2067 finden Sie unter KEP-2067: Rename the kubeadm "master" label and taintin den Kubernetes Enhancement Proposals (KEPs) auf GitHub. In EKS-Add-On-Versionen
v1.8.7-eksbuild.8
und höher sowiev1.9.3-eksbuild.9
und höher sind beide Toleranzen so eingestellt, dass sie mit jeder Kubernetes Version kompatibel sind. -
In EKS-Add-On-Versionen
v1.9.3-eksbuild.11
v1.10.1-eksbuild.7
und höher CoreDNS Deployment legt die einen Standardwert für festtopologySpreadConstraints
. Der Standardwert stellt sicher, dass die auf die Availability Zones verteilt CoreDNS Pods sind, wenn Knoten in mehreren Availability Zones verfügbar sind. Sie können einen benutzerdefinierten Wert festlegen, der anstelle des Standardwerts verwendet wird. Der Standardwert lautet wie folgt:topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: k8s-app: kube-dns
CoreDNS Überlegungen zum v1.11
-Upgrade
-
In EKS-Add-On-Versionen
v1.11.1-eksbuild.4
und höher basiert das Container-Image auf einem von Amazon EKS Distro verwalteten minimalen Basis-Image, das minimale Pakete enthält und keine Shells enthält. Weitere Informationen finden Sie unter Amazon-EKS-Distro . Die Verwendung und Fehlerbehebung des CoreDNS Images bleibt gleich.
Add-on vom Typ Amazon EKS erstellen
Erstellen Sie das Add-on vom Typ Amazon EKS. Check
Voraussetzungen
-
Ein vorhandener Amazon-EKS-Cluster. Informationen zum Bereitstellen finden Sie unter Erste Schritte mit Amazon EKS.
-
Sehen Sie, welche Version des Container-Images derzeit auf Ihrem Cluster installiert ist.
kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3
Eine Beispielausgabe sieht wie folgt aus.
v1.10.1-eksbuild.7
-
Sehen Sie, welche Version des Container-Images derzeit auf Ihrem Cluster installiert ist. 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. Ersetzen Sie
my-cluster
durch den Namen Ihres Clusters.aws eks describe-addon --cluster-name
my-cluster
--addon-name coredns --query addon.addonVersion --output textWenn 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 dieses Prozesses aus, um es zu installieren.
-
Speichern Sie die Konfiguration Ihres aktuell installierten Add-ons ab.
kubectl get deployment coredns -n kube-system -o yaml >
aws-k8s-coredns-old.yaml
-
Erstellen Sie das Add-on mit dem AWS CLI. Wenn Sie die AWS Management Console oder
eksctl
zum Erstellen des Add-Ons verwenden möchten, finden Sie weitere Informationen unter Erstellen eines Add-Ons und geben Siecoredns
für den Namen des Add-Ons an. Kopieren Sie den folgenden Befehl auf Ihr Gerät. Nehmen Sie bei Bedarf die folgenden Änderungen am Befehl vor, und führen Sie dann den geänderten Befehl aus.-
Ersetzen Sie
mit dem Namen Ihres Clusters.my-cluster
-
Ersetzen Sie
v1.11.1-eksbuild.6
durch die neueste Version, die in der neuesten Versionstabelle für Ihre Clusterversion aufgeführt ist.
aws eks create-addon --cluster-name
my-cluster
--addon-name coredns --addon-versionv1.11.1-eksbuild.6
Wenn Sie benutzerdefinierte Einstellungen auf Ihr aktuelles Add-on angewendet haben, die mit den Standardeinstellungen des Amazon EKS-Add-ons in Konflikt stehen, schlägt die Erstellung möglicherweise fehl. Wenn die Erstellung fehlschlägt, erhalten Sie eine Fehlermeldung, die Sie bei der Problembehebung unterstützt. Alternativ können Sie den vorherigen Befehl mit
--resolve-conflicts OVERWRITE
ergänzen. Dadurch kann das Add-on alle vorhandenen benutzerdefinierten Einstellungen überschreiben. Sobald Sie das Add-on erstellt haben, können Sie es mit Ihren benutzerdefinierten Einstellungen aktualisieren. -
-
Vergewissern Sie sich, dass die neueste Version des Add-ons für die Kubernetes-Version Ihres Clusters zu Ihrem Cluster hinzugefügt wurde. Ersetzen Sie
mit dem Namen Ihres Clusters.my-cluster
aws eks describe-addon --cluster-name
my-cluster
--addon-name coredns --query addon.addonVersion --output textEs kann einige Sekunden dauern, bis die Erstellung des Add-ons abgeschlossen ist.
Eine Beispielausgabe sieht wie folgt aus.
v1.11.1-eksbuild.6
-
Wenn Sie benutzerdefinierte Einstellungen für Ihr ursprüngliches Add-on vorgenommen haben, bevor Sie das Add-on vom Typ Amazon EKS erstellt haben, verwenden Sie die Konfiguration, die Sie in einem vorherigen Schritt gespeichert haben, um das Add-on vom Typ Amazon EKS mit Ihren benutzerdefinierten Einstellungen zu aktualisieren.
Aktualisieren des Amazon-EKS-Add-ons
Erstellen Sie das Add-on vom Typ Amazon EKS. Wenn Sie das Add-on vom Typ Amazon EKS nicht zu Ihrem Cluster hinzugefügt haben, fügen Sie ihn entweder hinzu oder sehen Sie sich Aktualisieren des selbstverwalteten -Add-ons an, anstatt dieses Verfahren abzuschließen.
-
Sehen Sie, welche Version des Container-Images derzeit auf Ihrem Cluster installiert ist. Ersetzen Sie
mit Ihrem Clusternamen.my-cluster
aws eks describe-addon --cluster-name
my-cluster
--addon-name coredns --query "addon.addonVersion" --output textEine Beispielausgabe sieht wie folgt aus.
v1.10.1-eksbuild.7
Wenn die zurückgegebene Version mit der Version für die Kubernetes-Version Ihres Clusters in der aktuellen Versionstabelle übereinstimmt, haben Sie die neueste Version bereits auf Ihrem Cluster installiert und müssen den Rest dieses Verfahrens nicht abschließen. Wenn Sie eine Fehlermeldung statt einer Versionsnummer in Ihrer Ausgabe erhalten, haben Sie den Add-on vom Typ Amazon EKS nicht auf Ihrem Cluster installiert. Sie müssen das Add-on erstellen, bevor Sie es mit diesem Verfahren aktualisieren können.
-
Speichern Sie die Konfiguration Ihres aktuell installierten Add-ons ab.
kubectl get deployment coredns -n kube-system -o yaml >
aws-k8s-coredns-old.yaml
-
Aktualisieren Sie Ihr Add-on mit der AWS CLI. Wenn Sie die AWS Management Console oder verwenden möchten, um das Add-on
eksctl
zu aktualisieren, finden Sie weitere Informationen unter Aktualisieren eines Add-Ons. Kopieren Sie den folgenden Befehl auf Ihr Gerät. Nehmen Sie bei Bedarf die folgenden Änderungen am Befehl vor, und führen Sie dann den geänderten Befehl aus.-
Ersetzen Sie
mit dem Namen Ihres Clusters.my-cluster
-
Ersetzen Sie
v1.11.1-eksbuild.6
durch die neueste Version, die in der neuesten Versionstabelle für Ihre Cluster-Version aufgeführt ist. -
Die
--resolve-conflicts
-OptionPRESERVE
(Beibehalten) behält die vorhandenen Werte für das Add-on bei. Wenn Sie benutzerdefinierte Werte für Zusatzeinstellungen festgelegt haben und diese Option nicht verwenden, überschreibt Amazon EKS Ihre Werte mit seinen Standardwerten. Wenn Sie diese Option verwenden, empfehlen wir, dass Sie alle Feld- und Wertänderungen auf einem Nicht-Produktionscluster testen, bevor Sie das Add-on auf Ihrem Produktionscluster aktualisieren. Wenn Sie diesen Wert aufOVERWRITE
ändern, werden alle Einstellungen auf die Amazon-EKS-Standardwerte geändert. Wenn Sie benutzerdefinierte Werte für Einstellungen festgelegt haben, werden diese möglicherweise mit den Amazon-EKS-Standardwerten überschrieben. Wenn Sie diesen Wert aufnone
ändern, ändert Amazon EKS den Wert der Einstellungen nicht, aber das Update schlägt möglicherweise fehl. Wenn das Update fehlschlägt, erhalten Sie eine Fehlermeldung, die Sie bei der Behebung des Konflikts unterstützt. -
Wenn Sie eine Konfigurationseinstellung nicht aktualisieren, entfernen Sie
--configuration-values '{
aus dem Befehl. Wenn Sie eine Konfigurationseinstellung aktualisieren, ersetzen Sie"replicaCount":3
}'"replicaCount":3
durch die Einstellung, die Sie festlegen möchten. In diesem Beispiel ist die Anzahl der Replikate von CoreDNS auf3
festgelegt. Der von Ihnen angegebene Wert muss für das Konfigurationsschema gültig sein. Wenn Sie das Konfigurationsschema nicht kennen, führen Sie ausaws eks describe-addon-configuration --addon-name coredns --addon-version
und ersetzen Siev1.11.1-eksbuild.6
v1.11.1-eksbuild.6
durch die Versionsnummer des Add-Ons, für das Sie die Konfiguration sehen möchten. Das Schema wird in der Ausgabe zurückgegeben. Wenn Sie bereits eine benutzerdefinierte Konfiguration haben, diese komplett entfernen und die Werte für alle Einstellungen auf die Amazon EKS-Standardwerte zurücksetzen möchten, entfernen Sie"replicaCount":3
aus dem Befehl, sodass
leer ist. Weitere Informationen zu CoreDNS-Einstellungen finden Sie in der Kubernetes-Dokumentation unter Customizing DNS Service{}
(Anpassen des DNS-Service). aws eks update-addon --cluster-name
my-cluster
--addon-name coredns --addon-versionv1.11.1-eksbuild.6
\ --resolve-conflictsPRESERVE
--configuration-values '{"replicaCount":3
}'Es kann einige Sekunden dauern, bis das Update abgeschlossen ist.
-
-
Vergewissern Sie sich, dass die Add-on-Version aktualisiert wurde. Ersetzen Sie
mit dem Namen Ihres Clusters.my-cluster
aws eks describe-addon --cluster-name
my-cluster
--addon-name corednsEs kann einige Sekunden dauern, bis das Update abgeschlossen ist.
Eine Beispielausgabe sieht wie folgt aus.
{ "addon": { "addonName": "coredns", "clusterName": "
my-cluster
", "status": "ACTIVE", "addonVersion": "v1.11.1-eksbuild.6
", "health": { "issues": [] }, "addonArn": "arn:aws:eks:region
:111122223333
:addon/my-cluster
/coredns/d2c34f06-1111-2222-1eb0-24f64ce37fa4", "createdAt": "2023-03-01T16:41:32.442000+00:00", "modifiedAt": "2023-03-01T18:16:54.332000+00:00", "tags": {},"configurationValues": "{\"replicaCount\":3}"
} }
Aktualisieren des selbstverwalteten -Add-ons
Wichtig
Wir empfehlen, den Amazon-EKS-Typ des Add-Ons zu Ihrem Cluster hinzuzufügen, anstatt den selbstverwalteten Typ des Add-Ons zu verwenden. Wenn Sie noch keine Erfahrung mit den Unterschieden zwischen den Typen haben, finden Sie weitere Informationen unter Amazon-EKS-Add-ons. Weitere Informationen zum Hinzufügen eines Amazon-EKS-Add-ons zu Ihrem Cluster finden Sie unter Erstellen eines Add-Ons. Wenn Sie das Amazon-EKS-Add-on nicht verwenden können, empfehlen wir Ihnen, ein Problem zu den Gründen, warum Sie es nicht verwenden können, an das GitHub -Repository für Containers-Roadmap
-
Vergewissern Sie sich, dass Sie das selbstverwaltete Add-On auf Ihrem Cluster installiert haben. Ersetzen Sie
my-cluster
durch den Namen Ihres Clusters.aws eks describe-addon --cluster-name
my-cluster
--addon-name coredns --query addon.addonVersion --output textWenn Sie eine Fehlermeldung erhalten, wird das Add-On als selbstverwaltetes Add-On auf Ihrem Cluster installiert. Führen Sie die verbleibenden Schritte in diesem Verfahren aus. Wenn Sie eine Versionsnummer zurückgeben, wird der Amazon-EKS-Typ des Add-Ons auf Ihrem Cluster installiert. Verwenden Sie zum Aktualisieren des Amazon-EKS-Typs des Add-ons das Verfahren in Aktualisieren des Amazon-EKS-Add-ons und nicht das Verfahren in diesem Thema. Wenn Sie mit den Unterschieden zwischen den Add-On-Typen nicht vertraut sind, finden Sie Informationen unter Amazon-EKS-Add-ons.
-
Sehen Sie, welche Version des Container-Images derzeit auf Ihrem Cluster installiert ist.
kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3
Eine Beispielausgabe sieht wie folgt aus.
v1.8.7-eksbuild.2
-
Wenn Ihre aktuelle CoreDNS-Version
v1.5.0
oder höher, aber älter als die in der Tabelle der CoreDNS-Versionen aufgeführte Version ist, überspringen Sie diesen Schritt. Wenn Ihre aktuelle Version älter als1.5.0
ist, müssen Sie dieConfigMap
für CoreDNS ändern, um das Forward-Add-on anstelle des Proxy-Add-ons zu verwenden.-
Öffnen Sie die configmap mit dem folgenden Befehl.
kubectl edit configmap coredns -n kube-system
-
Ersetzen Sie
proxy
in der folgenden Zeile durchforward
. Speichern Sie die Datei und schließen Sie den Editor.
. /etc/resolv.confproxy
-
-
Wenn Sie Ihren Cluster ursprünglich auf Kubernetes
1.17
oder älter bereitgestellt haben, müssen Sie möglicherweise eine eingestellte Zeile aus Ihrem CoreDNS-Manifest entfernen.Wichtig
Sie müssen diesen Schritt ausführen, bevor Sie auf CoreDNS-Version
1.7.0
aktualisieren. Es wird jedoch empfohlen, diesen Schritt auch dann auszuführen, wenn Sie auf eine ältere Version aktualisieren.-
Überprüfen Sie, ob Ihr CoreDNS-Manifest die Zeile enthält.
kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream
Wenn keine Ausgabe zurückgegeben wird, enthält Ihr Manifest die Zeile nicht und Sie können mit dem nächsten Schritt fortfahren, um CoreDNS zu aktualisieren. Wenn eine Ausgabe zurückgegeben wird, müssen Sie die Zeile entfernen.
-
Bearbeiten Sie das
ConfigMap
mit dem folgenden Befehl und entfernen Sie die Zeile in der Datei, die das Wortupstream
enthält. Ändern Sie sonst nichts in der Datei. Nachdem die Linie entfernt wurde, speichern Sie die Änderungen.kubectl edit configmap coredns -n kube-system -o yaml
-
-
Rufen Sie Ihre aktuelle CoreDNS-Image-Version ab:
kubectl describe deployment coredns -n kube-system | grep Image
Eine Beispielausgabe sieht wie folgt aus.
602401143452
.dkr.ecr.region-code
.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
-
Wenn Sie auf CoreDNS
1.8.3
aktualisieren, müssen Sie dieendpointslices
-Berechtigung zusystem:coredns
Kubernetesclusterrole
hinzufügen.kubectl edit clusterrole system:coredns -n kube-system
Fügen Sie die folgenden Zeilen unter den vorhandenen Berechtigungszeilen im
rules
-Abschnitt der Datei hinzu.[...]
- apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch
[...] -
Aktualisieren Sie das CoreDNS-Add-On, indem Sie
und602401143452
durch die Werte aus der Ausgabe ersetzen, die in einem vorherigen Schritt zurückgegeben wurde. Ersetzen Sieregion-code
durch die aktuelle CoreDNS-Version, die in der aktuellen Versionstabelle für Ihre Kubernetes-Version aufgeführt ist.v1.11.1-eksbuild.6
kubectl set image deployment.apps/coredns -n kube-system coredns=
602401143452
.dkr.ecr.region-code
.amazonaws.com/eks/coredns:v1.11.1-eksbuild.6
Eine Beispielausgabe sieht wie folgt aus.
deployment.apps/coredns image updated
-
Überprüfen Sie die Container-Image-Version erneut, um sicherzustellen, dass sie auf die Version aktualisiert wurde, die Sie im vorherigen Schritt angegeben haben.
kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3
Eine Beispielausgabe sieht wie folgt aus.
v1.11.1-eksbuild.6