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óneksctl
.
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
. Para obtener más información, consulte Comodines de perfil de Fargate.my-kubernetes-namespace
y key=value
AWS Management Console
Para crear un perfil de Fargate con AWS Management Console
-
Abra la consola de Amazon EKS
. -
Elija el clúster para el que desea crear un perfil de Fargate.
-
Elija la pestaña Computación.
-
En Perfiles de Fargate, elija Agregar perfil de Fargate.
-
En la página Configurar perfil de Fargate, haga lo siguiente:
-
En Name (Nombre), ingrese un nombre único para el perfil de Fargate. El nombre debe ser único.
-
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. -
Modifique las Subredes seleccionadas según sea necesario.
nota
Solo las subredes privadas son compatibles con los Pods que se ejecutan en Fargate.
-
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.
-
Elija Siguiente.
-
-
En la página Configurar la selección de Pod, haga lo siguiente:
-
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
odefault
. -
Puede usar ciertos comodines (por ejemplo,
prod-*
) para que coincidan con varios espacios de nombres (por ejemplo,prod-deployment
yprod-test
). Para obtener más información, consulte Comodines de perfil de Fargate.
-
-
(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 etiquetainfrastructure: 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
ykeyb: valueb
). Para obtener más información, consulte Comodines de perfil de Fargate.
-
-
Elija Siguiente.
-
-
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.
-
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; y0000000000000001
,0000000000000002
y0000000000000003
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 esdevelopment/apps/my-role
, tendrá que cambiarlo amy-role
cuando especifique el ARN del rol. El formato del ARN del rol debe serarn: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
-
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
-
Puede comenzar a migrar las aplicaciones existentes para que se ejecuten en Fargate con el siguiente flujo de trabajo.
-
Crear un perfil de Fargate que coincida con el espacio de nombres de Kubernetes y las etiquetas de Kubernetes de su aplicación.
-
Elimine y vuelva a crear los Pods existentes para que se programen en Fargate. Por ejemplo, el siguiente comando desencadena un despliegue de la implementación
coredns
. Puede modificar el espacio de nombre y el tipo de implementación para actualizar sus Pods específicos.kubectl rollout restart -n kube-system deployment coredns
-
-
Implemente Redirigir tráfico de aplicaciones y HTTP con los equilibradores de carga de aplicaciones para permitir que los objetos de entrada de los Pods se ejecuten en Fargate.
-
Puede utilizar el Ajuste los recursos del pod con el escalador automático vertical de pods para medir correctamente inicialmente el tamaño de la CPU y la memoria de los Pods de Fargate y, a continuación, utilizar el Escalado de las implementaciones de pods con el escalador automático de pods horizontales para ajustar la escala de esos Pods. Si desea que el escalador automático vertical de pods vuelva a implementar automáticamente los Pods en Fargate con combinaciones de CPU y memoria mayores, configure el modo del escalador automático vertical de pods en
Auto
oRecreate
. Esto es para garantizar una funcionalidad correcta. Para obtener más información, consulte el documento Escalador automático vertical de podsen GitHub. -
Puede configurar el recopilador AWS Distro for OpenTelemetry
(ADOT) para el monitoreo de aplicaciones siguiendo estas instrucciones.