in

Amazon Elastic Kubernetes Service agrega redes IPv6 | Servicios web de Amazon

Amazon Elastic Kubernetes Service agrega redes IPv6 | Servicios web de Amazon

A partir de hoy, puede implementar aplicaciones que utilicen el espacio de direcciones IPv6 en Amazon Elastic Kubernetes Service (EKS).

Muchos de nuestros clientes están estandarizando Kubernetes como su plataforma de infraestructura informática para aplicaciones en la nube y locales. Amazon EKS facilita la implementación de cargas de trabajo en contenedores. Proporciona clústeres de alta disponibilidad y automatiza tareas como parches, aprovisionamiento de nodos y actualizaciones.

Usos de Kubernetes un modelo de red plana que requiere que cada pod reciba una dirección IP. Este enfoque simplificado permite la migración de aplicaciones de baja fricción desde máquinas virtuales a contenedores, pero requiere una cantidad significativa de direcciones IP que muchas redes VPC IPv4 privadas no están equipadas para manejar. Algunos administradores de clústeres solucionan esta limitación de espacio IPv4 instalando complementos de red de contenedores (CNI) que virtualizan direcciones IP en una capa por encima de la VPC, pero esta arquitectura limita la capacidad de un administrador para observar y solucionar problemas de aplicaciones de manera efectiva y tiene un impacto negativo en el rendimiento de la red a escala. Además, para comunicarse con servicios de Internet fuera de la VPC, el tráfico de los pods IPv4 se enruta a través de múltiples saltos de red antes de llegar a su destino, lo que agrega latencia y ejerce presión sobre los equipos de ingeniería de red que necesitan mantener configuraciones de enrutamiento complejas.

Para evitar el agotamiento de la dirección IP, minimizar la latencia a escala y simplificar la configuración del enrutamiento, la solución es utilizar IPv6 espacio de dirección.

IPv6 no es nuevo. En 1996, compré mi primer libro sobre «IPng, Protocolo de Internet de próxima generación», como se llamaba hace 25 años. Proporciona un espacio de direcciones de 128 bits, lo que permite 3,4 x 10 ^ 38 direcciones IP posibles para nuestros dispositivos, servidores o contenedores. Podríamos asignar una dirección IPv6 a cada átomo de la superficie del planeta y aún nos quedan suficientes direcciones para hacer otras 100 Tierras o más.

Libro de próxima generación del protocolo de Internet IPngEl uso de clústeres de Amazon EKS con una red IPv6 tiene algunas ventajas. Primero, puede ejecutar más pods en un solo host o subred sin el riesgo de agotar todas las direcciones IPv4 disponibles en su VPC. En segundo lugar, permite comunicaciones de menor latencia con otros servicios IPv6, que se ejecutan en las instalaciones, en AWS o en Internet, al evitar un salto NAT adicional. En tercer lugar, libera a los ingenieros de redes de la carga de mantener configuraciones de enrutamiento complejas.

Los administradores de clústeres de Kubernetes pueden concentrarse en migrar y escalar aplicaciones sin gastar esfuerzos en trabajar alrededor de los límites de IPv4. Finalmente, la red de pods está configurada para que los pods puedan comunicarse con aplicaciones basadas en IPv4 fuera del clúster, lo que le permite adoptar los beneficios de IPv6 en Amazon EKS sin requerir que todos los servicios dependientes implementados en su organización se migren primero a IPv6.

Como de costumbre, creé una breve demostración para mostrarte cómo funciona.

Cómo funciona
Antes de comenzar, creo una VPC IPv6. yo uso esto Secuencia de comandos CDK para crear una VPC habilitada para IPv6 en unos minutos (gracias Angus Lees para el código). Simplemente instale CDK v2 (npm install -g aws-cdk@next) y despliegue la pila (cdk bootstrap && cdk deploy).

Cuando se crea la VPC con IPv6, utilizo la consola para configurar la asignación automática de direcciones IPv6 a los recursos implementados en las subredes públicas (hago esto para cada subred pública).

Asignar automáticamente direcciones IPv6 en la subred

Tomo nota de las ID de subred creadas por el script CDK anterior (se enumeran en la salida del script) y defino un par de variables que usaré a lo largo de la demostración. También creo un rol de IAM de clúster y un rol de IAM de nodo, como se describe en la documentación de Amazon EKS. Cuando ya tiene los clústeres implementados, estos dos roles ya existen.

Abro una Terminal y escribo:


CLUSTER_ROLE_ARN="arn:aws:iam::0123456789:role/EKSClusterRole"
NODE_ROLE_ARN="arn:aws:iam::0123456789:role/EKSNodeRole"
SUBNET1="subnet-06000a8"
SUBNET2="subnet-03000cc"
CLUSTER_NAME="AWSNewsBlog"
KEYPAIR_NAME="my-key-pair-name"

A continuación, creo un clúster IPv6 de Amazon EKS. En una terminal, escribo:


aws eks create-cluster --cli-input-json "{
"name": "${CLUSTER_NAME}",
"version": "1.21",
"roleArn": "${CLUSTER_ROLE_ARN}",
"resourcesVpcConfig": {
"subnetIds": [
    "${SUBNET1}", "${SUBNET2}"
],
"endpointPublicAccess": true,
"endpointPrivateAccess": true
},
"kubernetesNetworkConfig": {
    "ipFamily": "ipv6"
}
}"

{
    "cluster": {
        "name": "AWSNewsBlog",
        "arn": "arn:aws:eks:us-west-2:486652066693:cluster/AWSNewsBlog",
        "createdAt": "2021-11-02T17:29:32.989000+01:00",
        "version": "1.21",

...redacted for brevity...

        "status": "CREATING",
        "certificateAuthority": {},
        "platformVersion": "eks.4",
        "tags": {}
    }
}

Yo uso el describe-cluster mientras espera que se cree el clúster. Cuando el clúster está listo, tiene "status" : "ACTIVE"

aws eks describe-cluster --name "${CLUSTER_NAME}"

Luego creo un grupo de nodos:

aws eks create-nodegroup                       
        --cluster-name ${CLUSTER_NAME}         
        --nodegroup-name AWSNewsBlog-nodegroup 
        --node-role ${NODE_ROLE_ARN}           
        --subnets "${SUBNET1}" "${SUBNET2}"    
        --remote-access ec2SshKey=${KEYPAIR_NAME}
		
{
    "nodegroup": {
        "nodegroupName": "AWSNewsBlog-nodegroup",
        "nodegroupArn": "arn:aws:eks:us-west-2:0123456789:nodegroup/AWSNewsBlog/AWSNewsBlog-nodegroup/3ebe70c7-6c45-d498-6d42-4001f70e7833",
        "clusterName": "AWSNewsBlog",
        "version": "1.21",
        "releaseVersion": "1.21.4-20211101",

        "status": "CREATING",
        "capacityType": "ON_DEMAND",

... redacted for brevity ...

}		

Una vez que se crea el grupo de nodos, veo dos instancias EC2 en la consola. Utilizo la AWS Command Line Interface (CLI) para verificar que las instancias recibieron una dirección IPv6:

aws ec2 describe-instances --query "Reservations[].Instances[? State.Name == 'running' ][].NetworkInterfaces[].Ipv6Addresses" --output text 

2600:1f13:812:0000:0000:0000:0000:71eb
2600:1f13:812:0000:0000:0000:0000:3c07

Yo uso el kubectl comando para verificar el clúster desde el punto de vista de Kubernetes.

kubectl get nodes -o wide

NAME                                       STATUS   ROLES    AGE     VERSION               INTERNAL-IP                              EXTERNAL-IP    OS-IMAGE         KERNEL-VERSION                CONTAINER-RUNTIME
ip-10-0-0-108.us-west-2.compute.internal   Ready    <none>   2d13h   v1.21.4-eks-033ce7e   2600:1f13:812:0000:0000:0000:0000:2263   18.0.0.205   Amazon Linux 2   5.4.149-73.259.amzn2.x86_64   docker://20.10.7
ip-10-0-1-217.us-west-2.compute.internal   Ready    <none>   2d13h   v1.21.4-eks-033ce7e   2600:1f13:812:0000:0000:0000:0000:7f3e   52.0.0.122   Amazon Linux 2   5.4.149-73.259.amzn2.x86_64   docker://20.10.7

Luego despliegue un Pod. Sigo estos pasos en la documentación de EKS. Implementa una muestra nginx Servidor web.

kubectl create namespace aws-news-blog
namespace/aws-news-blog created

# sample-service.yml is available at https://docs.aws.amazon.com/eks/latest/userguide/sample-deployment.html
kubectl apply -f  sample-service.yml 
service/my-service created
deployment.apps/my-deployment created

kubectl get pods -n aws-news-blog -o wide
NAME                             READY   STATUS    RESTARTS   AGE   IP                           NODE                                       NOMINATED NODE   READINESS GATES
my-deployment-5dd5dfd6b9-7rllg   1/1     Running   0          17m   2600:0000:0000:0000:405b::2   ip-10-0-1-217.us-west-2.compute.internal   <none>           <none>
my-deployment-5dd5dfd6b9-h6mrt   1/1     Running   0          17m   2600:0000:0000:0000:46f9::    ip-10-0-0-108.us-west-2.compute.internal   <none>           <none>
my-deployment-5dd5dfd6b9-mrkfv   1/1     Running   0          17m   2600:0000:0000:0000:46f9::1   ip-10-0-0-108.us-west-2.compute.internal   <none>           <none>

Tomo nota de la dirección IPv6 de mis pods e intento conectarla desde mi computadora portátil. Como mi increíble proveedor de servicios aún no me proporciona un IPv6 en casa, la conexión falla. Esto se espera ya que los pods no tienen ninguna dirección IPv4. Observe la -g decir opciones curl no considerar : en la dirección IP como separador del número de puerto y -6 decir curl para conectarse a través de IPv6 solamente (requerido cuando usted proporciona curl con un nombre de host DNS).

curl -g -6 http://[2600:0000:0000:35000000:46f9::1]
curl: (7) Couldn't connect to server

Para probar la conectividad IPv6, inicio una instancia EC2 de doble pila (IPv4 e IPv6) en la misma VPC que el clúster. Me conecto por SSH a la instancia y pruebo el curl comando de nuevo. Veo que recibo la página HTML predeterminada proporcionada por nginx. ¡La conectividad IPv6 al pod funciona!

curl -g -6 http://[2600:0000:0000:35000000:46f9::1]
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

... redacted for brevity ...

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Si no le funciona, verifique los tres parámetros para habilitar el acceso a Internet para una subred: ¿su VPC tiene una puerta de enlace de Internet? ¿La tabla de enrutamiento adjunta a la subred tiene una ruta predeterminada a Internet Gateway? ¿El grupo de seguridad para los nodos EC2 del clúster tiene una regla que permite conexiones entrantes en el puerto? TCP 80 desde ::/0? Internet Gateway y la tabla de enrutamiento se configuran automáticamente por el script CDK que proporcioné como parte de esta demostración.

Algunas cosas para recordar
Antes de terminar, me gustaría responder algunas preguntas frecuentes recibidas de clientes que ya han experimentado con esta nueva capacidad:

Precios y disponibilidad
La compatibilidad con IPv6 para su clúster de Amazon Elastic Kubernetes Service (EKS) está disponible hoy en todas las regiones de AWS donde Amazon EKS está disponible, sin costo adicional.

Pruébelo y cree su primer clúster IPv6 hoy.

– seb



Source link

Written by TecTop

Clase de escopeta de combate Warzone Pacific

Cómo hacer la mejor clase de escopeta de combate de Call of Duty: Warzone Pacific

Abierto ahora - Región de AWS Asia Pacífico (Yakarta) | Servicios web de Amazon

Abierto ahora – Región de AWS Asia Pacífico (Yakarta) | Servicios web de Amazon