Amazon Elastic Kubernetes Service (Amazon EKS) es un servicio gestionado de AWS Kubernetes que escala, gestiona e implementa aplicaciones en contenedores. Normalmente se ejecuta en la nube pública de Amazon, pero también se puede implementar en las instalaciones. La infraestructura de gestión de Kubernetes de Amazon EKS se ejecuta en varias zonas de disponibilidad (AZ). AWS EKS cuenta con la certificación de conformidad con Kubernetes, lo que significa que puede integrar EKS con sus herramientas existentes.
En este artículo vas a aprender:
Los clústeres EKS están compuestos por los siguientes componentes principales: un plano de control y nodos trabajadores. Cada clúster se ejecuta en su propia Virtual Private Cloud (VPC) totalmente gestionada.
El plano de control se compone de tres nodos maestros, cada uno ejecutándose en una AZ diferente para asegurar la alta disponibilidad de AWS. El tráfico entrante dirigido a la API de Kubernetes pasa por el balanceador de carga de red (NLB) de AWS.
Los nodos de trabajo se ejecutan en instancias de Amazon EC2 ubicadas en una VPC, que no es gestionada por AWS. Puedes controlar y configurar la VPC asignada para los nodos worker. Puede utilizar un SSH para dar acceso a su automatización existente o para aprovisionar nodos de trabajo.
Hay dos opciones principales de implementación. Puedes implementar un clúster para cada entorno o aplicación. Como alternativa, puede definir políticas de seguridad de IAM y espacios de nombres de Kubernetes para implementar un clúster para varias aplicaciones.
Para restringir el tráfico entre el plano de control y un clúster, EKS proporciona políticas de red de Amazon VPC. Solo los clústeres y cuentas autorizadas, definidas por el control de acceso basado en roles (RBAC) de Kubernetes, pueden ver o comunicarse con los componentes del plano de control.
El siguiente diagrama ilustra el proceso de despliegue de un clúster en EKS: tú le indicas a EKS que aprovisione un clúster, los recursos de la nube se aprovisionan en segundo plano y luego puedes conectarte al clúster de Kubernetes y ejecutar tus cargas de trabajo.
Fuente de la imagen: AWS
La arquitectura de AWS EKS está compuesta por los siguientes componentes principales: clústeres, nodos y redes.
Los clusters están formados por un control plane y nodos EKS.
El plano de control se ejecuta en un conjunto dedicado de instancias EC2 en una cuenta de AWS gestionada por Amazon y proporciona un punto final de API al que pueden acceder tus aplicaciones. Se ejecuta en modo de inquilino único y es responsable de controlar los nodos maestros de Kubernetes, como el API Server y etcd.
Los datos en etcd se cifran usando Amazon Key Management (KMS). Los nodos maestros de Kubernetes se distribuyen por varias zonas de disponibilidad de AWS (AZ), y el tráfico se gestiona con Elastic Load Balancer (ELB).
Los nodos de trabajo de Kubernetes se ejecutan en instancias EC2 en la cuenta de AWS de su organización. Usan el endpoint de la API para conectarse al plano de control, a través de un archivo de certificado. Se utiliza un certificado único para cada clúster.
Contenido relacionado: AWS Kubernetes Cluster: configuración rápida con EC2 y EKS
Los clústeres de Amazon EKS pueden programar pods usando tres métodos principales.
Un «nodo» en EKS es una instancia de Amazon EC2 en la que se pueden programar pods de Kubernetes. Los pods se conectan al endpoint de la API del clúster EKS. Los nodos se organizan en grupos de nodos. Todas las instancias EC2 de un grupo de nodos deben tener lo mismo:
Puedes tener varios grupos de nodos en un clúster, cada uno representando un tipo diferente de instancia o instancias con un rol diferente.
Amazon EKS proporciona grupos de nodos gestionados con administración automatizada del ciclo de vida. Esto te permite crear, actualizar o apagar nodos automáticamente con una sola operación. EKS usa las últimas Linux AMIs de Amazon optimizadas para su uso con EKS. Cuando terminas nodos, EKS los drena de forma ordenada para asegurarse de que no haya interrupción del servicio. Puede aplicar fácilmente etiquetas de Kubernetes a todo un grupo de nodos con fines de gestión.
Los nodos gestionados se operan utilizando grupos EC2 Auto Scaling gestionados por el servicio Amazon EKS. Puedes definir en qué availability zones deben ejecutarse los grupos. Hay varias formas de iniciar grupos de nodos gestionados, incluyendo la consola EKS, eksctl, la CLI de Amazon, la API de Amazon o las herramientas de automatización de Amazon, como CloudFormation.
Puede utilizar Amazon Fargate, un servicio de contenedores sin servidor, para ejecutar nodos de trabajo sin tener que gestionar la infraestructura de servidores subyacente. Fargate solo te cobra por los vCPUs y la memoria realmente usados. Proporciona más recursos informáticos según las necesidades reales de los nodos de su clúster.
El siguiente diagrama muestra la arquitectura de red de un clúster EKS:
Fuente de la imagen: AWS
Un clúster de Amazon EKS funciona en una Virtual Private Cloud (VPC), una red privada segura dentro de un centro de datos de Amazon. EKS despliega todos los recursos en una subred existente en una VPC que tú selecciones, en una Amazon Region.
Interfaces de red usadas por el plano de control EKS
El plano de control EKS se ejecuta en una VPC gestionada por Amazon. Crea y gestiona interfaces de red en tu cuenta relacionadas con cada clúster EKS que crees. Las instancias EC2 y Fargate utilizan estas interfaces de red para conectarse al plano de control de EKS.
De forma predeterminada, EKS expone un punto final público. Si quieres seguridad adicional para tu clúster, puedes habilitar un endpoint privado y/o limitar el acceso a direcciones IP específicas. Puede configurar la conectividad entre redes locales u otras VPC y la VPC utilizada por su clúster EKS.
Cada instancia EC2 utilizada por el clúster EKS existe en una subred. Tienes dos opciones para definir la red:
NetApp Cloud Volumes ONTAP, la solución líder de gestión de almacenamiento de clase empresarial, ofrece servicios de gestión de almacenamiento seguros y probados en AWS, Azure y Google Cloud. Cloud Volumes ONTAP admite hasta una capacidad de 368TB y es compatible con varios casos de uso como servicios de archivos, bases de datos, DevOps o cualquier otra carga de trabajo empresarial, con un sólido conjunto de características que incluyen alta disponibilidad, protección de datos, eficiencias de almacenamiento, integración con Kubernetes y más.
En concreto, Cloud Volumes ONTAP es compatible con Kubernetes Persistent Volume provisioning and management requisitos de las cargas de trabajo en contenedores.