Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
教程:将 IPv6
地址分配给 pods 和 services
默认情况下,Kubernetes 将 IPv4
地址分配给您的 pods 和 services。您可以将集群配置为向其分配 IPv6
地址,而不是将 IPv4
地址分配给 pods 和 services。Amazon EKS 不支持双堆叠 pods 或 services,即使 Kubernetes 的 1.23
版本及更高版本中支持此类堆叠也是如此。因此,您无法将 IPv4
和 IPv6
地址同时分配给 pods 和 services。
创建集群时,您可以选择要用于集群的 IP 系列。集群在创建之后无法更改系列。
集群使用 IPv6
系列的注意事项:
-
您必须创建 1.21
版或更高版本的新集群,并指定该集群要使用 IPv6
系列。您无法为从前一版本更新的集群启用 IPv6
系列。有关如何创建新集群的说明,请参阅创建 Amazon EKS 集群。
-
您部署到集群的 Amazon VPC CNI 附加组件的版本必须为 1.10.1
版或更高版本。默认情况下,此版本或更高版本随新的 1.21
版或更高版本的集群一起部署。部署附加组件后,您无法在不先删除集群所有节点组中的所有节点的情况下将 Amazon VPC CNI 附加组件版本降级到 1.10.1
版以下。
-
不支持 Windows pods 和 services。
-
如果您使用 Amazon EC2 节点,则必须使用 IP 前缀委派和 IPv6
配置 Amazon VPC CNI 附加组件。如果您在创建集群时选择 IPv6
系列,则 1.10.1
版的附加组件默认采用此配置。自行管理或 Amazon EKS 附加组件均为属于此种情况。有关 IP 前缀委派的更多信息,请参阅 提高 Amazon EC2 节点的可用 IP 地址数量。
-
创建集群时,您指定的 VPC 和子网必须具有分配给您指定的 VPC 和子网的 IPv6
CIDR 块。您还必须为其分配一个 IPv4
CIDR 块。这是因为,即使您只想使用 IPv6
,VPC 仍然需要 IPv4
CIDR 块才能正常工作。有关更多信息,请参阅《Amazon VPC 用户指南》中的将 IPv6
CIDR 块与您的 VPC 关联。
-
创建集群和节点时,必须将配置指定为自动分配 IPv6
地址的子网。否则,您无法部署集群和节点。默认情况下,将禁用此配置。有关更多信息,请参阅《Amazon VPC 用户指南》中的修改子网的 IPv6
寻址属性。
-
分配给子网的路由表必须有 IPv6
地址的路由。有关更多信息,请参阅《Amazon VPC 用户指南》中的迁移到 IPv6
。
-
您的安全组必须允许 IPv6
地址。有关更多信息,请参阅《Amazon VPC 用户指南》中的迁移到 IPv6
。
-
您只能将 IPv6
与 Amazon 基于 Nitro 的 Amazon EC2 或 Fargate 节点一起使用。
-
您无法将 IPv6
与 教程:适用于 pods 的安全组 及 Amazon EC2 节点一起使用。但是,您可以将其与 Fargate 节点一起使用。如果您需要为各个 pods 使用单独的安全组,请继续将 IPv4
系列与 Amazon EC2 节点一起使用,或者改用 Fargate 节点。
-
如果您以前使用过自定义联网帮助缓解 IP 地址耗尽,您可以改用 IPv6
。您不能将自定义联网与 IPv6
一起使用。如果您使用自定义联网进行网络隔离,则可能需要为集群继续使用自定义联网和 IPv4
系列。
-
您不能将 IPv6
与 Amazon Outposts 一起使用。
-
Pods 和 services 只分配了 IPv6
地址。系统不会为其分配 IPv4
地址。由于 pods 能够通过实例本身上的 NAT 与 IPv4
端点通信,因此不需要 DNS64 和 NAT64。如果流量需要公有 IP 地址,则流量将源网络地址转换为公有 IP。
-
在 VPC 之外通信时,pod 的源 IPv6
地址并非转换为节点 IPv6
地址的源网络地址。它使用互联网网关或仅出口互联网网关进行路由。
-
所有节点均已分配 IPv4
和 IPv6
地址。
-
不支持 Amazon FSx for Lustre CSI 驱动程序。
-
您可以使用 2.3.1
版或更高版本的 Amazon 负载均衡器控制器在 IP 模式(而不是实例模式)下对应用程序 或到 IPv6
pods 的网络流量进行负载均衡。有关更多信息,请参阅安装 Amazon Load Balancer Controller 附加组件。
-
您必须将 IPv6
IAM policy 附加到节点 IAM 或 CNI IAM 角色。在两者之间,我们建议您将其附加到 CNI IAM 角色。有关更多信息,请参阅 为使用 IPv6 系列的集群创建 IAM policy 和 步骤 1:创建 Amazon VPC CNI plugin for Kubernetes IAM 角色:
-
每个 pod 容器都会收到来自为其部署的子网指定的 CIDR 的 IPv6
地址。运行 Fargate pods 的底层硬件单元从分配给部署硬件单元的子网的 CIDR 获取唯一的 IPv4
和 IPv6
地址。
-
我们建议您在部署 IPv6
集群之前对集成的应用程序、Amazon EKS 附加组件和 Amazon 服务进行全面的评估。这是为了确保 IPv6
的所有功能按预期运行。
-
Amazon EKS 不支持使用 Amazon EC2 实例元数据服务 IPv6
端点。
-
您不能将 IPv6
与 Calico 网络策略引擎附加组件一起使用。
-
您必须有 ICP 异常才能使用 IPv6
,因为 Amazon IPv6
CIDR 来自公有 IP 地址范围。有关更多信息,请参阅 Download China ICP guide(下载中国 ICP 指南)。您可以在 Amazon Web Services Management Console 中启动该请求。
-
在集群中创建使用 IPv6
系列的自行管理节点组时,用户数据必须包含在节点启动时运行的 bootstrap.sh
文件的以下 BootstrapArguments
。使用您集群 VPC 的 IPv6
CIDR 范围替换 your-cidr
。
--ip-family ipv6 --service-ipv6-cidr your-cidr
如果您不知道集群的 IPv6
CIDR
范围,可以使用以下命令查看(需要 Amazon CLI 的 2.4.9
版本或更高版本)。
aws eks describe-cluster --name my-cluster
--query cluster.kubernetesNetworkConfig.serviceIpv6Cidr --output text
部署 IPv6
集群和 Amazon Linux 托管节点
在本教程中,您将部署 IPv6
Amazon VPC、具有 IPv6
系列的 Amazon EKS 集群以及具有 Amazon EC2 Amazon Linux 节点的托管节点组。您无法在 IPv6
集群中部署 Amazon EC2 Windows 节点。您还可以将 Fargate 节点部署到集群,但为了简单起见,本主题中没有提供这些说明。
创建用于生产用途的集群前,我们建议您熟悉所有设置,并使用符合您要求的设置部署集群。有关更多信息,请参阅 创建 Amazon EKS 集群、托管节点组 和本主题中的注意事项。一些设置仅在创建集群时才能启用。
先决条件
在开始使用本教程之前,您必须安装并配置创建和管理 Amazon EKS 集群所需的以下工具和资源。
-
您的设备或 Amazon CloudShell 上安装了 kubectl
命令行工具。该版本可以与集群的 Kubernetes 版本相同,或者最多早于或晚于该版本一个次要版本。例如,如果您的集群版本为 1.24
,则可以将 kubectl
的 1.23
、1.24
或 1.25
版本与之配合使用。要安装或升级 kubectl
,请参阅 安装或更新 kubectl。对于本教程,版本必须为 1.21
或更高版本。
-
您正在使用的 IAM 安全主体必须具有使用 Amazon EKS IAM 角色和服务相关角色的权限、Amazon CloudFormation 以及 VPC 和相关资源。有关更多信息,请参阅 IAM 用户指南中的用于 Amazon Elastic Kubernetes Service 的操作、资源和条件密钥和使用服务相关角色。
我们提供使用 eksctl
或 Amazon CLI 创建资源的程序。您还可以使用 Amazon Web Services Management Console 部署资源。但为了简单起见,本主题中没有提供这些说明。
- eksctl
-
先决条件
您的计算机上安装了 eksctl
版本 0.135.0
或更高版本。要安装或更新到该版本,请参阅 安装或更新 eksctl。
使用 eksctl
部署 IPv6
集群
-
创建 ipv6-cluster.yaml
文件。将以下命令复制到您的设备。根据需要对该命令进行以下修改,然后运行修改后的命令:
-
将 my-cluster
替换为您的集群名称。名称只能包含字母数字字符(区分大小写)和连字符。该名称必须以字母字符开头,且不得超过 100 个字符。
-
将 region-code
替换为 Amazon EKS 支持的任一 Amazon Web Services 区域。有关 Amazon Web Services 区域列表,请参阅 Amazon 一般参考中的 Amazon EKS 端点和配额。
-
version
的值必须为 1.21
或更高版本的支持的 Amazon EKS Kubernetes 版本。
-
将 my-nodegroup
替换为您的节点组名称。节点组名称的长度不能超过 63 个字符。它必须以字母或数字开头,但也可以包括其余字符的连字符和下划线。
-
将 t3.medium
替换为任何 Amazon Nitro 系统实例类型。
cat >ipv6-cluster.yaml <<EOF
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-cluster
region: region-code
version: "1.21
"
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
-
创建您的集群。
eksctl create cluster -f ipv6-cluster
.yaml
创建集群需要几分钟时间。在看到输出的最后一行(与以下输出类似)之前,不要继续操作。
...
[✓] EKS cluster "my-cluster
" in "region-code
" region is ready
-
确认默认 pods 已分配 IPv6
地址。
kubectl get pods -n kube-system -o wide
输出示例如下。
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>
-
确认默认服务已分配 IPv6
地址。
kubectl get services -n kube-system -o wide
输出示例如下。
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
-
(可选)部署示例应用程序或部署 Amazon Load Balancer Controller 和示例应用程序以对应用程序或至 IPv6
pods 的网络流量进行负载均衡。
-
在使用完成针对本教程而创建的集群和节点后,应使用以下命令清理创建的资源。
eksctl delete cluster my-cluster
- Amazon CLI
-
先决条件
您的设备或 Amazon CloudShell 上安装并配置了 2.11.3
版或更高版本,或 1.27.93
版或更高版本的 Amazon CLI。您可以使用 aws --version | cut -d / -f2 | cut -d ' ' -f1
检查您的当前版本。软件包管理器(如 yum
、apt-get
或适用于 macOS 的 Homebrew)通常比 Amazon CLI 的最新版本落后几个版本。要安装最新版本,请参阅《Amazon Command Line Interface 用户指南》中的安装、更新和卸载 Amazon CLI 和使用 aws configure
进行快速配置。Amazon CloudShell 中安装的 Amazon CLI 版本也可能比最新版本落后几个版本。要对其进行更新,请参阅《Amazon CloudShell 用户指南》中的将 Amazon CLI 安装到您的主目录。如果您使用 Amazon CloudShell,则可能需要安装版本 2.11.3
或更高版本或者 1.27.93
版或更高版本的 Amazon CLI,因为 Amazon CloudShell 中安装的默认 Amazon CLI 版本可能是较早的版本。
-
您必须以同一用户身份完成此程序中的所有步骤。
-
您必须在同一 shell 中完成此程序中的所有步骤。有几个步骤使用了之前步骤中设置的变量。如果在不同的 shell 中设置变量值,则使用这些变量的步骤将无法正常运行。如果使用 Amazon CloudShell 完成以下程序,请记住,如果您在大约 20–30 分钟内没有使用键盘或指针与其交互,则 shell 会话将结束。正在运行的进程不算作交互。
-
这些说明是针对 Bash shell 编写的,在其他 shell 中可能需要调整。
使用 Amazon CLI 创建集群
将此程序步骤中的所有 example values
替换为您自己的值。
-
运行以下命令以设置在后面的步骤中使用的一些变量。将 region-code
替换为您想要在其中部署资源的 Amazon Web Services 区域。该值可以是 Amazon EKS 支持的任何 Amazon Web Services 区域。有关 Amazon Web Services 区域列表,请参阅 Amazon 一般参考中的 Amazon EKS 端点和配额。将 my-cluster
替换为您的集群名称。名称只能包含字母数字字符(区分大小写)和连字符。该名称必须以字母字符开头,且不得超过 100 个字符。将 my-nodegroup
替换为您的节点组名称。节点组名称的长度不能超过 63 个字符。它必须以字母或数字开头,但也可以包括其余字符的连字符和下划线。请将 111122223333
替换为您的账户 ID。
export region_code=region-code
export cluster_name=my-cluster
export nodegroup_name=my-nodegroup
export account_id=111122223333
-
创建具有公有和私有子网且符合 Amazon EKS 和 IPv6
要求的 Amazon VPC。
-
运行以下命令设置 Amazon CloudFormation 堆栈名称的变量。您可以将 my-eks-ipv6-vpc
替换为您选择的任何名称。
export vpc_stack_name=my-eks-ipv6-vpc
-
使用 Amazon CloudFormation 模板创建 IPv6
VPC。
aws cloudformation create-stack --region $region_code --stack-name $vpc_stack_name \
--template-url https://s3.cn-north-1.amazonaws.com.cn/amazon-eks/cloudformation/2020-10-29/amazon-eks-ipv6-vpc-public-private-subnets.yaml
堆栈需要几分钟的时间来创建。运行以下命令。在命令的输出变成 CREATE_COMPLETE
之前,请勿继续执行下一步。
aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name --query Stacks[].StackStatus --output text
-
检索创建的公有子网的 ID。
aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name \
--query='Stacks[].Outputs[?OutputKey==`SubnetsPublic`].OutputValue' --output text
输出示例如下。
subnet-0a1a56c486EXAMPLE
,subnet-099e6ca77aEXAMPLE
-
为创建的公有子网启用自动分配 IPv6
地址选项。
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
-
从部署的 Amazon CloudFormation 堆栈中检索模板创建的子网和安全组的名称,将其存储在变量中,以供后续步骤使用。
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}
-
创建集群 IAM 角色并向其附加所需的 Amazon EKS IAM 托管策略。Amazon EKS 托管的 Kubernetes 集群会代表您调用其他 Amazon 服务,以管理您用于该服务的资源。
-
运行以下命令以创建 eks-cluster-role-trust-policy.json
文件。
cat >eks-cluster-role-trust-policy.json <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
-
运行以下命令设置角色名称的变量。您可以将 myAmazonEKSClusterRole
替换为您选择的任何名称。
export cluster_role_name=myAmazonEKSClusterRole
-
创建角色。
aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json
"
-
检索 IAM 角色的 ARN 并将其存储在变量中以供后续步骤使用。
cluster_iam_role=$(aws iam get-role --role-name $cluster_role_name --query="Role.Arn" --output text)
-
将所需的 Amazon EKS 托管 IAM policy 附加到角色。
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name $cluster_role_name
-
创建您的集群。
-
版本必须为 1.21
版或更高版本的支持的 Amazon EKS Kubernetes 版本。
aws eks create-cluster --region $region_code --name $cluster_name --kubernetes-version 1.21
\
--role-arn $cluster_iam_role --resources-vpc-config subnetIds=$subnets,securityGroupIds=$security_groups \
--kubernetes-network-config ipFamily=ipv6
您可能会收到一个错误,指示请求中的可用区之一没有足够容量来创建 Amazon EKS 集群。如果发生这种情况,错误输出将包含可支持新集群的可用区。再次尝试使用至少两个位于您账户中支持的可用区的子网创建集群。有关更多信息,请参阅容量不足。
-
创建集群需要几分钟时间。运行以下命令。在命令的输出变成 ACTIVE
之前,请勿继续执行下一步。
aws eks describe-cluster --region $region_code --name $cluster_name --query cluster.status
-
为集群创建或更新 kubeconfig
文件,以便您可以与集群通信。
aws eks update-kubeconfig --region $region_code --name $cluster_name
预设情况下,config
文件创建在 ~/.kube
中或者新集群的配置已添加到 ~/.kube
的现有 config
文件中。
-
创建节点 IAM 角色。
-
运行以下命令以创建 vpc-cni-ipv6-policy.json
文件。
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
创建 IAM policy。
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy
--policy-document file://vpc-cni-ipv6-policy.json
-
运行以下命令以创建 node-role-trust-relationship.json
文件。
cat >node-role-trust-relationship.json <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
-
运行以下命令设置角色名称的变量。您可以将 AmazonEKSNodeRole
替换为您选择的任何名称。
export node_role_name=AmazonEKSNodeRole
-
创建 IAM 角色。
aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json
"
-
将 IAM policy 附加到 IAM 角色。
aws iam attach-role-policy --policy-arn arn:aws:iam::$account_id:policy/AmazonEKS_CNI_IPv6_Policy
\
--role-name $node_role_name
-
将两个所需的 IAM 托管策略附加到 IAM 角色。
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
-
检索 IAM 角色的 ARN 并将其存储在变量中以供后续步骤使用。
node_iam_role=$(aws iam get-role --role-name $node_role_name --query="Role.Arn" --output text)
-
创建托管节点组。
-
查看在上一步中创建的子网的 ID。
echo $subnets
输出示例如下。
subnet-0a1a56c486EXAMPLE
,subnet-099e6ca77aEXAMPLE
,subnet-0377963d69EXAMPLE
,subnet-0c05f819d5EXAMPLE
-
创建节点组。将 0a1a56c486EXAMPLE
、099e6ca77aEXAMPLE
、0377963d69EXAMPLE
和 0c05f819d5EXAMPLE
替换为在上一步输出中返回值。请务必在以下命令之前的输出中删除子网 ID 之间的逗号。您可以将 t3.medium
替换为任何 Amazon Nitro 系统实例类型。
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
创建节点组需要几分钟的时间。运行以下命令。在返回的输出为 ACTIVE
之前,请勿继续执行下一步。
aws eks describe-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name \
--query nodegroup.status --output text
-
确认默认 pods 已分配 IP
列中的 IPv6
地址。
kubectl get pods -n kube-system -o wide
输出示例如下。
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>
-
确认默认服务已分配 IP
列中的 IPv6
地址。
kubectl get services -n kube-system -o wide
输出示例如下。
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
-
(可选)部署示例应用程序或部署 Amazon Load Balancer Controller 和示例应用程序以对应用程序或至 IPv6
pods 的网络流量进行负载均衡。
-
在使用完成针对本教程而创建的集群和节点后,应使用以下命令清理创建的资源。删除之前,确保您没有使用本教程之外的任何资源。
-
如果您在与之前步骤不同的 shell 中完成此步骤,请设置之前步骤中使用的所有变量的值,然后将 example values
替换为完成之前步骤时指定的值。如果在完成之前步骤的同一 shell 中完成此步骤,请跳至下一步。
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
-
删除您的节点组。
aws eks delete-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name
删除需要花费几分钟的时间。运行以下命令。如果返回任何输出,请勿继续执行下一步。
aws eks list-nodegroups --region $region_code --cluster-name $cluster_name --query nodegroups --output text
-
请删除集群。
aws eks delete-cluster --region $region_code --name $cluster_name
删除集群需要几分钟时间。在继续之前,请确保使用以下命令删除集群。
aws eks describe-cluster --region $region_code --name $cluster_name
在输出与以下输出类似之前,请勿继续执行下一步。
An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: my-cluster
.
-
删除您创建的 IAM 资源。如果您选择的名称与之前步骤中使用的名称不同,则将 AmazonEKS_CNI_IPv6_Policy
替换为您选择的名称。
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
-
删除创建 VPC 的 Amazon CloudFormation 堆栈。
aws cloudformation delete-stack --region $region_code --stack-name $vpc_stack_name