Perfil de AWS Fargate - Amazon EKS

Perfil de AWS Fargate

Para poder programar pods en Fargate en el clúster, debe definir al menos un perfil de Fargate que especifique qué pods utilizan Fargate cuando se lanzan.

El perfil de Fargate permite a un administrador declarar qué pods se ejecutan en Fargate. Esta declaración se realiza a través de los selectores del perfil. Cada perfil puede tener hasta cinco selectores, que contienen un espacio de nombres y etiquetas opcionales. Debe definir un espacio de nombres para cada selector. El campo de etiqueta consta de varios pares de clave-valor opcionales. Los pods que coinciden con un selector (tienen un espacio de nombres que coincide con el del selector y todas las etiquetas especificadas en el selector) se programan en Fargate. Si se define un selector de espacio de nombres sin etiquetas, Amazon EKS intenta programar todos los pods que se ejecutan en ese espacio de nombres en Fargate mediante el perfil. Si un pod programado coincide con alguno de los selectores del perfil de Fargate, ese pod se programa en Fargate.

Si un pod coincide con varios perfiles de Fargate, Amazon EKS elige una de las coincidencias al azar. En este caso, puede especificar qué perfil debe utilizar un pod al agregar la siguiente etiqueta de Kubernetes a la especificación del pod: eks.amazonaws.com/fargate-profile: my-fargate-profile. Sin embargo, el pod debe coincidir con un selector en ese perfil para que se pueda programar en Fargate. Las reglas de afinidad y antiafinidad de Kubernetes no se tienen en cuenta y no son necesarias con los pods de Amazon EKS Fargate.

Al crear un perfil de Fargate, debe especificar un rol de ejecución de pod para los componentes de Amazon EKS que se ejecutan en la infraestructura de Fargate con el perfil. Este rol se agrega al control de acceso basado en roles (RBAC) de Kubernetes del clúster para su autorización, de modo que el kubelet que se esté ejecutando en la infraestructura de Fargate pueda registrarse en el clúster de Amazon EKS y aparecer en el clúster como un nodo. El rol de ejecución de pod también proporciona permisos de IAM a la infraestructura de Fargate para permitir el acceso de lectura a los repositorios de imágenes de Amazon ECR. Para obtener más información, consulte Rol de IAM de ejecución de pod de Amazon EKS .

Los perfiles de Fargate son inmutables. Sin embargo, puede crear un nuevo perfil actualizado para reemplazar un perfil existente y, a continuación, eliminar el original una vez que el perfil actualizado se haya terminado de crear.

nota

Cualquier pods que se esté ejecutando mediante un perfil de Fargate se detendrá y se pondrá en estado pendiente cuando se elimine el perfil.

Si algún perfil de Fargate de un clúster tiene el estado DELETING, debe esperar a que ese perfil de Fargate se termine de eliminar antes de poder crear otros perfiles en ese clúster.

Amazon EKS y Fargate intentan distribuir pods por cada una de las subredes definidas en el perfil de Fargate, pero es posible que termine con una propagación desigual. Si debe tener un distribución uniforme (por ejemplo, al implementar dos réplicas sin ningún tiempo de inactividad), debe utilizar dos perfiles de Fargate. Cada perfil solo debe tener una subred.

Componentes de un perfil de Fargate

Un perfil de Fargate consta de los siguientes componentes.

  • Rol de ejecución de pods: cuando el clúster crea pods en AWS Fargate, el kubelet que se ejecuta en la infraestructura de Fargate debe hacer llamadas a las API de AWS en su nombre. Así ocurre, por ejemplo, para extraer imágenes de contenedores de Amazon ECR. El rol de ejecución de pod de Amazon EKS proporciona los permisos de IAM para esta tarea.

    Al crear un perfil de Fargate, debe especificar un rol de ejecución de pod para utilizarlo con los pods. Este rol se agrega al control de acceso basado en roles (RBAC) de Kubernetes del clúster para su autorización. De este modo, el kubelet que se está ejecutando en la infraestructura de Fargate puede registrarse en el clúster de Amazon EKS y aparecer en el clúster como un nodo. Para obtener más información, consulte Rol de IAM de ejecución de pod de Amazon EKS .

  • Subredes: los ID de las subredes en las que se lanzarán los pods que utilizan este perfil. En este momento, a los pods que se ejecutan en Fargate no se les asignan direcciones IP públicas. Por lo tanto, solo se aceptan subredes privadas (sin ruta directa a una puerta de enlace de Internet) para este parámetro.

  • Selectores: los selectores que deben coincidir para que los pods utilicen este perfil de Fargate. Cada selector debe tener un espacio de nombres asociado. Si lo desea, también puede especificar etiquetas para un espacio de nombres. Puede especificar hasta cinco selectores en un perfil de Fargate. Un pod solo debe coincidir con un selector para ejecutarse con el perfil de Fargate.

  • Espacio de nombres: debe especificar un espacio de nombres para un selector. El selector solo coincide con los pods creados en este espacio de nombres, pero puede crear varios selectores que apunten a distintos espacios de nombres.

  • Etiquetas: puede especificar etiquetas de Kubernetes que coincidan con el selector, si lo desea. El selector solo coincide con los pods que tienen todas las etiquetas especificadas en el selector.

Creación de un perfil de Fargate

En este tema se explica cómo crear un perfil de Fargate. AWS Fargate con Amazon EKS está disponible en todas las regiones de Amazon EKS excepto AWS GovCloud (EE. UU. Este) y AWS GovCloud (EE. UU. Oeste). También debe haber creado un rol de ejecución de pod para utilizarlo en su perfil de Fargate. Para obtener más información, consulte Rol de IAM de ejecución de pod de Amazon EKS . Los pods que se ejecutan en Fargate solo se admiten en subredes privadas (con acceso de una puerta de enlace NAT a servicios de AWS, pero sin una ruta directa a una puerta de enlace de Internet), por lo que la VPC del clúster debe tener subredes privadas disponibles. Puede crear un perfil con eksctl o la AWS Management Console. Seleccione la pestaña con el nombre de la herramienta con la que desea crear el perfil de Fargate.

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

eksctl version

Para obtener instrucciones sobre cómo instalar o actualizar eksctl, consulte .

eksctl

Para crear un perfil de Fargate con eksctl

Cree el perfil de Fargate con el siguiente comando de eksctl y reemplace cada example-value 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
AWS Management Console

Para crear un perfil de Fargate para un clúster con la AWS Management Console

  1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

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

  3. Elija la pestaña Compute (Computación).

  4. En Fargate profiles (Perfiles de Fargate), elija Add Fargate profile (Agregar perfil de Fargate).

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

    1. En Name (Nombre), ingrese un nombre único para su perfil de Fargate; por ejemplo, my-profile.

    2. En Pod execution role (Rol de ejecución de pods), 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. Elija el menú desplegable Subnets (Subredes) y anule la selección de cualquier subred con Public en su nombre. Solo las subredes privadas son compatibles con los pods que se ejecutan en Fargate.

    4. En Tags (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 Next (Siguiente).

  6. En la página Configure pod selection (Configurar la selección de ), haga lo siguiente:

    1. En Namespace (Espacio de nombres), especifique un espacio de nombres que coincida con los pods, como kube-system o default.

    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. Por ejemplo, podría 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.

    3. Elija Next (Siguiente).

  7. En la página Review and create (Revisar y crear), revise la información de su perfil de Fargate y elija Create (Crear).

Eliminación de un perfil de Fargate

En este tema se explica cómo eliminar un perfil de Fargate.

Al eliminar un perfil de Fargate, se eliminan todos los pods que se programaron en Fargate con el perfil. Si esos pods coinciden con otro perfil de Fargate, se programan en Fargate con ese perfil. Si ya no coinciden con ningún perfil de Fargate, entonces no están programados en Fargate y pueden permanecer como pendientes.

Solo un perfil de Fargate de un clúster puede tener el estado DELETING a la vez. Espere a que un perfil de Fargate termine de eliminarse para poder eliminar cualquier otro perfil de ese clúster.

Puede eliminar un perfil con eksctl, la AWS Management Console o la AWS CLI. Seleccione la pestaña con el nombre de la herramienta con la que desea eliminar el perfil.

eksctl

Para eliminar un perfil de Fargate con eksctl

Utilice el siguiente comando para eliminar un perfil de un clúster. Sustituya cada example-value con valores propios.

eksctl delete fargateprofile --name my-profile --cluster my-cluster
AWS Management Console

Para eliminar un perfil de Fargate de un clúster con la AWS Management Console

  1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  2. En el panel de navegación izquierdo, elija Clusters (Clústeres). En la lista de clústeres, elija el clúster del que desea eliminar el perfil de Fargate.

  3. Elija la pestaña Compute (Computación).

  4. Elija el perfil de Fargate que desea eliminar y, a continuación, elija Delete (Eliminar).

  5. En la página Delete Fargate Profile (Eliminar perfil de Fargate), escriba el nombre del perfil y, a continuación, elija Delete (Eliminar).

AWS CLI

Para eliminar un perfil de Fargate con AWS CLI

Utilice el siguiente comando para eliminar un perfil de un clúster. Sustituya cada example-value con valores propios.

aws eks delete-fargate-profile --fargate-profile-name my-profile --cluster-name my-cluster