IPv6 -Adressen für ClusterPods, und services - Amazon EKS

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.

IPv6 -Adressen für ClusterPods, und services

Standardmäßig weist Kubernetes Ihren Pods and services IPv4-Adressen zu. Anstatt Ihren Pods und services IPv4-Adressen zuzuweisen, können Sie Ihren Cluster so konfigurieren, dass er ihnen IPv6-Adressen zuweist. Amazon EKS unterstützt keine Dual-Stack-Pods oder -services, wenngleich sie von Kubernetes in Version 1.23 und höher unterstützt werden. Daher können Sie Ihren Pods und services nicht sowohl IPv4- als auch IPv6-Adressen zuweisen.

Sie wählen aus, welche IP-Familie Sie für Ihren Cluster verwenden möchten, wenn Sie ihn erstellen. Sie können die Familie nach dem Erstellen des Clusters nicht mehr ändern.

Überlegungen zur Verwendung der -IPv6Familie für Ihren Cluster

  • Sie müssen einen neuen Cluster erstellen und angeben, dass Sie die IPv6-Familie für diesen Cluster verwenden möchten. Sie können die IPv6-Familie nicht für einen Cluster aktivieren, den Sie von einer früheren Version aktualisiert haben. Eine Anleitung zur Erstellung eines neuen Clusters finden Sie unter Erstellen eines Amazon-EKS-Clusters.

  • Die Version des Amazon-VPC-CNI-Add-ons, das Sie in Ihrem Cluster bereitstellen, muss Version 1.10.1 oder höher sein. Diese Version oder höher wird standardmäßig bereitgestellt. Nachdem Sie das Add-on bereitgestellt haben, können Sie Ihr Amazon VPC CNI-Add-on nicht auf eine niedrigere Version als 1.10.1 herabstufen, ohne zuerst alle Knoten in allen Knotengruppen in Ihrem Cluster zu entfernen.

  • Windows, Pods und services werden nicht unterstützt.

  • Wenn Sie Amazon EC2-Knoten verwenden, müssen Sie das Amazon VPC CNI-Add-on mit IP-Präfix-Delegation und IPv6 konfigurieren. Wenn Sie beim Erstellen Ihres Clusters die IPv6-Familie wählen, wird die Version 1.10.1 des Add-ons standardmäßig auf diese Konfiguration festgelegt. Dies ist sowohl bei einem selbstverwalteten als auch bei Amazon EKS Add-on der Fall. Weitere Informationen über die IP-Präfix-Delegation finden Sie unter Erhöhen Sie die Anzahl der verfügbaren IP-Adressen für Ihre Amazon-EC2-Knoten.

  • Wenn Sie einen Cluster erstellen, müssen die VPC und die von Ihnen angegebenen Subnetze über einen IPv6-CIDR-Block verfügen, der der VPC und den von Ihnen angegebenen Subnetzen zugewiesen ist. Sie müssen auch über einen IPv4-CIDR-Block verfügen. Dies liegt daran, dass eine VPC, selbst wenn Sie nur IPv6 verwenden möchten, immer noch einen IPv4-CIDR-Block benötigt, um zu funktionieren. Weitere Informationen finden Sie unter Zuordnen eines IPv6-CIDR-Blocks zu Ihrer VPC im Amazon-VPC-Benutzerhandbuch.

  • Wenn Sie Ihren Cluster und Ihre Knoten erstellen, müssen Sie Subnetze angeben, die für die automatische Zuweisung von IPv6-Adressen konfiguriert sind. Andernfalls können Sie Ihren Cluster und Ihre Knoten nicht bereitstellen. Diese Konfiguration ist standardmäßig deaktiviert. Weitere Informationen finden Sie unter Ändern des öffentlichen IPv6-Adressierungsattributs für Ihr Subnetz im Amazon-VPC-Benutzerhandbuch.

  • Die Routing-Tabellen, die Ihren Subnetzen zugewiesen sind, müssen Routen für IPv6-Adressen haben. Weitere Informationen finden Sie unter Migrieren zu IPv6 im Amazon VPC-Benutzerhandbuch.

  • Ihre Sicherheitsgruppen müssen IPv6-Adressen zulassen. Weitere Informationen finden Sie unter Migrieren zu IPv6 im Amazon VPC-Benutzerhandbuch.

  • Sie können nur IPv6 mit AWS Nitro-basierten Amazon EC2- oder Fargate-Knoten verwenden.

  • Sie können IPv6 nicht mit Sicherheitsgruppen für Pods mit Amazon EC2-Knoten verwenden. Sie können es jedoch mit Fargate-Knoten verwenden. Wenn Sie separate Sicherheitsgruppen für einzelne Pods benötigen, verwenden Sie die IPv4-Familie weiterhin mit Amazon-EC2-Knoten, oder verwenden Sie stattdessen Fargate-Knoten.

  • Wenn Sie zuvor benutzerdefinierte Netzwerke verwendet haben, um die Erschöpfung der IP-Adresse zu verringern, können Sie stattdessen IPv6 verwenden. Sie können benutzerdefinierte Netzwerke nicht mit IPv6 verwenden. Wenn Sie benutzerdefinierte Netzwerke für die Netzwerkisolierung verwenden, müssen Sie möglicherweise weiterhin benutzerdefinierte Netzwerke und die IPv4-Produktfamilie für Ihre Cluster verwenden.

  • Sie können IPv6 nicht mit AWS Outposts verwenden.

  • Pods und services wird nur eine IPv6-Adresse zugewiesen. Ihnen ist keine IPv4-Adresse zugewiesen. Da Pods über NAT auf der Instance selbst mit IPv4-Endpunkten kommunizieren können, werden DNS64 und NAT64 nicht benötigt. Wenn der Datenverkehr eine öffentliche IP-Adresse benötigt, wird die Quell-Netzwerkadresse des Datenverkehrs in eine öffentliche IP übersetzt.

  • Die Quell-IPv6-Adresse eines Pod ist keine Quell-Netzwerkadresse, die bei der Kommunikation außerhalb der VPC in die IPv6-Adresse des Knotens übersetzt wird. Sie wird über ein Internet-Gateway oder ein Internet-Gateway für nur ausgehenden Verkehr weitergeleitet.

  • Allen Knoten wird eine IPv4- und IPv6-Adresse zugewiesen.

  • Der Amazon FSx for Lustre-CSI-Treiber wird nicht unterstützt.

  • Sie können Version 2.3.1 oder höher des - AWS Load BalancerControllers verwenden, um den Anwendungs- oder Netzwerkverkehr im IP-Modus, aber nicht IPv6 Pods im Instance-Modus, auf auszugleichen. Weitere Informationen finden Sie unter Was ist die AWS Load Balancer Controller?.

  • Sie müssen eine IPv6-IAM-Richtlinie an die IAM- oder CNI IAM-Rolle Ihres Knotens anhängen. Zwischen den beiden empfehlen wir, dass Sie sie an eine CNI IAM-Rolle anfügen. Weitere Informationen finden Sie unter Erstellen Sie eine IAM-Richtlinie für Cluster, die die IPv6-Familie verwendet und Schritt 1: Erstellen Sie die IAM-Rolle für das Amazon VPC CNI plugin for Kubernetes.

  • Jeder Fargate-Pod erhält eine IPv6-Adresse vom CIDR, die für das Subnetz angegeben ist, in dem er bereitgestellt wird. Die zugrunde liegende Hardwareeinheit, die Fargate-Pods ausführt, erhält eine eindeutige IPv4- und IPv6-Adresse von den CIDRs, die dem Subnetz zugewiesen sind, in dem die Hardwareeinheit bereitgestellt wird.

  • Wir empfehlen Ihnen, eine gründliche Bewertung Ihrer Anwendungen, Amazon-EKS-Add-ons und - AWS Services durchzuführen, in die Sie vor der Bereitstellung von IPv6 Clustern integrieren. Dies soll sicherstellen, dass mit IPv6 alles wie erwartet funktioniert.

  • Die Verwendung des IPv6-Endpunkts des Instance-Metadatenservice von Amazon EC2 wird bei Amazon EKS nicht unterstützt.

  • Beim Erstellen einer selbstverwalteten Knotengruppe in einem Cluster, der die IPv6-Familie nutzt, müssen die Benutzerdaten die folgenden BootstrapArguments für die Datei bootstrap.sh enthalten, die beim Starten des Knotens ausgeführt wird. Ersetzen Sie your-cidr durch den IPv6-CIDR-Bereich der VPC Ihres Clusters.

    --ip-family ipv6 --service-ipv6-cidr your-cidr

    Wenn Sie den IPv6 CIDR Bereich für Ihren Cluster nicht kennen, können Sie ihn mit dem folgenden Befehl sehen (erfordert die AWS CLI Version 2.4.9 oder höher).

    aws eks describe-cluster --name my-cluster --query cluster.kubernetesNetworkConfig.serviceIpv6Cidr --output text

Bereitstellen eines IPv6-Clusters und verwalteter Amazon-Linux-Knoten

In diesem Tutorial stellen Sie eine IPv6-Amazon-VPC, einen Amazon-EKS-Cluster mit der IPv6-Familie und eine verwaltete Knotengruppe mit Amazon-Linux-Knoten von Amazon EC2 bereit. Sie können Amazon-EC2-Windows-Knoten nicht in einem IPv6-Cluster bereitstellen. Sie können Fargate-Knoten auch in Ihrem Cluster bereitstellen, obwohl diese Anweisungen in diesem Thema der Einfachheit halber nicht enthalten sind.

Bevor Sie einen Cluster für den Produktionseinsatz erstellen, empfehlen wir Ihnen, sich mit allen Einstellungen vertraut zu machen und einen Cluster mit den Einstellungen bereitzustellen, die Ihren Anforderungen entsprechen. Weitere Informationen finden Sie unter Erstellen eines Amazon-EKS-Clusters, Verwaltete Knotengruppen und in den Überlegungen zu diesem Thema. Sie können nur einige Einstellungen aktivieren, wenn Sie Ihren Cluster erstellen.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, müssen Sie die folgenden Werkzeuge und Ressourcen installieren und konfigurieren, die Sie zum Erstellen und Verwalten eines Amazon-EKS-Clusters benötigen.

Es werden Verfahren bereitgestellt, um die Ressourcen mit entweder eksctl oder der AWS CLI zu erstellen. Sie können die Ressourcen auch mithilfe der bereitstellen AWS Management Console, aber diese Anweisungen werden in diesem Thema der Einfachheit halber nicht bereitgestellt.

eksctl
Voraussetzung

eksctl-Version 0.172.0 oder höher ist auf Ihrem Computer installiert. Informationen zum Installieren oder Aktualisieren finden Sie in der Dokumentation zu eksctl unter Installation.

Bereitstellen eines IPv6-Clusters mit eksctl
  1. Erstellen Sie die Datei ipv6-cluster.yaml. Kopieren Sie den folgenden Befehl auf Ihr Gerät. Nehmen Sie nach Bedarf die folgenden Änderungen am Befehl vor und führen Sie anschließend den geänderten Befehl aus:

    • Ersetzen Sie my-cluster durch Ihren Cluster-Namen. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Er muss mit einem alphabetischen Zeichen beginnen und darf nicht mehr als 100 Zeichen umfassen.

    • Ersetzen Sie region-code durch eine AWS-Region , die von Amazon EKS unterstützt wird. Eine Liste von finden AWS-Regionen Sie unter Amazon-EKS-Endpunkte und -Kontingente im AWS Allgemeinen Referenzhandbuch für .

    • Der Wert für version mit der Version Ihres Clusters. Weitere Informationen finden Sie unter Unterstützte Amazon-EKS-Kubernetes-Version.

    • Ersetzen Sie my-nodegroup durch einen Namen für Ihre Knotengruppe. Der Knotengruppenname darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten.

    • Ersetzen Sie t3.medium durch jeden beliebigen Instance-Typ von AWS Nitro System.

    cat >ipv6-cluster.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: "X.XX" kubernetesNetworkConfig: ipFamily: IPv6 addons: - name: vpc-cni version: latest - name: coredns version: latest - name: kube-proxy version: latest iam: withOIDC: true managedNodeGroups: - name: my-nodegroup instanceType: t3.medium EOF
  2. Erstellen Sie Ihren Cluster.

    eksctl create cluster -f ipv6-cluster.yaml

    Die Clustererstellung dauert mehrere Minuten. Fahren Sie nicht fort, bis Sie die letzte Ausgabezeile sehen, die der folgenden Ausgabe ähnelt.

    [...]
    [✓]  EKS cluster "my-cluster" in "region-code" region is ready
  3. Vergewissern Sie sich, dass Standard-Pods IPv6-Adressen zugewiesen wurden.

    kubectl get pods -n kube-system -o wide

    Eine Beispielausgabe sieht wie folgt aus.

    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES aws-node-rslts 1/1 Running 1 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> aws-node-t74jh 1/1 Running 0 5m32s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-cw7w2 1/1 Running 0 56m 2600:1f13:b66:8203:34e5:: ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-tx6n8 1/1 Running 0 56m 2600:1f13:b66:8203:34e5::1 ip-192-168-253-70.region-code.compute.internal <none> <none> kube-proxy-btpbk 1/1 Running 0 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> kube-proxy-jjk2g 1/1 Running 0 5m33s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none>
  4. Vergewissern Sie sich, dass Standard-Services IPv6-Adressen zugewiesen wurden.

    kubectl get services -n kube-system -o wide

    Eine Beispielausgabe sieht wie folgt aus.

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kube-dns ClusterIP fd30:3087:b6c2::a <none> 53/UDP,53/TCP 57m k8s-app=kube-dns
  5. (Optional) Stellen Sie eine Beispielanwendung oder den AWS Load Balancer Controller und eine Beispielanwendung bereit, um ein Load Balancing des Datenverkehrs von Anwendungen oder Netzwerken in Richtung IPv6-Pods vorzunehmen.

  6. Nachdem Sie mit dem Cluster und den Knoten fertig sind, die Sie für dieses Tutorial erstellt haben, sollten Sie die Ressourcen, die Sie erstellt haben, mit dem folgenden Befehl bereinigen.

    eksctl delete cluster my-cluster
AWS CLI
Voraussetzung

Version 2.12.3 oder höher oder Version 1.27.160 oder höher der AWS Command Line Interface (AWS CLI), die auf Ihrem Gerät oder installiert und konfiguriert ist AWS CloudShell. Um Ihre aktuelle Version zu überprüfen, verwenden Sie aws --version | cut -d / -f2 | cut -d ' ' -f1. Paket-Manager wie yum, apt-get oder Homebrew für macOS sind oft mehrere Versionen hinter der neuesten Version von AWS CLI. Informationen zur Installation der neuesten Version von finden Sie unter Installation, Aktualisierung und Deinstallation der AWS CLI und Schnellkonfiguration mit aws configure im AWS Command Line Interface -Benutzerhandbuch. Die in installierte AWS CLI Version liegt AWS CloudShell möglicherweise auch mehrere Versionen hinter der neuesten Version. Informationen zum Aktualisieren finden Sie unter Installieren AWS CLI von in Ihrem Stammverzeichnis im AWS CloudShell -Benutzerhandbuch. Wenn Sie die verwenden AWS CloudShell, müssen Sie möglicherweise Version 2.12.3 oder höher oder 1.27.160 oder höher der installieren AWS CLI, da die in der installierte AWS CLI Standardversion AWS CloudShell möglicherweise eine frühere Version ist.

Wichtig
  • Sie müssen alle Schritte in diesem Verfahren als derselbe Benutzer ausführen. Führen Sie den folgenden Befehl aus, um den aktuellen Benutzer zu überprüfen:

    aws sts get-caller-identity
  • Sie müssen alle Schritte in diesem Verfahren in derselben Shell ausführen. In mehreren Schritten in den vorherigen Schritten werden festgelegte Variablen verwendet. Schritte, die Variablen verwenden, funktionieren nicht ordnungsgemäß, wenn die Variablenwerte in einer anderen Shell festgelegt sind. Wenn Sie die AWS CloudShell verwenden, um das folgende Verfahren abzuschließen, denken Sie daran, dass Ihre Shell-Sitzung endet, wenn Sie etwa 20 bis 30 Minuten lang nicht mit der Tastatur oder dem Zeiger damit interagieren. Laufende Prozesse zählen nicht als Interaktionen.

  • Die Anweisungen sind für die Bash-Shell geschrieben und müssen möglicherweise in anderen Shells angepasst werden.

So erstellen Sie Ihren Cluster mit der AWS CLI

Ersetzen Sie alle example values in den Schritten dieses Verfahrens mit eigenen Werten.

  1. Führen Sie die folgenden Befehle aus, um einige in späteren Schritten verwendete Variablen festzulegen. Ersetzen Sie durch region-code die AWS-Region , in der Sie Ihre Ressourcen bereitstellen möchten. Der Wert kann jede sein AWS-Region , die von Amazon EKS unterstützt wird. Eine Liste von finden AWS-Regionen Sie unter Amazon-EKS-Endpunkte und -Kontingente im AWS Allgemeinen Referenzhandbuch für . Ersetzen Sie my-cluster durch Ihren Cluster-Namen. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Er muss mit einem alphabetischen Zeichen beginnen und darf nicht mehr als 100 Zeichen umfassen. Ersetzen Sie my-nodegroup durch einen Namen für Ihre Knotengruppe. Der Knotengruppenname darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten. Ersetzen Sie 111122223333 durch Ihre Konto-ID.

    export region_code=region-code export cluster_name=my-cluster export nodegroup_name=my-nodegroup export account_id=111122223333
  2. Erstellen Sie eine Amazon VPC mit öffentlichen und privaten Subnetzen, die die Anforderungen von Amazon EKS und IPv6 erfüllt.

    1. Führen Sie den folgenden Befehl aus, um eine Variable für Ihren AWS CloudFormation Stack-Namen festzulegen. Sie können my-eks-ipv6-vpc mit einem beliebigen Namen ersetzen, den Sie wählen.

      export vpc_stack_name=my-eks-ipv6-vpc
    2. Erstellen Sie eine IPv6 VPC mithilfe einer - AWS CloudFormation Vorlage.

      aws cloudformation create-stack --region $region_code --stack-name $vpc_stack_name \ --template-url https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-ipv6-vpc-public-private-subnets.yaml

      Das Erstellen des Stacks nimmt einige Minuten in Anspruch. Führen Sie den folgenden Befehl aus. Fahren Sie erst mit dem nächsten Schritt fort, wenn die Ausgabe des Befehls CREATE_COMPLETE ist.

      aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name --query Stacks[].StackStatus --output text
    3. Rufen Sie die IDs der erstellten öffentlichen Subnetze ab.

      aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SubnetsPublic`].OutputValue' --output text

      Eine Beispielausgabe sieht wie folgt aus.

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE
    4. Aktivieren Sie die Option „IPv6-Adressen automatisch zuweisen“ für die erstellten öffentlichen Subnetze.

      aws ec2 modify-subnet-attribute --region $region_code --subnet-id subnet-0a1a56c486EXAMPLE --assign-ipv6-address-on-creation aws ec2 modify-subnet-attribute --region $region_code --subnet-id subnet-099e6ca77aEXAMPLE --assign-ipv6-address-on-creation
    5. Rufen Sie die Namen der Subnetze und Sicherheitsgruppen ab, die von der Vorlage aus dem bereitgestellten AWS CloudFormation Stack erstellt wurden, und speichern Sie sie in Variablen zur Verwendung in einem späteren Schritt.

      security_groups=$(aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SecurityGroups`].OutputValue' --output text) public_subnets=$(aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SubnetsPublic`].OutputValue' --output text) private_subnets=$(aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \ --query='Stacks[].Outputs[?OutputKey==`SubnetsPrivate`].OutputValue' --output text) subnets=${public_subnets},${private_subnets}
  3. Erstellen Sie eine Cluster-IAM-Rolle und fügen Sie ihr die erforderliche von Amazon EKS IAM verwaltete Richtlinie an. Von Amazon EKS verwaltete -KubernetesCluster rufen andere - AWS Services in Ihrem Namen auf, um die Ressourcen zu verwalten, die Sie mit dem Service verwenden.

    1. Führen Sie den folgenden Befehl aus, um die Datei eks-cluster-role-trust-policy.json zu erstellen.

      cat >eks-cluster-role-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
    2. Führen Sie den folgenden Befehl aus, um eine Variable für Ihren Rollennamen festzulegen. Sie können myAmazonEKSClusterRole mit einem beliebigen Namen ersetzen, den Sie wählen.

      export cluster_role_name=myAmazonEKSClusterRole
    3. Erstellen Sie die -Rolle.

      aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    4. Rufen Sie den ARN der IAM-Rolle ab und speichern Sie ihn für einen späteren Schritt in einer Variablen.

      cluster_iam_role=$(aws iam get-role --role-name $cluster_role_name --query="Role.Arn" --output text)
    5. Hängen Sie die erforderliche von Amazon EKS verwaltete IAM-Richtlinie an die Rolle an.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name $cluster_role_name
  4. Erstellen Sie Ihren Cluster.

    aws eks create-cluster --region $region_code --name $cluster_name --kubernetes-version 1.XX \ --role-arn $cluster_iam_role --resources-vpc-config subnetIds=$subnets,securityGroupIds=$security_groups \ --kubernetes-network-config ipFamily=ipv6
    1. Anmerkung

      Sie erhalten möglicherweise eine Fehlermeldung, dass eine der Availability Zones in Ihrer Anfrage nicht über genügend Kapazität zum Erstellen eines Amazon-EKS-Clusters verfügt. Wenn dies der Fall ist, enthält die Fehlerausgabe die Availability Zones, die einen neuen Cluster unterstützen können. Versuchen Sie, Ihren Cluster mit mindestens zwei Subnetzen erneut zu erstellen, die sich in den unterstützten Availability Zones für Ihr Konto befinden. Weitere Informationen finden Sie unter Unzureichende Kapazität.

      Die Erstellung des Clusters dauert mehrere Minuten. Führen Sie den folgenden Befehl aus. Fahren Sie erst mit dem nächsten Schritt fort, wenn die Ausgabe aus dem Befehl ACTIVE ist.

      aws eks describe-cluster --region $region_code --name $cluster_name --query cluster.status
  5. Erstellen oder aktualisieren Sie eine kubeconfig-Datei für Ihren Cluster, sodass Sie mit Ihrem Cluster kommunizieren können.

    aws eks update-kubeconfig --region $region_code --name $cluster_name

    Standardmäßig wird die config-Datei in ~/.kube erstellt oder die Konfiguration des neuen Clusters wird einer vorhandenen config-Datei in ~/.kube hinzugefügt.

  6. Erstellen Sie eine Knoten-IAM-Rolle.

    1. Führen Sie den folgenden Befehl aus, um die Datei vpc-cni-ipv6-policy.json zu erstellen.

      cat >vpc-cni-ipv6-policy <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] } ] } EOF
    2. Erstellen Sie die IAM-Richtlinie.

      aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
    3. Führen Sie den folgenden Befehl aus, um die Datei node-role-trust-relationship.json zu erstellen.

      cat >node-role-trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
    4. Führen Sie den folgenden Befehl aus, um eine Variable für Ihren Rollennamen festzulegen. Sie können AmazonEKSNodeRole mit einem beliebigen Namen ersetzen, den Sie wählen.

      export node_role_name=AmazonEKSNodeRole
    5. Erstellen Sie die IAM-Rolle.

      aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json"
    6. Fügen Sie die IAM-Richtlinie an die IAM-Rolle an.

      aws iam attach-role-policy --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name $node_role_name
      Wichtig

      Der Einfachheit halber wird in diesem Tutorial die Richtlinie an diese IAM-Rolle angehängt. In einem Produktions-Cluster empfehlen wir jedoch, die Richtlinie an eine separate IAM-Rolle anzuhängen. Weitere Informationen finden Sie unter Konfigurieren der Amazon VPC CNI plugin for Kubernetes zur Verwendung von IAM-Rollen für Servicekonten (IRSA).

    7. Hängen Sie die beiden erforderlichen IAM-verwalteten Richtlinien an die IAM-Rolle an.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name $node_role_name aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name $node_role_name
    8. Rufen Sie den ARN der IAM-Rolle ab und speichern Sie ihn für einen späteren Schritt in einer Variablen.

      node_iam_role=$(aws iam get-role --role-name $node_role_name --query="Role.Arn" --output text)
  7. Erstellen Sie eine verwaltete Knotengruppe.

    1. Zeigen Sie die IDs der Subnetze an, die Sie in einem vorherigen Schritt erstellt haben.

      echo $subnets

      Eine Beispielausgabe sieht wie folgt aus.

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE,subnet-0377963d69EXAMPLE,subnet-0c05f819d5EXAMPLE
    2. Erstellen Sie die Knotengruppe. Ersetzen Sie 0a1a56c486EXAMPLE, 099e6ca77aEXAMPLE, 0377963d69EXAMPLE und 0c05f819d5EXAMPLE mit den im vorherigen Schritt zurückgegebenen Werten. Entfernen Sie unbedingt die Kommata zwischen Subnetz-IDs aus der vorherigen Ausgabe im folgenden Befehl. Sie können t3.medium mit jedem beliebigen AWS -Nitro-System-Instance-Typ ersetzen.

      aws eks create-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name \ --subnets subnet-0a1a56c486EXAMPLE subnet-099e6ca77aEXAMPLE subnet-0377963d69EXAMPLE subnet-0c05f819d5EXAMPLE \ --instance-types t3.medium --node-role $node_iam_role

      Das Erstellen der Knotengruppe nimmt einige Minuten in Anspruch. Führen Sie den folgenden Befehl aus. Fahren Sie nicht mit dem nächsten Schritt fort, bis die zurückgegebene Ausgabe ACTIVE ist.

      aws eks describe-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name \ --query nodegroup.status --output text
  8. Vergewissern Sie sich, dass den Standard-Pods in der IP-Spalte IPv6-Adressen zugewiesen wurden.

    kubectl get pods -n kube-system -o wide

    Eine Beispielausgabe sieht wie folgt aus.

    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES aws-node-rslts 1/1 Running 1 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> aws-node-t74jh 1/1 Running 0 5m32s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-cw7w2 1/1 Running 0 56m 2600:1f13:b66:8203:34e5:: ip-192-168-253-70.region-code.compute.internal <none> <none> coredns-85d5b4454c-tx6n8 1/1 Running 0 56m 2600:1f13:b66:8203:34e5::1 ip-192-168-253-70.region-code.compute.internal <none> <none> kube-proxy-btpbk 1/1 Running 0 5m36s 2600:1f13:b66:8200:11a5:ade0:c590:6ac8 ip-192-168-34-75.region-code.compute.internal <none> <none> kube-proxy-jjk2g 1/1 Running 0 5m33s 2600:1f13:b66:8203:4516:2080:8ced:1ca9 ip-192-168-253-70.region-code.compute.internal <none> <none>
  9. Vergewissern Sie sich, dass den Standard-Services in der IP-Spalte IPv6-Adressen zugewiesen wurden.

    kubectl get services -n kube-system -o wide

    Eine Beispielausgabe sieht wie folgt aus.

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kube-dns ClusterIP fd30:3087:b6c2::a <none> 53/UDP,53/TCP 57m k8s-app=kube-dns
  10. (Optional) Stellen Sie eine Beispielanwendung oder den AWS Load Balancer Controller und eine Beispielanwendung bereit, um ein Load Balancing des Datenverkehrs von Anwendungen oder Netzwerken in Richtung IPv6-Pods vorzunehmen.

  11. Nachdem Sie mit dem Cluster und den Knoten fertig sind, die Sie für dieses Tutorial erstellt haben, sollten Sie die Ressourcen, die Sie erstellt haben, mit den folgenden Befehlen bereinigen. Stellen Sie sicher, dass Sie keine der Ressourcen außerhalb dieses Tutorials verwenden, bevor Sie sie löschen.

    1. Wenn Sie diesen Schritt in einer anderen Shell als die vorherigen Schritte ausführen, legen Sie die Werte aller in den vorherigen Schritten verwendeten Variablen fest und ersetzen Sie die example values mit den Werten, die Sie angegeben haben, als Sie die vorherigen Schritte ausgeführt haben. Wenn Sie diesen Schritt in derselben Shell ausführen, in der Sie die vorherigen Schritte ausgeführt haben, fahren Sie mit dem nächsten Schritt fort.

      export region_code=region-code export vpc_stack_name=my-eks-ipv6-vpc export cluster_name=my-cluster export nodegroup_name=my-nodegroup export account_id=111122223333 export node_role_name=AmazonEKSNodeRole export cluster_role_name=myAmazonEKSClusterRole
    2. Löschen Sie Ihre Knotengruppe.

      aws eks delete-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name

      Dies dauert in der Regel einige Minuten. Führen Sie den folgenden Befehl aus. Fahren Sie nicht mit dem nächsten Schritt fort, bis die Ausgabe zurückgegeben wurde.

      aws eks list-nodegroups --region $region_code --cluster-name $cluster_name --query nodegroups --output text
    3. Löschen Sie den -Cluster.

      aws eks delete-cluster --region $region_code --name $cluster_name

      Das Löschen des Clusters nimmt einige Minuten in Anspruch. Stellen Sie vor dem Fortfahren sicher, dass der Cluster mit dem folgenden Befehl gelöscht wird.

      aws eks describe-cluster --region $region_code --name $cluster_name

      Fahren Sie erst mit dem nächsten Schritt fort, wenn Ihre Ausgabe der folgenden Ausgabe ähnelt.

      An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: my-cluster.
    4. Löschen Sie die IAM-Ressourcen, die Sie erstellt haben. Ersetzen Sie AmazonEKS_CNI_IPv6_Policy mit dem von Ihnen gewählten Namen, wenn Sie einen anderen Namen als den in den vorherigen Schritten verwendeten gewählt haben.

      aws iam detach-role-policy --role-name $cluster_role_name --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy aws iam detach-role-policy --role-name $node_role_name --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy aws iam detach-role-policy --role-name $node_role_name --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly aws iam detach-role-policy --role-name $node_role_name --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy aws iam delete-policy --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy aws iam delete-role --role-name $cluster_role_name aws iam delete-role --role-name $node_role_name
    5. Löschen Sie den AWS CloudFormation Stack, der die VPC erstellt hat.

      aws cloudformation delete-stack --region $region_code --stack-name $vpc_stack_name