IPv6叢集的位址Pods、和 services - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

IPv6叢集的位址Pods、和 services

預設情況下,Kubernetes 會為您的 Pods 和 services 指派 IPv4 地址。您可以將叢集設定為對 Pods 和 services 指派 IPv6 地址,而不是指派 IPv4 地址。Amazon EKS 不支援雙堆疊 Pods 或 services,即使 Kubernetes 在版本 1.23 和更新版本提供支援。因此,您無法同時將 IPv4IPv6 地址指派給 Pods 和 services。

您可以在建立叢集時選擇要用於此叢集的 IP 系列。建立叢集後無法變更系列。

IPv6系列用於叢集的考量

  • 您必須建立新叢集,並指定要為該叢集使用 IPv6 系列。無法為從早期版本更新的叢集啟用 IPv6 系列。如需如何建立新叢集的指示,請參閱 建立 Amazon EKS 叢集

  • 您部署到叢集的 Amazon VPC CNI 附加元件的版本必須是 1.10.1 或更高版本。依預設,將部署此版本或更新版本。部署附加元件後,您就無法將 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與以 AWS 硝基為基礎的 Amazon EC2 或 Fargate 節點搭配使用。

  • 您無法將 IPv6Pods 的安全群組 和 Amazon EC2 節點搭配使用。但是,您可以將其與 Fargate 節點搭配使用。如果您需要為單個 Pods 設定單獨的安全群組,請繼續將 IPv4 系列與 Amazon EC2 節點搭配使用,或者改用 Fargate 節點。

  • 如果您以前使用自訂聯網來幫助緩解 IP 地址耗盡情況,則可以改用 IPv6。您無法將自訂聯網與 IPv6 搭配使用。如果您使用自訂聯絡進行網路隔離,則可能需要繼續為叢集使用自訂聯網和 IPv4 系列。

  • 您無法將 IPv6AWS Outposts 搭配使用。

  • 僅將一個 IPv6 地址指派給 Pods 和 services。沒有為其指派 IPv4 地址。Pods 能夠透過執行個體本身上的 NAT 與 IPv4 端點進行通訊,因此並不需要 DNS64 和 NAT64。如果流量需要公有 IP 地址,則流量將轉換為公有 IP 的來源網路地址。

  • 在 VPC 外部通訊時,Pod 的來源 IPv6 地址不是轉換為節點 IPv6 地址的來源網路地址。它使用網際網路閘道或僅限輸出的網際網路閘道進行路由。

  • 為所有節點指派 IPv4IPv6 地址。

  • 系統不支援 Amazon FSx for Lustre CSI 驅動程式

  • 您可以使用 AWS Load Balancer 控制器的版本2.3.1或更新版本,IPv6Pods在 IP 模式下負載平衡用程式或網路流量,但不能平衡執行個體模式。如需詳細資訊,請參閱 什麼是 AWS Load Balancer Controller?

  • 您必須將 IPv6 IAM 政策連接至節點 IAM 或 CNI IAM 角色。在兩者之間,建議您將其連接至 CNI IAM 角色。如需更多詳細資訊,請參閱 為使用 IPv6 系列的叢集建立 IAM 政策步驟 1:建立 Amazon VPC CNI plugin for Kubernetes IAM 角色

  • 每個 Fargate Pod 接收來自 CIDR 的 IPv6 地址,為其部署在其中的子網指定此地址。執行 Fargate Pods 的基礎硬體單位從 CIDR 取得唯一的 IPv4IPv6 地址,這些地址指派給部署硬體單位的子網。

  • 我們建議您在部署IPv6叢集之前,對整合的應用程式、Amazon EKS 附加元件和 AWS 服務執行全面評估。這是為了確保使用 IPv6 時一切都能正常工作。

  • Amazon EKS 不支援使用 Amazon EC2 執行個體中繼資料服務 IPv6 端點。

  • 在使用 IPv6 系列的叢集中建立自我管理的節點群組時,使用者資料必須包含在節點啟動時執行的 bootstrap.sh 檔案的下列 BootstrapArguments。使用叢集 VPC 的 IPv6 CIDR 範圍取代 your-cidr

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

    如果您不知道叢集的IPv6CIDR範圍,可以使用下列命令 (需要 AWS 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 叢集所需的工具和資源。

  • 已在裝置或 AWS CloudShell上安裝 kubectl 命令列工具。版本可以與您的叢集 Kubernetes 版本相同,或是為最多比該版本更舊一版或更新一版的次要版本。例如,如果您的叢集版本為 1.29,則可以搭配使用 kubectl 1.281.291.30 版。若要安裝或升級 kubectl,請參閱 安裝或更新 kubectl

  • 您使用的 IAM 安全主體必須具有使用 Amazon EKS IAM 角色、服務連結角色 AWS CloudFormation、VPC 和相關資源的許可。如需詳細資訊,請參閱《IAM 使用者指南》中的 Amazon Elastic Kubernetes Service 的動作、資源和條件索引鍵以及使用服務連結角色

提供使用 eksctl 或 AWS CLI建立資源的程序。您也可以使用部署資源 AWS Management Console,但為了簡單起見,本主題未提供這些指示。

eksctl
先決條件

安裝在您的電腦上的 eksctl 0.183.0 或更新版本。如需有關安裝或更新的指示,請參閱 eksctl 文件中的 Installation 一節。

使用 eksctl 部署 IPv6 叢集
  1. 建立 ipv6-cluster.yaml 檔案。將隨後的命令複製到您的裝置。視需要對命令進行下列修改,然後執行修改後的命令:

    • 使用您的叢集名稱取代 my-cluster。此名稱僅能使用英數字元 (區分大小寫) 和連字號。它必須以字母數字字元開頭,且長度不得超過 100 個字元。名稱在中必須是唯一的,而 AWS 區域 AWS 帳戶 且您要在中建立叢集。

    • 使用 Amazon EKS 支援的任何 AWS 區域 取代 region-code。如需清單 AWS 區域,請參閱 AWS 一般參考指南中的 Amazon EKS 端點和配額

    • 包含叢集版本的 version 值。如需詳細資訊,請參閱支援的 Amazon EKS Kubernetes 版本

    • my-nodegroup 取代為您的節點群組名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。

    • t3.medium 取代為任何 AWS Nitro 系統執行個體類型

    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. 建立叢集。

    eksctl create cluster -f ipv6-cluster.yaml

    叢集建立需要幾分鐘的時間。在看到最後一行輸出之前,請勿繼續操作,該行看起來類似於以下輸出。

    [...]
    [✓]  EKS cluster "my-cluster" in "region-code" region is ready
  3. 確認已為預設 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>
  4. 確認已為預設服務指派 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
  5. (選用) 部署範例應用程式或部署 AWS Load Balancer Controller 和範例應用程式,將應用程式網路流量負載平衡至 IPv6 Pods。

  6. 在完成為本教學建立的叢集和節點後,您應該使用如下命令清除所建立的資源。

    eksctl delete cluster my-cluster
AWS CLI
先決條件

您裝置上安裝和設定的 AWS Command Line Interface (AWS CLI) 的版本1.27.160或更新版本、版本或更新版本或更新版本或更新版本 AWS CloudShell。2.12.3若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。如 yumapt-get 或適用於 macOS 的 Homebrew 等套件管理工具通常比最新版本的 AWS CLI落後數個版本之多。若要安裝最新版本,請參閱《AWS Command Line Interface 使用者指南》中的安裝、更新和解除安裝 AWS CLI以及使用 aws configure 的快速組態。安裝在中的 AWS CLI 版本也 AWS CloudShell 可能是最新版本之後的幾個版本。若要進行更新,請參閱《AWS CloudShell 使用者指南》中的〈安裝 AWS CLI 到主目錄。如果您使用 AWS CloudShell,則可能需要安裝的版本2.12.3或更高版本1.27.160或更高版本 AWS CLI,因為安裝在中的預設 AWS CLI 版本 AWS CloudShell 可能是較早的版本。

重要
  • 您必須以同一位使用者的身分完成本程序中的所有步驟。若要檢查目前使用者,請執行以下命令:

    aws sts get-caller-identity
  • 必須在同一 shell 中完成此程序中的所有步驟。若干步驟使用前面步驟中設定的變數。如果在其他 shell 中設定變數值,則使用此變數的步驟將無法正常工作。如果您使用 AWS CloudShell 完成以下程序,請記住,如果您在大約 20—30 分鐘內沒有使用鍵盤或指標與其互動,則 shell 工作階段將結束。正在執行的進程不算作互動。

  • 這些指示是針對 Bash shell 編寫的,在其他 shell 中可能需要進行調整。

若要建立叢集 AWS CLI

將程序此步驟中的所有 example values 取代為您自己的值。

  1. 執行下列命令以設定稍後步驟中使用的某些變數。region-code替換為您 AWS 區域 要在其中部署資源的。該值可以 AWS 區域 是 Amazon EKS 支持的任何值。如需清單 AWS 區域,請參閱 AWS 一般參考指南中的 Amazon EKS 端點和配額。使用您的叢集名稱取代 my-cluster。此名稱僅能使用英數字元 (區分大小寫) 和連字號。它必須以字母數字字元開頭,且長度不得超過 100 個字元。名稱在中必須是唯一的,而 AWS 區域 AWS 帳戶 且您要在中建立叢集。將 my-nodegroup 取代為您的節點群組名稱。節點群組名稱不可超過 63 個字元。它必須以字母或數字開頭,但剩餘字元也可以包含連字符和底線。使用您的帳戶 ID 取代 111122223333

    export region_code=region-code export cluster_name=my-cluster export nodegroup_name=my-nodegroup export account_id=111122223333
  2. 使用符合 Amazon EKS 和 IPv6 要求的公有和私有子網建立 Amazon VPC。

    1. 運行以下命令為 AWS CloudFormation 堆棧名稱設置一個變量。您可以使用您選擇的任何名稱取代 my-eks-ipv6-vpc

      export vpc_stack_name=my-eks-ipv6-vpc
    2. 使用 AWS CloudFormation 範本建立 IPv6 VPC。

      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

      堆疊需要幾分鐘的時間建立。執行下列命令。在命令輸出為 CREATE_COMPLETE 之前,請勿繼續下一步。

      aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name --query Stacks[].StackStatus --output text
    3. 檢索已建立的公有子網路的 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
    4. 為已建立的公有子網啟用自動指派 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
    5. 從已部署的 AWS 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}
  3. 建立叢集 IAM 角色,並將必要的 Amazon EKS IAM 受管政策附加到該角色。 KubernetesAmazon EKS 管理的叢集代表您呼叫其他 AWS 服務,以管理您搭配服務使用的資源。

    1. 執行下列命令以建立 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
    2. 執行下列命令,以設定角色名稱的變數。您可以使用您選擇的任何名稱取代 myAmazonEKSClusterRole

      export cluster_role_name=myAmazonEKSClusterRole
    3. 建立角色。

      aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    4. 擷取 IAM 角色的 ARN 並將其儲存在變數中,以便在稍後的步驟中使用。

      cluster_iam_role=$(aws iam get-role --role-name $cluster_role_name --query="Role.Arn" --output text)
    5. 將必要的 Amazon EKS 受管 IAM 政策連接到角色。

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name $cluster_role_name
  4. 建立叢集。

    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. 注意

      您可能會收到錯誤,表示在請求中的其中一個可用區域沒有足夠的容量可建立 Amazon EKS 叢集。如果發生這種情況,錯誤輸出包含的可用區域可支援新的叢集。使用至少兩個位於帳戶的支援可用區域子網路來建立您的叢集。如需詳細資訊,請參閱 容量不足

      建立叢集需要幾分鐘才能完成。執行下列命令。在命令輸出為 ACTIVE 之前,請勿繼續下一步。

      aws eks describe-cluster --region $region_code --name $cluster_name --query cluster.status
  5. 為叢集建立或更新 kubeconfig 檔案,以便能夠與您的叢集通訊。

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

    根據預設,已在 ~/.kube 建立了 config 檔案,或者已將新叢集的組態新增至現有 ~/.kube 中的 config 檔案。

  6. 建立節點 IAM 角色。

    1. 執行下列命令以建立 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
    2. 建立 IAM 政策。

      aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
    3. 執行下列命令以建立 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
    4. 執行下列命令,以設定角色名稱的變數。您可以使用您選擇的任何名稱取代 AmazonEKSNodeRole

      export node_role_name=AmazonEKSNodeRole
    5. 建立 IAM 角色。

      aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json"
    6. 將 IAM 政策連接至 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 角色。如需詳細資訊,請參閱 設定為Amazon VPC CNI plugin for Kubernetes使用服務帳戶的 IAM 角色 (IRSA)

    7. 將兩個所需的 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
    8. 擷取 IAM 角色的 ARN 並將其儲存在變數中,以便在稍後的步驟中使用。

      node_iam_role=$(aws iam get-role --role-name $node_role_name --query="Role.Arn" --output text)
  7. 建立受管節點群組。

    1. 查看您在上一個步驟中建立的子網路的 ID。

      echo $subnets

      範例輸出如下。

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE,subnet-0377963d69EXAMPLE,subnet-0c05f819d5EXAMPLE
    2. 建立節點群組。將 0a1a56c486EXAMPLE099e6ca77aEXAMPLE0377963d69EXAMPLE,以及 0c05f819d5EXAMPLE 取代為前一個步驟輸出中傳回的值。請確保從以下命令中的上一個輸出刪除子網路 ID 之間的逗號。您可以將 t3.medium 取代為任何 AWS 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
  8. 確認在 IP 欄中已為預設 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>
  9. 確認在 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
  10. (選用) 部署範例應用程式或部署 AWS Load Balancer Controller 和範例應用程式,將應用程式網路流量負載平衡至 IPv6 Pods。

  11. 在完成為本教學建立的叢集和節點後,您應該使用如下命令清除所建立的資源。在刪除之前,請確保您沒有使用本教程以外的任何資源。

    1. 如果您在與完成之前步驟不同的 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
    2. 刪除節點群組。

      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
    3. 刪除叢集。

      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.
    4. 刪除您建立的 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
    5. 刪除建立 VPC 的 AWS CloudFormation 堆疊。

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