Arbeiten mit dem Amazon VPC CNI plugin for Kubernetes-Amazon-EKS-Add-on
Das Amazon VPC CNI plugin for Kubernetes-Add-On wird auf jedem Amazon-EC2-Knoten in Ihrem Amazon-EKS-Cluster bereitgestellt. Das Add-On erstellt Elastic-Network-Schnittstellen (Netzwerkschnittstellen) und fügt sie an Ihre Amazon-EC2-Knoten an. Das Add-On weist jedem Pod und Service auch eine private IPv4
- oder IPv6
-Adresse von Ihrer VPC zu.
Eine Version des Add-Ons wird mit jedem Fargate-Knoten in Ihrem Cluster bereitgestellt, aber Sie aktualisieren sie nicht auf Fargate-Knoten. Andere kompatible CNI-Plugins sind für die Verwendung in Amazon-EKS-Clustern verfügbar, aber dies ist das einzige CNI-Plugin, das von Amazon EKS unterstützt wird.
In der folgenden Tabelle finden Sie die neueste Version des Kubernetes-Add-Ons, die für jede Amazon-EKS-Cluster-Version verfügbar ist.
Kubernetes-Version | 1.27 |
1.26 |
1.25 |
1.24 |
1.23 |
---|---|---|---|---|---|
VPC-CNI-Version vom Typ Amazon EKS | v1.14.0-eksbuild.3 |
v1.14.0-eksbuild.3 |
v1.14.0-eksbuild.3 |
v1.14.0-eksbuild.3 |
v1.14.0-eksbuild.3 |
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.
Voraussetzungen
-
Ein vorhandener Amazon-EKS-Cluster. Informationen zum Bereitstellen finden Sie unter Erste Schritte mit Amazon EKS.
-
Ein vorhandener AWS Identity and Access Management-IAM OpenID Connect (OIDC)-Anbieter für Ihren Cluster. Informationen zum Feststellen, ob Sie bereits über einen verfügen oder einen erstellen müssen, finden Sie unter Erstellen eines IAM-OIDC-Anbieters für Ihren Cluster.
-
Eine IAM-Rolle mit angefügter AmazonEKS_CNI_Policy-IAM-Richtlinie (wenn Ihr Cluster die
IPv4
-Produktfamilie verwendet) oder IPv6-Richtlinie (wenn Ihr Cluster dieIPv6
-Familie verwendet). Weitere Informationen finden Sie unter Konfigurieren des Amazon VPC CNI plugin for Kubernetes zur Verwendung von IAM-Rollen für Servicekonten. -
Wenn Sie Version
1.7.0
oder höher des Amazon VPC CNI plugin for Kubernetes verwenden und benutzerdefinierte Pod-Sicherheitsrichtlinien verwenden, siehe Löschen der standardmäßigen Amazon-EKS-Pod-SicherheitsrichtliniePod-Sicherheitsrichtlinie.
Überlegungen
-
Versionen sind angegeben als
major-version.minor-version.patch-version-eksbuild.build-number
. -
Sie können den Add-on vom Typ Amazon EKS jeweils nur in einer Nebenversion aktualisieren. Wenn Ihre aktuelle Nebenversion beispielsweise
v1.12.6-eksbuild.2
ist und Sie aufv1.14.0-eksbuild.3
aktualisieren möchten, müssen Sie zuerst aufv1.13.4-eksbuild.1
und dann aufv1.14.0-eksbuild.3
aktualisieren. Wenn Sie den selbstverwalteten Typ dieses Add-Ons aktualisieren, empfehlen wir Ihnen, auf die gleiche Versionmajor
.minor
.patch
zu aktualisieren, die in der Tabelle der neuesten verfügbaren Versionen aufgeführt ist, auch wenn neuere Versionen auf GitHub verfügbar sind. -
Überprüfen der Versionskompatibilität für jedes Feature
Alle Versionen sind mit allen von Amazon EKS unterstützten Kubernetes-Versionen kompatibel. Jedoch funktionieren nicht alle Features jeder Version mit allen Kubernetes-Versionen. Wenn Sie verschiedene Amazon-EKS-Features verwenden und eine bestimmte Version des Add-ons erforderlich ist, ist dies in der Featuredokumentationen vermerkt. Falls Sie keinen bestimmten Grund haben, eine frühere Version auszuführen, empfehlen wir, die neueste Version auszuführen.
Add-on vom Typ Amazon EKS erstellen
Erstellen Sie das Add-on vom Typ Amazon EKS.
-
Sehen Sie, welche Version des Container-Images derzeit auf Ihrem Cluster installiert ist.
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3
Eine Beispielausgabe sieht wie folgt aus.
v1.12.6-eksbuild.2
-
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 vpc-cni --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 daemonset aws-node -n kube-system -o yaml >
aws-k8s-cni-old.yaml
-
Erstellen Sie das Add-on mit dem AWS CLI. Wenn Sie mit AWS Management Console oder
eksctl
das Add-on erstellen möchten, gehen Sie zu Erstellen eines Add-Ons und geben Sievpc-cni
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
durch die neueste Version, die in der neuesten Versionstabelle für Ihre Cluster-Version aufgeführt ist.v1.14.0-eksbuild.3
-
Ersetzen Sie
111122223333
durch Ihre Konto-ID undAmazonEKSVPCCNIRole
durch den Namen einer vorhandenen IAM-Rolle, die Sie erstellt haben. Die Angabe einer Rolle erfordert, dass Sie über einen IAM OpenID Connect (OIDC)-Anbieter für Ihren Cluster verfügen. Um festzustellen, ob Sie über einen solchen für Ihren Cluster verfügen, oder um einen zu erstellen, lesen Sie Erstellen eines IAM-OIDC-Anbieters für Ihren Cluster.
aws eks create-addon --cluster-name
my-cluster
--addon-name vpc-cni --addon-version
\ --service-account-role-arn arn:aws:iam::v1.14.0-eksbuild.3
111122223333
:role/AmazonEKSVPCCNIRole
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 vpc-cni --query addon.addonVersion --output textEs kann einige Sekunden dauern, bis die Erstellung des Add-ons abgeschlossen ist.
Eine Beispielausgabe sieht wie folgt aus.
v1.14.0-eksbuild.3
-
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.
(Optional) Installieren Sie
cni-metrics-helper
in Ihrem Cluster. Es sammelt Informationen über elastische Netzwerkschnittstellen und IP-Adressen, fasst sie auf Clusterebene zusammen und veröffentlicht die Metriken in Amazon CloudWatch. Weitere Informationen finden Sie unter cni-metrics-helperauf GitHub.
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 vpc-cni --query "addon.addonVersion" --output textEine Beispielausgabe sieht wie folgt aus.
v1.12.6-eksbuild.2
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 daemonset aws-node -n kube-system -o yaml >
aws-k8s-cni-old.yaml
-
Aktualisieren Sie Ihr Add-on mit der AWS CLI. Informationen dazu, wie Sie mit AWS Management Console oder
eksctl
das Add-on aktualisieren, finden Sie 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
durch die neueste Version, die in der neuesten Versionstabelle für Ihre Cluster-Version aufgeführt ist.v1.14.0-eksbuild.3
-
Ersetzen Sie
111122223333
durch Ihre Konto-ID undAmazonEKSVPCCNIRole
durch den Namen einer vorhandenen IAM-Rolle, die Sie erstellt haben. Die Angabe einer Rolle erfordert, dass Sie über einen IAM OpenID Connect (OIDC)-Anbieter für Ihren Cluster verfügen. Um festzustellen, ob Sie über einen solchen für Ihren Cluster verfügen, oder um einen zu erstellen, lesen Sie Erstellen eines IAM-OIDC-Anbieters für Ihren Cluster. -
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"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}
}'"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}
durch die Einstellung, die Sie festlegen möchten. In diesem Beispiel ist die UmgebungsvariableAWS_VPC_K8S_CNI_EXTERNALSNAT
auftrue
gesetzt. Der von Ihnen angegebene Wert muss für das Konfigurationsschema gültig sein. Wenn Sie das Konfigurationsschema nicht kennen, führen Sie den Befehlaws eks describe-addon-configuration --addon-name vpc-cni --addon-version
aus und ersetzen Siev1.14.0-eksbuild.3
v1.14.0-eksbuild.3
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
aus dem Befehl, sodass nichts übrig bleibt"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}
. Eine Erläuterung der einzelnen Einstellungen finden Sie unter CNI-Konfigurationsvariablen{}
auf GitHub. aws eks update-addon --cluster-name
my-cluster
--addon-name vpc-cni --addon-versionv1.14.0-eksbuild.3
\ --service-account-role-arn arn:aws:iam::111122223333
:role/AmazonEKSVPCCNIRole
\ --resolve-conflictsPRESERVE
--configuration-values '{"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}
}'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 vpc-cniEs kann einige Sekunden dauern, bis das Update abgeschlossen ist.
Eine Beispielausgabe sieht wie folgt aus.
{ "addon": { "addonName": "vpc-cni", "clusterName": "
my-cluster
", "status": "ACTIVE", "addonVersion": "v1.14.0-eksbuild.3
", "health": { "issues": [] }, "addonArn": "arn:aws:eks:region
:111122223333
:addon/my-cluster
/vpc-cni/74c33d2f-b4dc-8718-56e7-9fdfa65d14a9
", "createdAt": "2023-04-12T18:25:19.319000+00:00", "modifiedAt": "2023-04-12T18:40:28.683000+00:00", "serviceAccountRoleArn": "arn:aws:iam::111122223333
:role/AmazonEKSVPCCNIRole
", "tags": {}, "configurationValues": "{\"env\":{\"AWS_VPC_K8S_CNI_EXTERNALSNAT\":\"true\"}
}" } }
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 nicht den Amazon-EKS-Typ des Add-ons auf Ihrem Cluster installiert haben. Ersetzen Sie
my-cluster
durch den Namen Ihres Clusters.aws eks describe-addon --cluster-name
my-cluster
--addon-name vpc-cni --query addon.addonVersion --output textWenn Sie eine Versionsnummer zurückgeben, wird der Amazon-EKS-Typ des Add-ons auf Ihrem Cluster installiert. Um das Add-on selbst zu verwalten, führen Sie die verbleibenden Schritte in diesem Verfahren aus, um das Add-on zu aktualisieren. Wenn Sie eine Versionsnummer zurückgeben, wird der Amazon-EKS-Typ des Add-Ons auf Ihrem Cluster installiert. Verwenden Sie zum Aktualisieren das Verfahren in Aktualisieren eines 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 daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3
Eine Beispielausgabe sieht wie folgt aus.
v1.12.6-eksbuild.2
Ihre Ausgabe enthält möglicherweise nicht die Build-Nummer.
-
Sichern Sie Ihre aktuellen Einstellungen, damit Sie dieselben Einstellungen konfigurieren können, wenn Sie Ihre Version aktualisiert haben.
kubectl get daemonset aws-node -n kube-system -o yaml >
aws-k8s-cni-old.yaml
-
Um die verfügbaren Versionen anzuzeigen und sich mit den Änderungen in der Version, auf die Sie aktualisieren möchten, vertraut zu machen, siehe
releases
auf GitHub. Wir empfehlen die Aktualisierung auf die gleiche Versionmajor
.minor
.patch
, die in der Tabelle der neuesten verfügbaren Versionen aufgeführt ist, auch wenn neuere Versionen auf GitHub verfügbar sind. Die in der Tabelle aufgeführten Build-Versionen sind in den auf GitHub aufgelisteten selbstverwalteten Versionen nicht angegeben. Aktualisieren Sie Ihre Version, indem Sie die Aufgaben mit einer der folgenden Optionen ausführen:-
Wenn Sie keine benutzerdefinierten Einstellungen haben, führen Sie den Befehl unter der
To apply this release:
-Überschrift auf GitHub für die Versionaus, auf die Sie aktualisieren möchten. -
Wenn Sie benutzerdefinierte Einstellungen haben, laden Sie die Manifestdatei mit dem folgenden Befehl herunter, anstatt sie anzuwenden. Ändern Sie
https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.13.4/config/master/aws-k8s-cni.yaml
zu der URL für die Version auf GitHub, auf die Sie aktualisieren.curl -O
https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.13.4/config/master/aws-k8s-cni.yaml
Ändern Sie bei Bedarf die Datei mit den benutzerdefinierten Einstellungen aus dem von Ihnen erstellten Backup und wenden Sie die geänderte Datei dann auf Ihren Cluster an. Wenn Ihre Knoten keinen Zugriff auf die privaten Amazon-EKS-/ Amazon-ECR-Repositorys haben, aus denen die Images abgerufen werden (siehe die Zeilen, die mit
image:
im Manifest beginnen), müssen Sie die Images herunterladen, in Ihr eigenes Repository kopieren und das Manifest ändern, um die Images aus Ihrem Repository abzurufen. Weitere Informationen finden Sie unter Kopieren eines Container-Images von einem Repository in ein anderes.kubectl apply -f aws-k8s-cni.yaml
-
-
Vergewissern Sie sich, dass die neue Version jetzt auf Ihrem Cluster installiert ist.
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3
Eine Beispielausgabe sieht wie folgt aus.
v1.14.0
(Optional) Installieren Sie
cni-metrics-helper
in Ihrem Cluster. Es sammelt Informationen über elastische Netzwerkschnittstellen und IP-Adressen, fasst sie auf Clusterebene zusammen und veröffentlicht die Metriken in Amazon CloudWatch. Weitere Informationen finden Sie unter cni-metrics-helperauf GitHub.