Introducción a AWS Fargate para un clúster - Amazon EKS

Introducción a AWS Fargate para un clúster

importante

AWS Fargate con Amazon EKS no está disponible en AWS GovCloud (Este de EE. UU.) y AWS GovCloud (Oeste de EE. UU.).

En este tema, se explica cómo comenzar a ejecutar Pods en AWS Fargate con su clúster de Amazon EKS.

Si restringe el acceso al punto de conexión público del clúster mediante bloques de CIDR, recomendamos habilitar también el acceso al punto de conexión privado. De este modo, los Pods de Fargate pueden comunicarse con el clúster. Si el punto de conexión privado no está habilitado, los bloques de CIDR que especifique para el acceso público deben incluir los orígenes de salida de su VPC. Para obtener más información, consulte Control del acceso de la red al punto de conexión del servidor de API del clúster.

Requisito previo

Un clúster existente. Si no dispone de un clúster de Amazon EKS, consulte Introducción a Amazon EKS.

Paso 1: asegúrese de que los nodos existentes se puedan comunicar con los Pods de Fargate

Si está trabajando con un nuevo clúster sin nodos o con un clúster solo con grupos de nodos administrados (consulte Simplificación del ciclo de vida de los nodos con grupos de nodos administrados), puede ir directamente a Paso 2: cree un rol de ejecución de Pod de Fargate.

Supongamos que está trabajando con un clúster existente que ya tiene nodos asociados. Asegúrese de que los Pods de estos nodos puedan comunicarse libremente con los Pods que se ejecutan en Fargate. Los Pods que se ejecutan en Fargate se configuran automáticamente para utilizar el grupo de seguridad del clúster al que están asociados. Asegúrese de que los nodos existentes en su clúster puedan enviar y recibir tráfico hacia el grupo de seguridad del clúster y recibirlo desde este. Los grupos de nodos administrados se configuran de manera automática para utilizar también el grupo de seguridad del clúster, por lo que no es necesario modificarlos ni verificar si admiten esta función (consulte Simplificación del ciclo de vida de los nodos con grupos de nodos administrados).

Para los grupos de nodos existentes que se crearon con eksctl o con las plantillas de AWS CloudFormation administradas de Amazon EKS, puede agregar manualmente el grupo de seguridad del clúster a los nodos. O bien, puede modificar la plantilla de lanzamiento del grupo de Auto Scaling para el grupo de nodos a fin de adjuntar el grupo de seguridad del clúster a las instancias. Para obtener más información, consulte Cambio de los grupos de seguridad de una instancia en la Guía del usuario de Amazon VPC.

Puede buscar un grupo de seguridad para su clúster en la AWS Management Console, en la sección Networking (Redes) del clúster. O puede hacerlo con el siguiente comando de AWS CLI. Cuando utilice este comando, sustituya my-cluster por el nombre del clúster.

aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId

Paso 2: cree un rol de ejecución de Pod de Fargate

Cuando su clúster crea Pods en AWS Fargate, los componentes que se ejecutan en la infraestructura de Fargate deben hacer llamadas a las API de AWS en su nombre. El rol de ejecución de Pod de Amazon EKS proporciona los permisos de IAM para esta tarea. Para crear un AWS rol de ejecución Pod de Fargate, consulte Rol de IAM de ejecución de Pod de Amazon EKS.

nota

Si creó el clúster con eksctl mediante la opción --fargate, el clúster ya tiene un rol de ejecución de Pod que puede encontrar en la consola de IAM con el patrón eksctl-my-cluster-FargatePodExecutionRole-ABCDEFGHIJKL. Del mismo modo, si utiliza eksctl para crear sus perfiles de Fargate, eksctl crea su rol de ejecución de Pod si aún no se ha creado uno.

Paso 3: cree un perfil de Fargate para el clúster

Para poder programar los Pods que se ejecuten en Fargate en su clúster, debe definir un perfil de Fargate que especifique qué Pods deben utilizar Fargate cuando se lancen. Para obtener más información, consulte Cómo definir los Pods que deben lanzarse en AWS Fargate.

nota

Si creó el clúster con eksctl mediante la opción --fargate, ya se habrá creado un perfil de Fargate para el clúster con selectores para todos los Pods de los espacios de nombres kube-system y default. Utilice el siguiente procedimiento para crear perfiles de Fargate para cualquier otro espacio de nombres que desee utilizar con Fargate.

Puede crear un perfil de Fargate con una de las siguientes herramientas:

eksctl

En este procedimiento, se requiere la versión 0.194.0 o posterior de eksctl. Puede verificar la versión con el siguiente comando:

eksctl version

Para obtener instrucciones sobre cómo instalar o actualizar eksctl, consulte Instalación en la documentación de eksctl.

Para crear un perfil de Fargate con eksctl

Cree el perfil de Fargate con el siguiente comando de eksctl y reemplace cada valor de ejemplo con valores propios. Debe especificar un espacio de nombres. Sin embargo, la opción --labels no es obligatoria.

eksctl create fargateprofile \ --cluster my-cluster \ --name my-fargate-profile \ --namespace my-kubernetes-namespace \ --labels key=value

Puede utilizar algunos comodines para las etiquetas my-kubernetes-namespace y key=value. Para obtener más información, consulte Comodines de perfil de Fargate.

AWS Management Console

Para crear un perfil de Fargate con AWS Management Console

  1. Abra la consola de Amazon EKS.

  2. Elija el clúster para el que desea crear un perfil de Fargate.

  3. Elija la pestaña Computación.

  4. En Perfiles de Fargate, elija Agregar perfil de Fargate.

  5. En la página Configurar perfil de Fargate, haga lo siguiente:

    1. En Name (Nombre), ingrese un nombre único para el perfil de Fargate. El nombre debe ser único.

    2. En Rol de ejecución de pod, elija el rol de ejecución de Pod que se va a utilizar con el perfil de Fargate. Solo se muestran los roles de IAM con la entidad principal del servicio de eks-fargate-pods.amazonaws.com. Si no ve ningún rol, debe crear uno. Para obtener más información, consulte Rol de IAM de ejecución de Pod de Amazon EKS.

    3. Modifique las Subredes seleccionadas según sea necesario.

      nota

      Solo las subredes privadas son compatibles con los Pods que se ejecutan en Fargate.

    4. En Etiquetas, puede etiquetar su perfil de Fargate si lo desea. Estas etiquetas no se propagan a otros recursos asociados con el perfil, como los Pods.

    5. Elija Siguiente.

  6. En la página Configurar la selección de Pod, haga lo siguiente:

    1. En Namespace (Espacio de nombres), especifique un espacio de nombres que coincida con los Pods.

      • Puede usar espacios de nombres específicos para que coincidan, como kube-system o default.

      • Puede usar ciertos comodines (por ejemplo, prod-*) para que coincidan con varios espacios de nombres (por ejemplo, prod-deployment y prod-test). Para obtener más información, consulte Comodines de perfil de Fargate.

    2. (Opcional) Agregue etiquetas de Kubernetes al selector. Agréguelos específicamente al selector con el que deben coincidir los Pods del espacio de nombres especificado.

      • Puede agregar la etiqueta infrastructure: fargate al selector para que solo los Pods del espacio de nombres especificado que también tengan la etiqueta infrastructure: fargate de Kubernetes coincidan con el selector.

      • Puede usar ciertos comodines (por ejemplo, key?: value?) para que coincidan con varios espacios de nombres (por ejemplo, keya: valuea y keyb: valueb). Para obtener más información, consulte Comodines de perfil de Fargate.

    3. Elija Siguiente.

  7. En la página Revisar y crear, revise la información de su perfil de Fargate y elija Crear.

Paso 4: actualice CoreDNS

De forma predeterminada, CoreDNS está configurado para ejecutarse en la infraestructura de Amazon EC2 en clústeres de Amazon EKS. Si desea solo ejecutar los Pods de Fargate en el clúster, complete los pasos que se describen a continuación.

nota

Si ha creado el clúster con eksctl mediante la opción --fargate, entonces puede ir directamente a Pasos a seguir a continuación.

  1. Cree un perfil de Fargate para CoreDNS con el siguiente comando. Reemplace my-cluster por el nombre del clúster; 111122223333 por el ID de su cuenta; AmazonEKSFargatePodExecutionRole por el nombre del rol de ejecución de Pod; y 0000000000000001, 0000000000000002 y 0000000000000003 por los ID de las subredes privadas. Si no tiene un rol de ejecución de Pod, debe crear uno primero (consulte Paso 2: cree un rol de ejecución de Pod de Fargate).

    importante

    El ARN de rol no puede incluir una ruta de acceso que no sea /. Por ejemplo, si el nombre de su rol es development/apps/my-role, tendrá que cambiarlo a my-role cuando especifique el ARN del rol. El formato del ARN del rol debe ser arn:aws:iam::111122223333:role/role-name.

    aws eks create-fargate-profile \ --fargate-profile-name coredns \ --cluster-name my-cluster \ --pod-execution-role-arn arn:aws:iam::111122223333:role/AmazonEKSFargatePodExecutionRole \ --selectors namespace=kube-system,labels={k8s-app=kube-dns} \ --subnets subnet-0000000000000001 subnet-0000000000000002 subnet-0000000000000003
  2. Ejecute el siguiente comando para eliminar la anotación eks.amazonaws.com/compute-type : ec2 de los Pods de CoreDNS.

    kubectl patch deployment coredns \ -n kube-system \ --type json \ -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'

Pasos a seguir a continuación