Direcciones IPv6 de clústeres, Pods y services - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Direcciones IPv6 de clústeres, Pods y services

De forma predeterminada, Kubernetes asigna direcciones IPv4 a sus Pods y services. En lugar de asignar direcciones IPv4 a sus Pods y services, puede configurar el clúster para que les asigne direcciones IPv6. Amazon EKS no admite Pods o services de doble pila, aunque Kubernetes sí lo hace en versión 1.23 y posterior. Como resultado, no puede asignar ambos tipos de direcciones, IPv4 e IPv6, a sus Pods y services.

Selecciona qué familia IP desea utilizar para su clúster cuando lo cree. Una vez creado el clúster, no se puede cambiar la familia.

Consideraciones para utilizar la familia IPv6 para el clúster

  • Debe crear un clúster nuevo y especificar que desea utilizar la familia IPv6 para ese clúster. No puede habilitar la familia IPv6 para un clúster que haya actualizado desde una versión anterior. Para obtener instrucciones sobre cómo crear un clúster nuevo, consulte Creación de un clúster de Amazon EKS.

  • La versión del complemento Amazon VPC CNI que implementa en el clúster debe ser la versión 1.10.1 o posterior. Esta versión o posterior se implementa de forma predeterminada. Una vez que implemente el complemento, no podrá revertir la versión del complemento Amazon VPC CNI a una versión inferior a 1.10.1 sin eliminar primero todos los nodos de todos los grupos de nodos del clúster.

  • No se admiten Pods y services de Windows.

  • Si utiliza nodos de Amazon EC2, debe configurar el complemento Amazon VPC CNI con delegación de prefijos IP e IPv6. Si elige la familia IPv6 cuando cree el clúster, la versión 1.10.1 del complemento tendrá esta configuración como predeterminada. Este es el caso de un complemento autoadministrado o de Amazon EKS. Para obtener más información acerca de la delegación de prefijos IP, consulte Aumentar la cantidad de direcciones IP disponibles para sus nodos de Amazon EC2.

  • Cuando crea un clúster, la VPC y las subredes que especifique deben tener un bloque de CIDR IPv6 asignado a la VPC y las subredes que usted especifica. También deben tener un bloque de CIDR IPv4 asignado. Esto se debe a que, incluso si solo desea utilizar IPv6, una VPC necesita un bloque de CIDR IPv4 para funcionar. Para obtener más información, consulte Asociar un bloque de CIDR IPv6 a su VPC en la Guía del usuario de Amazon VPC.

  • Cuando crea el clúster y los nodos, debe especificar subredes que estén configuradas para asignar de forma automática direcciones IPv6. De lo contrario, no podrá implementar el clúster ni los nodos. Esta configuración está desactivada de forma predeterminada. Para obtener más información, consulte Modificar el atributo de direccionamiento IPv6 de su subred en la Guía del usuario de Amazon VPC.

  • Las tablas de enrutamiento que se asignen a las subredes deben tener rutas para direcciones IPv6. Para obtener más información, consulte Migración a IPv6 en la Guía del usuario de Amazon VPC.

  • Los grupos de seguridad deben permitir el uso de direcciones IPv6. Para obtener más información, consulte Migración a IPv6 en la Guía del usuario de Amazon VPC.

  • Solo puede utilizar IPv6 con nodos de Amazon EC2 o de Fargate basados ​en AWS Nitro.

  • No puede utilizar IPv6 con Grupos de seguridad de Pods con nodos de Amazon EC2. Sin embargo, puede utilizarse con nodos de Fargate. Si necesita grupos de seguridad independientes para Pods individuales, continúe utilizando la familia IPv4 con nodos de Amazon EC2 o utilice nodos de Fargate en su lugar.

  • Si anteriormente utilizó redes personalizadas para ayudar a aliviar el agotamiento de las direcciones IP, puede utilizar IPv6 en su lugar. No puede utilizar redes personalizadas con IPv6. Si utiliza redes personalizadas para el aislamiento de red, es posible que deba continuar utilizando redes personalizadas y la familia IPv4 para sus clústeres.

  • No se puede utilizar IPv6 con AWS Outposts.

  • A Pods y services solo se les asigna una dirección IPv6. No se les asigna una dirección IPv4. Debido a que los Pods pueden comunicarse con puntos de conexión IPv4 a través de NAT en la propia instancia, no se necesita DNS64 ni NAT64. Si el tráfico necesita una dirección IP pública, el tráfico es la dirección de red de origen convertida en una IP pública.

  • La dirección IPv6 de origen de un Pod no es la dirección de red de origen convertida en la dirección IPv6 del nodo cuando se comunica fuera de la VPC. Se enruta mediante una puerta de enlace de Internet o una puerta de enlace de Internet de solo salida.

  • A todos los nodos se les asignan una dirección IPv4 e IPv6.

  • No es compatible con la Controlador CSI de Amazon FSx para Lustre.

  • Puede utilizar la versión 2.3.1 o posterior del Controlador del equilibrador de carga de AWS para equilibrar la carga de tráfico de la aplicación o la red a los Pods IPv6 en modo IP, pero no en el modo de instancia. Para obtener más información, consulte ¿Qué es el AWS Load Balancer Controller?.

  • Debe adjuntar una política de IAM de IPv6 al IAM de su rol de IAM de CNI o nodo de IAM. Entre los dos, le recomendamos que lo adjunte a un rol de IAM de CNI. Para obtener más información, consulte Cree una política de IAM para clústeres que utilizan la familia IPv6 y Paso 1: Crear el rol de IAM Amazon VPC CNI plugin for Kubernetes.

  • Cada Pod de Fargate recibe una dirección IPv6 del CIDR que se especifica para la subred en la que se implementa. La unidad de hardware subyacente que ejecuta Pods de Fargate obtiene una dirección IPv4 e IPv6 única de los CIDR asignados a la subred en la que se implementa la unidad de hardware.

  • Le recomendamos que realice una evaluación exhaustiva de las aplicaciones, los complementos de Amazon EKS y los servicios de AWS con los que se integra antes de implementar clústeres IPv6. Esto es para garantizar que todo funcione según lo esperado con IPv6.

  • El uso del punto de conexión IPv6 del servicio de metadatos de instancia de Amazon EC2 no es compatible con Amazon EKS.

  • Al crear un grupo de nodos autoadministrado en un clúster que utiliza la familia IPv6, los datos del usuario deben incluir los siguientes BootstrapArguments para el archivo bootstrap.sh que se ejecuta al iniciar el nodo. Reemplace your-cidr con el rango IPv6 CIDR de la VPC del clúster.

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

    Si no sabe cuál es el rango IPv6 CIDR de su clúster, puede verlo con el siguiente comando (requiere el AWS CLI versión 2.4.9 o posterior).

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

Implemente un clúster IPv6 y nodos de Amazon Linux administrados

En este tutorial, implementa una nube de Amazon VPC IPv6, un clúster de Amazon EKS con la familia IPv6 y un grupo de nodos administrado con nodos de Amazon Linux de Amazon EC2. No se pueden implementar nodos de Windows de Amazon EC2 en un clúster IPv6. También puede implementar nodos de Fargate en su clúster, aunque esas instrucciones no se proporcionarán en este tema por motivos de simplicidad.

Antes de crear un clúster para su uso en producción, recomendamos que conozca toda la configuración e implemente un clúster con la configuración que satisfaga sus requisitos. Para obtener más información, consulte Creación de un clúster de Amazon EKS, Grupos de nodos administrados y las consideraciones sobre este tema. Solo puede habilitar algunos ajustes de la configuración cuando cree su clúster.

Requisitos previos

Antes de comenzar este tutorial, debe instalar y configurar las siguientes herramientas y recursos que necesitará para crear y administrar un clúster de Amazon EKS.

  • La herramienta de línea de comandos de kubectl está instalada en su dispositivo o AWS CloudShell. La versión puede ser la misma o hasta una versión secundaria anterior o posterior a la versión de Kubernetes de su clúster. Por ejemplo, si la versión del clúster es 1.29, puede usar la versión 1.28, 1.29 o 1.30 de kubectl con él. Para instalar o actualizar kubectl, consulte Instalación o actualización del kubectl.

  • La entidad principal de seguridad de IAM que está utilizando debe contar con permisos para trabajar con los roles de IAM de Amazon EKS y los roles vinculados al servicio, AWS CloudFormation, además de una VPC y recursos relacionados. Para obtener más información, consulte Acciones, recursos y claves de condición de Amazon Elastic Kubernetes Service y Uso de roles vinculados a servicios en la Guía del usuario de IAM.

Se proporcionan procedimientos para crear los recursos con eksctl o la AWS CLI. También puede implementar los recursos mediante la AWS Management Console, pero esas instrucciones no se proporcionan en este tema por una cuestión de simplicidad.

eksctl
Requisito previo

Versión eksctl 0.183.0 o posterior instalada en el equipo. Para instalar o actualizar esta versión, consulte la sección de Instalación en la documentación de eksctl.

Para implementar un clúster IPv6 con eksctl
  1. Cree el archivo ipv6-cluster.yaml. Copie el comando que sigue en su dispositivo. Realice las siguientes modificaciones en el comando según sea necesario y, a continuación, ejecute el comando modificado:

    • Reemplace my-cluster por el nombre del clúster. El nombre solo puede contener caracteres alfanuméricos (con distinción de mayúsculas y minúsculas) y guiones. Debe comenzar con un carácter alfanumérico y no puede tener más de 100 caracteres. El nombre debe ser único dentro de la Región de AWS y la Cuenta de AWS en las que va a crear el clúster.

    • Reemplace region-code por cualquier Región de AWS en la que se admita Amazon EKS. Para ver una lista de Regiones de AWS, consulte Puntos de conexión y cuotas de Amazon EKS en la Guía de referencia general de AWS.

    • El valor de version con la versión de su clúster. Para obtener más información, consulte la versión de Kubernetes compatible de Amazon EKS.

    • Reemplace my-nodegroup por un nombre para su grupo de nodos. El nombre del grupo de nodos no puede tener más de 63 caracteres. Debe empezar por una letra o un dígito, pero también puede incluir guiones y guiones bajos como caracteres no iniciales.

    • Reemplace t3.medium por cualquier tipo de instancia de 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. Cree su clúster.

    eksctl create cluster -f ipv6-cluster.yaml

    La creación del clúster tarda varios minutos. No continúe hasta que vea la última línea de salida, que se parece a la siguiente salida.

    [...]
    [✓]  EKS cluster "my-cluster" in "region-code" region is ready
  3. Confirme que a los Pods predeterminados se les asignan direcciones IPv6.

    kubectl get pods -n kube-system -o wide

    Un ejemplo de salida sería el siguiente.

    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. Confirme que a los servicios predeterminados se les asignan direcciones IPv6.

    kubectl get services -n kube-system -o wide

    Un ejemplo de salida sería el siguiente.

    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. (Opcional) Implemente una aplicación de muestra o implemente el AWS Load Balancer Controller y una aplicación de muestra para equilibrar la carga del tráfico de la aplicación o la red en los Pods IPv6.

  6. Cuando haya terminado con el clúster y los nodos que creó para este tutorial, debería limpiar los recursos que creó con el siguiente comando.

    eksctl delete cluster my-cluster
AWS CLI
Requisito previo

La versión 2.12.3 o posterior, o bien, la versión 1.27.160 o posterior de la AWS Command Line Interface (AWS CLI) instalada y configurada en su dispositivo o AWS CloudShell. Para comprobar su versión actual, utilice aws --version | cut -d / -f2 | cut -d ' ' -f1. Los administradores de paquetes tales como yum, apt-get o Homebrew para macOS suelen estar atrasados varias versiones respecto de la versión de la AWS CLI más reciente. Para instalar la versión más reciente, consulte Instalar, actualizar y desinstalar la AWS CLI y Configuración rápida con aws configure en la Guía del usuario de AWS Command Line Interface. La versión de AWS CLI instalada en AWS CloudShell también puede estar atrasada varias versiones respecto de la versión más reciente. Para actualizarla, consulte Instalación de la AWS CLI en el directorio de inicio en la Guía del usuario de AWS CloudShell. Si utiliza AWS CloudShell, es posible que deba instalar la versión 2.12.3 o posterior, o bien, la versión 1.27.160 o posterior de la AWS CLI, ya que la versión predeterminada de la AWS CLI instalada en AWS CloudShell puede ser una versión anterior.

importante
  • Debe completar todos los pasos de este procedimiento como el mismo usuario. Ejecute el siguiente comando para comprobar el usuario actual:

    aws sts get-caller-identity
  • Debe completar todos los pasos de este procedimiento en el mismo intérprete de comandos. Varios pasos utilizan variables establecidas en pasos anteriores. Los pasos que utilizan variables no funcionarán de forma adecuada si los valores de las variables se establecen en un intérprete de comandos diferente. Si utiliza AWS CloudShell para completar el siguiente procedimiento, recuerde que, si no interactúa con él a través del teclado o el puntero durante 20 o 30 minutos aproximadamente, se cerrará la sesión del intérprete de comandos. Los procesos en ejecución no cuentan como interacciones.

  • Las instrucciones están escritas para el intérprete de comandos Bash y es posible que deban ajustarse para otros intérpretes de comandos.

Para crear el clúster con la AWS CLI

Reemplace todos los example values en los pasos de este procedimiento por sus propios valores.

  1. Ejecute los siguientes comandos para establecer algunas variables utilizadas en pasos posteriores. Reemplace region-code por la Región de AWS en la que desea implementar sus recursos. El valor puede ser cualquier Región de AWS que sea compatible con Amazon EKS. Para ver una lista de Regiones de AWS, consulte Puntos de conexión y cuotas de Amazon EKS en la Guía de referencia general de AWS. Reemplace my-cluster por el nombre del clúster. El nombre solo puede contener caracteres alfanuméricos (con distinción de mayúsculas y minúsculas) y guiones. Debe comenzar con un carácter alfanumérico y no puede tener más de 100 caracteres. El nombre debe ser único dentro de la Región de AWS y la Cuenta de AWS en las que va a crear el clúster. Reemplace my-nodegroup por un nombre para su grupo de nodos. El nombre del grupo de nodos no puede tener más de 63 caracteres. Debe empezar por una letra o un dígito, pero también puede incluir guiones y guiones bajos como caracteres no iniciales. Reemplace 111122223333 por su ID de cuenta.

    export region_code=region-code export cluster_name=my-cluster export nodegroup_name=my-nodegroup export account_id=111122223333
  2. Cree una Amazon VPC con subredes privadas y públicas que cumplan con los requisitos de Amazon EKS y IPv6.

    1. Ejecute el siguiente comando para establecer una variable para el nombre de su pila de AWS CloudFormation. Puede reemplazar my-eks-ipv6-vpc con cualquier nombre que elija.

      export vpc_stack_name=my-eks-ipv6-vpc
    2. Cree una VPC IPv6 a partir de una plantilla de AWS CloudFormation.

      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

      La pila tarda unos minutos en crearse. Ejecute el siguiente comando de la . No continúe con el siguiente paso hasta que la salida del comando sea CREATE_COMPLETE.

      aws cloudformation describe-stacks --region $region_code --stack-name $vpc_stack_name --query Stacks[].StackStatus --output text
    3. Recupere los ID de las subredes públicas que se crearon.

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

      Un ejemplo de salida sería el siguiente.

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE
    4. Habilite la opción de asignación automática de direcciones IPv6 para las subredes públicas que se crearon.

      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. Recupere los nombres de las subredes y los grupos de seguridad creados por la plantilla desde la pila de AWS CloudFormation implementada y almacénelos en variables para utilizarlos en un paso posterior.

      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. Cree un rol de IAM de clúster y adjúntelo a la política administrada de IAM de Amazon EKS. Los clústeres de Kubernetes administrados por Amazon EKS realizan llamadas a otros servicios de AWS en su nombre para administrar los recursos que utiliza con el servicio.

    1. Ejecute el siguiente comando para crear un archivo 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. Ejecute el siguiente comando para establecer una variable para el nombre de su rol. Puede reemplazar myAmazonEKSClusterRole con cualquier nombre que elija.

      export cluster_role_name=myAmazonEKSClusterRole
    3. Cree el rol.

      aws iam create-role --role-name $cluster_role_name --assume-role-policy-document file://"eks-cluster-role-trust-policy.json"
    4. Recupere el ARN del rol de IAM y almacénelo en una variable para un paso posterior.

      cluster_iam_role=$(aws iam get-role --role-name $cluster_role_name --query="Role.Arn" --output text)
    5. Adjunte la política administrada de IAM por Amazon EKS requerida al rol.

      aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy --role-name $cluster_role_name
  4. Cree su clúster.

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

      Es posible que reciba un error que indique que una de las zonas de disponibilidad de la solicitud no tiene capacidad suficiente para crear un clúster de Amazon EKS. Si esto ocurre, el mensaje de error indicará las zonas de disponibilidad que admiten un clúster nuevo. Intente crear el clúster de nuevo con al menos dos subredes ubicadas en las zonas de disponibilidad admitidas para su cuenta. Para obtener más información, consulte Capacidad insuficiente.

      El clúster tarda varios minutos en crearse. Ejecute el siguiente comando. No continúe con el siguiente paso hasta que la salida del comando sea ACTIVE.

      aws eks describe-cluster --region $region_code --name $cluster_name --query cluster.status
  5. Cree o actualice un archivo kubeconfig para su clúster para que pueda comunicarse con él.

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

    De forma predeterminada, el archivo de config se crea en ~/.kube o la configuración del clúster nuevo se agrega a un archivo de config existente en ~/.kube.

  6. Cree un rol de IAM de nodo.

    1. Ejecute el siguiente comando para crear un archivo 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. Cree la política de IAM.

      aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
    3. Ejecute el siguiente comando para crear un archivo 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. Ejecute el siguiente comando para establecer una variable para el nombre de su rol. Puede reemplazar AmazonEKSNodeRole con cualquier nombre que elija.

      export node_role_name=AmazonEKSNodeRole
    5. Cree el rol de IAM.

      aws iam create-role --role-name $node_role_name --assume-role-policy-document file://"node-role-trust-relationship.json"
    6. Adjunte la política de IAM al rol de IAM.

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

      Para simplificar este tutorial, la política se adjunta a este rol de IAM. Sin embargo, en un clúster de producción, recomendamos adjuntar la política a un rol de IAM independiente. Para obtener más información, consulte Configuración de Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio (IRSA).

    7. Adjunte al rol de IAM las dos políticas administradas por IAM necesarias.

      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. Recupere el ARN del rol de IAM y almacénelo en una variable para un paso posterior.

      node_iam_role=$(aws iam get-role --role-name $node_role_name --query="Role.Arn" --output text)
  7. Cree un grupo de nodos administrados.

    1. Vea los ID de las subredes que creó en un paso anterior.

      echo $subnets

      Un ejemplo de salida sería el siguiente.

      subnet-0a1a56c486EXAMPLE,subnet-099e6ca77aEXAMPLE,subnet-0377963d69EXAMPLE,subnet-0c05f819d5EXAMPLE
    2. Cree el grupo de nodos. Reemplace 0a1a56c486EXAMPLE, 099e6ca77aEXAMPLE, 0377963d69EXAMPLE y 0c05f819d5EXAMPLE con los valores devueltos en el resultado del paso anterior. Asegúrese de eliminar las comas entre los ID de subredes de la salida anterior en el siguiente comando. Puede reemplazar t3.medium por cualquier tipo de instancia de AWS Nitro System.

      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

      El grupo de nodos tarda unos minutos en crearse. Ejecute el siguiente comando. No continúe con el paso siguiente hasta que la salida devuelta sea ACTIVE.

      aws eks describe-nodegroup --region $region_code --cluster-name $cluster_name --nodegroup-name $nodegroup_name \ --query nodegroup.status --output text
  8. Confirme que a los Pods predeterminados se les asignen direcciones IPv6 en la columna IP.

    kubectl get pods -n kube-system -o wide

    Un ejemplo de salida sería el siguiente.

    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. Confirme que a los servicios predeterminados se les asignen direcciones IPv6 en la columna IP.

    kubectl get services -n kube-system -o wide

    Un ejemplo de salida sería el siguiente.

    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. (Opcional) Implemente una aplicación de muestra o implemente el AWS Load Balancer Controller y una aplicación de muestra para equilibrar la carga del tráfico de la aplicación o la red en los Pods IPv6.

  11. Cuando haya terminado con el clúster y los nodos que creó para este tutorial, debería limpiar los recursos que creó con los siguientes comandos. Asegúrese de no estar utilizando ninguno de los recursos fuera de este tutorial antes de eliminarlos.

    1. Si completa este paso en un intérprete de comandos diferente al que completó los pasos anteriores, establezca los valores de todas las variables utilizadas en los pasos anteriores y reemplace los example values por los valores que especificó cuando completó los pasos anteriores. Si está completando este paso en el mismo intérprete de comandos en el que completó los pasos anteriores, continúe con el siguiente paso.

      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. Elimine su grupo de nodos.

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

      La eliminación tarda unos minutos. Ejecute el siguiente comando de la . No continúe con el siguiente paso si se devuelve alguna salida.

      aws eks list-nodegroups --region $region_code --cluster-name $cluster_name --query nodegroups --output text
    3. Eliminar el clúster.

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

      El clúster tarda unos minutos en eliminarse. Antes de continuar, asegúrese de que el clúster se elimine con el siguiente comando.

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

      No continúe con el siguiente paso hasta que la salida sea similar a la siguiente.

      An error occurred (ResourceNotFoundException) when calling the DescribeCluster operation: No cluster found for name: my-cluster.
    4. Elimine los resultados de IAM que creó. Reemplace AmazonEKS_CNI_IPv6_Policy por el nombre que eligió si eligió un nombre diferente al que utilizó en los pasos anteriores.

      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. Elimine la pila de AWS CloudFormation que creó la VPC.

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