Arbeiten mit dem Amazon VPC CNI plugin for Kubernetes-Amazon-EKS-Add-on - Amazon EKS

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
Ü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 auf v1.14.0-eksbuild.3 aktualisieren möchten, müssen Sie zuerst auf v1.13.4-eksbuild.1 und dann auf v1.14.0-eksbuild.3 aktualisieren. Wenn Sie den selbstverwalteten Typ dieses Add-Ons aktualisieren, empfehlen wir Ihnen, auf die gleiche Version major.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.

  1. 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
  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 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 dieses Prozesses aus, um es zu installieren.

  3. 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
  4. 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 Sie vpc-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 my-cluster mit dem Namen Ihres Clusters.

    • Ersetzen Sie v1.14.0-eksbuild.3 durch die neueste Version, die in der neuesten Versionstabelle für Ihre Cluster-Version aufgeführt ist.

    • Ersetzen Sie 111122223333 durch Ihre Konto-ID und AmazonEKSVPCCNIRole 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 v1.14.0-eksbuild.3 \ --service-account-role-arn arn:aws:iam::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.

  5. 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 my-cluster mit dem Namen Ihres Clusters.

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

    Es kann einige Sekunden dauern, bis die Erstellung des Add-ons abgeschlossen ist.

    Eine Beispielausgabe sieht wie folgt aus.

    v1.14.0-eksbuild.3
  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.

  7. (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-helper auf 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.

  1. Sehen Sie, welche Version des Container-Images derzeit auf Ihrem Cluster installiert ist. Ersetzen Sie my-cluster mit Ihrem Clusternamen.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query "addon.addonVersion" --output text

    Eine 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.

  2. 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
  3. 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 my-cluster mit dem Namen Ihres Clusters.

    • Ersetzen Sie v1.14.0-eksbuild.3 durch die neueste Version, die in der neuesten Versionstabelle für Ihre Cluster-Version aufgeführt ist.

    • Ersetzen Sie 111122223333 durch Ihre Konto-ID und AmazonEKSVPCCNIRole 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-Option PRESERVE (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 auf OVERWRITE ä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 auf none ä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 '{"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}}' aus dem Befehl. Wenn Sie eine Konfigurationseinstellung aktualisieren, ersetzen Sie "env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"} durch die Einstellung, die Sie festlegen möchten. In diesem Beispiel ist die Umgebungsvariable AWS_VPC_K8S_CNI_EXTERNALSNAT auf true gesetzt. Der von Ihnen angegebene Wert muss für das Konfigurationsschema gültig sein. Wenn Sie das Konfigurationsschema nicht kennen, führen Sie den Befehl aws eks describe-addon-configuration --addon-name vpc-cni --addon-version v1.14.0-eksbuild.3 aus und ersetzen Sie 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 "env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"} aus dem Befehl, sodass nichts übrig bleibt{}. 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-version v1.14.0-eksbuild.3 \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole \ --resolve-conflicts PRESERVE --configuration-values '{"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}}'

      Es kann einige Sekunden dauern, bis das Update abgeschlossen ist.

  4. Vergewissern Sie sich, dass die Add-on-Version aktualisiert wurde. Ersetzen Sie my-cluster mit dem Namen Ihres Clusters.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni

    Es 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 zu senden.

  1. 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 text

    Wenn 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.

  2. 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.

  3. 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
  4. 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 Version major.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 Version aus, 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
  5. 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
  6. (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-helper auf GitHub.