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 -IPv6
Familie 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
-
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
-
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
-
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>
-
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
-
(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.
-
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.
-
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.
-
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
-
Erstellen Sie eine Amazon VPC mit öffentlichen und privaten Subnetzen, die die Anforderungen von Amazon EKS und IPv6
erfüllt.
-
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
-
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
-
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
-
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
-
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}
-
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.
-
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
-
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
-
Erstellen Sie die -Rolle.
aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json
"
-
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)
-
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
-
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
-
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
-
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.
-
Erstellen Sie eine Knoten-IAM-Rolle.
-
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
Erstellen Sie die IAM-Richtlinie.
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy
--policy-document file://vpc-cni-ipv6-policy.json
-
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
-
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
-
Erstellen Sie die IAM-Rolle.
aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json
"
-
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
-
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
-
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)
-
Erstellen Sie eine verwaltete Knotengruppe.
-
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
-
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
-
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>
-
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
-
(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.
-
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.
-
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
-
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
-
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
.
-
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
-
Löschen Sie den AWS CloudFormation Stack, der die VPC erstellt hat.
aws cloudformation delete-stack --region $region_code --stack-name $vpc_stack_name