315
Amazon EKS Guía del usuario

Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKSGuía del usuario

Page 2: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Amazon EKS: Guía del usuarioCopyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 3: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Table of Contents¿Qué es Amazon EKS? ...................................................................................................................... 1

Arquitectura de plano de control de Amazon EKS ........................................................................... 1¿Cómo funciona Amazon EKS? .................................................................................................... 2

Introducción a Amazon EKS ................................................................................................................ 3Introducción a eksctl ................................................................................................................ 3

Requisitos previos .............................................................................................................. 3Creación del clúster de Amazon EKS y los nodos de trabajo ..................................................... 6Pasos siguientes ............................................................................................................... 11

Introducción a la consola ........................................................................................................... 12Requisitos previos de Amazon EKS ..................................................................................... 12Paso 1: Crear el clúster de Amazon EKS ............................................................................. 16Paso 2: Crear un archivo kubeconfig ................................................................................ 18Paso 3: Iniciar un grupo de nodos administrados ................................................................... 19Pasos siguientes ............................................................................................................... 22

Clústeres ......................................................................................................................................... 23Creación de un clúster .............................................................................................................. 23Actualización de una versión de Kubernetes ................................................................................. 33Acceso al punto de enlace del clúster .......................................................................................... 39

Modificar el acceso al punto de enlace del clúster ................................................................. 40Acceso a un servidor de API solo privado ............................................................................ 45

Registro de plano de control ...................................................................................................... 45Habilitar y deshabilitar registros de plano de control ............................................................... 46Visualización de registros de plano de control de clúster ......................................................... 48

Eliminación de un clúster ........................................................................................................... 48Versiones de Kubernetes ........................................................................................................... 50

Versiones de Kubernetes en Amazon EKS disponibles ........................................................... 51Kubernetes 1.14 ............................................................................................................... 51Kubernetes 1.13 ............................................................................................................... 52Retirada de versiones en Amazon EKS ................................................................................ 53

Versiones de la plataforma ......................................................................................................... 53Kubernetes versión 1.14 .................................................................................................... 54Kubernetes versión 1.13 .................................................................................................... 55Versión de Kubernetes 1.12 ............................................................................................... 57Versión de Kubernetes 1.11 ............................................................................................... 59

Compatibilidad con Windows ...................................................................................................... 60Consideraciones ............................................................................................................... 60Habilitación de la compatibilidad con Windows ...................................................................... 61Implementación de una aplicación de ejemplo de Windows ..................................................... 65

Compatibilidad con Arm ............................................................................................................. 66Consideraciones ............................................................................................................... 66Requisitos previos ............................................................................................................. 66Crear un clúster ................................................................................................................ 67Habilitar la compatibilidad con Arm ...................................................................................... 67Iniciar nodos de trabajo ..................................................................................................... 68Unir nodos de trabajo a un clúster ...................................................................................... 69(Opcional) Implementar una aplicación ................................................................................. 70

Visualización de indicadores de servidor API ................................................................................ 70Nodos de trabajo .............................................................................................................................. 72

AMI de Linux optimizada para Amazon EKS ................................................................................. 73Scripts de compilación de la AMI optimizada para Amazon EKS ............................................... 78AMI optimizada para Amazon EKS compatible con GPU ......................................................... 78Versiones de AMI de Linux optimizadas para Amazon EKS ..................................................... 80Recuperación de los ID de la AMI optimizada para Amazon EKS ............................................. 82

AMI de Windows optimizada para Amazon EKS ............................................................................ 83

iii

Page 4: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Recuperación de los ID de la AMI de Windows optimizada para Amazon EKS ............................ 85Grupos de nodos administrados .................................................................................................. 86

Conceptos de grupos de nodos administrados ...................................................................... 87Creación de un grupo de nodos administrados ...................................................................... 88Actualización de un grupo de nodos administrados ................................................................ 90Eliminación de un grupo de nodos administrados ................................................................... 92

Lanzamiento de nodos de trabajo de Linux de Amazon EKS ........................................................... 93Lanzamiento de nodos de trabajo de Windows de Amazon EKS ..................................................... 102Actualizaciones de nodos de trabajo .......................................................................................... 107

Migración a un nuevo grupo de nodos de trabajo ................................................................. 108Actualización de un grupo de nodos de trabajo existente ....................................................... 113

AMI de Ubuntu ....................................................................................................................... 115AWS Fargate .................................................................................................................................. 116

Consideraciones de Fargate ..................................................................................................... 116Introducción a Fargate ............................................................................................................. 117

(Opcional) Crear un clúster ............................................................................................... 117Asegurarse de que los nodos existentes puedan comunicarse con los pods de Fargate .............. 118Crear un rol de ejecución de pods de Fargate ..................................................................... 118Crear un perfil de Fargate para el clúster ........................................................................... 119(Opcional) Actualizar CoreDNS ......................................................................................... 120Pasos siguientes ............................................................................................................. 121

Perfil de Fargate ..................................................................................................................... 121Componentes del perfil de Fargate .................................................................................... 122Creación de un perfil de Fargate ....................................................................................... 123Eliminación de un perfil de Fargate .................................................................................... 124

Configuración de pods de Fargate ............................................................................................. 125Memoria y CPU de los pods ............................................................................................. 125Almacenamiento de Fargate ............................................................................................. 126

Almacenamiento .............................................................................................................................. 127Clases de almacenamiento ....................................................................................................... 127Controlador de CSI de Amazon EBS ......................................................................................... 128Controlador de CSI de Amazon EFS .......................................................................................... 132Controlador de CSI de Amazon FSx for Lustre ............................................................................ 136

Autoescalado .................................................................................................................................. 142Escalador automático del clúster ............................................................................................... 142

Crear un clúster de Amazon EKS ...................................................................................... 142Consideraciones del grupo de nodos del escalador automático del clúster ................................ 144Implementación del escalador automático del clúster ............................................................ 145Consulte los registros del escalador automático del clúster .................................................... 146

Escalador automático de pods horizontales ................................................................................. 146Instalación del servidor de métricas ................................................................................... 147Ejecutar una aplicación de prueba del escalador automático de pods horizontales ..................... 148

Escalador automático vertical de pods ........................................................................................ 150Instalación del servidor de métricas ................................................................................... 150Implementación del escalador automático vertical de pods .................................................... 152Probar la instalación del escalador automático vertical de pods. ............................................. 153

Balanceo de carga e ingreso ............................................................................................................ 156Equilibrio de carga .................................................................................................................. 156

Etiquetado de subred para balanceadores de carga ............................................................. 156Controlador de entrada de ALB en Amazon EKS ......................................................................... 157

Redes ............................................................................................................................................ 162Creación de una VPC para Amazon EKS ................................................................................... 162

Pasos siguientes ............................................................................................................. 164Consideraciones sobre la VPC del clúster ................................................................................... 164

Direcciones IP de la VPC ................................................................................................. 165Requisito de etiquetado de VPC ........................................................................................ 165Requisito de etiquetado de subred ..................................................................................... 166

iv

Page 5: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Consideraciones relativas al grupo de seguridad Amazon EKS ....................................................... 167Grupo de seguridad del clúster (disponible a partir de clústeres Amazon EKS que ejecutanKubernetes 1.14 y la versión de la plataforma eks.3) .......................................................... 167Grupos de seguridad de nodos de trabajo y plano de control (para clústeres de Amazon EKSanteriores a la versión 1.14 de Kubernetes y la versión de plataforma eks.3) ........................... 167

Conexión de pods en red (CNI) ................................................................................................ 170Variables de configuración de CNI ..................................................................................... 171SNAT externa ................................................................................................................. 172Redes personalizadas de CNI ........................................................................................... 174Auxiliar de métricas de CNI .............................................................................................. 177Actualizaciones de CNI .................................................................................................... 179

Instalación o actualización de CoreDNS ..................................................................................... 180Actualización de CoreDNS ............................................................................................... 182

Instalación de Calico en Amazon EKS ....................................................................................... 182Demostración de política Stars .......................................................................................... 183

Administración de la autenticación de clústeres ................................................................................... 188Instalación de kubectl ........................................................................................................... 188Instalación de aws-iam-authenticator .................................................................................. 193Crear un archivo kubeconfig para Amazon EKS ....................................................................... 196Administración de usuarios o funciones de IAM para su clúster ...................................................... 200

eksctl ......................................................................................................................................... 204Instalación o actualización de eksctl ....................................................................................... 204

Libro de invitados ............................................................................................................................ 206Servidor de métricas ........................................................................................................................ 209Métricas de Prometheus ................................................................................................................... 211

Visualización de métricas sin procesar ....................................................................................... 211Implementación de Prometheus ................................................................................................. 212

Uso de Helm .................................................................................................................................. 215Tutorial: Implementación del panel de Kubernetes ................................................................................ 216

Requisitos previos ................................................................................................................... 216Paso 1: Implementar el servidor de métricas de Kubernetes .......................................................... 217Paso 2: Implementar el panel ................................................................................................... 218Paso 3: Crear una cuenta de servicio de eks-admin y un enlace de rol de clúster ............................ 219Paso 4: Conectar con el panel .................................................................................................. 219Paso 5: Siguientes pasos ......................................................................................................... 221

Introducción a AWS App Mesh ......................................................................................................... 222Escenario ............................................................................................................................... 222Requisitos previos ................................................................................................................... 222Paso 1: Crear una malla y un servicio virtual ............................................................................... 222Paso 2: Crear un nodo virtual ................................................................................................... 223Paso 3: Crear un router virtual y una ruta ................................................................................... 224Paso 4: Revisar y crear ............................................................................................................ 226Paso 5: Crear recursos adicionales ............................................................................................ 226Paso 6: Actualizar los servicios ................................................................................................. 230

Tutorial: Configure App Mesh Integration with Kubernetes ..................................................................... 231Prerequisites .......................................................................................................................... 231Step 1: Install the Controller and Custom Resources .................................................................... 231Step 2: Install the Sidecar Injector ............................................................................................. 232

.................................................................................................................................... 232Step 3: Configure App Mesh ..................................................................................................... 233

Create Kubernetes Custom Resources ............................................................................... 233Sidecar Injection ............................................................................................................. 234

Step 4: Remove Integration Components (Optional) ..................................................................... 235Deploy a Mesh Connected Service ............................................................................................ 235

Prerequisites .................................................................................................................. 222Deploy a Sample Application ............................................................................................ 235Run Application ............................................................................................................... 236

v

Page 6: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Change Configuration ...................................................................................................... 237Remove Application ......................................................................................................... 238

Contenedores de aprendizaje profundo .............................................................................................. 239Seguridad ...................................................................................................................................... 240

Identity and Access Management .............................................................................................. 240Público .......................................................................................................................... 241Autenticación con identidades ........................................................................................... 241Administración de acceso mediante políticas ....................................................................... 243Funcionamiento de Amazon EKS con IAM .......................................................................... 245Ejemplos de políticas basadas en identidad ........................................................................ 248Uso de funciones vinculadas a servicios ............................................................................. 250Rol del servicio de IAM .................................................................................................... 252Rol de IAM del nodo de trabajo ........................................................................................ 254Rol de ejecución de pods ................................................................................................. 256Roles de IAM para cuentas de servicio .............................................................................. 258Solución de problemas ..................................................................................................... 271

Registro y monitorización ......................................................................................................... 271Validación de la conformidad .................................................................................................... 272Resiliencia .............................................................................................................................. 272Seguridad de la infraestructura .................................................................................................. 273Configuración y análisis de vulnerabilidades ................................................................................ 273Política de seguridad del pod .................................................................................................... 274

Política de seguridad predeterminada del pod de Amazon EKS .............................................. 274Etiquetado de los recursos ............................................................................................................... 279

Conceptos básicos de etiquetas ................................................................................................ 279Etiquetado de los recursos ....................................................................................................... 279Restricciones de las etiquetas ................................................................................................... 280Uso de etiquetas mediante la consola ........................................................................................ 281

Adición de etiquetas a un recurso individual durante su creación ............................................ 281Añadido y eliminación de etiquetas en un recurso individual ................................................... 281

Uso de etiquetas mediante la CLI o la API .................................................................................. 281CloudTrail ...................................................................................................................................... 283

Información de Amazon EKS en CloudTrail ................................................................................. 283Descripción de las entradas de archivos de registro de Amazon EKS .............................................. 284

Amazon EKS en AWS Outposts ........................................................................................................ 286Requisitos previos ................................................................................................................... 286Limitaciones ........................................................................................................................... 286Consideraciones sobre la conectividad de red ............................................................................. 286Creación de nodos de Amazon EKS en un Outpost ...................................................................... 287

Proyectos relacionados .................................................................................................................... 289Herramientas de administración ................................................................................................. 289

eksctl ............................................................................................................................. 289AWS Service Operator ..................................................................................................... 289

Redes .................................................................................................................................... 289Complemento CNI de Amazon VPC para Kubernetes ........................................................... 289Controlador de entrada de AWS Balanceador de carga de aplicaciones (ALB) para Kubernetes .... 289ExternalDNS ................................................................................................................... 290

Seguridad .............................................................................................................................. 290Autenticador de AWS IAM ................................................................................................ 290

Aprendizaje automático (AA) ..................................................................................................... 290Kubeflow ........................................................................................................................ 290

Auto Scaling ........................................................................................................................... 290Escalador automático del clúster ....................................................................................... 290Escalador ....................................................................................................................... 291

Monitorización ......................................................................................................................... 291Prometheus .................................................................................................................... 291

Integración continua/implementación continua .............................................................................. 291

vi

Page 7: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Jenkins X ....................................................................................................................... 291Solución de problemas ..................................................................................................................... 292

Capacidad insuficiente ............................................................................................................. 292aws-iam-authenticator Not Found ...................................................................................... 292Los nodos de trabajo no pueden unirse al clúster ........................................................................ 292Acceso denegado o no autorizado (kubectl) ............................................................................. 293hostname doesn't match ................................................................................................... 293getsockopt: no route to host ....................................................................................... 293Errores de grupo de nodos administrados ................................................................................... 294Herramienta de recopilación de registros de CNI ......................................................................... 295La red de tiempo de ejecución del contenedor no está lista ........................................................... 295Tiempo de espera de protocolo de enlace TLS ............................................................................ 296IAM ....................................................................................................................................... 296

AccessDeniedException ................................................................................................... 296No tengo autorización para realizar la operación iam:PassRole .............................................. 297Quiero ver mis claves de acceso ....................................................................................... 297Soy administrador y deseo permitir que otros obtengan acceso a Amazon EKS ......................... 298Quiero permitir a personas externas a mi cuenta de AWS el acceso a mis recursos de AmazonEKS .............................................................................................................................. 298

Cuotas de servicio .......................................................................................................................... 299Historial de revisión ......................................................................................................................... 300AWS Glossary ................................................................................................................................ 308

vii

Page 8: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioArquitectura de plano de control de Amazon EKS

¿Qué es Amazon EKS?Amazon Elastic Kubernetes Service (Amazon EKS) es un servicio administrado que le permite ejecutarfácilmente Kubernetes en AWS sin necesidad de crear ni mantener su propio plano de control deKubernetes. Kubernetes es un sistema de código abierto para automatizar la implementación, escalado yadministración de las aplicaciones en contenedores.

Amazon EKS ejecuta instancias del plano de control de Kubernetes en varias zonas de disponibilidad paragarantizar una alta disponibilidad. Amazon EKS detecta y reemplaza automáticamente las instancias delplano de control en mal estado y proporciona actualizaciones de versiones y parches automatizados paraellas.

Amazon EKS se integra también con numerosos servicios de AWS para ofrecer escalabilidad y seguridada las aplicaciones, como los siguientes:

• Amazon ECR para imágenes de contenedor• Elastic Load Balancing para la distribución de carga• IAM para la autenticación• Amazon VPC para el aislamiento

Amazon EKS ejecuta versiones actualizadas del software de código abierto de Kubernetes para que puedautilizar todos los complementos y herramientas existentes en la comunidad Kubernetes. Las aplicacionesque se ejecutan en Amazon EKS son totalmente compatibles con las que se ejecutan en cualquier entornode Kubernetes estándar, tanto si se ejecutan en centros de datos locales como en nubes públicas. Estosignifica que puede migrar fácilmente cualquier aplicación Kubernetes estándar a Amazon EKS sin tenerque modificar el código de manera alguna.

Arquitectura de plano de control de Amazon EKSAmazon EKS ejecuta un plano de control de Kubernetes de tenencia única para cada clúster. Lainfraestructura del plano de control no se comparte entre clústeres o cuentas de AWS.

Este plano de control se compone de al menos dos nodos de servidor de API y tres nodos de etcd quese ejecutan en tres zonas de disponibilidad dentro de una región. Amazon EKS detecta y reemplazaautomáticamente las instancias de plano de control con un estado incorrecto y reinicia las instancias enlas zonas de disponibilidad de la región según sea necesario. Amazon EKS aprovecha la arquitectura deregiones de AWS con el fin de mantener una alta disponibilidad. Por este motivo, Amazon EKS puedeofrecer un Acuerdo de nivel de servicio de disponibilidad del punto de enlace del servidor de API.

Amazon EKS utiliza las políticas de red de Amazon VPC para restringir el tráfico entre los componentes delplano de control para que se mantenga dentro de un único clúster. Los componentes del plano de controlde un clúster no pueden ver ni recibir comunicaciones de otros clústeres u otras cuentas de AWS, exceptosegún lo autorizado por las políticas de RBAC de Kubernetes.

Esta configuración segura y de alta disponibilidad convierte a Amazon EKS en un servicio fiable yrecomendable para cargas de trabajo de producción.

1

Page 9: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario¿Cómo funciona Amazon EKS?

¿Cómo funciona Amazon EKS?

Empezar a usar Amazon EKS es muy sencillo:

1. En primer lugar, cree un clúster de Amazon EKS en la Consola de administración de AWS, con la AWSCLI o con uno de los SDK de AWS.

2. A continuación, lance nodos de trabajo que se registren en el clúster de Amazon EKS. Tiene disponibleuna plantilla de AWS CloudFormation que configura los nodos automáticamente.

3. Cuando el clúster esté listo, puede configurar las herramientas de Kubernetes que prefiera (comokubectl) para comunicarse con él.

4. La implementación y administración de las aplicaciones en el clúster de Amazon EKS son análogas acomo se hace en cualquier otro entorno Kubernetes.

Para obtener más información sobre cómo crear los recursos necesarios y su primer clúster de AmazonEKS, consulte Introducción a Amazon EKS (p. 3).

2

Page 10: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioIntroducción a eksctl

Introducción a Amazon EKSExisten dos guías de introducción disponibles para crear un nuevo clúster de Kubernetes con nodos detrabajo en Amazon EKS:

• Introducción a eksctl (p. 3): esta guía de introducción le ayuda a instalar todos los recursosnecesarios para comenzar a utilizar Amazon EKS mediante eksctl, una sencilla utilidad de línea decomandos para crear y administrar clústeres de Kubernetes en Amazon EKS. Al final de este tutorial,tendrá un clúster de Amazon EKS en ejecución con nodos de trabajo y la utilidad de línea de comandoskubectl estará configurada para utilizar su nuevo clúster. Esta es la forma más sencilla y rápida decomenzar a usar Amazon EKS.

• Introducción a la Consola de administración de AWS (p. 12): esta guía de introducción le ayudaa crear todos los recursos necesarios para comenzar a utilizar Amazon EKS en la Consola deadministración de AWS. En esta guía, puede crear manualmente cada recurso en las consolas deAmazon EKS o AWS CloudFormation. El flujo de trabajo que se describe aquí le ofrece visibilidadcompleta de cómo se crea cada recurso y cómo interactúan entre sí.

Introducción a eksctlEsta guía de introducción le ayuda a instalar todos los recursos necesarios para comenzar a utilizarAmazon EKS mediante eksctl, una utilidad de línea de comandos sencilla para crear y administrarclústeres de Kubernetes en Amazon EKS. Al final de este tutorial, tendrá un clúster de Amazon EKSen ejecución con un grupo de nodos administrado, y la utilidad de línea de comandos kubectl estaráconfigurada para utilizar su nuevo clúster.

Requisitos previosEsta sección le ayuda a instalar y configurar los archivos binarios que necesita para crear y administrar unclúster de Amazon EKS.

Instalación de la AWS CLI más recientePara utilizar kubectl con sus clústeres de Amazon EKS, debe instalar un archivo binario que creeel token de seguridad del cliente necesario para la comunicación del servidor de la API del clúster. Elcomando aws eks get-token, disponible en la versión 1.18.17 o superior de la AWS CLI, permite crear eltoken de seguridad del cliente. Para instalar o actualizar la AWS CLI, consulte Instalación de la interfaz delínea de comandos de AWS en la AWS Command Line Interface Guía del usuario.

Si ya tiene pip y una versión compatible de Python, puede instalar la CLI de AWS con el siguientecomando:

pip install awscli --upgrade --user

Note

La versión de Python de su sistema debe ser 2.7.9 o posterior. En caso contrario se produciránerrores hostname doesn't match en las llamadas de la AWS CLI a Amazon EKS. Paraobtener más información, consulte What are "hostname doesn't match" errors? en las preguntasmás frecuentes de solicitudes de Python.

Para obtener más información acerca de otros métodos de instalación o actualización de la AWS CLI parasu plataforma, consulte los siguientes temas de la AWS Command Line Interface Guía del usuario.

3

Page 11: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRequisitos previos

• Instalación de la AWS Command Line Interface en macOS• Instalación de la AWS Command Line Interface en Linux• Instalación de la AWS Command Line Interface en Microsoft Windows

Si no puede instalar la versión 1.18.17 o posterior de la AWS CLI en su sistema, debe asegurarse de queel autenticador de AWS IAM para Kubernetes esté instalado en su sistema. Para obtener más información,consulte Instalación de aws-iam-authenticator (p. 193).

Configurar sus credenciales de AWS CLITanto eksctl como la AWS CLI requieren que tenga credenciales de AWS configuradas en su entorno.Para el uso general, el comando aws configure es la forma más rápida de configurar la instalación de laAWS CLI.

$ aws configureAWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLEAWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYDefault region name [None]: us-west-2Default output format [None]: json

Al escribir este comando, la AWS CLI solicita cuatro elementos de información: clave de acceso, clavede acceso secreta, región de AWS y formato de salida. Esta información se almacena en un perfil (unacolección de ajustes) con el nombre default. Se utiliza este perfil a menos que especifique otro.

Para obtener más información, consulte Configuración de la AWS CLI en la AWS Command Line InterfaceGuía del usuario.

Instalación de eksctlEsta sección le ayuda a instalar la utilidad de línea de comandos eksctl. Para obtener más información,consulte https://eksctl.io/.

Seleccione la pestaña que corresponda a su configuración.

macOS

Para instalar o actualizar eksctl en macOS con Homebrew

La forma más sencilla de comenzar a utilizar Amazon EKS y macOS es instalando eksctl conHomebrew. La receta eksctl de Homebrew instala eksctl y todas las demás dependenciasnecesarias para Amazon EKS, como kubectl y el aws-iam-authenticator.

1. Si aún no tiene instalado Homebrew en macOS, instálelo con el siguiente comando.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. Instale Weaveworks Homebrew tap.

brew tap weaveworks/tap

3. Instale o actualice eksctl.

• Instale eksctl con el siguiente comando:

brew install weaveworks/tap/eksctl

4

Page 12: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRequisitos previos

• Si eksctl ya está instalado, ejecute el siguiente comando para actualizarlo:

brew upgrade eksctl && brew link --overwrite eksctl

4. Compruebe que la instalación se ha realizado correctamente con el siguiente comando.

eksctl version

Note

La versión de GitTag debe ser al menos 0.16.0-rc.1. En caso contrario, compruebela salida del terminal por si hay algún error de instalación o actualización.

Linux

Para instalar o actualizar eksctl en Linux con curl

1. Descargue y extraiga la última versión de eksctl con el siguiente comando.

curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

2. Mueva el binario extraído a /usr/local/bin.

sudo mv /tmp/eksctl /usr/local/bin

3. Compruebe que la instalación se ha realizado correctamente con el siguiente comando.

eksctl version

Note

La versión de GitTag debe ser al menos 0.16.0-rc.1. En caso contrario, compruebela salida del terminal por si hay algún error de instalación o actualización.

Windows

Para instalar o actualizar eksctl en Windows mediante Chocolatey

1. Si aún no tiene Chocolatey instalado en su sistema Windows, consulte la página sobre cómoinstalar Chocolatey.

2. Instale o actualice eksctl y aws-iam-authenticator.

• Instale los binarios con el siguiente comando:

chocolatey install -y eksctl aws-iam-authenticator

• Si ya están instalados, ejecute el siguiente comando para actualizarlos:

chocolatey upgrade -y eksctl aws-iam-authenticator

3. Compruebe que la instalación se ha realizado correctamente con el siguiente comando.

eksctl version

5

Page 13: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación del clúster de Amazon EKS y los nodos de trabajo

Note

La versión de GitTag debe ser al menos 0.16.0-rc.1. En caso contrario, compruebela salida del terminal por si hay algún error de instalación o actualización.

Instalación y configuración de kubectl para Amazon EKSKubernetes utiliza la utilidad de línea de comandos kubectl para comunicarse con el servidor de la APIdel clúster.

Note

Si ha utilizado las instrucciones de Homebrew anteriores para instalar eksctl en macOS,kubectl y aws-iam-authenticator ya estarán instalados en su sistema. Puede irdirectamente a Creación del clúster de Amazon EKS y los nodos de trabajo (p. 6).

Para instalar kubectl para Amazon EKS

• Dispone de varias opciones para descargar e instalar kubectl para su sistema operativo.• El binario kubectl está disponible en muchos administradores de paquetes de sistema operativo

y esta opción es normalmente mucho más sencilla que el proceso manual de descarga einstalación. Puede seguir las instrucciones de su sistema operativo o administrador de paquetesque se indican en la documentación de Kubernetes para realizar la instalación.

• Amazon EKS ofrece también binarios kubectl que puede utilizar que son idénticos a los binarioskubectl de subida con la misma versión. Para instalar el binario incluido en Amazon EKS para susistema operativo, consulte Instalación de kubectl (p. 188).

Creación del clúster de Amazon EKS y los nodos detrabajoAhora puede crear el clúster de Amazon EKS y un grupo de nodos de trabajo con la utilidad de línea decomandos eksctl.

Para crear el clúster con eksctl

1. Elija una pestaña a continuación que coincida con sus requisitos de carga de trabajo. Si desea crearun clúster que solo ejecute pods en AWS Fargate, elija AWS Fargate-only cluster (Clúster de soloAWS Fargate). Si solo desea ejecutar cargas de trabajo de Linux en su clúster, elija Cluster concargas de trabajo solo de Linux. Si desea ejecutar cargas de trabajo de Linux y Windows en el clúster,elija Cluster con cargas de trabajo de Linux y Windows.

AWS Fargate-only cluster

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Cree el clúster de Amazon EKS compatible con Fargate con el comando siguiente. Reemplacelos valores de ejemplo con sus propios valores. En --region, especifique una regióncompatible (p. 116).

6

Page 14: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación del clúster de Amazon EKS y los nodos de trabajo

eksctl create cluster \--name prod \--version 1.15 \--region us-east-2 \--fargate

El nuevo clúster de Amazon EKS se crea sin un grupo de nodos de trabajo. Sin embargo, eksctlcrea un rol de ejecución de pods y un perfil de Fargate para los espacios de nombres kube-system y default, y aplica un parche a la implementación coredns para que pueda ejecutarseen Fargate. Para obtener más información, consulte AWS Fargate (p. 116).

Cluster with Linux-only workloads

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Cree el clúster de Amazon EKS y los nodos de trabajo de Linux con el siguiente comando.Reemplace los valores de ejemplo con sus propios valores.

Important

Kubernetes version 1.12 is now deprecated on Amazon EKS. On May 11th, 2020,Kubernetes version 1.12 will no longer be supported on Amazon EKS. On this date, youwill no longer be able to create new 1.12 clusters, and all existing Amazon EKS clustersrunning Kubernetes version 1.12 will eventually be automatically updated to version 1.13.We recommend that you update any 1.12 clusters to version 1.13 or later in order toavoid service interruption. For more information, see Retirada de versiones en AmazonEKS (p. 53).Las versiones de la API de Kubernetes disponibles a través de Amazon EKS sonoficialmente compatibles con AWS, hasta que eliminemos la capacidad de crearclústeres utilizando esa versión. Esto es cierto incluso si Kubernetes aguas arribaya no admite una versión disponible en Amazon EKS. Reportamos correcciones deseguridad que son aplicables a las versiones de Kubernetes compatibles con AmazonEKS. Los clústeres existentes siempre son compatibles y Amazon EKS actualizaránautomáticamente el clúster a una versión compatible si no lo ha hecho manualmenteantes de la fecha de fin de vida de la versión.

eksctl create cluster \--name prod \--version 1.15 \--region us-west-2 \--nodegroup-name standard-workers \--node-type t3.medium \--nodes 3 \--nodes-min 1 \--nodes-max 4 \--ssh-access \--ssh-public-key my-public-key.pub \--managed

7

Page 15: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación del clúster de Amazon EKS y los nodos de trabajo

Note

• La opción de --managed para Amazon EKS Grupos de nodosadministrados (p. 86) actualmente se admite en clústeres Kubernetes 1.14. Lerecomendamos que utilice la última versión de Kubernetes disponible en AmazonEKS para aprovechar las últimas funciones. Si decide utilizar una versión anterior deKubernetes, debe eliminar la opción --managed.

Para obtener más información acerca de las opciones disponibles para eksctl createcluster, consulte el proyecto README en GitHub o consulte la página de ayuda con elsiguiente comando.

eksctl create cluster --help

• Aunque --ssh-public-key es opcional, le recomendamos que lo especifiquecuando cree el grupo de nodos con un clúster. Esta opción permite el acceso SSH alos nodos de su grupo de nodos administrados. El acceso SSH le permite conectarse asus instancias y recopilar información de diagnóstico si hay algún problema. No puedehabilitar el acceso remoto después de crear el grupo de nodos. Para obtener másinformación sobre las claves, consulte Amazon EC2 Key Pairs (Pares de claves deAmazon EC2) en la Guía del usuario de Amazon EC2 para instancias de Linux.

Salida:

[ℹ] eksctl version 0.11.1[ℹ] using region us-west-2[ℹ] setting availability zones to [us-west-2c us-west-2a us-west-2d][ℹ] subnets for us-west-2c - public:192.168.0.0/19 private:192.168.96.0/19[ℹ] subnets for us-west-2a - public:192.168.32.0/19 private:192.168.128.0/19[ℹ] subnets for us-west-2d - public:192.168.64.0/19 private:192.168.160.0/19[ℹ] using SSH public key "my-public-key.pub" as "eksctl-prod-nodegroup-standard-workers-00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"[ℹ] using Kubernetes version 1.14[ℹ] creating EKS cluster "prod" in "us-west-2" region with managed nodes[ℹ] will create 2 separate CloudFormation stacks for cluster itself and the initial managed nodegroup[ℹ] if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-west-2 --cluster=prod'[ℹ] CloudWatch logging will not be enabled for cluster "prod" in "us-west-2"[ℹ] you can enable it with 'eksctl utils update-cluster-logging --region=us-west-2 --cluster=prod'[ℹ] Kubernetes API endpoint access will use default of {publicAccess=true, privateAccess=false} for cluster "prod" in "us-west-2"[ℹ] 2 sequential tasks: { create cluster control plane "prod", create managed nodegroup "standard-workers" }[ℹ] building cluster stack "eksctl-prod-cluster"[ℹ] deploying stack "eksctl-prod-cluster"[ℹ] building managed nodegroup stack "eksctl-prod-nodegroup-standard-workers"[ℹ] deploying stack "eksctl-prod-nodegroup-standard-workers"[ℹ] all EKS cluster resources for "prod" have been created[ℹ] saved kubeconfig as "/home/user/.kube/config"[ℹ] nodegroup "standard-workers" has 3 node(s)[ℹ] node "ip-192-168-26-79.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-51-105.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-80-87.us-west-2.compute.internal" is ready[ℹ] waiting for at least 1 node(s) to become ready in "standard-workers"[ℹ] nodegroup "standard-workers" has 3 node(s)[ℹ] node "ip-192-168-26-79.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-51-105.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-80-87.us-west-2.compute.internal" is ready

8

Page 16: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación del clúster de Amazon EKS y los nodos de trabajo

[ℹ] kubectl command should work with "/home/user/.kube/config", try 'kubectl get nodes'[ℹ] EKS cluster "prod" in "us-west-2" region is ready

Cluster with Linux and Windows workloads

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Familiarícese con las consideraciones (p. 60) de compatibilidad con Windows, que incluyenvalores admitidos para instanceType en el texto de ejemplo siguiente. Reemplace los valoresde ejemplo con sus propios valores. Guarde el texto siguiente en un archivo llamado cluster-spec.yaml. El archivo de configuración se usa para crear un clúster y los grupos de nodos detrabajo de Linux y Windows. Incluso si solo desea ejecutar cargas de trabajo de Windows en suclúster, los clústeres de Amazon EKS deben contener al menos un nodo de trabajo de Linux.Recomendamos que cree al menos dos nodos de trabajo en cada grupo de nodos con fines dedisponibilidad. La versión de Kubernetes mínima requerida para las cargas de trabajo de Windowses 1.14.

---apiVersion: eksctl.io/v1alpha5kind: ClusterConfig

metadata: name: windows-prod region: us-west-2 version: '1.15'

managedNodeGroups: - name: linux-ng instanceType: t2.large minSize: 2

nodeGroups: - name: windows-ng instanceType: m5.large minSize: 2 volumeSize: 100 amiFamily: WindowsServer2019FullContainer

Cree su clúster de Amazon EKS, así como nodos de trabajo de Windows y Linux con el siguientecomando.

eksctl create cluster -f cluster-spec.yaml --install-vpc-controllers

Note

La opción managedNodeGroups de Amazon EKS Grupos de nodosadministrados (p. 86) actualmente solo se admite en clústeres Kubernetes 1.14.Le recomendamos que utilice la última versión de Kubernetes disponible en AmazonEKS para aprovechar las últimas funciones. Si decide utilizar una versión anterior deKubernetes, debe eliminar la opción --managed.

9

Page 17: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación del clúster de Amazon EKS y los nodos de trabajo

Para obtener más información acerca de las opciones disponibles para eksctl createcluster, consulte el proyecto README en GitHub o consulte la página de ayuda con elsiguiente comando.

eksctl create cluster --help

Salida:

[ℹ] using region us-west-2[ℹ] setting availability zones to [us-west-2a us-west-2d us-west-2c][ℹ] subnets for us-west-2a - public:192.168.0.0/19 private:192.168.96.0/19[ℹ] subnets for us-west-2d - public:192.168.32.0/19 private:192.168.128.0/19[ℹ] subnets for us-west-2c - public:192.168.64.0/19 private:192.168.160.0/19[ℹ] nodegroup "linux-ng" will use "ami-076c743acc3ec4159" [AmazonLinux2/1.14][ℹ] nodegroup "windows-ng" will use "ami-0c7f1b5f1bebccac2" [WindowsServer2019FullContainer/1.14][ℹ] using Kubernetes version 1.14[ℹ] creating EKS cluster "windows-cluster" in "us-west-2" region[ℹ] 2 nodegroups (linux-ng, windows-ng) were included (based on the include/exclude rules)[ℹ] will create a CloudFormation stack for cluster itself and 2 nodegroup stack(s)[ℹ] if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-west-2 --name=windows-cluster'[ℹ] CloudWatch logging will not be enabled for cluster "windows-cluster" in "us-west-2"[ℹ] you can enable it with 'eksctl utils update-cluster-logging --region=us-west-2 --name=windows-cluster'[ℹ] 3 sequential tasks: { create cluster control plane "windows-cluster", 2 parallel sub-tasks: { create nodegroup "linux-ng", create nodegroup "windows-ng" }, install Windows VPC controller }[ℹ] building cluster stack "eksctl-windows-cluster-cluster"[ℹ] deploying stack "eksctl-windows-cluster-cluster"[ℹ] building nodegroup stack "eksctl-windows-cluster-nodegroup-linux-ng"[ℹ] building nodegroup stack "eksctl-windows-cluster-nodegroup-linux-ng"0m[ℹ] --nodes-max=2 was set automatically for nodegroup windows-ng[ℹ] --nodes-max=2 was set automatically for nodegroup linux-ng[ℹ] deploying stack "eksctl-windows-cluster-nodegroup-windows-ng"[ℹ] deploying stack "eksctl-windows-cluster-nodegroup-linux-ng"[ℹ] created "ClusterRole.rbac.authorization.k8s.io/vpc-resource-controller"[ℹ] created "ClusterRoleBinding.rbac.authorization.k8s.io/vpc-resource-controller"[ℹ] created "kube-system:ServiceAccount/vpc-resource-controller"[ℹ] created "kube-system:Deployment.apps/vpc-resource-controller"[ℹ] created "CertificateSigningRequest.certificates.k8s.io/vpc-admission-webhook.kube-system"[ℹ] created "kube-system:secret/vpc-admission-webhook-certs"[ℹ] created "kube-system:Service/vpc-admission-webhook"[ℹ] created "kube-system:Deployment.apps/vpc-admission-webhook"[ℹ] created "kube-system:MutatingWebhookConfiguration.admissionregistration.k8s.io/vpc-admission-webhook-cfg"[ℹ] all EKS cluster resources for "windows-cluster" have been created[ℹ] saved kubeconfig as "C:\\Users\\username/.kube/config"[ℹ] adding role "arn:aws:iam::123456789012:role/eksctl-windows-cluster-nodegroup-NodeInstanceRole-ZR93IIUZSYPR" to auth ConfigMap[ℹ] nodegroup "linux-ng" has 0 node(s)[ℹ] waiting for at least 2 node(s) to become ready in "linux-ng"[ℹ] nodegroup "linux-ng" has 2 node(s)[ℹ] node "ip-192-168-8-247.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-80-253.us-west-2.compute.internal" is ready[ℹ] adding role "arn:aws:iam::123456789012:role/eksctl-windows-cluster-nodegroup-NodeInstanceRole-XM9UZN3NXBOB" to auth ConfigMap[ℹ] nodegroup "windows-ng" has 0 node(s)[ℹ] waiting for at least 2 node(s) to become ready in "windows-ng"

10

Page 18: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPasos siguientes

[ℹ] nodegroup "windows-ng" has 2 node(s)[ℹ] node "ip-192-168-4-192.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-63-224.us-west-2.compute.internal" is ready[ℹ] kubectl command should work with "C:\\Users\\username/.kube/config", try 'kubectl get nodes'[ℹ] EKS cluster "windows-cluster" in "us-west-2" region is ready

2. Normalmente el aprovisionamiento del clúster tarda entre 10 y 15 minutos. Cuando el clúster esté listo,compruebe que la configuración de kubectl es correcta.

kubectl get svc

Note

Si aparece el error "aws-iam-authenticator": executable file not found in$PATH, significa que kubectl no está configurado para Amazon EKS. Para obtener másinformación, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Acceso denegado ono autorizado (kubectl) (p. 293) en la sección de solución de problemas.

Salida:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEsvc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

3. (Solo para procesos de trabajo de GPU de Linux) Si ha elegido un tipo de instancia de GPU y laAMI optimizada para Amazon EKS compatible con GPU, debe aplicar el complemento de dispositivoNVIDIA para Kubernetes como un DaemonSet en su clúster con el siguiente comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

Pasos siguientesAhora que tiene un clúster de Amazon EKS en funcionamiento con nodos de trabajo, está listo paraempezar a instalar los complementos de Kubernetes e implementar aplicaciones en su clúster. Los temasde documentación siguientes le ayudarán a ampliar la funcionalidad de su clúster.

• Escalador automático del clúster (p. 142) — Configure el Autoscaler de clúster de Kubernetes paraajustar automáticamente el número de nodos en sus grupos de nodos.

• Lanzar una aplicación de libro de invitados (p. 206): cree una aplicación de libro de invitados deejemplo para probar los nodos de trabajo de clúster y Linux.

• Implementación de una aplicación de ejemplo de Windows (p. 65) — Implementa una aplicación deejemplo para probar los nodos de trabajo de clúster y Windows.

• Tutorial: Implementación de la interfaz de usuario web de Kubernetes (panel) (p. 216): este tutorial leguiará por el proceso de implementación del panel de Kubernetes en su clúster.

• Uso de Helm con Amazon EKS (p. 215): el administrador de paquetes helm para Kubernetes le ayudaa instalar y administrar aplicaciones en su clúster.

• Instalación del servidor de métricas de Kubernetes (p. 209): el servidor de métricas de Kubernetes esun agregador de datos de uso de recursos en el clúster.

• Métricas del plano de control con Prometheus (p. 211): este tema le ayuda a implementar Prometheusen el clúster con helm.

11

Page 19: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioIntroducción a la consola

Introducción a la Consola de administración deAWS

Esta guía de introducción le ayuda a crear todos los recursos necesarios para comenzar a utilizar AmazonEKS en la Consola de administración de AWS. En esta guía, puede crear manualmente cada recurso enlas consolas de Amazon EKS o AWS CloudFormation. El flujo de trabajo que se describe aquí le ofrecevisibilidad completa de cómo se crea cada recurso y cómo interactúan entre sí.

También puede optar por utilizar la CLI eksctl para crear los nodos de clúster y de trabajo. Para obtenermás información, consulte Introducción a eksctl (p. 3).

Requisitos previos de Amazon EKSAntes de crear un clúster de Amazon EKS, debe crear una función de IAM que Kubernetes pueda asumirpara crear recursos de AWS. Por ejemplo, cuando se crea un balanceador de carga, Kubernetes asume elrol para crear un balanceador de carga de Elastic Load Balancing en su cuenta. Esto solo es necesario unavez y se puede utilizar para varios clústeres de EKS.

Asimismo, debe crear una VPC y un grupo de seguridad para el clúster. Aunque la VPC y los grupos deseguridad se pueden utilizar para varios clústeres de EKS, recomendamos una VPC distinta para cadaclúster de EKS a fin de conseguir un mejor aislamiento de la red.

Esta sección también le ayuda a instalar el binario kubectl y configurarlo para que funcione con AmazonEKS.

Crear el rol de servicio de Amazon EKSPuede crear el rol utilizando la Consola de administración de AWS o AWS CloudFormation. Seleccione lapestaña con el nombre de la herramienta que le gustaría utilizar para crear el rol.

Consola de administración de AWS

Para crear una función de servicio de Amazon EKS en la consola de IAM

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. Elija Roles y, a continuación, Create role (Crear rol).3. Seleccione EKS en la lista de servicios, a continuación, EKS para su caso de uso y luego Next:

Permissions (Siguiente: Permisos).4. Elija Next: Tags (Siguiente: Etiquetas).5. De manera opcional, añada metadatos al rol asociando etiquetas como pares de clave-valor. Para

obtener más información sobre el uso de etiquetas en IAM, consulte Etiquetado de entidades deIAM en la Guía del usuario de IAM.

6. Elija Next: Review.7. En Role name (Nombre de rol), escriba un nombre único para el rol, por ejemplo

eksServiceRole y, a continuación, elija Create role (Crear rol).

AWS CloudFormation

Para crear la función de servicio de Amazon EKS con AWS CloudFormation

1. Guarde la siguiente plantilla de AWS CloudFormation en un archivo de texto en su sistema local.

12

Page 20: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRequisitos previos de Amazon EKS

---AWSTemplateFormatVersion: '2010-09-09'Description: 'Amazon EKS Service Role'

Resources:

eksServiceRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - eks.amazonaws.com Action: - sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonEKSServicePolicy - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy

Outputs:

RoleArn: Description: The role that Amazon EKS will use to create AWS resources for Kubernetes clusters Value: !GetAtt eksServiceRole.Arn Export: Name: !Sub "${AWS::StackName}-RoleArn"

2. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.3. Elija Create stack.4. Para Specify template (Especificar plantilla), seleccione Upload a template file (Actualizar un

archivo de plantilla) y, a continuación, elija Choose file (Elegir archivo).5. Elija el archivo que creó anteriormente y, a continuación, elija Next (Siguiente).6. En Stack name (Nombre de pila), escriba un nombre para la función, por ejemplo

eksServiceRole y, a continuación, elija Next (Siguiente).7. En página Configure stack options (Configurar opciones de pila), seleccione Next (Siguiente).8. En la página Review (Revisar), revise la información, confirme la advertencia de que la pila puede

crear recursos de IAM y elija Create stack (Crear pila).

Crear la VPC del clúster de Amazon EKSEsta sección le guiará durante la creación de una VPC para su clúster con 3 subredes públicas o dossubredes públicas y dos privadas que se proporcionan con acceso a Internet a través de una gatewayNAT. Se recomienda una arquitectura de red que utilice subredes privadas para los nodos de trabajo ysubredes públicas en las que Kubernetes creará balanceadores de carga de cara al público.

Seleccione de entre las siguientes pestañas la que represente la configuración de VPC que desee.

Only public subnets

Para crear la VPC de su clúster únicamente con subredes públicas

1. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.2. En la barra de navegación, seleccione una región compatible con Amazon EKS.

13

Page 21: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRequisitos previos de Amazon EKS

3. Elija Create stack.4. En Choose a template (Elegir una plantilla), seleccione Specify an Amazon S3 template URL

(Especificar una URL de plantilla de Amazon S3).5. Pegue la URL siguiente en el área de texto y elija Next (Siguiente).

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-vpc-sample.yaml

6. En la página Specify Details (Especificar detalles), rellene los parámetros como corresponda y, acontinuación, elija Next (Siguiente).

• Stack name (Nombre de pila): elija un nombre para la pila de AWS CloudFormation. Porejemplo, puede llamarla eks-VPC.

• VpcBlock: elija un rango de CIDR para la VPC. Puede mantener el valor predeterminado.• Subnet01Block: especifique un rango de CIDR para la subred 1. Le recomendamos que

mantenga el valor predeterminado para que tenga suficientes direcciones IP para que lasvainas las utilicen.

• Subnet02Block: especifique un rango de CIDR para la subred 2. Le recomendamos quemantenga el valor predeterminado para que tenga suficientes direcciones IP para que lasvainas las utilicen.

• Subnet03Block: especifique un rango de CIDR para la subred 3. Le recomendamos quemantenga el valor predeterminado para que tenga suficientes direcciones IP para que lasvainas las utilicen.

7. (Opcional) En la página Options (Opciones), marque los recursos de la pila. Seleccione Next(Siguiente).

8. En la página Review, elija Create.9. Una vez creada la pila, selecciónela en la consola y elija Outputs (Salidas).10. Anote el valor de SecurityGroups (Grupos de seguridad) correspondiente al grupo de seguridad

que se ha creado. Lo necesitará al crear el clúster de EKS. Este grupo de seguridad se aplica alas interfaces de red elásticas entre cuentas que se crean en las subredes y que permiten al planode control de Amazon EKS comunicarse con los nodos de trabajo.

11. Registre el VpcId de la VPC que ha creado. Lo necesitará al lanzar la plantilla del grupo de nodosde trabajo.

12. Anote el valor de SubnetIds de las subredes que se han creado. Lo necesitará al crear el clústerde EKS. Se trata de las subredes en las que se lanzan los nodos de trabajo.

Public and private subnets

Crear una VPC para el clúster con subredes públicas y privadas

1. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.2. En la barra de navegación, seleccione una región compatible con Amazon EKS.3. Elija Create stack.4. En Choose a template (Elegir una plantilla), seleccione Specify an Amazon S3 template URL

(Especificar una URL de plantilla de Amazon S3).5. Pegue la URL siguiente en el área de texto y elija Next (Siguiente).

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-vpc-private-subnets.yaml

6. En la página Specify Details (Especificar detalles), rellene los parámetros como corresponda y, acontinuación, elija Next (Siguiente).

14

Page 22: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRequisitos previos de Amazon EKS

• Stack name (Nombre de pila): elija un nombre para la pila de AWS CloudFormation. Porejemplo, puede llamarla eks-VPC.

• VpcBlock: elija un rango de CIDR para la VPC. Puede mantener el valor predeterminado.• PublicSubnet01Block: especifique un rango de CIDR para la subred pública 1. Le

recomendamos que mantenga el valor predeterminado para que tenga suficientes direccionesIP para que las vainas las utilicen.

• PublicSubnet02Block: especifique un rango de CIDR para la subred pública 2. Lerecomendamos que mantenga el valor predeterminado para que tenga suficientes direccionesIP para que las vainas las utilicen.

• PrivateSubnet01Block: especifique un rango de CIDR para la subred privada 1. Lerecomendamos que mantenga el valor predeterminado para que tenga suficientes direccionesIP para que las vainas las utilicen.

• PrivateSubnet02Block: especifique un rango de CIDR para la subred privada 2. Lerecomendamos que mantenga el valor predeterminado para que tenga suficientes direccionesIP para que las vainas las utilicen.

7. (Opcional) En la página Options (Opciones), marque los recursos de la pila. Seleccione Next(Siguiente).

8. En la página Review, elija Create.9. Una vez creada la pila, selecciónela en la consola y elija Outputs (Salidas).10. Anote el valor de SecurityGroups (Grupos de seguridad) correspondiente al grupo de seguridad

que se ha creado. Lo necesitará al crear el clúster de EKS. Este grupo de seguridad se aplica alas interfaces de red elásticas entre cuentas que se crean en las subredes y que permiten al planode control de Amazon EKS comunicarse con los nodos de trabajo.

11. Registre el VpcId de la VPC que ha creado. Lo necesitará al lanzar la plantilla del grupo de nodosde trabajo.

12. Anote el valor de SubnetIds de las subredes que se han creado. Lo necesitará al crear el clústerde EKS. Se trata de las subredes en las que se lanzan los nodos de trabajo.

13. Etiquete las subredes privadas para que Kubernetes sepa que puede utilizarlas para losbalanceadores de carga internos.

a. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.b. Elija Subnets (Subredes) en el panel de navegación izquierdo.c. Seleccione una de las subredes privadas para la VPC del clúster de Amazon EKS

(puede filtrarlas con la cadena PrivateSubnet) y elija la pestaña Tags (Etiquetas) y, acontinuación, Add/Edit Tags (Añadir/editar etiquetas).

d. Seleccione Create Tag (Crear etiqueta) y añada la siguiente clave y el siguiente valor y, acontinuación, seleccione Save (Guardar).

Key Valor

kubernetes.io/role/internal-elb 1

e. Repita estos pasos secundarios en cada subred privada de la VPC.

Instalación y configuración de kubectl para Amazon EKSKubernetes utiliza una utilidad de línea de comandos llamada kubectl para comunicarse con el servidorde la API del clúster.

Para instalar kubectl para Amazon EKS

• Dispone de varias opciones para descargar e instalar kubectl para su sistema operativo.

15

Page 23: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 1: Crear el clúster de Amazon EKS

• El binario kubectl está disponible en muchos administradores de paquetes de sistema operativoy esta opción es normalmente mucho más sencilla que el proceso manual de descarga einstalación. Puede seguir las instrucciones de su sistema operativo o administrador de paquetesque se indican en la documentación de Kubernetes para realizar la instalación.

• Amazon EKS ofrece también binarios kubectl que puede utilizar que son idénticos a los binarioskubectl de subida con la misma versión. Para instalar el binario incluido en Amazon EKS para susistema operativo, consulte Instalación de kubectl (p. 188).

Instalación de la AWS CLI más recientePara utilizar kubectl con sus clústeres de Amazon EKS, debe instalar un archivo binario que creeel token de seguridad del cliente necesario para la comunicación del servidor de la API del clúster. Elcomando aws eks get-token, disponible en la versión 1.18.17 o superior de la AWS CLI, permite crear eltoken de seguridad del cliente. Para instalar o actualizar la AWS CLI, consulte Instalación de la interfaz delínea de comandos de AWS en la AWS Command Line Interface Guía del usuario.

Important

Los administradores de paquetes tales como yum, apt-get o Homebrew para macOS suelen estardetrás de varias versiones de la AWS CLI. Para asegurarse de que tiene la versión más reciente,consulte la sección Instalación de la interfaz de línea de comandos de AWS en la AWS CommandLine Interface Guía del usuario.

Puede comprobar la versión de la AWS CLI con el comando siguiente:

aws --version

Note

La versión de Python de su sistema debe ser 2.7.9 o posterior. En caso contrario se produciránerrores hostname doesn't match en las llamadas de la AWS CLI a Amazon EKS. Paraobtener más información, consulte What are "hostname doesn't match" errors? en las preguntasmás frecuentes de solicitudes de Python.

Si no puede instalar la versión 1.18.17 o posterior de la AWS CLI en su sistema, debe asegurarse de queel autenticador de AWS IAM para Kubernetes esté instalado en su sistema. Para obtener más información,consulte Instalación de aws-iam-authenticator (p. 193).

Paso 1: Crear el clúster de Amazon EKSAhora puede crear el clúster de Amazon EKS. En esta sección se explica cómo crear un clústercon la última versión de Kubernetes que está disponible en Amazon EKS para aprovechar todas lascaracterísticas más recientes. Algunas funciones no están disponibles en versiones anteriores deKubernetes.

Important

Cuando se crea un clúster de Amazon EKS la entidad (el usuario o el rol) de IAM que crea elclúster se añade a la tabla de autorización de RBAC de Kubernetes como administrador (conpermisos de system:master). Inicialmente, solo ese usuario de IAM puede realizar llamadasa la API de Kubernetes con kubectl. Para obtener más información, consulte Administración deusuarios o funciones de IAM para su clúster (p. 200). Si usa la consola para crear el clúster,debe asegurarse de que las mismas credenciales de usuario de IAM se encuentren en la cadenade credenciales del SDK de AWS al ejecutar comandos kubectl en el clúster.Si instala y configura la AWS CLI, puede configurar las credenciales de IAM para el usuario. Sila AWS CLI está configurada correctamente para el usuario, eksctl y el Autenticador de AWS

16

Page 24: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 1: Crear el clúster de Amazon EKS

IAM para Kubernetes también puede encontrar esas credenciales. Para obtener más información,consulte Configuración de la AWS CLI en la AWS Command Line Interface Guía del usuario.

Para crear el clúster con la consola

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Elija Create cluster.

Note

Si el usuario de IAM no tiene privilegios administrativos, deberá asignarle explícitamentelos permisos para llamar a las operaciones de la API de Amazon EKS. Para obtener másinformación, consulte Ejemplos de políticas basadas en identidad de Amazon EKS (p. 248).

3. En la página Create cluster (Crear clúster), rellene los campos siguientes y, a continuación, elijaCreate (Crear):

• Cluster name (Nombre de clúster): nombre único para el clúster.• Kubernetes version (Versión de Kubernetes): versión de Kubernetes que debe usarse para el

clúster. De forma predeterminada se seleccionará la última versión disponible.

Important

Esta guía de introducción requiere que elija la última versión disponible de Kubernetes.• Role ARN (ARN de rol): Seleccione el rol de IAM que creó con Crear el rol de servicio de Amazon

EKS (p. 12).• VPC: VPC que creó con Crear la VPC del clúster de Amazon EKS (p. 13). Encontrará el nombre

de la VPC en la lista desplegable.• Subnets (Subredes): valores de SubnetIds (separados por comas) de la salida de AWS

CloudFormation generada con Crear la VPC del clúster de Amazon EKS (p. 13). Especifiquetodas las subredes que alojarán recursos para su clúster (como subredes privadas para nodos detrabajo y subredes públicas para balanceadores de carga). De forma predeterminada se escogenlas subredes disponibles de la VPC especificada en el campo anterior.

• Security Groups (Grupos de seguridad): valor de SecurityGroups de la salida de AWSCloudFormation generada con Crear la VPC del clúster de Amazon EKS (p. 13). Este grupo deseguridad tiene ControlPlaneSecurityGroup en el nombre desplegable.

Important

La plantilla de AWS CloudFormation del nodo de trabajo modifica el grupo de seguridadque se especifica aquí, por lo que Amazon EKS recomienda encarecidamente que utiliceun grupo de seguridad dedicado para el plano de control del clúster (uno por clúster). Sieste grupo de seguridad se comparte con otros recursos, podría bloquear o interrumpir lasconexiones con esos recursos.

• Acceso privado al punto de enlace: elija si desea habilitar o deshabilitar el acceso privado al puntode enlace del servidor de API de Kubernetes del clúster. Si habilita el acceso privado, las solicitudesde API de Kubernetes que provengan de dentro de la VPC del clúster utilizarán el punto de enlaceprivado de la VPC. Para obtener más información, consulte Control de acceso al punto de enlacedel clúster de Amazon EKS (p. 39).

• Acceso público al punto de enlace: elija si desea habilitar o deshabilitar el acceso público al puntode enlace del servidor de API de Kubernetes del clúster. Si deshabilita el acceso público, el servidorde la API de Kubernetes del clúster solo puede recibir solicitudes desde dentro de la VPC delclúster. Para obtener más información, consulte Control de acceso al punto de enlace del clúster deAmazon EKS (p. 39).

• Logging (Registro) – Para cada tipo de registro individual, elija si el tipo de registro debe estarEnabled (Habilitado) o Disabled (Deshabilitado). De forma predeterminada, los tipos de registroestán Disabled (Deshabilitados). Para obtener más información, consulte Registro de plano decontrol de Amazon EKS (p. 45)

17

Page 25: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 2: Crear un archivo kubeconfig

• Tags (Etiquetas): (opcional) añada etiquetas al clúster. Para obtener más información, consulteEtiquetado de los recursos de Amazon EKS (p. 279).

Note

Podrían aparecer un error que indica que una de las zonas de disponibilidad de la solicitudno tiene capacidad suficiente para crear un clúster de Amazon EKS. Si esto ocurre, elmensaje de error indicará las zonas de disponibilidad que admiten un clúster nuevo.Intente crear el clúster de nuevo con al menos dos subredes ubicadas en las zonas dedisponibilidad admitidas para su cuenta. Para obtener más información, consulte Capacidadinsuficiente (p. 292).

4. En la página Clusters (Clústeres), elija el nombre del clúster que acaba de crear para ver suinformación.

5. El campo Status (Estado) muestra CREATING (CREANDO) hasta que termina el proceso deaprovisionamiento del clúster. Normalmente el aprovisionamiento del clúster tarda entre 10 y 15minutos.

Paso 2: Crear un archivo kubeconfigEn esta sección creará un archivo kubeconfig para el clúster con el comando update-kubeconfig de laAWS CLI. Si no desea instalar la AWS CLI, o si prefiere crear o actualizar su kubeconfig manualmente,consulte Crear un archivo kubeconfig para Amazon EKS (p. 196).

Para crear el archivo kubeconfig con la AWS CLI

1. Asegúrese de que tiene al menos la versión 1.18.17 de la AWS CLI instalada. Para instalar oactualizar la AWS CLI, consulte Instalación de la interfaz de línea de comandos de AWS en la AWSCommand Line Interface Guía del usuario.

Note

La versión de Python de su sistema debe ser 2.7.9 o posterior. En caso contrario seproducirán errores hostname doesn't match en las llamadas de la AWS CLI a AmazonEKS. Para obtener más información, consulte What are "hostname doesn't match" errors? enlas preguntas más frecuentes de solicitudes de Python.

Puede comprobar la versión de la AWS CLI con el comando siguiente:

aws --version

Important

Los administradores de paquetes tales como yum, apt-get o Homebrew para macOS suelenestar detrás de varias versiones de la AWS CLI. Para asegurarse de que tiene la versión másreciente, consulte la sección Instalación de la interfaz de línea de comandos de AWS en laAWS Command Line Interface Guía del usuario.

2. Utilice el comando update-kubeconfig de la AWS CLI para crear o actualizar el archivo kubeconfig delclúster.

• De forma predeterminada, el archivo de configuración resultante se crea en la ruta de kubeconfigpredeterminada (.kube/config) en el directorio de inicio o en combinación con un archivokubeconfig existente en dicha ubicación. Puede especificar otra ruta con la opción --kubeconfig.

• Puede especificar un ARN de función de IAM con la opción --role-arn para usar esa funciónen la autenticación al emitir comandos kubectl. De lo contrario, se usará la entidad de IAM de la

18

Page 26: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 3: Iniciar un grupo de nodos administrados

AWS CLI predeterminada o las credenciales del SDK. Puede ver su identidad de AWS CLI o SDKpredeterminada ejecutando el comando aws sts get-caller-identity.

• Para obtener más información, consulte la página de ayuda del comando aws eks update-kubeconfig help o consulte update-kubeconfig en la AWS CLI Command Reference.

Note

Para ejecutar el siguiente comando, la cuenta debe estar asignada al permiso de IAMeks:DescribeCluster para el nombre de clúster que especifique.

aws eks --region region update-kubeconfig --name cluster_name

3. Pruebe la configuración.

kubectl get svc

Note

Si aparece el error "aws-iam-authenticator": executable file not found in$PATH, significa que kubectl no está configurado para Amazon EKS. Para obtener másinformación, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Acceso denegado ono autorizado (kubectl) (p. 293) en la sección de solución de problemas.

Salida:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEsvc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

Paso 3: Iniciar un grupo de nodos administradosAhora que ha creado la VPC y el plano de control de Kubernetes, puede lanzar y configurar un grupo denodos administrados.

Important

Los nodos de trabajo de Amazon EKS son instancias de Amazon EC2 estándar y se le facturaránconforme a los precios de instancia ordinarios de Amazon EC2. Para obtener más información,consulte Precios de Amazon EC2.

El demonio de kubelet del nodo de trabajo de Amazon EKS hace llamadas a las API de AWS en sunombre. Los nodos de trabajo reciben permisos de dichas llamadas de API a través de políticas asociadasy de un perfil de instancias de IAM. Antes de poder lanzar nodos de trabajo y registrarlos en un clúster,debe crear un rol de IAM para dichos nodos de trabajo, para utilizarlo cuando se lancen. Para obtenermás información, consulte Rol de IAM del nodo de trabajo de Amazon EKS (p. 254). Puede crear el rolutilizando la Consola de administración de AWS o AWS CloudFormation. Seleccione la pestaña con elnombre de la herramienta que le gustaría utilizar para crear el rol.

Note

Se recomienda crear un nuevo rol IAM de nodo de trabajo para cada clúster. De lo contrario, unnodo de un clúster podría autenticarse con otro clúster al que no pertenece.

19

Page 27: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 3: Iniciar un grupo de nodos administrados

Consola de administración de AWS

Para crear su rol de nodo de trabajo de Amazon EKS en la consola de IAM

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. Elija Roles y, a continuación, Create role (Crear rol).3. Elija EC2 de la lista de servicios, a continuación, Next Permissions (Siguientes permisos).4. En el cuadro Filter policies (Políticas de filtro), escriba AmazonEKSWorkerNodePolicy. Marque

la casilla situada a la izquierda de AmazonEKSWorkerNodePolicy.5. En el cuadro Filter policies (Políticas de filtro), escriba AmazonEKS_CNI_Policy. Marque la

casilla situada a la izquierda de AmazonEKS_CNI_Policy.6. En el cuadro Filter policies (Políticas de filtro), escriba

AmazonEC2ContainerRegistryReadOnly. Marque la casilla situada a la izquierda deAmazonEC2ContainerRegistryReadOnly.

7. Elija Next: Tags (Siguiente: Etiquetas).8. De manera opcional, añada metadatos al rol asociando etiquetas como pares de clave-valor. Para

obtener más información sobre el uso de etiquetas en IAM, consulte Etiquetado de entidades deIAM en la Guía del usuario de IAM.

9. Elija Next: Review.10. En Role name (Nombre de rol), escriba un nombre único para su rol, por ejemplo,

NodeInstanceRole. En Role description (Descripción del rol), sustituya el texto actual por eltexto descriptivo como Amazon EKS - Node Group Role, a continuación, elija Create role(Crear rol).

AWS CloudFormation

Para crear su rol de nodo de trabajador de Amazon EKS mediante AWS CloudFormation

1. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.2. Seleccione Create stack (Crear pila) y, a continuación, seleccione With new resources (standard)

(Con nuevos recursos [estándar]).3. En Specify template (Especificar plantilla), seleccione URL de Amazon S3.4. Pegue la siguiente URL en el área de texto Amazon S3 URL (URL de Amazon S3) y elija Next

(Siguiente) dos veces:

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-nodegroup-role.yaml

5. En la página Specify stack details (Especificar detalles de pila), para Stack name (Nombre de pila)escriba un nombre como, por ejemplo, eks-node-group-instance-role y elija Next (Siguiente).

6. (Opcional) En la página Configure stack options (Configurar opciones de pila), tiene la opción deetiquetar sus recursos de pila. Seleccione Siguiente.

7. En la página Review (Revisar) marque la casilla de la sección Capabilities (Capacidades) y elijaCreate stack (Crear pila).

8. Una vez creada la pila, selecciónela en la consola y elija Outputs (Salidas).9. Registre el valor NodeInstanceRole para el rol de IAM que se creó. Necesita esto cuando al crear

su grupo de nodos.

Para iniciar el grupo de nodos administrados

1. Espere a que el estado del clúster sea ACTIVE. No se puede crear un grupo de nodos administradospara un clúster que aún no está ACTIVE.

20

Page 28: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 3: Iniciar un grupo de nodos administrados

2. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.3. Elija el nombre del clúster en el que desea crear el grupo de nodos administrados.4. En la página del clúster, elija Agregar grupo de nodos.5. En la página Configurar grupo de nodos rellene los parámetros en consecuencia y, a continuación,

elija Siguiente.

• Nombre — Escriba un nombre único para el grupo de nodos administrados.• Nombre de rol de IAM del nodo — Elija el rol de instancia de nodo que va a utilizar con el grupo

de nodos. Para obtener más información, consulte Rol de IAM del nodo de trabajo de AmazonEKS (p. 254).

• Subredes — Seleccione las subredes en las que iniciar los nodos gestionados.

Important

Si está ejecutando una aplicación con estado en varias zonas de disponibilidad que estérespaldada por volúmenes de Amazon EBS y utilice Kubernetes Escalador automático delclúster (p. 142), debe configurar varios grupos de nodos, cada uno de ellos limitado auna zona de disponibilidad única. Además, debe habilitar la característica --balance-similar-node-groups.

• Acceso remoto — (Opcional) Puede habilitar el acceso SSH a los nodos del grupo de nodosadministrados. El acceso SSH le permite conectarse a sus instancias y recopilar información dediagnóstico si hay algún problema. Complete los siguientes pasos para habilitar el acceso remoto.

Note

Le recomendamos que habilite el acceso remoto cuando cree su grupo de nodos. Nopuede habilitar el acceso remoto después de crear el grupo de nodos.

1. Active la casilla de verificación para Permitir el acceso remoto a nodos.2. Para el par de claves SSH, elija una clave SSH de Amazon EC2 para usar. Para obtener más

información, consulte Pares de claves de Amazon EC2 en la Guía del usuario de Amazon EC2para instancias de Linux.

3. En Permitir acceso remoto desde, elija Todo para permitir el acceso SSH desde cualquier lugarde Internet (0.0.0.0/0) o seleccione un grupo de seguridad para permitir el acceso SSH desdeinstancias que pertenecen a ese grupo de seguridad.

• Etiquetas — (Opcional) Puede elegir etiquetar el grupo de nodos gestionados de Amazon EKS.Estas etiquetas no se propagan a otros recursos del grupo de nodos, como instancias o gruposAuto Scaling. Para obtener más información, consulte Etiquetado de los recursos de AmazonEKS (p. 279).

• Etiquetas de Kubernetes — (Opcional) Puede optar por aplicar etiquetas de Kubernetes a los nodosde su grupo de nodos administrados.

6. En la página Establecer configuración de cálculo rellene los parámetros en consecuencia y, acontinuación, elija Siguiente.

• Tipo de AMI — Elija Amazon Linux 2 (AL2_x86_64) para instancias que no sean GPU o AmazonLinux 2 GPU Enabled (AL2_x86_64_GPU) para instancias de GPU.

• Tipo de instancia — Elija el tipo de instancia que desea utilizar en el grupo de nodos administrados.Los tipos de instancia más grandes pueden incorporar más pods.

• Tamaño del disco — Escriba el tamaño del disco (en GiB) que se utilizará para el volumen raíz delnodo de trabajo.

7. En la página Configurar políticas de escala rellene los parámetros en consecuencia y, a continuación,elija Siguiente.

21

Page 29: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPasos siguientes

Note

Amazon EKS no escala automáticamente el grupo de nodos de entrada o salida. Sinembargo, puede configurar los Escalador automático del clúster (p. 142) de Kubernetespara que lo hagan por usted.

• Tamaño mínimo — Especifique el número mínimo de nodos de trabajo a los que puede escalar elgrupo de nodos administrados.

• Tamaño máximo — Especifique el número máximo de nodos de trabajo a los que puede escalar elgrupo de nodos administrados.

• Tamaño deseado — Especifique el número actual de nodos de trabajo que el grupo de nodosadministrados debe mantener en el inicio.

8. En la página Revisar y crear revise la configuración del grupo de nodos administrados y elija Crear.9. Observe el estado de los nodos y espere a que aparezca el valor Ready.

kubectl get nodes --watch

10. (Solo para procesos de trabajo de GPU) Si ha elegido un tipo de instancia de GPU y la AMI optimizadapara Amazon EKS compatible con GPU, debe aplicar el complemento de dispositivo NVIDIA paraKubernetes como un DaemonSet configurado en su clúster con el siguiente comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

(Opcional) Para lanzar los nodos de trabajo de Windows

Añada compatibilidad con Windows al clúster y lance los nodos de trabajo de Windows. Para obtenermás información, consulte Compatibilidad con Windows (p. 60). Todos los clústeres de Amazon EKSdeben contener al menos un nodo de trabajo de Linux, incluso si solo desea ejecutar cargas de trabajo deWindows en su clúster.

Pasos siguientesAhora que tiene un clúster de Amazon EKS en funcionamiento con nodos de trabajo, está listo paraempezar a instalar los complementos de Kubernetes e implementar aplicaciones en su clúster. Los temasde documentación siguientes le ayudarán a ampliar la funcionalidad de su clúster.

• Escalador automático del clúster (p. 142) — Configure el Autoscaler de clúster de Kubernetes paraajustar automáticamente el número de nodos en sus grupos de nodos.

• Lanzar una aplicación de libro de invitados (p. 206): cree una aplicación de libro de invitados deejemplo para probar los nodos de trabajo de clúster y Linux.

• Implementación de una aplicación de ejemplo de Windows (p. 65) — Implementa una aplicación deejemplo para probar los nodos de trabajo de clúster y Windows.

• Tutorial: Implementación de la interfaz de usuario web de Kubernetes (panel) (p. 216): este tutorial leguiará por el proceso de implementación del panel de Kubernetes en su clúster.

• Uso de Helm con Amazon EKS (p. 215): el administrador de paquetes helm para Kubernetes le ayudaa instalar y administrar aplicaciones en su clúster.

• Instalación del servidor de métricas de Kubernetes (p. 209): el servidor de métricas de Kubernetes esun agregador de datos de uso de recursos en el clúster.

• Métricas del plano de control con Prometheus (p. 211): este tema le ayuda a implementar Prometheusen el clúster con helm.

22

Page 30: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un clúster

Clústeres de Amazon EKSLos clústeres de Amazon EKS constan de dos componentes principales:

• El plano de control de Amazon EKS• Los nodos de trabajo de Amazon EKS registrados en el plano de control

El plano de control de Amazon EKS consta de nodos de plano de control que ejecutan el software deKubernetes, como etcd y el servidor de la API de Kubernetes. El plano de control se ejecuta con unacuenta administrada por AWS y la API de Kubernetes se expone a través del punto de enlace de AmazonEKS asociado al clúster. Cada plano de control de clúster de Amazon EKS es de un solo inquilino y único yse ejecuta en su propio conjunto de instancias Amazon EC2.

Todos los datos almacenados por los nodos etcd y los volúmenes de Amazon EBS asociados estáncifrados. Amazon EKS usa claves de cifrado maestras que generan claves de cifrado de volumen que elservicio de Amazon EKS administra.

El plano de control del clúster se aprovisiona en varias zonas de disponibilidad y se presenta mediante unBalanceador de carga de red de Elastic Load Balancing. Amazon EKS también aprovisiona interfaces dered elásticas en las subredes de la VPC para proporcionar la conectividad desde las instancias del planode control a los nodos de trabajo (por ejemplo, para admitir flujos de datos de kubectl exec, logs y proxy).

Los nodos de trabajo de Amazon EKS se ejecutan con su cuenta de AWS y le conectan con el plano decontrol del clúster a través del punto de enlace del servidor de la API y usando un archivo de certificadocreado para el clúster.

Temas• Creación de un clúster de Amazon EKS (p. 23)• Actualización de una versión de Kubernetes de clúster de Amazon EKS (p. 33)• Control de acceso al punto de enlace del clúster de Amazon EKS (p. 39)• Registro de plano de control de Amazon EKS (p. 45)• Eliminación de un clúster (p. 48)• Versiones de Kubernetes en Amazon EKS (p. 50)• Versiones de la plataforma (p. 53)• Compatibilidad con Windows (p. 60)• Compatibilidad con Arm (p. 66)• Visualización de indicadores de servidor API (p. 70)

Creación de un clúster de Amazon EKSEste tema le guía por el proceso de creación de un clúster de Amazon EKS.

Si es la primera vez que crea un clúster de Amazon EKS, le recomendamos que siga una de nuestrasguías Introducción a Amazon EKS (p. 3) en su lugar. Proporcionan instrucciones paso a paso completaspara crear un clúster de Amazon EKS con nodos de trabajo.

Important

Cuando se crea un clúster de Amazon EKS la entidad (el usuario o el rol) de IAM que crea elclúster se añade a la tabla de autorización de RBAC de Kubernetes como administrador (conpermisos de system:master). Inicialmente, solo ese usuario de IAM puede realizar llamadas

23

Page 31: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un clúster

a la API de Kubernetes con kubectl. Para obtener más información, consulte Administración deusuarios o funciones de IAM para su clúster (p. 200). Si usa la consola para crear el clúster,debe asegurarse de que las mismas credenciales de usuario de IAM se encuentren en la cadenade credenciales del SDK de AWS al ejecutar comandos kubectl en el clúster.Si instala y configura la AWS CLI, puede configurar las credenciales de IAM para el usuario. Sila AWS CLI está configurada correctamente para el usuario, eksctl y el Autenticador de AWSIAM para Kubernetes también puede encontrar esas credenciales. Para obtener más información,consulte Configuración de la AWS CLI en la AWS Command Line Interface Guía del usuario.

Seleccione la pestaña correspondiente al método de creación del clúster que desee:

eksctl

Para crear el clúster con eksctl

1. Elija una pestaña a continuación que coincida con sus requisitos de carga de trabajo. Si deseacrear un clúster que solo ejecute pods en AWS Fargate, elija AWS Fargate-only cluster (Clústerde solo AWS Fargate). Si solo desea ejecutar cargas de trabajo de Linux en su clúster, elijaCluster con cargas de trabajo solo de Linux. Si desea ejecutar cargas de trabajo de Linux yWindows en el clúster, elija Cluster con cargas de trabajo de Linux y Windows.

AWS Fargate-only cluster

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctles al menos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Cree el clúster de Amazon EKS compatible con Fargate con el comando siguiente.Reemplace los valores de ejemplo con sus propios valores. En --region, especifique unaregión compatible (p. 116).

eksctl create cluster \--name prod \--version 1.15 \--region us-east-2 \--fargate

El nuevo clúster de Amazon EKS se crea sin un grupo de nodos de trabajo. Sin embargo,eksctl crea un rol de ejecución de pods y un perfil de Fargate para los espacios de nombreskube-system y default, y aplica un parche a la implementación coredns para que puedaejecutarse en Fargate. Para obtener más información, consulte AWS Fargate (p. 116).

Cluster with Linux-only workloads

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctles al menos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Cree el clúster de Amazon EKS y los nodos de trabajo de Linux con el siguiente comando.Reemplace los valores de ejemplo con sus propios valores.

24

Page 32: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un clúster

Important

Kubernetes version 1.12 is now deprecated on Amazon EKS. On May 11th, 2020,Kubernetes version 1.12 will no longer be supported on Amazon EKS. On this date,you will no longer be able to create new 1.12 clusters, and all existing Amazon EKSclusters running Kubernetes version 1.12 will eventually be automatically updatedto version 1.13. We recommend that you update any 1.12 clusters to version 1.13or later in order to avoid service interruption. For more information, see Retirada deversiones en Amazon EKS (p. 53).Las versiones de la API de Kubernetes disponibles a través de Amazon EKS sonoficialmente compatibles con AWS, hasta que eliminemos la capacidad de crearclústeres utilizando esa versión. Esto es cierto incluso si Kubernetes aguas arribaya no admite una versión disponible en Amazon EKS. Reportamos correccionesde seguridad que son aplicables a las versiones de Kubernetes compatibles conAmazon EKS. Los clústeres existentes siempre son compatibles y Amazon EKSactualizarán automáticamente el clúster a una versión compatible si no lo ha hechomanualmente antes de la fecha de fin de vida de la versión.

eksctl create cluster \--name prod \--version 1.15 \--region us-west-2 \--nodegroup-name standard-workers \--node-type t3.medium \--nodes 3 \--nodes-min 1 \--nodes-max 4 \--ssh-access \--ssh-public-key my-public-key.pub \--managed

Note

• La opción de --managed para Amazon EKS Grupos de nodosadministrados (p. 86) actualmente se admite en clústeres Kubernetes 1.14. Lerecomendamos que utilice la última versión de Kubernetes disponible en AmazonEKS para aprovechar las últimas funciones. Si decide utilizar una versión anteriorde Kubernetes, debe eliminar la opción --managed.

Para obtener más información acerca de las opciones disponibles para eksctlcreate cluster, consulte el proyecto README en GitHub o consulte la página deayuda con el siguiente comando.

eksctl create cluster --help

• Aunque --ssh-public-key es opcional, le recomendamos que lo especifiquecuando cree el grupo de nodos con un clúster. Esta opción permite el accesoSSH a los nodos de su grupo de nodos administrados. El acceso SSH le permiteconectarse a sus instancias y recopilar información de diagnóstico si hay algúnproblema. No puede habilitar el acceso remoto después de crear el grupo denodos. Para obtener más información sobre las claves, consulte Amazon EC2 KeyPairs (Pares de claves de Amazon EC2) en la Guía del usuario de Amazon EC2para instancias de Linux.

Salida:

[ℹ] eksctl version 0.11.1

25

Page 33: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un clúster

[ℹ] using region us-west-2[ℹ] setting availability zones to [us-west-2c us-west-2a us-west-2d][ℹ] subnets for us-west-2c - public:192.168.0.0/19 private:192.168.96.0/19[ℹ] subnets for us-west-2a - public:192.168.32.0/19 private:192.168.128.0/19[ℹ] subnets for us-west-2d - public:192.168.64.0/19 private:192.168.160.0/19[ℹ] using SSH public key "my-public-key.pub" as "eksctl-prod-nodegroup-standard-workers-00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"[ℹ] using Kubernetes version 1.14[ℹ] creating EKS cluster "prod" in "us-west-2" region with managed nodes[ℹ] will create 2 separate CloudFormation stacks for cluster itself and the initial managed nodegroup[ℹ] if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-west-2 --cluster=prod'[ℹ] CloudWatch logging will not be enabled for cluster "prod" in "us-west-2"[ℹ] you can enable it with 'eksctl utils update-cluster-logging --region=us-west-2 --cluster=prod'[ℹ] Kubernetes API endpoint access will use default of {publicAccess=true, privateAccess=false} for cluster "prod" in "us-west-2"[ℹ] 2 sequential tasks: { create cluster control plane "prod", create managed nodegroup "standard-workers" }[ℹ] building cluster stack "eksctl-prod-cluster"[ℹ] deploying stack "eksctl-prod-cluster"[ℹ] building managed nodegroup stack "eksctl-prod-nodegroup-standard-workers"[ℹ] deploying stack "eksctl-prod-nodegroup-standard-workers"[ℹ] all EKS cluster resources for "prod" have been created[ℹ] saved kubeconfig as "/home/user/.kube/config"[ℹ] nodegroup "standard-workers" has 3 node(s)[ℹ] node "ip-192-168-26-79.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-51-105.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-80-87.us-west-2.compute.internal" is ready[ℹ] waiting for at least 1 node(s) to become ready in "standard-workers"[ℹ] nodegroup "standard-workers" has 3 node(s)[ℹ] node "ip-192-168-26-79.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-51-105.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-80-87.us-west-2.compute.internal" is ready[ℹ] kubectl command should work with "/home/user/.kube/config", try 'kubectl get nodes'[ℹ] EKS cluster "prod" in "us-west-2" region is ready

Cluster with Linux and Windows workloads

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctles al menos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Familiarícese con las consideraciones (p. 60) de compatibilidad con Windows, queincluyen valores admitidos para instanceType en el texto de ejemplo siguiente. Reemplacelos valores de ejemplo con sus propios valores. Guarde el texto siguiente en un archivollamado cluster-spec.yaml. El archivo de configuración se usa para crear un clúster ylos grupos de nodos de trabajo de Linux y Windows. Incluso si solo desea ejecutar cargas detrabajo de Windows en su clúster, los clústeres de Amazon EKS deben contener al menos unnodo de trabajo de Linux. Recomendamos que cree al menos dos nodos de trabajo en cadagrupo de nodos con fines de disponibilidad. La versión de Kubernetes mínima requerida paralas cargas de trabajo de Windows es 1.14.

---apiVersion: eksctl.io/v1alpha5

26

Page 34: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un clúster

kind: ClusterConfig

metadata: name: windows-prod region: us-west-2 version: '1.15'

managedNodeGroups: - name: linux-ng instanceType: t2.large minSize: 2

nodeGroups: - name: windows-ng instanceType: m5.large minSize: 2 volumeSize: 100 amiFamily: WindowsServer2019FullContainer

Cree su clúster de Amazon EKS, así como nodos de trabajo de Windows y Linux con elsiguiente comando.

eksctl create cluster -f cluster-spec.yaml --install-vpc-controllers

Note

La opción managedNodeGroups de Amazon EKS Grupos de nodosadministrados (p. 86) actualmente solo se admite en clústeres Kubernetes 1.14.Le recomendamos que utilice la última versión de Kubernetes disponible en AmazonEKS para aprovechar las últimas funciones. Si decide utilizar una versión anterior deKubernetes, debe eliminar la opción --managed.Para obtener más información acerca de las opciones disponibles para eksctl createcluster, consulte el proyecto README en GitHub o consulte la página de ayuda conel siguiente comando.

eksctl create cluster --help

Salida:

[ℹ] using region us-west-2[ℹ] setting availability zones to [us-west-2a us-west-2d us-west-2c][ℹ] subnets for us-west-2a - public:192.168.0.0/19 private:192.168.96.0/19[ℹ] subnets for us-west-2d - public:192.168.32.0/19 private:192.168.128.0/19[ℹ] subnets for us-west-2c - public:192.168.64.0/19 private:192.168.160.0/19[ℹ] nodegroup "linux-ng" will use "ami-076c743acc3ec4159" [AmazonLinux2/1.14][ℹ] nodegroup "windows-ng" will use "ami-0c7f1b5f1bebccac2" [WindowsServer2019FullContainer/1.14][ℹ] using Kubernetes version 1.14[ℹ] creating EKS cluster "windows-cluster" in "us-west-2" region[ℹ] 2 nodegroups (linux-ng, windows-ng) were included (based on the include/exclude rules)[ℹ] will create a CloudFormation stack for cluster itself and 2 nodegroup stack(s)[ℹ] if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-west-2 --name=windows-cluster'[ℹ] CloudWatch logging will not be enabled for cluster "windows-cluster" in "us-west-2"[ℹ] you can enable it with 'eksctl utils update-cluster-logging --region=us-west-2 --name=windows-cluster'

27

Page 35: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un clúster

[ℹ] 3 sequential tasks: { create cluster control plane "windows-cluster", 2 parallel sub-tasks: { create nodegroup "linux-ng", create nodegroup "windows-ng" }, install Windows VPC controller }[ℹ] building cluster stack "eksctl-windows-cluster-cluster"[ℹ] deploying stack "eksctl-windows-cluster-cluster"[ℹ] building nodegroup stack "eksctl-windows-cluster-nodegroup-linux-ng"[ℹ] building nodegroup stack "eksctl-windows-cluster-nodegroup-linux-ng"0m[ℹ] --nodes-max=2 was set automatically for nodegroup windows-ng[ℹ] --nodes-max=2 was set automatically for nodegroup linux-ng[ℹ] deploying stack "eksctl-windows-cluster-nodegroup-windows-ng"[ℹ] deploying stack "eksctl-windows-cluster-nodegroup-linux-ng"[ℹ] created "ClusterRole.rbac.authorization.k8s.io/vpc-resource-controller"[ℹ] created "ClusterRoleBinding.rbac.authorization.k8s.io/vpc-resource-controller"[ℹ] created "kube-system:ServiceAccount/vpc-resource-controller"[ℹ] created "kube-system:Deployment.apps/vpc-resource-controller"[ℹ] created "CertificateSigningRequest.certificates.k8s.io/vpc-admission-webhook.kube-system"[ℹ] created "kube-system:secret/vpc-admission-webhook-certs"[ℹ] created "kube-system:Service/vpc-admission-webhook"[ℹ] created "kube-system:Deployment.apps/vpc-admission-webhook"[ℹ] created "kube-system:MutatingWebhookConfiguration.admissionregistration.k8s.io/vpc-admission-webhook-cfg"[ℹ] all EKS cluster resources for "windows-cluster" have been created[ℹ] saved kubeconfig as "C:\\Users\\username/.kube/config"[ℹ] adding role "arn:aws:iam::123456789012:role/eksctl-windows-cluster-nodegroup-NodeInstanceRole-ZR93IIUZSYPR" to auth ConfigMap[ℹ] nodegroup "linux-ng" has 0 node(s)[ℹ] waiting for at least 2 node(s) to become ready in "linux-ng"[ℹ] nodegroup "linux-ng" has 2 node(s)[ℹ] node "ip-192-168-8-247.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-80-253.us-west-2.compute.internal" is ready[ℹ] adding role "arn:aws:iam::123456789012:role/eksctl-windows-cluster-nodegroup-NodeInstanceRole-XM9UZN3NXBOB" to auth ConfigMap[ℹ] nodegroup "windows-ng" has 0 node(s)[ℹ] waiting for at least 2 node(s) to become ready in "windows-ng"[ℹ] nodegroup "windows-ng" has 2 node(s)[ℹ] node "ip-192-168-4-192.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-63-224.us-west-2.compute.internal" is ready[ℹ] kubectl command should work with "C:\\Users\\username/.kube/config", try 'kubectl get nodes'[ℹ] EKS cluster "windows-cluster" in "us-west-2" region is ready

2. Normalmente el aprovisionamiento del clúster tarda entre 10 y 15 minutos. Cuando el clúster estélisto, compruebe que la configuración de kubectl es correcta.

kubectl get svc

Note

Si aparece el error "aws-iam-authenticator": executable file not foundin $PATH, significa que kubectl no está configurado para Amazon EKS. Para obtenermás información, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Accesodenegado o no autorizado (kubectl) (p. 293) en la sección de solución de problemas.

Salida:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEsvc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

28

Page 36: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un clúster

3. (Solo para procesos de trabajo de GPU de Linux) Si ha elegido un tipo de instancia de GPUy la AMI optimizada para Amazon EKS compatible con GPU, debe aplicar el complemento dedispositivo NVIDIA para Kubernetes como un DaemonSet en su clúster con el siguiente comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

Consola de administración de AWS

Para crear el clúster con la consola

Este procedimiento tiene los siguientes requisitos previos:

• Ha creado una VPC y un grupo de seguridad dedicado que cumple los requisitos de un clústerde Amazon EKS. Para obtener más información, consulte Consideraciones sobre la VPC delclúster (p. 164) y Consideraciones relativas al grupo de seguridad Amazon EKS (p. 167). Laguía Introducción a la Consola de administración de AWS (p. 12) crea una VPC que cumple losrequisitos; o también puede seguir Creación de una VPC para su clúster Amazon EKS (p. 162)para crear una.

• Ha creado un rol de servicio de Amazon EKS para aplicarlo al clúster. La guía Introducción aAmazon EKS (p. 3) le crea un rol de servicio; o también puede seguir Roles de IAM de AmazonEKS (p. 247) para crear uno manualmente.

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Elija Create cluster (Crear clúster).

Note

Si el usuario de IAM no tiene privilegios administrativos, deberá asignarle explícitamentelos permisos para llamar a las operaciones de la API de Amazon EKS. Para obtenermás información, consulte Ejemplos de políticas basadas en identidad de AmazonEKS (p. 248).

3. En la página Create cluster (Crear clúster), rellene los campos siguientes y, a continuación, elijaCreate (Crear):

• Cluster name (Nombre de clúster) – Nombre único del clúster.• Kubernetes version (Versión de Kubernetes) – Versión de Kubernetes que debe usarse para

el clúster. A menos que precise de una versión de Kubernetes específica para su aplicación, lerecomendamos utilizar la última versión disponible en Amazon EKS.

Important

Kubernetes version 1.12 is now deprecated on Amazon EKS. On May 11th, 2020,Kubernetes version 1.12 will no longer be supported on Amazon EKS. On this date,you will no longer be able to create new 1.12 clusters, and all existing Amazon EKSclusters running Kubernetes version 1.12 will eventually be automatically updated toversion 1.13. We recommend that you update any 1.12 clusters to version 1.13 or laterin order to avoid service interruption. For more information, see Retirada de versionesen Amazon EKS (p. 53).Las versiones de la API de Kubernetes disponibles a través de Amazon EKS sonoficialmente compatibles con AWS, hasta que eliminemos la capacidad de crearclústeres utilizando esa versión. Esto es cierto incluso si Kubernetes aguas arribaya no admite una versión disponible en Amazon EKS. Reportamos correcciones deseguridad que son aplicables a las versiones de Kubernetes compatibles con AmazonEKS. Los clústeres existentes siempre son compatibles y Amazon EKS actualizarán

29

Page 37: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un clúster

automáticamente el clúster a una versión compatible si no lo ha hecho manualmenteantes de la fecha de fin de vida de la versión.

• Role name (Nombre de rol) – Elija el rol de servicio de Amazon EKS para permitir que AmazonEKS y el plano de control de Kubernetes administren los recursos de AWS en su nombre. Paraobtener más información, consulte Roles de IAM de Amazon EKS (p. 247).

• VPC – La VPC que debe usarse para el clúster.• Subnets (Subredes) – Las subredes dentro de la VPC anterior que deben usarse para el

clúster. De forma predeterminada se escogen las subredes disponibles de la VPC anterior.Especifique todas las subredes que alojarán recursos para su clúster (como subredes privadaspara nodos de trabajo y subredes públicas para balanceadores de carga). Las subredes debencumplir los requisitos de un clúster de Amazon EKS. Para obtener más información, consulteConsideraciones sobre la VPC del clúster (p. 164).

• Security Groups (Grupos de seguridad): valor de SecurityGroups de la salida de AWSCloudFormation generada con Crear la VPC del clúster de Amazon EKS (p. 13). Este grupo deseguridad tiene ControlPlaneSecurityGroup en el nombre desplegable.

Important

La plantilla de AWS CloudFormation del nodo de trabajo modifica el grupode seguridad que se especifica aquí, por lo que Amazon EKS recomiendaencarecidamente que utilice un grupo de seguridad dedicado para el plano de controldel clúster (uno por clúster). Si este grupo de seguridad se comparte con otrosrecursos, podría bloquear o interrumpir las conexiones con esos recursos.

• Endpoint private access (Acceso privado al punto de enlace) – Elija si desea habilitar odeshabilitar el acceso privado al punto de enlace del servidor de la API de Kubernetes delclúster. Si habilita el acceso privado, las solicitudes de la API de Kubernetes que provengande dentro de la VPC del clúster utilizan el punto de enlace de la VPC privada. Para obtenermás información, consulte Control de acceso al punto de enlace del clúster de AmazonEKS (p. 39).

• Endpoint public access (Acceso público al punto de enlace) – Elija si desea habilitar odeshabilitar el acceso público al punto de enlace del servidor de la API de Kubernetes delclúster. Si deshabilita el acceso público, el servidor de la API de Kubernetes del clústersolo puede recibir solicitudes que provengan de dentro de la VPC del clúster. Para obtenermás información, consulte Control de acceso al punto de enlace del clúster de AmazonEKS (p. 39).

• Logging (Registro) – Para cada tipo de registro individual, elija si el tipo de registro debe estarEnabled (Habilitado) o Disabled (Deshabilitado). De forma predeterminada, los tipos de registroestán Disabled (Deshabilitados). Para obtener más información, consulte Registro de plano decontrol de Amazon EKS (p. 45).

• Tags (Etiquetas) – (opcional): añada las etiquetas a su clúster. Para obtener más información,consulte Etiquetado de los recursos de Amazon EKS (p. 279).

Note

Podrían aparecer un error que indica que una de las zonas de disponibilidad de lasolicitud no tiene capacidad suficiente para crear un clúster de Amazon EKS. Si estoocurre, el mensaje de error indicará las zonas de disponibilidad que admiten un clústernuevo. Intente crear el clúster de nuevo con al menos dos subredes ubicadas en laszonas de disponibilidad admitidas para su cuenta. Para obtener más información,consulte Capacidad insuficiente (p. 292).

4. En la página Clusters (Clústeres), elija el nombre del nuevo clúster para ver su información.5. El campo Status (Estado) muestra CREATING (CREANDO) hasta que termina el proceso de

aprovisionamiento del clúster. Cuando se complete el aprovisionamiento del clúster (normalmente

30

Page 38: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un clúster

entre 10 y 15 minutos), observe los valores de API server endpoint (Punto de enlace del servidorde API) y Certificate authority (Autoridad de certificado). Se usarán en la configuración de kubectl.

6. Ahora que ha creado el clúster, siga los procedimientos de Instalación de aws-iam-authenticator (p. 193) y Crear un archivo kubeconfig para Amazon EKS (p. 196) parahabilitar la comunicación con él.

7. (Opcional) Si desea ejecutar pods en AWS Fargate en el clúster, consulte Introducción a AWSFargate en Amazon EKS (p. 117).

8. Después de habilitar la comunicación, siga los procedimientos que se indican en Lanzamiento denodos de trabajo de Linux de Amazon EKS (p. 93) para agregar nodos de trabajo de Linux a suclúster para admitir sus cargas de trabajo.

9. (Opcional) Una vez que añada nodos de trabajo de Linux al clúster, siga los procedimientos enCompatibilidad con Windows (p. 60) para añadir compatibilidad con Windows al clúster, asícomo nodos de trabajo de Windows. Todos los clústeres de Amazon EKS deben contener almenos un nodo de trabajo de Linux, incluso si solo desea ejecutar cargas de trabajo de Windowsen el clúster.

AWS CLI

Para crear el clúster con la AWS CLI

Este procedimiento tiene los siguientes requisitos previos:

• Ha creado una VPC y un grupo de seguridad dedicado que cumple los requisitos de un clústerde Amazon EKS. Para obtener más información, consulte Consideraciones sobre la VPC delclúster (p. 164) y Consideraciones relativas al grupo de seguridad Amazon EKS (p. 167). Laguía Introducción a la Consola de administración de AWS (p. 12) crea una VPC que cumple losrequisitos; o también puede seguir Creación de una VPC para su clúster Amazon EKS (p. 162)para crear una.

• Ha creado un rol de servicio de Amazon EKS para aplicarlo al clúster. La guía Introducción aAmazon EKS (p. 3) le crea un rol de servicio; o también puede seguir Roles de IAM de AmazonEKS (p. 247) para crear uno manualmente.

1. Cree el clúster con el comando siguiente. Sustituya el nombre del clúster, el nombre de recursode Amazon (ARN) de la función de servicio de Amazon EKS creada en Crear el rol de servicio deAmazon EKS (p. 12) y la subred e ID de grupo de seguridad para la VPC creada en Crear la VPCdel clúster de Amazon EKS (p. 13).

Important

Kubernetes version 1.12 is now deprecated on Amazon EKS. On May 11th, 2020,Kubernetes version 1.12 will no longer be supported on Amazon EKS. On this date, youwill no longer be able to create new 1.12 clusters, and all existing Amazon EKS clustersrunning Kubernetes version 1.12 will eventually be automatically updated to version 1.13.We recommend that you update any 1.12 clusters to version 1.13 or later in order toavoid service interruption. For more information, see Retirada de versiones en AmazonEKS (p. 53).Las versiones de la API de Kubernetes disponibles a través de Amazon EKS sonoficialmente compatibles con AWS, hasta que eliminemos la capacidad de crearclústeres utilizando esa versión. Esto es cierto incluso si Kubernetes aguas arribaya no admite una versión disponible en Amazon EKS. Reportamos correcciones deseguridad que son aplicables a las versiones de Kubernetes compatibles con AmazonEKS. Los clústeres existentes siempre son compatibles y Amazon EKS actualizaránautomáticamente el clúster a una versión compatible si no lo ha hecho manualmenteantes de la fecha de fin de vida de la versión.

31

Page 39: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un clúster

aws eks --region region create-cluster --name devel --kubernetes-version 1.15 \--role-arn arn:aws:iam::111122223333:role/eks-service-role-AWSServiceRoleForAmazonEKS-EXAMPLEBKZRQR \--resources-vpc-config subnetIds=subnet-a9189fe2,subnet-50432629,securityGroupIds=sg-f5c54184

Important

Si aparece un error de sintaxis similar al siguiente, es posible que esté usando unaversión de vista previa de la AWS CLI de Amazon EKS. La sintaxis de muchos comandosde Amazon EKS ha cambiado desde que se lanzó el servicio público. Actualice suversión de la AWS CLI a la última disponible y elimine el directorio del modelo de serviciopersonalizado en ~/.aws/models/eks.

aws: error: argument --cluster-name is required

Note

Si el usuario de IAM no tiene privilegios administrativos, deberá asignarle explícitamentelos permisos para llamar a las operaciones de la API de Amazon EKS. Para obtenermás información, consulte Ejemplos de políticas basadas en identidad de AmazonEKS (p. 248).

Salida:

{ "cluster": { "name": "devel", "arn": "arn:aws:eks:us-west-2:111122223333:cluster/devel", "createdAt": 1527785885.159, "version": "1.15", "roleArn": "arn:aws:iam::111122223333:role/eks-service-role-AWSServiceRoleForAmazonEKS-AFNL4H8HB71F", "resourcesVpcConfig": { "subnetIds": [ "subnet-a9189fe2", "subnet-50432629" ], "securityGroupIds": [ "sg-f5c54184" ], "vpcId": "vpc-a54041dc", "endpointPublicAccess": true, "endpointPrivateAccess": false }, "status": "CREATING", "certificateAuthority": {} }}

Note

Podrían aparecer un error que indica que una de las zonas de disponibilidad de lasolicitud no tiene capacidad suficiente para crear un clúster de Amazon EKS. Si estoocurre, el mensaje de error indicará las zonas de disponibilidad que admiten un clústernuevo. Intente crear el clúster de nuevo con al menos dos subredes ubicadas en laszonas de disponibilidad admitidas para su cuenta. Para obtener más información,consulte Capacidad insuficiente (p. 292).

32

Page 40: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de una versión de Kubernetes

2. Normalmente el aprovisionamiento del clúster tarda entre 10 y 15 minutos. Puede consultar elestado del clúster con el comando siguiente. Cuando el estado del clúster sea ACTIVE, puedecontinuar.

aws eks --region region describe-cluster --name devel --query "cluster.status"

3. Cuando se complete el aprovisionamiento del clúster, obtenga los valores de endpoint ycertificateAuthority.data con los comandos siguientes. Debe agregar estos valores a laconfiguración de kubectl para poder comunicarse con el clúster.

a. Obtenga el valor de endpoint.

aws eks --region region describe-cluster --name devel --query "cluster.endpoint" --output text

b. Obtenga el valor de certificateAuthority.data.

aws eks --region region describe-cluster --name devel --query "cluster.certificateAuthority.data" --output text

4. Ahora que ha creado el clúster, siga los procedimientos de Instalación de aws-iam-authenticator (p. 193) y Crear un archivo kubeconfig para Amazon EKS (p. 196) parahabilitar la comunicación con él.

5. (Opcional) Si desea ejecutar pods en AWS Fargate en el clúster, consulte Introducción a AWSFargate en Amazon EKS (p. 117).

6. Después de habilitar la comunicación, siga los procedimientos que se indican en Lanzamiento denodos de trabajo de Linux de Amazon EKS (p. 93) para agregar nodos de trabajo a su clústerpara admitir sus cargas de trabajo.

7. (Opcional) Una vez que añada nodos de trabajo de Linux al clúster, siga los procedimientos enCompatibilidad con Windows (p. 60) para añadir compatibilidad con Windows al clúster, asícomo nodos de trabajo de Windows. Todos los clústeres de Amazon EKS deben contener almenos un nodo de trabajo de Linux, incluso si solo desea ejecutar cargas de trabajo de Windowsen el clúster.

Actualización de una versión de Kubernetes declúster de Amazon EKS

Cuando hay una nueva versión de Kubernetes disponible en Amazon EKS, puede actualizar el clúster a laversión más reciente. Las nuevas versiones de Kubernetes introducen cambios importantes; por lo tanto,le recomendamos que pruebe el comportamiento de las aplicaciones en la nueva versión de Kubernetesantes de realizar la actualización en los clústeres de producción. Para ello, puede crear un flujo de trabajode integración continua con el fin de probar el comportamiento de la aplicación en su totalidad antes depasar a una nueva versión de Kubernetes.

El proceso de actualización consiste en el lanzamiento por parte de Amazon EKS de nuevos nodosde servidor de API con la versión actualizada de Kubernetes para sustituir a las existentes. AmazonEKS lleva a cabo una infraestructura estándar y una comprobación del estado de la disponibilidad deltráfico de red en estos nuevos nodos para verificar que trabajan según lo esperado. Si cualquiera deestas comprobaciones falla, Amazon EKS revierte la implementación de la infraestructura y su clústerse mantiene en la versión anterior de Kubernetes. Las aplicaciones en ejecución no se ven afectadasy su clúster nunca se deja en estado no determinista o no recuperable. Amazon EKS realiza copias deseguridad de forma habitual a todos los clústeres que administra y existe un mecanismo de recuperaciónde clústeres por si fuese necesario. Evaluamos de forma constante y mejoramos la infraestructura nuestrosprocesos de administración de infraestructuras de Kubernetes.

33

Page 41: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de una versión de Kubernetes

Con el fin de actualizar el clúster, Amazon EKS requiere de 2 a 3 direcciones IP libres de las subredesque se proporcionaron cuando creó el clúster. La actualización puede fallar si estas subredes no tienendirecciones IP disponibles. Además, si cualquiera de las subredes o grupos de seguridad que seproporcionaron durante la creación del clúster se ha eliminado, el proceso de actualización del clústerpuede fallar.

Note

Aunque Amazon EKS ejecuta un plano de control de alta disponibilidad, podría experimentarinterrupciones menores del servicio durante una actualización. Por ejemplo, si intenta conectarsea un servidor de API justo antes o justo después de que se termine y se sustituya por un nuevoservidor de API que ejecuta la nueva versión de Kubernetes, podría experimentar errores dellamada a la API o problemas de conectividad. Si esto ocurre, repita las operaciones de la APIhasta que realicen correctamente.

Amazon EKS no modifica ninguno de sus complementos de Kubernetes cuando actualiza un clúster.Después de actualizar el clúster, le recomendamos que actualice sus complementos a las versiones quese muestran en la siguiente tabla para la nueva versión de Kubernetes a la que se está actualizando. Lospasos para lograrlo se incluyen en los procedimientos de actualización.

Versión de Kubernetes 1.14 1.13 1.12

Complementos CNI deAmazon VPC

1.5.5 1.5.5 1.5.5

DNS (CoreDNS) 1.6.6 1.6.6 1.6.6

KubeProxy 1.14.9 1.13.12 1.12.10

Important

Kubernetes version 1.12 is now deprecated on Amazon EKS. On May 11th, 2020, Kubernetesversion 1.12 will no longer be supported on Amazon EKS. On this date, you will no longer be ableto create new 1.12 clusters, and all existing Amazon EKS clusters running Kubernetes version1.12 will eventually be automatically updated to version 1.13. We recommend that you update any1.12 clusters to version 1.13 or later in order to avoid service interruption. For more information,see Retirada de versiones en Amazon EKS (p. 53).Las versiones de la API de Kubernetes disponibles a través de Amazon EKS son oficialmentecompatibles con AWS, hasta que eliminemos la capacidad de crear clústeres utilizando esaversión. Esto es cierto incluso si Kubernetes aguas arriba ya no admite una versión disponibleen Amazon EKS. Reportamos correcciones de seguridad que son aplicables a las versiones deKubernetes compatibles con Amazon EKS. Los clústeres existentes siempre son compatibles yAmazon EKS actualizarán automáticamente el clúster a una versión compatible si no lo ha hechomanualmente antes de la fecha de fin de vida de la versión.

Si utiliza complementos adicionales para el clúster que no figuran en la tabla anterior, actualícelos a laversión compatible más reciente después de actualizar el clúster.

Para actualizar un clúster existente

1. Compare la versión de Kubernetes del plano de control del clúster con la versión de Kubernetes de losnodos de trabajo.

• Obtenga la versión de Kubernetes del plano de control del clúster con el siguiente comando.

kubectl version --short

• Obtenga la versión de Kubernetes de los nodos de trabajo con el siguiente comando.

34

Page 42: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de una versión de Kubernetes

kubectl get nodes

Si los nodos de trabajo tienen una versión menor de Kubernetes que el plano de control, debeactualizar los nodos de trabajo a una versión menor más reciente de Kubernetes antes de actualizarsu versión de Kubernetes del clúster. Para obtener más información, consulte la sección sobre lapolítica de compatibilidad de versiones y diferencia de versiones de Kubernetes en la documentaciónde Kubernetes.

Recomendamos que actualice sus nodos de trabajo a su versión menor de Kubernetes depreactualización actual del clúster antes de la actualización del clúster. Los nodos de trabajo no debenejecutar una versión de Kubernetes más reciente que la de su plano de control. Por ejemplo, si suplano de control está ejecutando la versión 1.14 y sus procesos de trabajo están ejecutando la versión1.12, actualice sus nodos de trabajo a la versión 1.13 o 1.14 (recomendada) antes de actualizar suversión de Kubernetes del clúster a 1.15. Para obtener más información, consulte Actualizaciones denodos de trabajo (p. 107).

2. El controlador de admisión de la política de seguridad del pod solo está habilitado en clústeresde Amazon EKS que ejecuten Kubernetes versión 1.13 o posterior. Si actualiza su clúster a laversión 1.13 o posterior de Kubernetes, asegúrese de que dispone de las políticas de seguridaddel pod adecuadas antes de actualizarlo para evitar cualquier problema. Puede consultar la políticapredeterminada con el siguiente comando:

kubectl get psp eks.privileged

Si recibe el siguiente error, consulte Para instalar o restaurar la política de seguridad del podpredeterminada (p. 277) antes de continuar.

Error from server (NotFound): podsecuritypolicies.extensions "eks.privileged" not found

3. Actualice el clúster. Para obtener instrucciones, seleccione la pestaña con el nombre de la herramientaque desea utilizar para actualizar el clúster.

eksctl

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Note

Este procedimiento solo funciona para los clústeres que se crearon con eksctl.

Actualice la versión de Kubernetes de su clúster de Amazon EKS con el siguiente comando,sustituyendo dev por el nombre de su clúster:

eksctl update cluster --name dev --approve

Este proceso tarda varios minutos en completarse.Consola de administración de AWS

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

35

Page 43: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de una versión de Kubernetes

2. Elija el nombre del clúster que desea actualizar y seleccione Update cluster version (Actualizarversión del clúster).

3. En Kubernetes version (Versión de Kubernetes), seleccione la versión a la que desea actualizarel cluster y elija Update (Actualizar).

Important

Kubernetes version 1.12 is now deprecated on Amazon EKS. On May 11th, 2020,Kubernetes version 1.12 will no longer be supported on Amazon EKS. On this date,you will no longer be able to create new 1.12 clusters, and all existing Amazon EKSclusters running Kubernetes version 1.12 will eventually be automatically updated toversion 1.13. We recommend that you update any 1.12 clusters to version 1.13 or laterin order to avoid service interruption. For more information, see Retirada de versionesen Amazon EKS (p. 53).Las versiones de la API de Kubernetes disponibles a través de Amazon EKS sonoficialmente compatibles con AWS, hasta que eliminemos la capacidad de crearclústeres utilizando esa versión. Esto es cierto incluso si Kubernetes aguas arribaya no admite una versión disponible en Amazon EKS. Reportamos correcciones deseguridad que son aplicables a las versiones de Kubernetes compatibles con AmazonEKS. Los clústeres existentes siempre son compatibles y Amazon EKS actualizaránautomáticamente el clúster a una versión compatible si no lo ha hecho manualmenteantes de la fecha de fin de vida de la versión.

Important

Como Amazon EKS ejecuta un plano de control de alta disponibilidad, debe actualizarsolo una versión secundaria cada vez. Consulte Kubernetes Version and VersionSkew Support Policy para conocer la lógica de este requisito. Por lo tanto, si suversión actual es 1.13 y desea actualizar a 1.15, primero debe actualizar el clúster a1.14 y, a continuación, actualizarlo de 1.14 a 1.15. Si intenta actualizar directamentede 1.13 a 1.15, el comando de actualización de la versión producirá un error.

4. En Cluster name (Nombre del clúster), escriba el nombre del clúster y seleccione Confirm(Confirmar).

Note

La actualización del clúster tarda unos minutos.

AWS CLI

1. Actualice el clúster con el comando de la AWS CLI siguiente. Sustituya el nombre del clúster yla versión secundaria de Kubernetes que desee.

Important

Kubernetes version 1.12 is now deprecated on Amazon EKS. On May 11th, 2020,Kubernetes version 1.12 will no longer be supported on Amazon EKS. On this date,you will no longer be able to create new 1.12 clusters, and all existing Amazon EKSclusters running Kubernetes version 1.12 will eventually be automatically updated toversion 1.13. We recommend that you update any 1.12 clusters to version 1.13 or laterin order to avoid service interruption. For more information, see Retirada de versionesen Amazon EKS (p. 53).Las versiones de la API de Kubernetes disponibles a través de Amazon EKS sonoficialmente compatibles con AWS, hasta que eliminemos la capacidad de crearclústeres utilizando esa versión. Esto es cierto incluso si Kubernetes aguas arribaya no admite una versión disponible en Amazon EKS. Reportamos correcciones deseguridad que son aplicables a las versiones de Kubernetes compatibles con AmazonEKS. Los clústeres existentes siempre son compatibles y Amazon EKS actualizarán

36

Page 44: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de una versión de Kubernetes

automáticamente el clúster a una versión compatible si no lo ha hecho manualmenteantes de la fecha de fin de vida de la versión.

Important

Como Amazon EKS ejecuta un plano de control de alta disponibilidad, debe actualizarsolo una versión secundaria cada vez. Consulte Kubernetes Version and VersionSkew Support Policy para conocer la lógica de este requisito. Por lo tanto, si suversión actual es 1.13 y desea actualizar a 1.15, primero debe actualizar el clúster a1.14 y, a continuación, actualizarlo de 1.14 a 1.15. Si intenta actualizar directamentede 1.13 a 1.15, el comando de actualización de la versión producirá un error.

aws eks --region region update-cluster-version --name prod --kubernetes-version 1.15

Salida:

{ "update": { "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", "status": "InProgress", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.15" }, { "type": "PlatformVersion", "value": "eks.7" } ], "createdAt": 1577485455.5, "errors": [] }}

2. Monitorice el estado de la actualización del clúster con el siguiente comando, utilizando elnombre del clúster y el ID de actualización devueltos por el comando anterior. Su actualizaciónse habrá completado cuando el estado mostrado sea Successful.

Note

La actualización del clúster tarda unos minutos.

aws eks --region region describe-update --name prod --update-id b5f0ba18-9a87-4450-b5a0-825e6e84496f

Salida:

{ "update": { "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", "status": "Successful", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.15" }, {

37

Page 45: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de una versión de Kubernetes

"type": "PlatformVersion", "value": "eks.7" } ], "createdAt": 1577485455.5, "errors": [] }}

4. Aplique un parche al daemonset de kube-proxy para usar la imagen correspondiente a la versión deKubernetes actual y la región de su clúster (en este ejemplo, 1.15.10).

Versión de Kubernetes 1.14 1.13 1.12

KubeProxy 1.14.9 1.13.12 1.12.10

kubectl set image daemonset.apps/kube-proxy \-n kube-system \kube-proxy=602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/kube-proxy:v1.15.10

5. Compruebe el proveedor de DNS del clúster. Los clústeres que se crearon con Kubernetesversión 1.10 se entregaron con kube-dns como el proveedor de DNS y detección de serviciospredeterminado. Si ha actualizado un clúster de 1.10 a una versión más nueva y desea usar CoreDNScomo proveedor de DNS y detección de servicios, debe instalar CoreDNS y eliminar kube-dns.

Para comprobar si el clúster ya está ejecutando CoreDNS, utilice el siguiente comando.

kubectl get pod -n kube-system -l k8s-app=kube-dns

Si el resultado muestra coredns en los nombres del pod, ya está ejecutando CoreDNS en el clúster.De lo contrario, consulte Instalación o actualización de CoreDNS (p. 180) para instalar CoreDNS enel clúster, actualícelo a la versión recomendada, vuelva aquí y omita los pasos 6-8.

6. Compruebe la versión actual de la implementación de coredns del clúster.

kubectl describe deployment coredns --namespace kube-system | grep Image | cut -d "/" -f 3

Salida:

coredns:v1.1.3

Las versiones de coredns recomendadas para las correspondientes versiones de Kubernetes son lassiguientes:

Versión de Kubernetes 1.14 1.13 1.12

CoreDNS 1.6.6 1.6.6 1.6.6

7. Si la versión actual de coredns es 1.5.0 o posterior, pero una versión anterior a la recomendada,omita este paso. Si la versión actual es anterior a la 1.5.0, debe modificar el mapa de configuraciónpara que coredns use el complemento forward, en lugar del complemento proxy.

a. Abra el mapa de configuración con el siguiente comando.

38

Page 46: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAcceso al punto de enlace del clúster

kubectl edit configmap coredns -n kube-system

b. Sustituya proxy en la siguiente línea por forward. Guarde el archivo y salga del editor.

proxy . /etc/resolv.conf

8. Actualice coredns a la versión recomendada. Para ello, sustituya region-code por su región y1.6.6 por la versión de coredns recomendada del clúster:

kubectl set image --namespace kube-system deployment.apps/coredns \coredns=602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/coredns:v1.6.6

9. Compruebe la versión del complemento CNI de Amazon VPC del clúster para Kubernetes. Utilice elsiguiente comando para imprimir la versión de CNI del clúster.

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

Salida:

amazon-k8s-cni:1.5.3

Si la versión de CNI es anterior a 1.5.5, utilice el siguiente comando para actualizar su versión de CNIa la versión más reciente:

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.5/config/v1.5/aws-k8s-cni.yaml

10. (Solo para clústeres con nodos de trabajo de GPU) Si el clúster tiene grupos de nodos de trabajocompatibles con GPU (por ejemplo, p3.2xlarge), debe actualizar el conjunto de demonio delcomplemento del dispositivo NVIDIA para Kubernetes de su clúster con el siguiente comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

11. Una vez que se complete la actualización del clúster, actualice los nodos de trabajo a la misma versiónde Kubernetes de su clúster actualizado. Para obtener más información, consulte Actualizaciones denodos de trabajo (p. 107).

Control de acceso al punto de enlace del clúster deAmazon EKS

Esto le ayudará a habilitar el acceso privado al punto de enlace del servidor de API de Kubernetes de suclúster de Amazon EKS y a limitar, o a deshabilitar por completo, el acceso público desde Internet.

Cuando se crea un clúster nuevo, Amazon EKS crea un punto de enlace para el servidor de la APIde Kubernetes administrado que utiliza para comunicarse con su clúster (mediante herramientas deadministración de Kubernetes como, por ejemplo, kubectl). De forma predeterminada, este puntode enlace del servidor de la API es público en Internet y el acceso al servidor de la API está protegidomediante una combinación de AWS Identity and Access Management (IAM) y Control de acceso basadoen rol (RBAC) nativo de Kubernetes.

39

Page 47: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioModificar el acceso al punto de enlace del clúster

Puede habilitar el acceso privado al servidor de la API de Kubernetes para que toda la comunicación entrelos nodos de trabajo y el servidor de la API permanezcan dentro de su VPC. Puede limitar las direccionesIP a las que el servidor API puede tener acceso desde Internet o deshabilitar por completo el acceso aInternet por parte del servidor API.

Note

Dado que este punto de enlace es para el servidor de la API de Kubernetes y no un punto deenlace de AWS PrivateLink tradicional para comunicarse con una API de AWS, no aparece comoun punto de enlace en la consola de Amazon VPC.

Al habilitar el acceso privado al punto de enlace para el clúster, Amazon EKS crea una zona alojadaprivada de Route 53 en su nombre y la asocia a la VPC de su clúster. Esta zona alojada privada seadministra mediante Amazon EKS y no aparece en los recursos de Route 53 de su cuenta. Paraque la zona privada alojada dirija el tráfico adecuadamente a su servidor de API, su VPC debe tenerenableDnsHostnames y enableDnsSupport establecidos en true y las opciones de DHCPestablecidas para su VPC deben incluir AmazonProvidedDNS en su lista de servidores de nombres dedominios. Para obtener más información, consulte Actualización de soporte de DNS para su VPC en laGuía del usuario de Amazon VPC.

Note

Además de los permisos de Amazon EKS estándar, su usuario o rol de IAM debe tener lospermisos route53:AssociateVPCWithHostedZone para permitir el acceso privado al puntode enlace del clúster.

Puede definir los requisitos de acceso al punto de enlace del servidor de la API al crear un nuevo clúster;puede actualizar el acceso al punto de enlace del servidor de la API para un clúster en cualquier momento.

Modificar el acceso al punto de enlace del clústerUtilice los procedimientos de esta sección para modificar el acceso al punto de enlace para un clústerexistente. En la siguiente tabla se muestran las combinaciones de acceso al punto de enlace del servidorde la API y sus comportamientos asociados.

Opciones de acceso al punto de enlace del servidor de la API

Acceso público al punto deenlace

Acceso privado al punto deenlace

Comportamiento

Habilitado Deshabilitada • Este es el comportamientopredeterminado para losnuevos clústeres de AmazonEKS.

• Las solicitudes de la API deKubernetes que provienen dedentro de la VPC de su clúster(como comunicación de nodode trabajo a plano de control)dejan la VPC, pero no la red deAmazon.

• Se puede acceder al servidorde la API del clúster desdeInternet. De forma opcional,puede limitar los bloques deCIDR que pueden accederal punto de enlace público.Si limita el acceso a bloquesde CIDR específicos, se

40

Page 48: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioModificar el acceso al punto de enlace del clúster

Acceso público al punto deenlace

Acceso privado al punto deenlace

Comportamiento

recomienda habilitar tambiénel punto de enlace privado oasegurarse de que los bloquesde CIDR que especifiqueincluyan las direcciones desdelas que los nodos de trabajoy los pods de Fargate (si losutiliza) acceden al punto deenlace público.

Enabled Habilitado • Las solicitudes de la API deKubernetes de dentro de laVPC de su clúster (comocomunicación de nodo detrabajo a plano de control)utilizan el punto de enlaceprivado de la VPC.

• Se puede acceder al servidorde la API del clúster desdeInternet. De forma opcional,puede limitar los bloques deCIDR que pueden acceder alpunto de enlace público.

41

Page 49: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioModificar el acceso al punto de enlace del clúster

Acceso público al punto deenlace

Acceso privado al punto deenlace

Comportamiento

Deshabilitada Habilitado • Todo el tráfico al servidorde API de su clúster debeproceder de dentro de la VPCde su clúster o de una redconectada.

• No hay acceso público alservidor de la API desdeInternet. Cualquier comandokubectl debe provenir dedentro de la VPC o de unared conectada. Para ver lasopciones de conectividad,consulte Acceso a un servidorde API solo privado (p. 45).

• Los servidores DNS públicosresuelven el punto de enlacedel servidor de API del clústeren una dirección IP privadadesde la VPC. En el pasado,el punto de enlace se podíaresolver desde dentro de laVPC.

Si el punto de enlace no seresuelve en una dirección IPprivada dentro de la VPC paraun clúster existente, puede:• Habilitar el acceso público

y, a continuación, volver adeshabilitarlo. Solo tieneque hacerlo una vez paraun clúster y el punto deenlace se resolverá en unadirección IP privada a partirde ese momento.

• Actualice (p. 33) elclúster.

Puede modificar el acceso al punto de enlace del servidor de API del clúster mediante la Consola deadministración de AWS o la AWS CLI. Para obtener instrucciones, seleccione la pestaña de la herramientaque desea utilizar.

Consola de administración de AWS

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Elija el nombre del clúster para mostrar la información del clúster.3. En Networking (Redes), elija Update (Actualizar).4. Para el acceso privado, decida si desea habilitar o deshabilitar el acceso privado al punto de

enlace del servidor de API de Kubernetes del clúster. Si habilita el acceso privado, las solicitudesde la API de Kubernetes que provengan de dentro de la VPC del clúster utilizan el punto deenlace de la VPC privada. Debe habilitar el acceso privado para deshabilitar el acceso público.

42

Page 50: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioModificar el acceso al punto de enlace del clúster

5. Para el acceso público, decida si desea habilitar o deshabilitar el acceso público al punto deenlace del servidor de API de Kubernetes del clúster. Si deshabilita el acceso público, el servidorde la API de Kubernetes del clúster solo puede recibir solicitudes desde dentro de la VPC delclúster.

6. (Opcional) Si ha habilitado el acceso público, puede especificar qué direcciones de Internetpueden comunicarse con el punto de enlace público. Seleccione Advanced Settings(Configuración avanzada). Introduzca un bloque de CIDR, como 203.0.113.5/32. El bloqueno puede incluir direcciones reservadas. Puede introducir bloques adicionales seleccionandoAdd Source (Añadir origen). Hay un número máximo de bloques de CIDR que puede especificar.Para obtener más información, consulte Cuotas de servicio de Amazon EKS (p. 299). Si noespecifica ningún bloque, el punto de enlace del servidor de API público recibe solicitudes detodas las direcciones IP (0.0.0.0/0). Si restringe el acceso a su punto de enlace público mediantebloques de CIDR, se recomienda habilitar también el acceso al punto de enlace privado para quelos nodos de trabajo y los pods de Fargate (si los utiliza) puedan comunicarse con el clúster. Si elpunto de enlace privado no está habilitado, los orígenes de CIDR del punto de enlace de accesopúblico deben incluir los orígenes de salida de la VPC. Por ejemplo, si tiene un nodo de trabajo enuna subred privada que se comunica con Internet a través de una gateway NAT, deberá añadirla dirección IP saliente de la gateway NAT como parte de un bloque de CIDR incluido en la listablanca en su punto de enlace público.

7. Elija Update (Actualizar) para finalizar.

AWS CLI

Complete los siguientes pasos con la versión 1.18.17 o posterior de la AWS CLI. Puede comprobarsu versión actual con aws --version. Para instalar o actualizar la AWS CLI, consulte Installing theAWS CLI(Instalación de la AWS CLI).

1. Actualice el acceso al punto de enlace del servidor de la API del clúster con el siguiente comandode la AWS CLI Sustituya el nombre de su clúster y los valores de acceso de punto de enlacedeseados. Si configura el endpointPublicAccess=true, podrá introducir un solo bloque deCIDR o una lista separada por comas de bloques de CIDR para publicAccessCidrs. Losbloques no pueden incluir direcciones reservadas. Si especifica bloques de CIDR, el punto deenlace del servidor de API público solo recibirá solicitudes de los bloques enumerados. Hay unnúmero máximo de bloques de CIDR que puede especificar. Para obtener más información,consulte Cuotas de servicio de Amazon EKS (p. 299). Si restringe el acceso a su punto deenlace público mediante bloques de CIDR, se recomienda habilitar también el acceso al puntode enlace privado para que los nodos de trabajo y los pods de Fargate (si los utiliza) puedancomunicarse con el clúster. Si el punto de enlace privado no está habilitado, los orígenes deCIDR del punto de enlace de acceso público deben incluir los orígenes de salida de la VPC. Porejemplo, si tiene un nodo de trabajo en una subred privada que se comunica con Internet a travésde una gateway NAT, deberá añadir la dirección IP saliente de la gateway NAT como parte de unbloque de CIDR incluido en la lista blanca en su punto de enlace público. Si no especifica ningúnbloque de CIDR, el punto de enlace del servidor de API público recibe solicitudes de todas lasdirecciones IP (0.0.0.0/0).

Note

El siguiente comando habilita el acceso privado y público desde una única dirección IP alpunto de enlace del servidor de API. Reemplace 203.0.113.5/32 por un único bloquede CIDR o una lista separada por comas de bloques de CIDR a los que desea restringirel acceso a la red.

aws eks update-cluster-config \ --region region \ --name dev \ --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true

43

Page 51: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioModificar el acceso al punto de enlace del clúster

Salida:

{ "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "InProgress", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] }}

2. Monitorice el estado de la actualización del acceso al punto de enlace con el siguiente comando,utilizando el nombre del clúster y el ID de actualización devueltos por el comando anterior. Suactualización se habrá completado cuando el estado mostrado sea Successful.

aws eks describe-update \ --region region \ --name dev \ --update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000

Salida:

{ "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "Successful", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] }}

44

Page 52: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAcceso a un servidor de API solo privado

Acceso a un servidor de API solo privadoSi ha deshabilitado el acceso público al punto de enlace del servidor de API de Kubernetes del clúster, solopuede acceder al servidor de API desde dentro de la VPC o desde una red conectada. Hay varias formasde obtener acceso al punto de enlace del servidor de API de Kubernetes:

• Connected network (Red conectada): conecte su red a la VPC con una gateway de tránsito de AWS uotra opción de conectividad y, a continuación, utilice un equipo en la red conectada.

• Amazon EC2 bastion host (Host bastión de Amazon EC2): puede lanzar una instancia de Amazon EC2a una subred pública en la VPC del clúster y, a continuación, iniciar sesión en esa instancia por mediode SSH para ejecutar comandos kubectl. Para obtener más información, consulte Hosts bastión deLinux en AWS. Debe asegurarse de que el grupo de seguridad de plano de control de Amazon EKStiene reglas para permitir el tráfico de entrada en el puerto 443 desde su host bastión. Para obtener másinformación, consulte Consideraciones relativas al grupo de seguridad Amazon EKS (p. 167).

Cuando configura kubectl para el host bastión, asegúrese de utilizar las credenciales de AWS que yaestán asignados a su configuración de RBAC del clúster o agregar el usuario o rol de IAM que utilizará elbastión a la configuración de RBAC antes de eliminar el acceso público al punto de enlace. Para obtenermás información, consulte Administración de usuarios o funciones de IAM para su clúster (p. 200) yAcceso denegado o no autorizado (kubectl) (p. 293).

• AWS Cloud9 IDE (IDE de AWS Cloud9): AWS Cloud9 es un entorno de desarrollo integrado (IDE)basado en la nube que le permite escribir, ejecutar y depurar su código solo con un navegador. Puedecrear un IDE de AWS Cloud9 en la VPC de su clúster y utilizar el IDE para comunicarse con el clúster.Para obtener más información, consulte Creación de un entorno en AWS Cloud9. Debe asegurarse deque el grupo de seguridad de plano de control de Amazon EKS tiene reglas para permitir el tráfico deentrada en el puerto 443 desde el grupo de seguridad de IDE. Para obtener más información, consulteConsideraciones relativas al grupo de seguridad Amazon EKS (p. 167).

Cuando configura kubectl para el IDE de AWS Cloud9, asegúrese de utilizar las credenciales deAWS que ya están asignados a su configuración de RBAC del clúster o agregar el usuario o rol deIAM que utilizará el IDE a la configuración de RBAC antes de eliminar el acceso público al punto deenlace. Para obtener más información, consulte Administración de usuarios o funciones de IAM para suclúster (p. 200) y Acceso denegado o no autorizado (kubectl) (p. 293).

Registro de plano de control de Amazon EKSEl registro de plano de control de Amazon EKS proporciona registros de auditoría y diagnósticodirectamente desde el plano de control de Amazon EKS a CloudWatch Logs en su cuenta. Estos registroshacen que le resulte más fácil asegura y ejecutar los clústeres. Puede seleccionar los tipos de registroexactos que necesita. Los registros se envían como secuencias de registro a un grupo para cada clústerde Amazon EKS en CloudWatch.

Para empezar a usar el registro de plano de control de Amazon EKS, elija los tipos de registro que deseahabilitar para los nuevos clústeres o los clústeres existentes de Amazon EKS. Puede habilitar o deshabilitarcada tipo de registro en función del clúster por medio de la Consola de administración de AWS, la AWSCLI (versión 1.16.139 o posterior) o la API de Amazon EKS. Cuando están habilitados, los registros seenvían automáticamente desde el clúster de Amazon EKS a CloudWatch Logs en la misma cuenta.

Cuando se utiliza el registro de plano de control de Amazon EKS, se facturan los precios de Amazon EKSestándar para cada clúster que ejecuta. Se cobra la adquisición de datos de CloudWatch Logs y los costosde almacenamiento estándar para cualquier registro enviado a CloudWatch Logs desde sus clústeres.También se cobran los recursos de AWS, como las instancias Amazon EC2 o los volúmenes de AmazonEBS que aprovisiona como parte de su clúster.

Están disponibles los siguientes tipos de registro de plano de control de clúster. Cada tipo de registrose corresponde con un componente del plano de control de Kubernetes. Para obtener más información

45

Page 53: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioHabilitar y deshabilitar registros de plano de control

acerca de estos componentes, consulte los componentes de Kubernetes en la documentación deKubernetes.

• Kubernetes API server component logs (Registros de componentes del servidor de API de Kubernetes)(api) – El servidor de la API del clúster es el componente del plano de control que expone la APIde Kubernetes. Para obtener más información, consulte kube-apiserver en la documentación deKubernetes.

• Audit (Auditoría) (audit) – Los registros de auditoría de Kubernetes ofrecen un registro de los usuariosindividuales, administradores o componentes del sistema que han afectado al clúster. Para obtener másinformación, consulte la sección de auditorías en la documentación de Kubernetes.

• Authenticator (Autenticador) (authenticator) – Los registros de autenticador son exclusivos deAmazon EKS. Estos registros representan el componente del plano de control que Amazon EKSutiliza para la autenticación de control de acceso basado en rol (RBAC) de Kubernetes mediantecredenciales de IAM. Para obtener más información, consulte Administración de la autenticación declústeres (p. 188).

• Controller manager (Administrador de controlador) (controllerManager) – Administra los bucles decontrol principal que se envían con Kubernetes. Para obtener más información, consulte kube-controller-manager en la documentación de Kubernetes.

• Scheduler (Programador) (scheduler) – El componente programador administra cuándo y dóndeejecutar pods en el clúster. Para obtener más información, consulte kube-scheduler en la documentaciónde Kubernetes.

Habilitar y deshabilitar registros de plano de controlDe forma predeterminada, los registros de plano de control de clúster no se envían a CloudWatch Logs.Debe habilitar cada tipo de registro de manera individual para enviar registros para el clúster. Se aplicantarifa de adquisición, almacenamiento de archivos y escaneo de datos de CloudWatch Logs a los registrosde plano de control habilitados. Para obtener más información, consulte Precios de CloudWatch.

Al habilitar un tipo de registro, los registros se envían con un nivel de detalle de registro de 2.

Para habilitar o deshabilitar los registros de plano de control con la consola

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Elija el nombre del clúster para mostrar la información del clúster.3. En Logging (Registro), elija Update (Actualizar).4. Para cada tipo de registro individual, elija si el tipo de registro debe estar Enabled (Habilitado)

o Disabled (Deshabilitado). De forma predeterminada, los tipos de registro están Disabled(Deshabilitados).

5. Elija Update (Actualizar) para finalizar.

Para habilitar o deshabilitar los registros de plano de control con la AWS CLI

1. Consulte la versión de la AWS CLI con el comando siguiente.

aws --version

Si su versión de AWS CLI es inferior a 1.16.139, primero debe actualizar a la última versión. Parainstalar o actualizar la AWS CLI, consulte Instalación de la interfaz de línea de comandos de AWS enla AWS Command Line Interface Guía del usuario.

2. Actualice la configuración de exportación del registro de plano de control del clúster con el siguientecomando de la AWS CLI. Sustituya el nombre de su clúster y los valores de acceso de punto deenlace deseados.

46

Page 54: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioHabilitar y deshabilitar registros de plano de control

Note

El siguiente comando envía todos los tipos de registros disponibles a CloudWatch Logs.

aws eks --region us-west-2 update-cluster-config --name prod \--logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'

Salida:

{ "update": { "id": "883405c8-65c6-4758-8cee-2a7c1340a6d9", "status": "InProgress", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": 1553271814.684, "errors": [] }}

3. Monitorice el estado de la actualización de la configuración del registro con el siguiente comando,utilizando el nombre del clúster y el ID de actualización devueltos por el comando anterior. Suactualización se habrá completado cuando el estado mostrado sea Successful.

aws eks --region us-west-2 describe-update --name prod --update-id 883405c8-65c6-4758-8cee-2a7c1340a6d9

Salida:

{ "update": { "id": "883405c8-65c6-4758-8cee-2a7c1340a6d9", "status": "Successful", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": 1553271814.684, "errors": [] }}

47

Page 55: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVisualización de registros de plano de control de clúster

Visualización de registros de plano de control declústerUna vez que haya habilitado cualquiera de los tipos de registro de plano de control para el clúster deAmazon EKS, puede verlos en la consola de CloudWatch.

Para obtener más información sobre los pasos para ver, analizar y administrar registros en CloudWatch,consulte la Amazon CloudWatch Logs User Guide.

Para ver los registros de plano de control del clúster en la consola de CloudWatch

1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/home#logs:prefix=/aws/eks. Esta URL muestra los grupos de registro disponibles actualmente y los filtra con el prefijo /aws/eks.

2. Elija el clúster para el que desee ver registros. El formato del nombre del grupo de registros es /aws/eks/cluster-name/cluster.

3. Elija la secuencia de registro que desea ver. En la siguiente lista se describe el nombre de secuenciade registro para cada tipo de registro.

Note

A medida que aumentan los datos de la secuencia de registro, se rotan los nombres de lasecuencia de registro. Cuando hay varias secuencias de registro para un determinado tipode registro, puede ver la última secuencia de registro buscando el nombre de la secuencia deregistro con la Last Event Time (Hora del último evento) más reciente.

• Registros de componentes del servidor de API de Kubernetes (api) – kube-apiserver-nnn...• Auditar (audit) – kube-apiserver-audit-nnn...• Autenticador (authenticator) – authenticator-nnn...• Administrador de controladores (controllerManager) – kube-controller-manager-nnn...• Programador (scheduler) – kube-scheduler-nnn...

Eliminación de un clústerCuando termine de usar un clúster de Amazon EKS, debe eliminar los recursos asociados para no incurriren costos innecesarios.

Important

Si tiene en el clúster servicios activos asociados a un balanceador de carga, deberá eliminarlos servicios antes de eliminar el clúster para que los balanceadores de carga se eliminencorrectamente. De lo contrario, pueden quedar recursos huérfanos en la VPC que le impidaneliminarla.

Seleccione la pestaña correspondiente al método de eliminación del clúster que desee.

eksctl

Para eliminar un clúster de Amazon EKS y los nodos de trabajo con eksctl

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

48

Page 56: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEliminación de un clúster

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Note

Este procedimiento solo funciona para los clústeres que se crearon con eksctl.

1. Enumere todos los servicios que se ejecutan en el clúster.

kubectl get svc --all-namespaces

2. Elimine los servicios que tengan asociado un valor EXTERNAL-IP. Estos servicios se presentanpor medio de un balanceador de carga de Elastic Load Balancing y debe eliminarlos enKubernetes para que el balanceador y los recursos asociados se liberen correctamente.

kubectl delete svc service-name

3. Elimine el clúster y sus nodos de trabajo asociados con el siguiente comando, sustituyendo prodpor el nombre de su clúster.

eksctl delete cluster --name prod

Salida:

[ℹ] using region us-west-2[ℹ] deleting EKS cluster "prod"[ℹ] will delete stack "eksctl-prod-nodegroup-standard-workers"[ℹ] waiting for stack "eksctl-prod-nodegroup-standard-workers" to get deleted[ℹ] will delete stack "eksctl-prod-cluster"[ℹ] the following EKS cluster resource(s) for "prod" will be deleted: cluster. If in doubt, check CloudFormation console

Consola de administración de AWS

Para eliminar un clúster de Amazon EKS con la Consola de administración de AWS

1. Enumere todos los servicios que se ejecutan en el clúster.

kubectl get svc --all-namespaces

2. Elimine los servicios que tengan asociado un valor EXTERNAL-IP. Estos servicios se presentanpor medio de un balanceador de carga de Elastic Load Balancing y debe eliminarlos enKubernetes para que el balanceador y los recursos asociados se liberen correctamente.

kubectl delete svc service-name

3. Elimine la pila de AWS CloudFormation de nodos de trabajo.

a. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.b. Seleccione la pila de nodos de trabajo que desea eliminar y elija Actions (Acciones), Delete

Stack (Eliminar pila).c. En la pantalla de confirmación Delete Stack (Eliminar pila), elija Yes, Delete (Sí, eliminar).

4. Elimine el clúster.

a. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.b. Seleccione el clúster que desea eliminar y elija Delete (Eliminar).

49

Page 57: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVersiones de Kubernetes

c. En la pantalla de confirmación de eliminación del clúster, elija Delete (Eliminar).5. De manera opcional, elimine la pila de AWS CloudFormation de la VPC.

a. Seleccione la pila de la VPC que desea eliminar y elija Actions (Acciones) y, a continuación,elija Delete Stack (Eliminar pila).

b. En la pantalla de confirmación Delete Stack (Eliminar pila), elija Yes, Delete (Sí, eliminar).

AWS CLI

Para eliminar un clúster de Amazon EKS con la AWS CLI

1. Enumere todos los servicios que se ejecutan en el clúster.

kubectl get svc --all-namespaces

2. Elimine los servicios que tengan asociado un valor EXTERNAL-IP. Estos servicios se presentanpor medio de un balanceador de carga de Elastic Load Balancing y debe eliminarlos enKubernetes para que el balanceador y los recursos asociados se liberen correctamente.

kubectl delete svc service-name

3. Elimine la pila de AWS CloudFormation de nodos de trabajo.

a. Muestre las pilas de AWS CloudFormation disponibles con el siguiente comando. Busque elnombre de la plantilla de nodos de trabajo en la salida resultante.

aws cloudformation list-stacks --query "StackSummaries[].StackName"

b. Elimine la pila de nodos de trabajo con el siguiente comando, sustituyendo worker-node-stack por el nombre de su pila de nodos de trabajo.

aws cloudformation delete-stack --stack-name worker-node-stack

4. Elimine el clúster con el siguiente comando, sustituyendo my-cluster por el nombre de suclúster.

aws eks delete-cluster --name my-cluster

5. De manera opcional, elimine la pila de AWS CloudFormation de la VPC.

a. Muestre las pilas de AWS CloudFormation disponibles con el siguiente comando. Busque elnombre de la plantilla de VPC en la salida resultante.

aws cloudformation list-stacks --query "StackSummaries[].StackName"

b. Elimine la pila de VPC con el siguiente comando, sustituyendo my-vpc-stack por el nombrede la pila de VPC.

aws cloudformation delete-stack --stack-name my-vpc-stack

Versiones de Kubernetes en Amazon EKSEl proyecto Kubernetes evoluciona rápidamente con nuevas características, actualizaciones de diseñoy corrección de errores. La comunidad publica versiones secundarias de Kubernetes nuevas, como la

50

Page 58: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVersiones de Kubernetes en Amazon EKS disponibles

versión 1.15, que están disponibles con carácter general aproximadamente cada tres meses, y cuyosoporte es de aproximadamente un año después de su lanzamiento.

Versiones de Kubernetes en Amazon EKS disponiblesLas siguientes versiones de Kubernetes están disponibles actualmente para los nuevos clústeres enAmazon EKS:

• 1.14.9• 1.13.12• 1.12.10

Important

Kubernetes version 1.12 is now deprecated on Amazon EKS. On May 11th, 2020, Kubernetesversion 1.12 will no longer be supported on Amazon EKS. On this date, you will no longer be ableto create new 1.12 clusters, and all existing Amazon EKS clusters running Kubernetes version1.12 will eventually be automatically updated to version 1.13. We recommend that you update any1.12 clusters to version 1.13 or later in order to avoid service interruption. For more information,see Retirada de versiones en Amazon EKS (p. 53).Las versiones de la API de Kubernetes disponibles a través de Amazon EKS son oficialmentecompatibles con AWS, hasta que eliminemos la capacidad de crear clústeres utilizando esaversión. Esto es cierto incluso si Kubernetes aguas arriba ya no admite una versión disponibleen Amazon EKS. Reportamos correcciones de seguridad que son aplicables a las versiones deKubernetes compatibles con Amazon EKS. Los clústeres existentes siempre son compatibles yAmazon EKS actualizarán automáticamente el clúster a una versión compatible si no lo ha hechomanualmente antes de la fecha de fin de vida de la versión.

A menos que la aplicación requiera una versión específica de Kubernetes, le recomendamos que elijala última versión de Kubernetes disponible admitida por Amazon EKS para sus clústeres. Cuandohaya nuevas versiones de Kubernetes disponibles en Amazon EKS, le recomendamos que actualiceproactivamente los clústeres para que utilicen la última versión disponible. Para obtener más información,consulte Actualización de una versión de Kubernetes de clúster de Amazon EKS (p. 33).

Kubernetes 1.14Kubernetes 1.14 ya está disponible en Amazon EKS. Para obtener más información acerca de Kubernetes1.14, consulte el anuncio del lanzamiento oficial.

Important

La marca de --allow-privileged se ha eliminado de kubelet en los nodos de trabajo de1.14 de Amazon EKS. Si ha modificado o restringido el Política de seguridad predeterminada delpod de Amazon EKS (p. 274) en su clúster, debe comprobar que sus aplicaciones tengan lospermisos que necesitan en los nodos de trabajo de 1.14.

Las siguientes características ya son compatibles en los clústeres de Amazon EKS de Kubernetes 1.14:

• La topología de la interfaz de almacenamiento de contenedores se encuentra en beta para losclústeres de Kubernetes versión 1.14. Para obtener más información, consulte Topología de CSI enla documentación para desarrolladores de CSI de Kubernetes. Los siguientes controladores de CSIproporcionan una interfaz de CSI para que los organizadores de contenedores como Kubernetesadministren el ciclo de vida de los volúmenes de Amazon EBS, los sistemas de archivos de AmazonEFS y los sistemas de archivos Lustre de Amazon FSx:• Controlador de CSI de Amazon Elastic Block Store (EBS)• Controlador de CSI de Amazon EFS• Controlador de CSI de Amazon FSx for Lustre

51

Page 59: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioKubernetes 1.13

• La limitación del ID de proceso (PID) se encuentra en beta para los clústeres de Kubernetes versión1.14. Esta característica le permite establecer cuotas sobre la cantidad de procesos que puede crear unpod, lo que puede impedir la falta de recursos para otras aplicaciones de un clúster. Para obtener másinformación, consulte Limitación del ID de proceso para mejoras en la estabilidad en Kubernetes 1.14.

• Los volúmenes locales persistentes ahora son GA y hacen que el almacenamiento adjunto localmenteesté disponible como fuente de volumen persistente. Para obtener más información, consulteKubernetes 1.14: Local Persistent Volumes GA.

• La prioridad y la preferencia de pods ahora es GA y permite que se asigne a los pods un nivel deprioridad de programación. Para obtener más información, consulte Prioridad y preferencia de pods en ladocumentación de Kubernetes.

• Los nodos de trabajo de Windows tienen compatibilidad con carácter general con Kubernetes 1.14.

Para completar el registro de cambios completo de Kubernetes 1.14, consulte https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.14.md

Kubernetes 1.13Las siguientes características ya son compatibles en los clústeres Amazon EKS de Kubernetes 1.13:

• El controlador de admisión de PodSecurityPolicy ya está habilitado. Este controlador de admisiónpermite un control detallado de la creación y las actualizaciones de pod. Para obtener más informaciónconsulte Política de seguridad del pod (p. 274). Si no tiene ninguna política de seguridad delpod definida en su clúster al actualizar a 1.13, Amazon EKS creará una política predeterminadaautomáticamente.

Important

Si tiene algunas políticas de seguridad del pod definidas en su clúster, la políticapredeterminada no se creará al actualizar a Kubernetes 1.13. Si su clúster no tiene la políticade seguridad del pod de Amazon EKS predeterminada, es posible que sus pods no puedaniniciarse si sus políticas de seguridad del pod existentes son demasiado restrictivas. Puedecomprobar si existen políticas de seguridad del pod con el siguiente comando:

kubectl get psp

Si su clúster tiene algunas políticas de seguridad del pod definidas, también debe asegurarsede que tiene definida la política de seguridad del pod de Amazon EKS predeterminada(eks.privileged). De lo contrario, puede aplicarla siguiendo los pasos en Para instalar orestaurar la política de seguridad del pod predeterminada (p. 277).

• Los puntos de enlace de VPC de la interfaz de Amazon ECR (AWS Privatelink) son compatibles. Alhabilitar estos puntos de enlace en su VPC, todo el tráfico de red entre su VPC y Amazon ECR serestringe a la red de Amazon. Para obtener más información, consulte Puntos de enlace de la VPC deinterfaz de Amazon ECR (AWS PrivateLink) en la Guía del usuario de Amazon EC2 Container Registry.

• La característica DryRun se encuentra en versión beta en Kubernetes 1.13 y se habilita de formapredeterminada para los clústeres Amazon EKS. Para obtener más información, consulte Simulacro enla documentación de Kubernetes.

• La característica TaintBasedEvictions se encuentra en versión beta en Kubernetes 1.13 y sehabilita de forma predeterminada para los clústeres Amazon EKS. Para obtener más información,consulte Expulsiones según la marca en la documentación de Kubernetes.

• La compatibilidad del volumen del bloque sin procesar se encuentra en versión beta en Kubernetes1.13 y se activa de forma predeterminada para los clústeres Amazon EKS. Se puede acceder através del campo contenedor de volumeDevices y el campo volumeMode en las definiciones devolumen persistente y de reclamación de volumen persistente. Para obtener más información, consulteCompatibilidad del volumen de bloque sin procesar en la documentación de Kubernetes.

52

Page 60: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRetirada de versiones en Amazon EKS

• La renovación de alquiler de los nodos se trata como la señal del nodo, además de las actualizacionesdel NodeStatus. Esto reduce la carga en el plano de control para los clústeres grandes. Para obtenermás información, consulte https://github.com/kubernetes/kubernetes/pull/69241.

Para completar el registro de cambios de Kubernetes 1.13, consulte https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.13.md

Retirada de versiones en Amazon EKSDe conformidad con el soporte que ofrece la comunidad de Kubernetes para las versiones de Kubernetes,Amazon EKS se compromete a ejecutar al menos tres versiones de Kubernetes listas para producción encada momento, con una cuarta versión en retirada.

Anunciaremos la retirada de una determinada versión secundaria de Kubernetes al menos 60 días antesde la fecha de retirada. Debido al proceso de calificación y lanzamiento de Amazon EKS de nuevasversiones de Kubernetes, la retirada de una versión de Kubernetes en Amazon EKS se realizará en lafecha en que el proyecto de Kubernetes deje de ofrecer soporte a la versión o con posterioridad.

En la fecha de retirada, los clústeres de Amazon EKS que ejecuten la versión que se va a retirarempezarán a actualizarse a la siguiente versión de Kubernetes compatible con Amazon EKS. Estosignifica que si la versión obsoleta es 1.12, los clústeres se actualizarán automáticamente a la versión1.13. Si Amazon EKS actualiza automáticamente un clúster, el usuario debe actualizar también la versiónde sus nodos de trabajo una vez finalizada la actualización. Para obtener más información, consulteActualizaciones de nodos de trabajo (p. 107).

Kubernetes ofrece compatibilidad entre los nodos maestros y los nodos de trabajo para al menos dosversiones secundarias, por lo que los nodos de trabajo 1.12 seguirán funcionado cuando se organicenmediante un plano de control 1.13. Para obtener más información, consulte la sección sobre la política decompatibilidad de versiones y diferencia de versiones de Kubernetes en la documentación de Kubernetes.

Versiones de la plataformaLas versiones de la plataforma de Amazon EKS representan las funciones del plano de control del clúster,como qué marcas de servidor de la API de Kubernetes están habilitadas, así como la versión de parche deKubernetes actual. Cada versión secundaria de Kubernetes tiene una o varias versiones de la plataformade Amazon EKS asociados. Las versiones de la plataforma para las diferentes versiones secundarias deKubernetes son independientes.

Cuando está disponible una nueva versión secundaria de Kubernetes en Amazon EKS, por ejemplo, 1.15,la versión inicial de la plataforma de Amazon EKS para esa versión secundaria de Kubernetes comienzacon eks.1. Sin embargo, Amazon EKS lanza una nuevas versiones de la plataforma periódicamente parahabilitar nuevos ajustes de plano de control de Kubernetes y para proporcionar revisiones de seguridad.

Cuando están disponibles nuevas versiones de la plataforma de Amazon EKS para una versiónsecundaria:

• El número de versión de la plataforma de Amazon EKS se incrementa (eks.n+1).• Amazon EKS actualiza automáticamente todos los clústeres existentes a la última versión de la

plataforma de Amazon EKS para su versión secundaria de Kubernetes correspondiente.• Amazon EKS puede publicar una nueva AMI de proceso de trabajo con la versión de parche

correspondiente. Sin embargo, todas las versiones de parche son compatibles entre el plano de controlde EKS y las AMI de proceso de trabajo para una determinada versión secundaria de Kubernetes.

Las nuevas versiones de la plataforma de Amazon EKS no introducen cambios bruscos ni provocaninterrupciones de servicio.

53

Page 61: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioKubernetes versión 1.14

Note

Las actualizaciones automáticas de las versiones de la plataforma de Amazon EKS existentesse implementan de forma incremental. El proceso de implementación puede tardar algún tiempo.Si necesita las características de la última versión de la plataforma de Amazon EKS de formainmediata, debe crear un nuevo clúster de Amazon EKS.

Los nuevos clústeres siempre se crean con la última versión de la plataforma de Amazon EKS disponible(eks.n) para la versión de Kubernetes especificada. Si actualiza su clúster a una nueva versiónsecundaria de Kubernetes, el clúster recibe la versión de la plataforma de Amazon EKS actual para laversión secundaria de Kubernetes a la que se actualizó.

Las versiones de la plataforma de Amazon EKS actuales y recientes se describen en las siguientes tablas.

Kubernetes versión 1.14

Versión de Kubernetes Versión de la plataformade Amazon EKS

Controladores deadmisión habilitados

Notas de la versión

1.14.9 eks.7 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nueva versión deplataforma concorrecciones deseguridad.

1.14.9 eks.6 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nueva versión deplataforma que actualizalos clústeres de AmazonEKS con Kubernetes1.14 a la versión 1.14.9,varias correcciones deerrores y mejoras derendimiento.

1.14.8 eks.5 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nueva versión deplataforma que añadecompatibilidad con AWSFargate (p. 116).

1.14.8 eks.4 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,

Nueva versión deplataforma paradiversas correccionesde errores y mejoras derendimiento.

54

Page 62: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioKubernetes versión 1.13

Versión de Kubernetes Versión de la plataformade Amazon EKS

Controladores deadmisión habilitados

Notas de la versión

DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

1.14.8 eks.3 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nueva versión deplataforma queañade soporte paraGrupos de nodosadministrados (p. 86).

1.14.8 eks.2 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nueva versión dela plataforma queactualiza los clústeresde Kubernetes1.14 de AmazonEKS con el nivel deparche 1.14.8 parasolucionar el problemaCVE-2019-11253.

1.14.6 eks.1 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Versión inicial deKubernetes 1.14para AmazonEKS. Para obtenermás información,consulte Kubernetes1.14 (p. 51).

Kubernetes versión 1.13

Versión de Kubernetes Versión de la plataformade Amazon EKS

Controladores deadmisión habilitados

Notas de la versión

1.13.12 eks.7 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,

Nueva versión deplataforma concorrecciones deseguridad.

55

Page 63: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioKubernetes versión 1.13

Versión de Kubernetes Versión de la plataformade Amazon EKS

Controladores deadmisión habilitados

Notas de la versión

ValidatingAdmissionWebhook,PodSecurityPolicy

1.13.12 eks.6 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nueva versión dela plataforma queactualiza los clústeresde Kubernetes1.13 de AmazonEKS con el nivel deparche 1.13.12 parasolucionar el problemaCVE-2019-11253.

1.13.11 eks.5 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nueva versión deplataforma paradiversas correccionesde errores y mejoras derendimiento.

1.13.10 eks.4 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nueva versión dela plataforma paraadmitir roles de IAMpara cuentas deservicio. Para obtenermás información,consulte Roles deIAM para cuentas deservicio (p. 258).

1.13.10 eks.3 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nueva versión de laplataforma que actualizalos clústeres de AmazonEKS de Kubernetes1.13 a la versión conparche 1.13.10 parasolucionar el problemaCVE-2019-9512 yCVE-2019-9514.

56

Page 64: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVersión de Kubernetes 1.12

Versión de Kubernetes Versión de la plataformade Amazon EKS

Controladores deadmisión habilitados

Notas de la versión

1.13.8 eks.2 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nueva versión de laplataforma que actualizalos clústeres de AmazonEKS de Kubernetes1.13 a una versión conparche 1.13.8 parasolucionar el problemaCVE-2019-11247 yCVE-2019-11249.

1.13.7 eks.1 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Versión inicial deKubernetes 1.13para AmazonEKS. Para obtenermás información,consulte Kubernetes1.13 (p. 52).

Versión de Kubernetes 1.12

Versión de Kubernetes Versión de la plataformade Amazon EKS

Controladores deadmisión habilitados

Notas de la versión

1.12.10 eks.7 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Nueva versión deplataforma concorrecciones deseguridad.

1.12.10 eks.6 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Nueva versión de laplataforma que actualizalos clústeres de AmazonEKS de Kubernetes1.12 a una versión conparche 1.12.10 parasolucionar el problemaCVE-2019-11253.

1.12.10 eks.5 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,

Nueva versión deplataforma paradiversas correccionesde errores y mejoras derendimiento.

57

Page 65: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVersión de Kubernetes 1.12

Versión de Kubernetes Versión de la plataformade Amazon EKS

Controladores deadmisión habilitados

Notas de la versión

DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

1.12.10 eks.4 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Nueva versión de laplataforma que actualizalos clústeres de AmazonEKS de Kubernetes1.12 a una versión conparche 1.12.10 parasolucionar el problemaCVE-2019-9512 yCVE-2019-9514.

1.12.10 eks.3 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Nueva versión de laplataforma que actualizalos clústeres de AmazonEKS de Kubernetes1.12 a una versión conparche 1.12.10 parasolucionar el problemaCVE-2019-11247 yCVE-2019-11249.

1.12.6 eks.2 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Nueva versión de laplataforma para admitirnombres de DNSpersonalizados en elcertificado de Kubelet ymejorar el rendimientode etcd. Esto corrigeun error que provocabaque los daemons deKubelet de nodos detrabajo solicitaran uncertificado nuevo cadapocos segundos.

1.12.6 eks.1 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Versión inicial deKubernetes 1.12 paraAmazon EKS.

58

Page 66: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVersión de Kubernetes 1.11

Versión de Kubernetes 1.11

Versión de Kubernetes Versión de la plataformade Amazon EKS

Controladores deadmisión habilitados

Notas de la versión

1.11.10 eks.7 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Nueva versión de laplataforma que actualizalos clústeres de AmazonEKS de Kubernetes1.11 a una versión conparche 1.11.10 parasolucionar el problemaCVE-2019-11253.

1.11.10 eks.6 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Nueva versión deplataforma paradiversas correccionesde errores y mejoras derendimiento.

1.11.10 eks.5 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Nueva versión de laplataforma que actualizalos clústeres de AmazonEKS de Kubernetes1.11 a una versión conparche 1.11.10 parasolucionar el problemaCVE-2019-9512 yCVE-2019-9514.

1.11.10 eks.4 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Nueva versión de laplataforma que actualizalos clústeres de AmazonEKS de Kubernetes1.11 a una versión conparche 1.11.10 parasolucionar el problemaCVE-2019-11247 yCVE-2019-11249.

1.11.8 eks.3 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Nueva versión de laplataforma para admitirnombres de DNSpersonalizados en elcertificado de Kubelet ymejorar el rendimientode etcd.

1.11.8 eks.2 NamespaceLifecycle,LimitRanger,

Nueva versión dela plataforma que

59

Page 67: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCompatibilidad con Windows

Versión de Kubernetes Versión de la plataformade Amazon EKS

Controladores deadmisión habilitados

Notas de la versión

ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

actualiza los clústeresde Kubernetes1.11 de AmazonEKS con el nivel deparche 1.11.8 parasolucionar el problemaCVE-2019-1002100.

1.11.5 eks.1 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook

Versión inicial deKubernetes 1.11 paraAmazon EKS.

Compatibilidad con WindowsEn este tema se describe cómo añadir compatibilidad con Windows a los clústeres de Amazon EKS.

ConsideracionesAntes de implementar nodos de trabajo de Windows, tenga en cuenta lo siguiente.

• Las cargas de trabajo de Windows son compatibles con clústeres de Amazon EKS que ejecutanKubernetes versión 1.14 o posterior.

• Los tipos de instancia Amazon EC2 C3, C4, D2, I2, M4 (salvo m4.16xlarge), y las instancias R3, no soncompatibles con cargas de trabajo de Windows.

• El modo de red de hosts no es compatible con cargas de trabajo de Windows.• Los clústeres de Amazon EKS deben contener uno o varios nodos de trabajo de Linux para ejecutar

pods del sistema de núcleo que solo se ejecutan en Linux, como coredns y el controlador de recursosde VPC.

• Los registros de eventos kubelet y kube-proxy se redirigen al registro de eventos de Windows deEKS y se establecen en un límite de 200 MB.

• Los nodos de trabajo de Windows admiten una interfaz de red elástica por nodo. El número de pods quepuede ejecutar por nodo de trabajo de Windows es igual al número de direcciones IP disponibles porinterfaz de red elástica para el tipo de instancia del nodo, menos uno. Para obtener más información,consulte Direcciones IP por interfaz de red por tipo de instancia en la Guía del usuario de Amazon EC2para instancias de Linux.

• La aplicación de políticas de red de Calico no se ha probado con nodos de Windows de Amazon EKS.• Cuentas de servicio administradas por grupos (GMSA) para contenedores y pods de Windows es una

característica alfa de Kubernetes 1.14 no compatible con Amazon EKS. Puede seguir las instruccionesen la documentación de Kubernetes para habilitar y probar esta característica alfa en sus clústeres.

60

Page 68: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioHabilitación de la compatibilidad con Windows

Habilitación de la compatibilidad con WindowsLos siguientes pasos le ayudan a habilitar la compatibilidad con Windows para su clúster de AmazonEKS. Elija la siguiente pestaña para usar eksctl o herramientas estándar en su sistema operativo clienteespecífico.

eksctl

Para habilitar la compatibilidad con Windows para su clúster con eksctl

Este procedimiento solo funciona para clústeres que se han creado con eksctl y da por sentadoque su versión eksctl es 0.16.0-rc.1 o posterior. Puede comprobar la versión con el comandosiguiente.

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

1. Habilite la compatibilidad de Windows para su clúster de Amazon EKS con el siguiente comandoeksctl. Este comando implementa el controlador de recursos de VPC y el webhook decontrolador de admisión de VPC que son necesarios en los clústeres de Amazon EKS paraejecutar cargas de trabajo de Windows.

eksctl utils install-vpc-controllers --name cluster_name --approve

2. Una vez que haya habilitado la compatibilidad con Windows, puede lanzar un grupo de nodos deWindows en su clúster. Para obtener más información, consulte Lanzamiento de nodos de trabajode Windows de Amazon EKS (p. 102).

Tras añadir compatibilidad con Windows a su clúster, debe especificar selectores de nodos en susaplicaciones para que los pods se inicien en un nodo con el sistema operativo adecuado. Para podsde Linux, use el siguiente texto del selector de nodos en sus manifiestos.

nodeSelector: beta.kubernetes.io/os: linux beta.kubernetes.io/arch: amd64

Para pods de Windows, use el siguiente texto del selector de nodos en sus manifiestos.

nodeSelector: beta.kubernetes.io/os: windows beta.kubernetes.io/arch: amd64

Windows

Para habilitar la compatibilidad con Windows para su clúster con un cliente de Windows

En los siguientes pasos, sustituya us-west-2 por la región en la que reside su clúster.

1. Implemente el controlador de recursos de VPC en su clúster.

kubectl apply -f https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/us-west-2/vpc-resource-controller/latest/vpc-resource-controller.yaml

2. Implemente el webhook de controlador de admisión de VPC en su clúster.

61

Page 69: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioHabilitación de la compatibilidad con Windows

a. Descargue los archivos de implementación y los scripts necesarios.

curl -o vpc-admission-webhook-deployment.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/us-west-2/vpc-admission-webhook/latest/vpc-admission-webhook-deployment.yaml;curl -o Setup-VPCAdmissionWebhook.ps1 https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/us-west-2/vpc-admission-webhook/latest/Setup-VPCAdmissionWebhook.ps1;curl -o webhook-create-signed-cert.ps1 https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/us-west-2/vpc-admission-webhook/latest/webhook-create-signed-cert.ps1;curl -o webhook-patch-ca-bundle.ps1 https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/us-west-2/vpc-admission-webhook/latest/webhook-patch-ca-bundle.ps1;

b. Instale OpenSSL y jq.c. Configure e implemente el webhook de admisión de VPC.

./Setup-VPCAdmissionWebhook.ps1 -DeploymentTemplate ".\vpc-admission-webhook-deployment.yaml"

3. Determine si su clúster tiene el enlace de rol de clúster necesario.

kubectl get clusterrolebinding eks:kube-proxy-windows

Si se devuelve una salida similar a la siguiente salida de ejemplo, el clúster tendrá el enlace de rolnecesario.

NAME AGEeks:kube-proxy-windows 10d

Si la salida incluye Error from server (NotFound), el clúster no tendrá el enlace de rol declúster necesario. Añada el enlace creando un archivo llamado eks-kube-proxy-windows-crb.yaml con el siguiente contenido.

kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: eks:kube-proxy-windows labels: k8s-app: kube-proxy eks.amazonaws.com/component: kube-proxysubjects: - kind: Group name: "eks:kube-proxy-windows"roleRef: kind: ClusterRole name: system:node-proxier apiGroup: rbac.authorization.k8s.io

Aplique la configuración al clúster.

kubectl apply -f eks-kube-proxy-windows-crb.yaml

4. Una vez que haya habilitado la compatibilidad con Windows, puede lanzar un grupo de nodos deWindows en su clúster. Para obtener más información, consulte Lanzamiento de nodos de trabajode Windows de Amazon EKS (p. 102).

62

Page 70: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioHabilitación de la compatibilidad con Windows

Tras añadir compatibilidad con Windows a su clúster, debe especificar selectores de nodos en susaplicaciones para que los pods se inicien en un nodo con el sistema operativo adecuado. Para podsde Linux, use el siguiente texto del selector de nodos en sus manifiestos.

nodeSelector: beta.kubernetes.io/os: linux beta.kubernetes.io/arch: amd64

Para pods de Windows, use el siguiente texto del selector de nodos en sus manifiestos.

nodeSelector: beta.kubernetes.io/os: windows beta.kubernetes.io/arch: amd64

macOS and Linux

Para habilitar la compatibilidad con Windows para su clúster con un cliente de macOS o Linux.

Este procedimiento requiere que la biblioteca openssl y el procesador JSON jq estén instalados ensu sistema cliente.

En los siguientes pasos, sustituya us-west-2 por la región en la que reside su clúster.

1. Implemente el controlador de recursos de VPC en su clúster.

kubectl apply -f https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/us-west-2/vpc-resource-controller/latest/vpc-resource-controller.yaml

2. Cree el manifiesto del webhook de controlador de admisión de VPC para su clúster.

a. Descargue los archivos de implementación y los scripts necesarios.

curl -o webhook-create-signed-cert.sh https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/us-west-2/vpc-admission-webhook/latest/webhook-create-signed-cert.shcurl -o webhook-patch-ca-bundle.sh https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/us-west-2/vpc-admission-webhook/latest/webhook-patch-ca-bundle.shcurl -o vpc-admission-webhook-deployment.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/us-west-2/vpc-admission-webhook/latest/vpc-admission-webhook-deployment.yaml

b. Añada permisos a los scripts de shell para que puedan ejecutarse.

chmod +x webhook-create-signed-cert.sh webhook-patch-ca-bundle.sh

c. Cree un secreto para una comunicación segura.

./webhook-create-signed-cert.sh

d. Compruebe el secreto.

kubectl get secret -n kube-system vpc-admission-webhook-certs

e. Configure el webhook y cree un archivo de implementación.

cat ./vpc-admission-webhook-deployment.yaml | ./webhook-patch-ca-bundle.sh > vpc-admission-webhook.yaml

63

Page 71: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioHabilitación de la compatibilidad con Windows

3. Implemente el webhook de admisión de VPC.

kubectl apply -f vpc-admission-webhook.yaml

4. Determine si su clúster tiene el enlace de rol de clúster necesario.

kubectl get clusterrolebinding eks:kube-proxy-windows

Si se devuelve una salida similar a la siguiente salida de ejemplo, el clúster tendrá el enlace de rolnecesario.

NAME AGEeks:kube-proxy-windows 10d

Si la salida incluye Error from server (NotFound), el clúster no tendrá el enlace de rol declúster necesario. Añada el enlace creando un archivo llamado eks-kube-proxy-windows-crb.yaml con el siguiente contenido.

kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: eks:kube-proxy-windows labels: k8s-app: kube-proxy eks.amazonaws.com/component: kube-proxysubjects: - kind: Group name: "eks:kube-proxy-windows"roleRef: kind: ClusterRole name: system:node-proxier apiGroup: rbac.authorization.k8s.io

Aplique la configuración al clúster.

kubectl apply -f eks-kube-proxy-windows-crb.yaml

5. Una vez que haya habilitado la compatibilidad con Windows, puede lanzar un grupo de nodos deWindows en su clúster. Para obtener más información, consulte Lanzamiento de nodos de trabajode Windows de Amazon EKS (p. 102).

Tras añadir compatibilidad con Windows a su clúster, debe especificar selectores de nodos en susaplicaciones para que los pods se inicien en un nodo con el sistema operativo adecuado. Para podsde Linux, use el siguiente texto del selector de nodos en sus manifiestos.

nodeSelector: beta.kubernetes.io/os: linux beta.kubernetes.io/arch: amd64

Para pods de Windows, use el siguiente texto del selector de nodos en sus manifiestos.

nodeSelector: beta.kubernetes.io/os: windows beta.kubernetes.io/arch: amd64

64

Page 72: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioImplementación de una aplicación de ejemplo de Windows

Implementación de una aplicación de ejemplo deWindowsPara implementar una aplicación de ejemplo de Windows

1. Cree un archivo denominado windows-server-iis.yaml con el siguiente contenido.

apiVersion: apps/v1kind: Deploymentmetadata: name: windows-server-iisspec: selector: matchLabels: app: windows-server-iis tier: backend track: stable replicas: 1 template: metadata: labels: app: windows-server-iis tier: backend track: stable spec: containers: - name: windows-server-iis image: mcr.microsoft.com/windows/servercore:1809 ports: - name: http containerPort: 80 imagePullPolicy: IfNotPresent command: - powershell.exe - -command - "Add-WindowsFeature Web-Server; Invoke-WebRequest -UseBasicParsing -Uri 'https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.6/ServiceMonitor.exe' -OutFile 'C:\\ServiceMonitor.exe'; echo '<html><body><br/><br/><marquee><H1>Hello EKS!!!<H1><marquee></body><html>' > C:\\inetpub\\wwwroot\\default.html; C:\\ServiceMonitor.exe 'w3svc'; " nodeSelector: beta.kubernetes.io/os: windows---apiVersion: v1kind: Servicemetadata: name: windows-server-iis-service namespace: defaultspec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: windows-server-iis tier: backend track: stable sessionAffinity: None type: LoadBalancer

2. Implemente la aplicación en el clúster.

65

Page 73: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCompatibilidad con Arm

kubectl apply -f windows-server-iis.yaml

3. Obtenga el estado del pod.

kubectl get pods -o wide --watch

Espere a que el pod cambie al estado Running.4. Consulte los servicios del clúster y espere hasta que se rellene la columna External IP (IP externa) del

servicio windows-server-iis-service.

Note

La dirección IP puede tardar varios minutos en estar disponible.

kubectl get services -o wide

5. Cuando la dirección IP externa esté disponible, use un navegador web con esa dirección para ver lapágina de inicio de IIS.

Note

DNS puede tardar varios minutos en propagarse, lo mismo que su aplicación de ejemplo encargarse en su navegador web.

Compatibilidad con ArmEn este tema se describe cómo crear un clúster de Amazon EKS y añadir nodos de trabajo que seejecuten en instancias Amazon EC2 A1 a clústeres de Amazon EKS. Las instanciasAmazon EC2 A1ofrecen un importante ahorro económico y son ideales para aplicaciones de escalado horizontal, comoservidores web, microservicios en contenedores, flotas de almacenamiento en caché y almacenes de datosdistribuidos.

Note

Estas instrucciones y los recursos a los que hacen referencia se ofrecen como una característicabeta administrada por AWS. El uso de estas instrucciones y recursos se rige por las condicionesde servicio de AWS aplicables a los servicios beta. Mientras está en versión beta, AmazonEKS no admite el uso de instancias Amazon EC2 A1 para cargas de trabajo de Kubernetes deproducción. Envíe sus comentarios o preguntas abriendo una incidencia en GitHub.

Consideraciones• Los nodos de trabajo pueden ser cualquier tipo de instancia A1, pero todos los nodos de trabajo deben

ser un tipo de instancia A1.• Los nodos de trabajo deben implementarse con Kubernetes versión 1.13 o 1.14.• Para utilizar nodos de trabajo de instancias A1, debe configurar un nuevo clúster de Amazon EKS. No

puede añadir nodos de trabajo a un clúster que tenga nodos de trabajo existentes.

Requisitos previos• Debe tener eksctl instalado en el equipo. Si no lo tiene instalado, consulte Instalación deeksctl (p. 4) para obtener instrucciones de instalación.

66

Page 74: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCrear un clúster

• Debe tener kubectl y el autenticador de AWS IAM instalados en su equipo. Si no los tiene instalados,consulte Instalación de kubectl (p. 188) para obtener instrucciones de instalación.

Crear un clúster1. Ejecute el siguiente comando para crear un clúster de Amazon EKS sin nodos de trabajo. Si desea

crear un clúster que ejecute Kubernetes versión 1.13, reemplace 1.14 por 1.13 en su comando.Puede reemplazar us-west-2 por cualquier región en la que esté disponible Amazon EKS.

eksctl create cluster \--name a1-preview \--version 1.14 \--region us-west-2 \--without-nodegroup

Al lanzar un clúster de Amazon EKS mediante eksctl se crea una pila de AWS CloudFormation. Elproceso de lanzamiento de esta pila suele tardar entre 10 y 15 minutos. Puede monitorizar el progresoen la consola de Amazon EKS.

2. Cuando finalice la creación del clúster, abra la consola de AWS CloudFormation. Verá una pilallamada eksctl-a1-preview-cluster. Seleccione esta pila. Seleccione la pestaña Resources(Recursos). Registre los valores de los ID de los recursos VPC y ControlPlaneSecurityGroup.

3. Confirme que el clúster se está ejecutando con el comando kubectl get svc. El comandodevuelve un resultado similar al siguiente.

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.100.0.1 <none> 443/TCP 20m

Habilitar la compatibilidad con ArmPara permitir que solo haya nodos A1 en un clúster de Amazon EKS, debe actualizar algunoscomponentes de Kubernetes. Realice los siguientes pasos para actualizar CoreDNS y kube-proxy, einstalar el complemento ARM64 CNI para Kubernetes de Amazon VPC.

1. Actualice el ID de imagen de CoreDNS con el comando correspondiente a la versión del clúster queinstaló en un paso anterior.

Kubernetes 1.14

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-ec2-a1-preview/dns-arm-1.14.yaml

Kubernetes 1.13

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-ec2-a1-preview/dns-arm-1.13.yaml

2. Actualice el ID de imagen de kube-proxy con el comando correspondiente a la versión del clústerque instaló en un paso anterior.

Kubernetes 1.14

67

Page 75: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioIniciar nodos de trabajo

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-ec2-a1-preview/kube-proxy-arm-1.14.yaml

Kubernetes 1.13

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-ec2-a1-preview/kube-proxy-arm-1.13.yaml

3. Implemente el complemento ARM64 CNI para Kubernetes de Amazon VPC.

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-ec2-a1-preview/aws-k8s-cni-arm64.yaml

Iniciar nodos de trabajo1. Abra la consola de AWS CloudFormation. Asegúrese de que se encuentra en la región de AWS en la

que creó el clúster de Amazon EKS.2. Elija Create stack (Crear pila), y, a continuación, elija With new resources (standard) (Con nuevos

recursos [estándar]).3. En Specify template (Especificar plantilla), seleccione Amazon S3 URL (URL de Amazon S3), escriba

la siguiente URL en el cuadro Amazon S3 URL (URL de Amazon S3) y, a continuación, elija Next(Siguiente) dos veces.

https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-11-15/amazon-eks-arm-nodegroup.yaml

4. En la página Specify stack details (Especificar detalles de la pila), rellene los parámetros segúncorresponda:

• Stack name (Nombre de pila): elija un nombre para la pila de AWS CloudFormation. Por ejemplo,puede llamarla a1-preview-worker-nodes.

• KubernetesVersion: seleccione la versión de Kubernetes que eligió al lanzar el clúster de AmazonEKS.

• ClusterName: escriba el nombre que usó al crear el clúster de Amazon EKS.

Important

El nombre debe coincidir exactamente con el utilizado en Paso 1: Crear el clúster deAmazon EKS (p. 16); de lo contrario, los nodos de trabajo no podrán unirse al clúster.

• ClusterControlPlaneSecurityGroup: elija el valor de ID de ControlPlaneSecurityGroup de lasalida de AWS CloudFormation que generó con the section called “Crear un clúster” (p. 67).

• NodeGroupName: escriba un nombre para el grupo de nodos. Este nombre se puede utilizar másadelante para identificar el grupo de nodos de Auto Scaling que se crea para los nodos de trabajo.

• NodeAutoScalingGroupMinSize: escriba el número mínimo de nodos al que pueda llegar el grupo deAuto Scaling de nodos de trabajo.

• NodeAutoScalingGroupDesiredCapacity: escriba el número deseado de nodos al que desee llegarcuando se cree la pila.

• NodeAutoScalingGroupMaxSize: escriba el número máximo de nodos al que puede llegar el grupode Auto Scaling de nodos de trabajo.

• NodeInstanceType: elija uno de los tipos de instancia A1 para los nodos de trabajo, comoa1.large.

• NodeVolumeSize: especifique un tamaño de volumen raíz para los nodos de trabajo en GiB.

68

Page 76: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioUnir nodos de trabajo a un clúster

• KeyName: escriba el nombre de un par de claves SSH de Amazon EC2 que pueda usar paraestablecer una conexión SSH en los nodos de trabajo después de haberlos lanzado. Si aún notiene un par de claves de Amazon EC2, puede crear uno en la Consola de administración de AWS.Para obtener más información, consulte Pares de claves de Amazon EC2 en la Guía del usuario deAmazon EC2 para instancias de Linux.

Note

Si no proporciona un par de claves aquí, se produce un error al crear la pila de AWSCloudFormation.

• BootstrapArguments: argumentos que se pasan al script de arranque. Para obtener másinformación, consulte https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh.

• VpcId: escriba el ID de la VPC creada en the section called “Crear un clúster” (p. 67).• Subnets: elija las subredes creadas en the section called “Crear un clúster” (p. 67).• NodeImageAMI113: el parámetro de Amazon EC2 Systems Manager para el ID de imagen de la

AMI 1.13. Este valor se omite si ha seleccionado 1.14 para KubernetesVersion.• NodeImageAMI114: el parámetro de Amazon EC2 Systems Manager para el ID de imagen de la

AMI 1.14. Este valor se omite si ha seleccionado 1.13 para KubernetesVersion.5. Elija Next (Siguiente) y después elija de nuevo Next (Siguiente).6. Confirme que la pila pueda crear recursos de IAM y, a continuación, seleccione Create stack (Crear

pila).7. Una vez completada la creación de la pila, selecciónela en la consola y elija Outputs (Salidas).8. Anote el valor de NodeInstanceRoles correspondiente al grupo nodos creado. Lo necesitará al

configurar los nodos de trabajo de Amazon EKS.

Unir nodos de trabajo a un clúster1. Descargue, edite y aplique el mapa de configuración del autenticador de IAM de AWS.

a. Utilice el siguiente comando para descarga el mapa de configuración:

wget https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-11-15/aws-auth-cm.yaml

b. Abra el archivo con el editor de texto que prefiera. Sustituya el fragmento <ARN of instancerole (not instance profile)> por el valor de NodeInstanceRole anotado en elprocedimiento anterior y guarde el archivo.

Important

No modifique ninguna otra línea de este archivo.

apiVersion: v1kind: ConfigMapmetadata: name: aws-auth namespace: kube-systemdata: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

c. Aplique la configuración. Este comando puede tardar varios minutos en finalizar.

69

Page 77: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario(Opcional) Implementar una aplicación

kubectl apply -f aws-auth-cm.yaml

Note

Si aparece el error "aws-iam-authenticator": executable file not foundin $PATH, significa que kubectl no está configurado para Amazon EKS. Para obtenermás información, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Accesodenegado o no autorizado (kubectl) (p. 293) en la sección de solución de problemas.

2. Observe el estado de los nodos y espere a que aparezca el valor Ready.

kubectl get nodes --watch

(Opcional) Implementar una aplicaciónPara confirmar que puede implementar y ejecutar una aplicación en los nodos de trabajo, siga estos pasos.

1. Implemente el asistente de métricas de CNI con el siguiente comando.

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-ec2-a1-preview/cni-metrics-helper-arm64.yaml

La salida devuelta es similar a la salida del ejemplo siguiente.

clusterrole.rbac.authorization.k8s.io/cni-metrics-helper createdserviceaccount/cni-metrics-helper createdclusterrolebinding.rbac.authorization.k8s.io/cni-metrics-helper createddeployment.extensions/cni-metrics-helper created

2. Confirme que el asistente de métricas de CNI se está ejecutando con el siguiente comando.

kubectl -n kube-system get pods -o wide

El pod se está ejecutando si ve que el pod cni-metrics-helper se devuelve en la salida.

Visualización de indicadores de servidor APIPuede utilizar la característica de registro del plano de control para los clústeres de Amazon EKS paraver los indicadores del servidor API que se habilitaron cuando se creó un clúster. Para obtener másinformación, consulte Registro de plano de control de Amazon EKS (p. 45). En este tema se muestracómo ver los indicadores de servidor API para un clúster de Amazon EKS en la consola de AmazonCloudWatch.

Cuando se crea un clúster por primera vez, los registros iniciales del servidor API incluyen los indicadoresque se utilizaron para iniciar el servidor API. Si habilita los registros del servidor API al lanzar el clúster opoco después, estos registros se envían a CloudWatch Logs y podrá verlos allí.

Para ver los indicadores de servidor API para un clúster

1. Si aún no lo ha hecho, habilite los registros del servidor API para el clúster de Amazon EKS.

a. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

70

Page 78: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVisualización de indicadores de servidor API

b. Elija el nombre del clúster para mostrar la información del clúster.c. En Logging (Registro), elija Update (Actualizar).d. En API server (Servidor API), asegúrese de que el tipo de registro tiene el valor Enabled

(Habilitado).e. Elija Update (Actualizar) para finalizar.

2. En la consola de Amazon EKS, desplácese hacia abajo hasta la sección Logging (Registro) de lapágina de detalles del clúster. Elija el enlace bajo CloudWatch para abrir la página de la consola deCloudWatch de los registros del clúster.

3. En la lista de secuencias de registro, busque la versión más antigua de la secuencia de registro kube-apiserver-example-ID-288ec988b77a59d70ec77. Utilice la columna Last Event Time (Hora delúltimo evento) para determinar la antigüedad de las secuencias de registro.

4. Desplácese hasta los primeros eventos (el comienzo de la secuencia de registro). Debería ver losindicadores iniciales del servidor API para el clúster.

Note

Si no ve los registros del servidor API al principio de la secuencia de registro, es probableque el archivo de registro del servidor API se haya rotado en el servidor antes de habilitarel registro del servidor API en el servidor. Los archivos de registro que se rotan antes dehabilitar el registro del servidor API no se pueden exportar a CloudWatch.Sin embargo, puede crear un nuevo clúster con la misma versión de Kubernetes y habilitarel registro del servidor API cuando cree el clúster. Los clústeres con la misma versión deplataforma tienen los mismos indicadores habilitados, por lo que sus indicadores debencoincidir con los indicadores del nuevo clúster. Cuando termine de ver los indicadores delnuevo clúster en CloudWatch, puede eliminar el nuevo clúster.

71

Page 79: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Nodos de trabajoLas máquinas de trabajo de Kubernetes se denominan nodos. Los nodos de trabajo de Amazon EKS seejecutan en su cuenta de AWS y se conectan al plano de control del clúster a través del punto de enlacedel servidor de la API. Implemente uno o más nodos de trabajo en un grupo de nodos. Un grupo de nodoses una o más instancias de Amazon EC2 que se implementan en un grupo de Amazon EC2 Auto Scaling.Todas las instancias de un grupo de nodos deben:

• Ser el mismo tipo de instancia• Ejecutar la misma imagen de Amazon Machine (AMI)• Utilizar el mismo Rol de IAM del nodo de trabajo de Amazon EKS (p. 254)

Un clúster puede contener varios grupos de nodos y cada grupo de nodos puede contener varios nodosde trabajo. Si implementa grupos de nodos administrados (p. 86), hay un número máximo de nodosque puede tener en un grupo de nodos y un número máximo de grupos de nodos que puede tener dentrode un clúster. Consulte service quotas (cuotas de servicio) (p. 299) para obtener más información. Conesta información, puede determinar cuántos grupos de nodos necesita tener en un clúster para cumplir susrequisitos.

Los nodos de trabajo de Amazon EKS son instancias de Amazon EC2 estándar y se le facturaránconforme a los precios ordinarios de EC2. Para obtener más información, consulte Precios de AmazonEC2.

Amazon EKS proporciona una imagen de Amazon Machine (AMI) especializada denominada AMIoptimizada para Amazon EKS. Esta AMI se basa en Amazon Linux 2 y está configurada para servir comola imagen base para los nodos de trabajo de Amazon EKS. La AMI está configurada para funcionar deserie con Amazon EKS, e incluye Docker, kubelet y el autenticador de AWS IAM. La AMI también contieneun script de arranque especializado que permite detectar y conectar automáticamente con el plano decontrol del clúster.

Note

Para hacer un seguimiento de los eventos de seguridad o privacidad de Amazon Linux 2, consulteel Centro de seguridad de Amazon Linux o suscríbase a la fuente RSS asociada. Los eventosde seguridad y privacidad incluyen una descripción general del problema, qué paquetes estánafectados y cómo actualizar las instancias para corregir el problema.

Comenzando con la versión 1.14 de Kubernetes y la versión de la plataforma (p. 53) eks.3, los clústeresAmazon EKS admiten Grupos de nodos administrados (p. 86), que automatizan el aprovisionamientoy la administración del ciclo de vida de los nodos. Las versiones anteriores de clústeres Amazon EKSpueden iniciar nodos de trabajo con una plantilla AWS CloudFormation proporcionada por Amazon EKS.

Si restringe el acceso al punto de enlace público del clúster mediante bloques de CIDR, se recomiendahabilitar también el acceso de punto de enlace privado para que los nodos de trabajo puedan comunicarsecon el clúster. Si el punto de enlace privado no está habilitado, los bloques de CIDR que especifique parael acceso público deben incluir los orígenes de salida de su VPC. Para obtener más información, consulteControl de acceso al punto de enlace del clúster de Amazon EKS (p. 39).

Para agregar nodos de trabajo al clúster Amazon EKS, consulte Lanzamiento de nodos de trabajo deLinux de Amazon EKS (p. 93). Si sigue los pasos de la guía, se añadirá la etiqueta necesaria al nodode trabajo. Si inicia los nodos de trabajo manualmente, debe añadir la siguiente etiqueta a cada nodo detrabajo. Para obtener más información, consulte Adding and Deleting Tags on an Individual Resource(Añadir y eliminar etiquetas en un recurso individual).

72

Page 80: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAMI de Linux optimizada para Amazon EKS

Clave Valor

kubernetes.io/cluster/<cluster-name> owned

Para obtener más información acerca de nodos de trabajo desde un punto de vista general de Kubernetes,consulte Nodes en la documentación de Kubernetes.

Temas• AMI de Linux optimizada para Amazon EKS (p. 73)• AMI de Windows optimizada para Amazon EKS (p. 83)• Grupos de nodos administrados (p. 86)• Lanzamiento de nodos de trabajo de Linux de Amazon EKS (p. 93)• Lanzamiento de nodos de trabajo de Windows de Amazon EKS (p. 102)• Actualizaciones de nodos de trabajo (p. 107)• AMI de Ubuntu optimizadas para Amazon EKS (p. 115)

AMI de Linux optimizada para Amazon EKSLa AMI de Linux optimizada para Amazon EKS se basa en Amazon Linux 2 y está configurada para servircomo la imagen base para los nodos de trabajo de Amazon EKS. La AMI está configurada para funcionarde serie con Amazon EKS, e incluye Docker, kubelet y el autenticador de AWS IAM.

Note

Para hacer un seguimiento de los eventos de seguridad o privacidad de Amazon Linux 2, consulteel Centro de seguridad de Amazon Linux o suscríbase a la fuente RSS asociada. Los eventosde seguridad y privacidad incluyen una descripción general del problema, qué paquetes estánafectados y cómo actualizar las instancias para corregir el problema.

Los ID de AMI para las AMI optimizadas para Amazon EKS (con y sin compatibilidad con GPU (p. 78))más recientes se muestran en la siguiente tabla. También puede recuperar los ID con un parámetrode AWS Administrador de sistemas utilizando diferentes herramientas. Para obtener más información,consulte Recuperación de los ID de la AMI optimizada para Amazon EKS (p. 82).

Note

La AMI optimizada para Amazon EKS, compatible con GPU, solo admite los tipos de instanciaGPU. Asegúrese de indicar estos tipos de instancia en su plantilla AWS CloudFormation de nodosde trabajo. Al utilizar la AMI optimizada para Amazon EKS con compatibilidad de GPU, acepta elacuerdo de licencia de usuario final (EULA) de NVIDIA.

Kubernetes version 1.15.10

Región AMI optimizada para AmazonEKS

con compatibilidad con GPU

EE.UU. Este (Ohio) (us-east-2)

Ver ID de AMI Ver ID de AMI

US East (N. Virginia) (us-east-1)

Ver ID de AMI Ver ID de AMI

EE.UU. Oeste (Oregón) (us-west-2)

Ver ID de AMI Ver ID de AMI

73

Page 81: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAMI de Linux optimizada para Amazon EKS

Región AMI optimizada para AmazonEKS

con compatibilidad con GPU

Asia Pacífico (Hong Kong) (ap-east-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Mumbai) (ap-south-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Tokio) (ap-northeast-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Seúl) (ap-northeast-2)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Singapur) (ap-southeast-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Sídney) (ap-southeast-2)

Ver ID de AMI Ver ID de AMI

Canadá (Central) (ca-central-1)

Ver ID de AMI Ver ID de AMI

Europa (Fráncfort) (eu-central-1)

Ver ID de AMI Ver ID de AMI

Europa (Irlanda) (eu-west-1) Ver ID de AMI Ver ID de AMI

Europa (Londres) (eu-west-2) Ver ID de AMI Ver ID de AMI

Europa (París) (eu-west-3) Ver ID de AMI Ver ID de AMI

Europa (Estocolmo) (eu-north-1)

Ver ID de AMI Ver ID de AMI

Medio Oriente (Baréin) (me-south-1)

Ver ID de AMI Ver ID de AMI

América del Sur (São Paulo)(sa-east-1)

Ver ID de AMI Ver ID de AMI

China (Pekín) (cn-north-1) Ver ID de AMI Ver ID de AMI

China (Ningxia) (cn-northwest-1)

Ver ID de AMI Ver ID de AMI

Kubernetes version 1.14.9

Región AMI optimizada para AmazonEKS

con compatibilidad con GPU

EE.UU. Este (Ohio) (us-east-2)

Ver ID de AMI Ver ID de AMI

US East (N. Virginia) (us-east-1)

Ver ID de AMI Ver ID de AMI

74

Page 82: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAMI de Linux optimizada para Amazon EKS

Región AMI optimizada para AmazonEKS

con compatibilidad con GPU

EE.UU. Oeste (Oregón) (us-west-2)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Hong Kong) (ap-east-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Mumbai) (ap-south-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Tokio) (ap-northeast-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Seúl) (ap-northeast-2)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Singapur) (ap-southeast-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Sídney) (ap-southeast-2)

Ver ID de AMI Ver ID de AMI

Canadá (Central) (ca-central-1)

Ver ID de AMI Ver ID de AMI

Europa (Fráncfort) (eu-central-1)

Ver ID de AMI Ver ID de AMI

Europa (Irlanda) (eu-west-1) Ver ID de AMI Ver ID de AMI

Europa (Londres) (eu-west-2) Ver ID de AMI Ver ID de AMI

Europa (París) (eu-west-3) Ver ID de AMI Ver ID de AMI

Europa (Estocolmo) (eu-north-1)

Ver ID de AMI Ver ID de AMI

Medio Oriente (Baréin) (me-south-1)

Ver ID de AMI Ver ID de AMI

América del Sur (São Paulo)(sa-east-1)

Ver ID de AMI Ver ID de AMI

China (Pekín) (cn-north-1) Ver ID de AMI Ver ID de AMI

China (Ningxia) (cn-northwest-1)

Ver ID de AMI Ver ID de AMI

Kubernetes version 1.13.12

Región AMI optimizada para AmazonEKS

con compatibilidad con GPU

EE.UU. Este (Ohio) (us-east-2)

Ver ID de AMI Ver ID de AMI

75

Page 83: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAMI de Linux optimizada para Amazon EKS

Región AMI optimizada para AmazonEKS

con compatibilidad con GPU

US East (N. Virginia) (us-east-1)

Ver ID de AMI Ver ID de AMI

EE.UU. Oeste (Oregón) (us-west-2)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Hong Kong) (ap-east-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Mumbai) (ap-south-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Tokio) (ap-northeast-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Seúl) (ap-northeast-2)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Singapur) (ap-southeast-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Sídney) (ap-southeast-2)

Ver ID de AMI Ver ID de AMI

Canadá (Central) (ca-central-1)

Ver ID de AMI Ver ID de AMI

Europa (Fráncfort) (eu-central-1)

Ver ID de AMI Ver ID de AMI

Europa (Irlanda) (eu-west-1) Ver ID de AMI Ver ID de AMI

Europa (Londres) (eu-west-2) Ver ID de AMI Ver ID de AMI

Europa (París) (eu-west-3) Ver ID de AMI Ver ID de AMI

Europa (Estocolmo) (eu-north-1)

Ver ID de AMI Ver ID de AMI

Medio Oriente (Baréin) (me-south-1)

Ver ID de AMI Ver ID de AMI

América del Sur (São Paulo)(sa-east-1)

Ver ID de AMI Ver ID de AMI

China (Pekín) (cn-north-1) Ver ID de AMI Ver ID de AMI

China (Ningxia) (cn-northwest-1)

Ver ID de AMI Ver ID de AMI

76

Page 84: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAMI de Linux optimizada para Amazon EKS

Kubernetes version 1.12.10

Región AMI optimizada para AmazonEKS

con compatibilidad con GPU

EE.UU. Este (Ohio) (us-east-2)

Ver ID de AMI Ver ID de AMI

US East (N. Virginia) (us-east-1)

Ver ID de AMI Ver ID de AMI

EE.UU. Oeste (Oregón) (us-west-2)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Hong Kong) (ap-east-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Mumbai) (ap-south-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Tokio) (ap-northeast-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Seúl) (ap-northeast-2)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Singapur) (ap-southeast-1)

Ver ID de AMI Ver ID de AMI

Asia Pacífico (Sídney) (ap-southeast-2)

Ver ID de AMI Ver ID de AMI

Canadá (Central) (ca-central-1)

Ver ID de AMI Ver ID de AMI

Europa (Fráncfort) (eu-central-1)

Ver ID de AMI Ver ID de AMI

Europa (Irlanda) (eu-west-1) Ver ID de AMI Ver ID de AMI

Europa (Londres) (eu-west-2) Ver ID de AMI Ver ID de AMI

Europa (París) (eu-west-3) Ver ID de AMI Ver ID de AMI

Europa (Estocolmo) (eu-north-1)

Ver ID de AMI Ver ID de AMI

Medio Oriente (Baréin) (me-south-1)

Ver ID de AMI Ver ID de AMI

América del Sur (São Paulo)(sa-east-1)

Ver ID de AMI Ver ID de AMI

China (Pekín) (cn-north-1) Ver ID de AMI Ver ID de AMI

China (Ningxia) (cn-northwest-1)

Ver ID de AMI Ver ID de AMI

77

Page 85: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioScripts de compilación de la AMI

optimizada para Amazon EKS

Important

Las AMI precisan la plantilla más reciente del nodo de trabajo AWS CloudFormation. No puedeutilizar estas AMI con una versión anterior de la plantilla de nodo de trabajo; dará error al unirse alclúster. Asegúrese de actualizar cualquier pila de trabajo existente de AWS CloudFormation con laplantilla más reciente (la URL aparece a continuación), antes de intentar utilizar estas AMI.

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-nodegroup.yaml

La plantilla de nodos de trabajo de AWS CloudFormation lanza los nodos de trabajo con datos de usuariode Amazon EC2 que activan un script de arranque especial. Este script permite que se detecten los nodosde trabajo y conectar automáticamente con el plano de control del clúster. Para obtener más información,consulte Lanzamiento de nodos de trabajo de Linux de Amazon EKS (p. 93).

Scripts de compilación de la AMI optimizada paraAmazon EKSAmazon Elastic Kubernetes Service (Amazon EKS) ha establecido en código abierto los scripts decompilación que se utilizan para crear la AMI optimizada para Amazon EKS. Estos scripts de compilaciónestán ahora disponibles en GitHub.

La AMI optimizada para Amazon EKS se crea sobre Amazon Linux 2, específicamente para su uso comonodo de trabajo en clústeres de Amazon EKS. Puede utilizar este repositorio para ver los detalles decómo el equipo de Amazon EKS configura kubelet, Docker, el autenticador de AWS IAM para Kubernetes,etcétera.

El repositorio de scripts de compilación incluye una plantilla HashiCorp Packer y crea scripts para generaruna AMI. Estos scripts son el origen de confianza para compilaciones de AMI optimizada para AmazonEKS, de modo que puede seguir el repositorio de GitHub para monitorear los cambios en nuestras AMI.Por ejemplo, quizás desee su propia AMI para utilizar la misma versión de Docker que el equipo de EKSutiliza para la AMI oficial.

El repositorio de GitHub también contiene el script de arranque especial, que se ejecuta en el momento delarranque para configurar los dato de certificado de la instancia, el punto de enlace del plano del control, elnombre del clúster, etcétera.

Además, el repositorio de GitHub contiene nuestras plantillas de AWS CloudFormation de nodo detrabajo de Amazon EKS. Estas plantillas facilitan la puesta en marcha de una instancia que ejecuta la AMIoptimizada para Amazon EKS y la registra con un clúster.

Para obtener más información, consulte los repositorios en GitHub en https://github.com/awslabs/amazon-eks-ami.

AMI optimizada para Amazon EKS compatible conGPULa AMI optimizada para Amazon EKS compatible con GPU se basa en la AMI optimizada para AmazonEKS estándar y está configurada para actuar como una imagen opcional para los nodos de trabajo deAmazon EKS con el fin de permitir cargas de trabajo de GPU.

Además de la configuración de la AMI optimizada para Amazon EKS estándar, la AMI de GPU incluye losiguiente:

• Controladores NVIDIA• El paquete nvidia-docker2

78

Page 86: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAMI optimizada para Amazon EKS compatible con GPU

• El nvidia-container-runtime (como runtime predeterminado)

Los ID de AMI para las AMI optimizadas para Amazon EKS compatibles con GPU más recientes semuestran en la siguiente tabla. También puede recuperar los ID con un parámetro de AWS Administradorde sistemas utilizando diferentes herramientas. Para obtener más información, consulte Recuperación delos ID de la AMI optimizada para Amazon EKS (p. 82).

Note

La AMI optimizada para Amazon EKS, compatible con GPU, solo admite los tipos de instanciaGPU. Asegúrese de indicar estos tipos de instancia en su plantilla AWS CloudFormation de nodosde trabajo. Al utilizar la AMI optimizada para Amazon EKS con compatibilidad de GPU, acepta elacuerdo de licencia de usuario final (EULA) de NVIDIA.

Región AMI optimizada para Amazon EKS compatible conGPU

EE.UU. Oeste (Oregón) (us-west-2)

EE.UU. Este (Norte de Virginia) (us-east-1)

EE.UU. Este (Ohio) (us-east-2)

UE (Irlanda) (eu-west-1)

Important

Las AMI precisan la plantilla más reciente del nodo de trabajo AWS CloudFormation. No puedeutilizar estas AMI con una versión anterior de la plantilla de nodo de trabajo; dará error al unirse alclúster. Asegúrese de actualizar cualquier pila de trabajo existente de AWS CloudFormation con laplantilla más reciente (la URL aparece a continuación), antes de intentar utilizar estas AMI.

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-nodegroup.yaml

La plantilla de nodos de trabajo de AWS CloudFormation lanza los nodos de trabajo con datos de usuariode Amazon EC2 que activan un script de arranque especial. Este script permite que se detecten los nodosde trabajo y conectar automáticamente con el plano de control del clúster. Para obtener más información,consulte Lanzamiento de nodos de trabajo de Linux de Amazon EKS (p. 93).

Una vez que los nodos de trabajo de GPU estén unidos al clúster, debe aplicar el complemento dedispositivos NVIDIA para Kubernetes como un DaemonSet en su clúster con el siguiente comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

Puede verificar que los nodos tienen GPU asignables con el siguiente comando:

kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"

Manifiesto de GPU de ejemploEn esta sección se presenta un ejemplo de manifiesto de pod para que pueda comprobar si los nodos detrabajo de GPU están configurados correctamente.

79

Page 87: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVersiones de AMI de Linux optimizadas para Amazon EKS

Example Obtener la salida de nvidia-smi

Este manifiesto de pod de ejemplo lanza un contenedor de Cuda que ejecuta nvidia-smi en un nodo detrabajo. Cree un archivo denominado nvidia-smi.yaml, copie y pegue el siguiente manifiesto en él, yguarde el archivo.

apiVersion: v1kind: Podmetadata: name: nvidia-smispec: restartPolicy: OnFailure containers: - name: nvidia-smi image: nvidia/cuda:9.2-devel args: - "nvidia-smi" resources: limits: nvidia.com/gpu: 1

Aplique el manifiesto con el siguiente comando:

kubectl apply -f nvidia-smi.yaml

Una vez que el pod termine de ejecutarse, consulte sus registros con el siguiente comando:

kubectl logs nvidia-smi

Salida:

Mon Aug 6 20:23:31 2018+-----------------------------------------------------------------------------+| NVIDIA-SMI 396.26 Driver Version: 396.26 ||-------------------------------+----------------------+----------------------+| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. ||===============================+======================+======================|| 0 Tesla V100-SXM2... On | 00000000:00:1C.0 Off | 0 || N/A 46C P0 47W / 300W | 0MiB / 16160MiB | 0% Default |+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+| Processes: GPU Memory || GPU PID Type Process name Usage ||=============================================================================|| No running processes found |+-----------------------------------------------------------------------------+

Versiones de AMI de Linux optimizadas para AmazonEKSEn este tema se enumeran las versiones de las AMI de Linux optimizadas para Amazon EKS y susversiones correspondientes de kubelet, Docker, el kernel de Linux y la configuración del Script decompilación de Packer (p. 78).

Los metadatos de la AMI optimizada para Amazon EKS, incluido el ID de la AMI, de cada variante sepueden recuperar mediante programación. Para obtener más información, consulte Recuperación de los IDde la AMI optimizada para Amazon EKS (p. 82).

80

Page 88: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVersiones de AMI de Linux optimizadas para Amazon EKS

Las AMI están versionadas por la versión de Kubernetes y la fecha de lanzamiento de la AMI en elsiguiente formato:

k8s_major_version.k8s_minor_version.k8s_patch_version-release_date

AMI optimizada para Amazon EKSEn la siguiente tabla se enumeran las versiones actuales y anteriores de la AMI optimizada para EKS deAmazon.

Kubernetes version 1.14

AMI version kubelet version Versión deDocker

Versión del Kernel Versión de Packer

1.14.7-20190927 1.14.7 18.06.1-ce 4.14.146 v20190927

Kubernetes version 1.13

AMI version kubelet version Versión deDocker

Versión del Kernel Versión de Packer

1.13.11-20190927 1.13.11 18.06.1-ce 4.14.146 v20190927

Kubernetes version 1.12

AMI version kubelet version Versión deDocker

Versión del Kernel Versión de Packer

1.12.10-20190927 1.12.10 18.06.1-ce 4.14.146 v20190927

AMI optimizada para Amazon EKS compatible con GPUEn la siguiente tabla se enumeran las versiones actuales y anteriores de la AMI optimizada para EKS deAmazon con compatibilidad con GPU.

Kubernetes version 1.14

AMI version kubeletversion

Versión deDocker

Versión delKernel

Versión dePacker

Versión decontroladorNVIDIA

1.14.7-201909271.14.7 18.06.1-ce 4.14.146 v20190927 418.87.00

Kubernetes version 1.13

AMI version kubeletversion

Versión deDocker

Versión delKernel

Versión dePacker

Versión decontroladorNVIDIA

1.13.11-201909271.13.11 18.06.1-ce 4.14.146 v20190927 418.87.00

81

Page 89: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRecuperación de los ID de la AMI

optimizada para Amazon EKS

Kubernetes version 1.12

AMI version kubeletversion

Versión deDocker

Versión delKernel

Versión dePacker

Versión decontroladorNVIDIA

1.12.10-201909271.12.10 18.06.1-ce 4.14.146 v20190927 418.87.00

Recuperación de los ID de la AMI optimizada paraAmazon EKSPuede recuperar programáticamente el ID de Imagen de Amazon Machine (AMI) de las AMI optimizadaspara Amazon EKS consultando la API de Parameter Store de AWS Administrador de sistemas. Esteparámetro elimina la necesidad de buscar manualmente los ID de la AMI optimizada para Amazon EKS.Para obtener más información acerca de la API del Parameter Store de Administrador de sistemas,consulte GetParameter. Su cuenta de usuario debe tener el permiso de ssm:GetParameter IAM pararecuperar los metadatos de la AMI optimizada para Amazon EKS.

Seleccione el nombre de la herramienta con la que desea recuperar el ID de AMI.

AWS CLI

Puede recuperar el ID de imagen de la última AMI de Amazon Linux optimizada para Amazon EKSrecomendada con el siguiente comando mediante el parámetro secundario image_id. Sustituya 1.15por una versión compatible (p. 53) y us-west-2 por una región compatible con Amazon EKS para laque desea el ID de AMI. Sustituya amazon-linux-2 por amazon-linux-2-gpu para ver la AMI conel ID de GPU.

aws ssm get-parameter --name /aws/service/eks/optimized-ami/1.15/amazon-linux-2/recommended/image_id --region us-west-2 --query "Parameter.Value" --output text

Ejemplo del resultado:

ami-abcd1234efgh5678i

Consola de administración de AWS

Puede consultar el ID de la AMI optimizada para Amazon EKS recomendada mediante una URL.La URL abre la consola de Amazon EC2 Systems Manager con el valor del ID del parámetro. Enla siguiente URL, sustituya 1.15 por una versión compatible (p. 53) y us-west-2 por una regióncompatible con Amazon EKS para la que desea el ID de AMI. Sustituya amazon-linux-2 poramazon-linux-2-gpu para ver la AMI con el ID de GPU.

https://console.aws.amazon.com/systems-manager/parameters/%252Faws%252Fservice%252Feks%252Foptimized-ami%252F1.15%252Famazon-linux-2%252Frecommended%252Fimage_id/description?region=us-west-2

AWS CloudFormation

Puede lanzar la consola de AWS CloudFormation con el campo de NodeImageIdSSMParamplantilladel nodo de trabajoAmazon EKS rellenado previamente con el valor del parámetro de Amazon EC2Systems Manager para el ID de AMI recomendado de Amazon EKS. En el siguiente enlace, sustituya1.15 por una versión compatible (p. 53) y us-west-2 en la parte ? region = us-west-2 # de

82

Page 90: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAMI de Windows optimizada para Amazon EKS

la URL por la región compatible conAmazon EKS para la que desea el ID de AMI. Sustituya amazon-linux-2 por amazon-linux-2-gpu si desea utilizar una AMI con GPU. Abra un navegador deInternet e introduzca el enlace modificado para la plantilla rellenada previamente.

https://console.aws.amazon.com/cloudformation/home?region=us-west-2ℹ/stacks/create/review?templateURL=https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-nodegroup.yaml&param_NodeImageIdSSMParam=/aws/service/eks/optimized-ami/1.15/amazon-linux-2/recommended/image_id

Si desea especificar su propio ID de AMI personalizado, introduzca el ID en el campo deNodeImageId de la plantilla en lugar de utilizar el parámetro de SSM. El valor anula el valorespecificado para el campo de NodeImageIdSSMParam.

AMI de Windows optimizada para Amazon EKSLa AMI optimizada para Amazon EKS se basa en Windows Server 2019 y está configurada para servircomo imagen base para los nodos de trabajo de Amazon EKS. La AMI está configurada para funcionar deserie con Amazon EKS, e incluye Docker, kubelet y el autenticador de AWS IAM.

Note

Puede realizar un seguimiento de eventos de seguridad o privacidad para Windows Server con laguía de actualización de seguridad de Microsoft.

Los ID de AMI para las AMI optimizadas para Amazon EKS más recientes se muestran en la siguientetabla. También puede recuperar los ID con un parámetro de AWS Administrador de sistemas utilizandodiferentes herramientas. Para obtener más información, consulte Recuperación de los ID de la AMI deWindows optimizada para Amazon EKS (p. 85).

Kubernetes version 1.15.10

Región Windows Server 2019Full optimizado paraAmazon EKS

Windows Server 2019Core optimizado paraAmazon EKS

Windows Server 1909Core optimizado paraAmazon EKS

EE.UU. Este (Ohio)(us-east-2)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

US East (N. Virginia)(us-east-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

EE.UU. Oeste(Oregón) (us-west-2)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Asia Pacífico (HongKong) (ap-east-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Asia Pacífico (Mumbai)(ap-south-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Asia Pacífico (Tokio)(ap-northeast-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Asia Pacífico (Seúl)(ap-northeast-2)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

83

Page 91: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAMI de Windows optimizada para Amazon EKS

Región Windows Server 2019Full optimizado paraAmazon EKS

Windows Server 2019Core optimizado paraAmazon EKS

Windows Server 1909Core optimizado paraAmazon EKS

Asia Pacífico(Singapur) (ap-southeast-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Asia Pacífico (Sídney)(ap-southeast-2)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Canadá (Central) (ca-central-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Europa (Fráncfort)(eu-central-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Europa (Irlanda) (eu-west-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Europa (Londres) (eu-west-2)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Europa (París) (eu-west-3)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Europa (Estocolmo)(eu-north-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Medio Oriente (Baréin)(me-south-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

América del Sur (SãoPaulo) (sa-east-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

China (Pekín) (cn-north-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

China (Ningxia) (cn-northwest-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Kubernetes version 1.14.9

Región Windows Server 2019Full optimizado paraAmazon EKS

Windows Server 2019Core optimizado paraAmazon EKS

Windows Server 1909Core optimizado paraAmazon EKS

EE.UU. Este (Ohio)(us-east-2)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

US East (N. Virginia)(us-east-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

EE.UU. Oeste(Oregón) (us-west-2)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Asia Pacífico (HongKong) (ap-east-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

84

Page 92: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRecuperación de los ID de la AMI de

Windows optimizada para Amazon EKS

Región Windows Server 2019Full optimizado paraAmazon EKS

Windows Server 2019Core optimizado paraAmazon EKS

Windows Server 1909Core optimizado paraAmazon EKS

Asia Pacífico (Mumbai)(ap-south-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Asia Pacífico (Tokio)(ap-northeast-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Asia Pacífico (Seúl)(ap-northeast-2)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Asia Pacífico(Singapur) (ap-southeast-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Asia Pacífico (Sídney)(ap-southeast-2)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Canadá (Central) (ca-central-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Europa (Fráncfort)(eu-central-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Europa (Irlanda) (eu-west-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Europa (Londres) (eu-west-2)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Europa (París) (eu-west-3)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Europa (Estocolmo)(eu-north-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Medio Oriente (Baréin)(me-south-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

América del Sur (SãoPaulo) (sa-east-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

China (Pekín) (cn-north-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

China (Ningxia) (cn-northwest-1)

Ver ID de AMI Ver ID de AMI Ver ID de AMI

Recuperación de los ID de la AMI de Windowsoptimizada para Amazon EKSPuede recuperar programáticamente el ID de Imagen de Amazon Machine (AMI) de las AMI optimizadaspara Amazon EKS consultando la API de Parameter Store de AWS Administrador de sistemas. Esteparámetro elimina la necesidad de buscar manualmente los ID de la AMI optimizada para Amazon EKS.Para obtener más información acerca de la API del Parameter Store de Administrador de sistemas,

85

Page 93: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioGrupos de nodos administrados

consulte GetParameter. Su cuenta de usuario debe tener el permiso de ssm:GetParameter IAM pararecuperar los metadatos de la AMI optimizada para Amazon EKS.

Seleccione el nombre de la herramienta con la que desea recuperar el ID de AMI.

AWS CLI

Puede recuperar el ID de imagen de la última AMI de Windows optimizada para Amazon EKSrecomendada con el siguiente comando mediante el parámetro secundario image_id. Sistituya us-west-2 por una región compatible con Amazon EKS para la que desea el ID de AMI. Susituya Corepor Full para ver el ID de AMI completo de Windows Server.

aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-1.14/image_id --region us-west-2 --query "Parameter.Value" --output text

Ejemplo del resultado:

ami-ami-00a053f1635fffea0

Consola de administración de AWS

Puede consultar el ID de la AMI optimizada para Amazon EKS recomendada mediante una URL.La URL abre la consola de Amazon EC2 Systems Manager con el valor del ID del parámetro. En lasiguiente URL, sustituya us-west-2 por una región compatible con Amazon EKS para la que deseael ID de AMI. Susituya Core por Full para ver el ID de AMI completo de Windows Server.

https://us-west-2.console.aws.amazon.com/systems-manager/parameters/%252Faws%252Fservice%252Fami-windows-latest%252FWindows_Server-2019-English-Core-EKS_Optimized-1.14%252Fimage_id/description?region=us-west-2

AWS CloudFormation

Puede lanzar la consola de AWS CloudFormation con el campo de NodeImageIdSSMParamplantilladel nodo de trabajoAmazon EKS rellenado previamente con el valor del parámetro de Amazon EC2Systems Manager para el ID de AMI recomendado de Amazon EKS. En el siguiente enlace, sustituyaus-west-2 en la parte ?region=us-west-2# de la URL con la región compatible con AmazonEKS para la que desea el ID de AMI. Sustituya Core por Full si desea usar el ID de AMI completode Windows Server. Abra un navegador de Internet e introduzca el enlace modificado para la plantillarellenada previamente.

https://console.aws.amazon.com/cloudformation/home?region=us-west-2ℹ/stacks/create/review?templateURL=https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-windows-nodegroup.yaml&param_NodeImageIdSSMParam=/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-1.14/image_id

Si desea especificar su propio ID de AMI personalizado, introduzca el ID en el campo deNodeImageId de la plantilla en lugar de utilizar el parámetro de SSM. El valor anula el valorespecificado para el campo de NodeImageIdSSMParam.

Grupos de nodos administradosLos grupos de nodos administrados de Amazon EKS automatizan el aprovisionamiento y la administracióndel ciclo de vida de nodos (instancias Amazon EC2) para clústeres de Kubernetes de Amazon EKS.

86

Page 94: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioConceptos de grupos de nodos administrados

Note

Grupos de nodos administrados (p. 86) son compatibles con clústeresAmazon EKS a partir deKubernetes versión 1.14 y la versión de la plataforma de (p. 53) eks.3. Los clústeres existentespueden actualizar a la versión 1.14 o posterior para aprovechar esta característica. Para obtenermás información, consulte Actualización de una versión de Kubernetes de clúster de AmazonEKS (p. 33).

Con los grupos de nodos administrados de Amazon EKS, no es necesario aprovisionar o registrar porseparado las instancias de Amazon EC2 que proporcionan capacidad informática para ejecutar susaplicaciones Kubernetes. Puede crear, actualizar o terminar nodos para el clúster con una sola operación.Los nodos se ejecutan utilizando las últimas AMI optimizadas para Amazon EKS en su cuenta de AWS,mientras que las actualizaciones y terminaciones de los nodos drenan correctamente los nodos paragarantizar que sus aplicaciones permanezcan disponibles.

Todos los nodos administrados se aprovisionan como parte de un grupo Auto Scaling de Amazon EC2administrado por usted por Amazon EKS. Todos los recursos, incluidas las instancias y los grupos AutoScaling, se ejecutan dentro de su cuenta de AWS. Cada grupo de nodos utiliza la AMI Amazon Linux 2optimizada para Amazon EKS y puede ejecutarse en varias zonas de disponibilidad que defina.

Puede agregar un grupo de nodos gestionados a clústeres nuevos o existentes mediante la consola deAmazon EKS, eksctl, la CLI de AWS, la API de AWS o la infraestructura como herramientas de código,incluida AWS CloudFormation. Los nodos lanzados como parte de un grupo de nodos administrados seetiquetan automáticamente para la detección automática por el autoescalador del clúster de Kubernetesy puede utilizar el grupo de nodos para aplicar etiquetas de Kubernetes a los nodos y actualizarlos encualquier momento.

No hay costes adicionales para usar grupos de nodos administrados de Amazon EKS, solo paga por losrecursos de AWS que aprovisione. Estos incluyen instancias Amazon EC2, volúmenes Amazon EBS,horas de clúster Amazon EKS y cualquier otra infraestructura de AWS. No se requieren pagos mínimos nicompromisos iniciales.

Para empezar a utilizar un grupo de nodos administrados y un clúster de Amazon EKS nuevos, consulteIntroducción a la Consola de administración de AWS (p. 12).

Para agregar un grupo de nodos administrados a un clúster existente, consulte Creación de un grupo denodos administrados (p. 88).

Conceptos de grupos de nodos administrados• Los grupos de nodos administrados de Amazon EKS crean y administran instancias Amazon EC2 por

usted.• Todos los nodos administrados se aprovisionan como parte de un grupo de Auto Scaling de Amazon

EC2 administrado por usted por Amazon EKS y todos los recursos, incluidas las instancias Amazon EC2y los grupos Auto Scaling, se ejecutan dentro de su cuenta de AWS.

• El grupo de Auto Scaling de un grupo de nodos administrados abarca todas las subredes queespecifique al crear el grupo.

• Las etiquetas Amazon EKS administran recursos de grupo de nodos para que estén configurados parausar el Escalador automático del clúster (p. 142) de Kubernetes.

Important

Si está ejecutando una aplicación con estado en varias zonas de disponibilidad que estérespaldada por volúmenes de Amazon EBS y utilice Kubernetes Escalador automático delclúster (p. 142), debe configurar varios grupos de nodos, cada uno de ellos limitado a unazona de disponibilidad única. Además, debe habilitar la característica --balance-similar-node-groups.

87

Page 95: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un grupo de nodos administrados

• Las instancias de un grupo de nodos administrados utilizan la última versión de la AMI Amazon Linux 2optimizada para Amazon EKS para la versión de Kubernetes de su clúster. Puede elegir entre variantesestándar y variantes GPU de la AMI Amazon Linux 2 optimizada para Amazon EKS.

• Amazon EKS sigue el modelo de responsabilidad compartida para CVE y los parches de seguridad engrupos de nodos administrados. Debido a que los nodos administrados ejecutan las AMI optimizadaspara Amazon EKS, Amazon EKS es responsable de crear versiones parcheadas de estas AMI cuandose informa de errores o problemas y podemos publicar una corrección. Sin embargo, es responsablede implementar estas versiones de AMI parcheadas en los grupos de nodos administrados. Cuando lasactualizaciones estén disponibles, consulte Actualización de un grupo de nodos administrados (p. 90).

• Los grupos de nodos administrados por Amazon EKS se pueden lanzar tanto en subredes públicascomo privadas. El único requisito es que las subredes tengan acceso a Internet de salida. Amazon EKSasocia automáticamente una IP pública a las instancias iniciadas como parte de un grupo de nodosadministrados para asegurarse de que estas instancias puedan unirse correctamente a un clúster.

Esto garantiza la compatibilidad con las VPC existentes creadas con eksctl o las plantillas de AWSCloudFormation proporcionadas por Amazon EKS (p. 162). Las subredes públicas de estas VPC notienen MapPublicIpOnLaunch establecido en true, por lo que, de forma predeterminada, las instanciaslanzadas en estas subredes no tienen asignada una dirección IP pública. La creación de una direcciónIP pública en estas instancias lanzadas por grupos de nodos administrados en subredes públicasgarantiza que tengan acceso a Internet de salida y puedan unirse al clúster.

• Puede crear varios grupos de nodos administrados dentro de un único clúster. Por ejemplo, podría crearun grupo de nodos con la AMI Amazon Linux 2 optimizada para Amazon EKS estándar para algunascargas de trabajo y otro con la variante de GPU para las cargas de trabajo que requieren compatibilidadcon GPU.

• Si el grupo de nodos administrados encuentra un problema de mantenimiento, Amazon EKS devuelveun mensaje de error para ayudarle a diagnosticar el problema. Para obtener más información, consulteErrores de grupo de nodos administrados (p. 294).

• Amazon EKS agrega etiquetas Kubernetes a instancias de grupos de nodos administrados. Estasetiquetas proporcionadas por Amazon EKS tienen el prefijo eks.amazon.com.

• Amazon EKS drena nodos automáticamente utilizando la API de Kubernetes durante las terminacioneso actualizaciones. Las actualizaciones respetan los presupuestos de interrupción de pod que haestablecido para los pods.

• No hay costes adicionales para usar grupos de nodos administrados de Amazon EKS, solo paga por losrecursos de AWS que aprovisione.

Creación de un grupo de nodos administradosEste tema le ayuda a lanzar un grupo de nodos administrado de Amazon EKS de nodos de trabajo deLinux que se registrará en el clúster de Amazon EKS. Una vez que los nodos se han unido al clúster,puede implementar aplicaciones de Kubernetes en ellos.

Grupos de nodos administrados (p. 86) son compatibles con clústeresAmazon EKS a partir deKubernetes versión 1.14 y la versión de la plataforma de (p. 53) eks.3. Los clústeres existentes puedenactualizar a la versión 1.14 o posterior para aprovechar esta característica. Para obtener más información,consulte Actualización de una versión de Kubernetes de clúster de Amazon EKS (p. 33).

Si es la primera vez que lanza un grupo de nodos administrado de Amazon EKS, le recomendamosque siga una de nuestras guías Introducción a Amazon EKS (p. 3) en su lugar. Las guías proporcionaninstrucciones paso a paso completas para crear un clúster de Amazon EKS con nodos de trabajo.

Important

Los nodos de trabajo de Amazon EKS son instancias de Amazon EC2 estándar y se le facturaránconforme a los precios ordinarios de Amazon EC2. Para obtener más información, consultePrecios de Amazon EC2.

88

Page 96: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un grupo de nodos administrados

Para iniciar el grupo de nodos administrados

1. Espere a que el estado del clúster sea ACTIVE. No se puede crear un grupo de nodos administradospara un clúster que aún no está ACTIVE.

2. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.3. Elija el nombre del clúster en el que desea crear el grupo de nodos administrados.4. En la página del clúster, elija Agregar grupo de nodos.5. En la página Configurar grupo de nodos rellene los parámetros en consecuencia y, a continuación,

elija Siguiente.

• Nombre — Escriba un nombre único para el grupo de nodos administrados.• Nombre de rol de IAM del nodo — Elija el rol de instancia de nodo que va a utilizar con el grupo

de nodos. Para obtener más información, consulte Rol de IAM del nodo de trabajo de AmazonEKS (p. 254).

• Subredes — Seleccione las subredes en las que iniciar los nodos gestionados.

Important

Si está ejecutando una aplicación con estado en varias zonas de disponibilidad que estérespaldada por volúmenes de Amazon EBS y utilice Kubernetes Escalador automático delclúster (p. 142), debe configurar varios grupos de nodos, cada uno de ellos limitado auna zona de disponibilidad única. Además, debe habilitar la característica --balance-similar-node-groups.

• Acceso remoto — (Opcional) Puede habilitar el acceso SSH a los nodos del grupo de nodosadministrados. El acceso SSH le permite conectarse a sus instancias y recopilar información dediagnóstico si hay algún problema. Complete los siguientes pasos para habilitar el acceso remoto.

Note

Le recomendamos que habilite el acceso remoto cuando cree su grupo de nodos. Nopuede habilitar el acceso remoto después de crear el grupo de nodos.

1. Active la casilla de verificación para Permitir el acceso remoto a nodos.2. Para el par de claves SSH, elija una clave SSH de Amazon EC2 para usar. Para obtener más

información, consulte Pares de claves de Amazon EC2 en la Guía del usuario de Amazon EC2para instancias de Linux.

3. En Permitir acceso remoto desde, elija Todo para permitir el acceso SSH desde cualquier lugarde Internet (0.0.0.0/0) o seleccione un grupo de seguridad para permitir el acceso SSH desdeinstancias que pertenecen a ese grupo de seguridad.

• Etiquetas — (Opcional) Puede elegir etiquetar el grupo de nodos gestionados de Amazon EKS.Estas etiquetas no se propagan a otros recursos del grupo de nodos, como instancias o gruposAuto Scaling. Para obtener más información, consulte Etiquetado de los recursos de AmazonEKS (p. 279).

• Etiquetas de Kubernetes — (Opcional) Puede optar por aplicar etiquetas de Kubernetes a los nodosde su grupo de nodos administrados.

6. En la página Establecer configuración de cálculo rellene los parámetros en consecuencia y, acontinuación, elija Siguiente.

• Tipo de AMI — Elija Amazon Linux 2 (AL2_x86_64) para instancias que no sean GPU o AmazonLinux 2 GPU Enabled (AL2_x86_64_GPU) para instancias de GPU.

• Tipo de instancia — Elija el tipo de instancia que desea utilizar en el grupo de nodos administrados.Los tipos de instancia más grandes pueden incorporar más pods.

• Tamaño del disco — Escriba el tamaño del disco (en GiB) que se utilizará para el volumen raíz delnodo de trabajo.

89

Page 97: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de un grupo de nodos administrados

7. En la página Configurar políticas de escala rellene los parámetros en consecuencia y, a continuación,elija Siguiente.

Note

Amazon EKS no escala automáticamente el grupo de nodos de entrada o salida. Sinembargo, puede configurar los Escalador automático del clúster (p. 142) de Kubernetespara que lo hagan por usted.

• Tamaño mínimo — Especifique el número mínimo de nodos de trabajo a los que puede escalar elgrupo de nodos administrados.

• Tamaño máximo — Especifique el número máximo de nodos de trabajo a los que puede escalar elgrupo de nodos administrados.

• Tamaño deseado — Especifique el número actual de nodos de trabajo que el grupo de nodosadministrados debe mantener en el inicio.

8. En la página Revisar y crear revise la configuración del grupo de nodos administrados y elija Crear.9. Observe el estado de los nodos y espere a que aparezca el valor Ready.

kubectl get nodes --watch

10. (Solo para procesos de trabajo de GPU) Si ha elegido un tipo de instancia de GPU y la AMI optimizadapara Amazon EKS compatible con GPU, debe aplicar el complemento de dispositivo NVIDIA paraKubernetes como un DaemonSet configurado en su clúster con el siguiente comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

Ahora que tiene un clúster de Amazon EKS en funcionamiento con nodos de trabajo, está listo paraempezar a instalar los complementos de Kubernetes e implementar aplicaciones en su clúster. Los temasde documentación siguientes le ayudarán a ampliar la funcionalidad de su clúster.

• Escalador automático del clúster (p. 142) — Configure el Autoscaler de clúster de Kubernetes paraajustar automáticamente el número de nodos en sus grupos de nodos.

• Lanzar una aplicación de libro de invitados (p. 206): cree una aplicación de libro de invitados deejemplo para probar los nodos de trabajo de clúster y Linux.

• Implementación de una aplicación de ejemplo de Windows (p. 65) — Implementa una aplicación deejemplo para probar los nodos de trabajo de clúster y Windows.

• Tutorial: Implementación de la interfaz de usuario web de Kubernetes (panel) (p. 216): este tutorial leguiará por el proceso de implementación del panel de Kubernetes en su clúster.

• Uso de Helm con Amazon EKS (p. 215): el administrador de paquetes helm para Kubernetes le ayudaa instalar y administrar aplicaciones en su clúster.

• Instalación del servidor de métricas de Kubernetes (p. 209): el servidor de métricas de Kubernetes esun agregador de datos de uso de recursos en el clúster.

• Métricas del plano de control con Prometheus (p. 211): este tema le ayuda a implementar Prometheusen el clúster con helm.

Actualización de un grupo de nodos administradosExisten varios casos de uso para actualizar la versión o configuración del grupo de nodos administrados deAmazon EKS:

• Ha actualizado la versión de Kubernetes para su clúster de Amazon EKS y desea actualizar los nodosde trabajo para que utilicen la misma versión de Kubernetes.

90

Page 98: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de un grupo de nodos administrados

• Hay disponible una nueva versión de la AMI para el grupo de nodos administrados. Para obtener másinformación, consulte Versiones de AMI de Linux optimizadas para Amazon EKS (p. 80).

• Desea ajustar el número mínimo, máximo o deseado de las instancias del grupo de nodosadministrados.

• Desea agregar o quitar etiquetas Kubernetes de las instancias del grupo de nodos administrados.• Desea agregar o quitar etiquetas de AWS del grupo de nodos administrados.

Si hay una versión de lanzamiento de AMI más reciente para la versión de Kubernetes del grupo de nodosadministrados que la que está ejecutando su grupo de nodos, puede actualizarla para usar esa nuevaversión de AMI. Si su clúster está ejecutando una versión de Kubernetes más reciente que su grupo denodos, puede actualizar el grupo de nodos para que utilice la última versión de AMI que coincida con laversión de Kubernetes del clúster.

Note

No puede revertir un grupo de nodos a una versión anterior de Kubernetes o AMI.

Cuando se termina un nodo de un grupo de nodos administrados debido a una acción de escalao actualización, los pods de ese nodo se drenan primero. Para obtener más información, consulteComportamiento de actualización de nodos administrados (p. 92).

Para actualizar una versión de grupo de nodos

1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.2. Elija el clúster que contiene el grupo de nodos que desea actualizar.3. Seleccione el grupo de nodos que desea actualizar y elija Actualizar versión del grupo.

Note

La opción Actualizar versión del grupo solo aparece si hay una actualización disponible. Si nove este botón, el grupo de nodos está ejecutando la última versión disponible.

4. En la página Actualizar versión de lanzamiento de AMI seleccione una de las siguientes opciones yelija Confirmar.

• Actualización sucesiva — Esta opción respeta los presupuestos de interrupción de pod para elclúster y la actualización falla si Amazon EKS no puede vaciar correctamente los pods que se estánejecutando en este grupo de nodos debido a un problema de presupuesto de interrupción de pod.

• Forzar actualización — Esta opción no respeta los presupuestos de interrupción del pod y obliga areiniciar el nodo.

Para editar una configuración de grupo de nodos

1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.2. Elija el clúster que contiene el grupo de nodos que desea editar.3. Seleccione el grupo de nodos que desee editar y elija Editar.4. En la página Editar grupo de nodos edite la configuración de grupo si es necesario.

• Etiquetas — Agregue etiquetas o quite etiquetas del recurso de grupo de nodos. Estas etiquetassolo se aplican al grupo de nodos Amazon EKS y no se propagan a otros recursos, como subredeso instancias Amazon EC2 del grupo de nodos.

• Etiquetas de Kubernetes — Añada o elimine etiquetas de Kubernetes a los nodos de su grupo denodos. Las etiquetas que se muestran aquí son solo las que se han aplicado con Amazon EKS.Pueden existir otras etiquetas en los nodos que no se muestran aquí.

91

Page 99: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEliminación de un grupo de nodos administrados

5. En la página Editar grupo de nodos edite el tamaño de grupo si es necesario.

• Tamaño mínimo — Especifique el número actual de nodos de trabajo que debe mantener el grupode nodos administrados.

• Tamaño máximo — Especifique el número máximo de nodos de trabajo a los que puede escalar elgrupo de nodos administrados. Los grupos de nodos administrados pueden admitir hasta 100 nodosde forma predeterminada.

• Tamaño deseado — Especifique el número actual de nodos de trabajo que debe mantener el grupode nodos administrados.

6. Cuando haya terminado de editar, elija Guardar cambios.

Comportamiento de actualización de nodos administradosCuando actualiza una versión de grupo de nodos administrados a la versión más reciente de AMI para laversión Kubernetes del grupo de nodos o a una versión más reciente de Kubernetes para que coincida consu clúster, Amazon EKS desencadena la siguiente lógica:

1. Amazon EKS crea una nueva versión de plantilla de inicio Amazon EC2 para el grupo de Auto Scalingasociado al grupo de nodos. La nueva plantilla utiliza la AMI de destino para la actualización.

2. El grupo de Auto Scaling se actualiza para utilizar la plantilla de inicio más reciente con la nueva AMI.3. El tamaño máximo del grupo de Auto Scaling y el tamaño deseado se incrementan en 1 para admitir las

nuevas instancias que se lanzarán en el grupo de nodos.4. El grupo de Auto Scaling inicia una nueva instancia con la nueva AMI para satisfacer el mayor tamaño

deseado del grupo de nodos.5. Amazon EKS comprueba los nodos del grupo de nodos para la etiqueta eks.amazonaws.com/

nodegroup-image y se conectan todos los nodos del grupo de nodos que no están etiquetados con elúltimo ID de AMI. Esto evita que los nodos que ya se han actualizado desde una actualización anteriorfallida se acordonen.

6. Amazon EKS selecciona aleatoriamente un nodo en su grupo de nodos y envía una señal determinación al grupo de Auto Scaling, Luego Amazon EKS envía una señal para drenar los pods delnodo.* Después de que el nodo se drena, se termina. Este paso se repite hasta que todos los nodosutilicen la nueva versión de AMI.

7. El tamaño máximo del grupo de Auto Scaling y el tamaño deseado se reducen en 1 para volver a losvalores previos a la actualización.

* Si los pods no se drenan de un nodo (por ejemplo, si un presupuesto de interrupción del pod esdemasiado restrictivo) durante 15 minutos, entonces ocurre una de dos cosas:

• Si la actualización no está forzada, la actualización falla e informa de un error.• Si se fuerza la actualización, se eliminan los pods que no se pudieron drenar.

Eliminación de un grupo de nodos administradosEste tema le ayuda a eliminar un grupo de nodos Amazon EKS administrados.

Cuando elimina un grupo de nodos administrados, Amazon EKS selecciona aleatoriamente un nodo delgrupo de nodos y envía una señal de terminación al grupo Auto Scaling. Luego Amazon EKS envía unaseñal para drenar los pods del nodo. Si los pods no se drenan de un nodo (por ejemplo, si un presupuestode interrupción del pod es demasiado restrictivo) durante 15 minutos, los pods se eliminarán. Después dedrenar el nodo, se termina. Este paso se repite hasta que se terminan todos los nodos del grupo de AutoScaling y, a continuación, se elimina el grupo de Auto Scaling.

92

Page 100: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo de Linux de Amazon EKS

Para eliminar un grupo de nodos administrados

1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.2. Elija el clúster que contiene el grupo de nodos que desea eliminar.3. Seleccione el grupo de nodos que desea eliminar y elija Eliminar.4. En la página Eliminar grupo de nodos escriba el nombre del clúster en el campo de texto y elija

Confirmar

Lanzamiento de nodos de trabajo de Linux deAmazon EKS

Este tema le ayuda a lanzar un grupo de nodos de trabajo de Linux de Auto Scaling que se registrará en elclúster de Amazon EKS. Una vez que los nodos se han unido al clúster, puede implementar aplicacionesde Kubernetes en ellos.

Si es la primera vez que lanza nodos de trabajo de Linux de Amazon EKS, le recomendamos que siga unade nuestras guías Introducción a Amazon EKS (p. 3) en su lugar. Las guías proporcionan instruccionespaso a paso completas para crear un clúster de Amazon EKS con nodos de trabajo.

Important

Los nodos de trabajo de Amazon EKS son instancias de Amazon EC2 estándar y se le facturaránconforme a los precios ordinarios de Amazon EC2. Para obtener más información, consultePrecios de Amazon EC2.

Seleccione la pestaña correspondiente al método de creación de nodos de trabajo que desee:

Amazon EKS Managed Node Groups

Grupos de nodos administrados (p. 86) son compatibles con clústeresAmazon EKS a partir deKubernetes versión 1.14 y la versión de la plataforma de (p. 53) eks.3. Los clústeres existentespueden actualizar a la versión 1.14 o posterior para aprovechar esta característica. Para obtener másinformación, consulte Actualización de una versión de Kubernetes de clúster de Amazon EKS (p. 33).

Para iniciar el grupo de nodos administrados

1. Espere a que el estado del clúster sea ACTIVE. No se puede crear un grupo de nodosadministrados para un clúster que aún no está ACTIVE.

2. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.3. Elija el nombre del clúster en el que desea crear el grupo de nodos administrados.4. En la página del clúster, elija Agregar grupo de nodos.5. En la página Configurar grupo de nodos rellene los parámetros en consecuencia y, a

continuación, elija Siguiente.

• Nombre — Escriba un nombre único para el grupo de nodos administrados.• Nombre de rol de IAM del nodo — Elija el rol de instancia de nodo que va a utilizar con el grupo

de nodos. Para obtener más información, consulte Rol de IAM del nodo de trabajo de AmazonEKS (p. 254).

• Subredes — Seleccione las subredes en las que iniciar los nodos gestionados.

Important

Si está ejecutando una aplicación con estado en varias zonas de disponibilidad queesté respaldada por volúmenes de Amazon EBS y utilice Kubernetes Escalador

93

Page 101: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo de Linux de Amazon EKS

automático del clúster (p. 142), debe configurar varios grupos de nodos, cadauno de ellos limitado a una zona de disponibilidad única. Además, debe habilitar lacaracterística --balance-similar-node-groups.

• Acceso remoto — (Opcional) Puede habilitar el acceso SSH a los nodos del grupo de nodosadministrados. El acceso SSH le permite conectarse a sus instancias y recopilar informaciónde diagnóstico si hay algún problema. Complete los siguientes pasos para habilitar el accesoremoto.

Note

Le recomendamos que habilite el acceso remoto cuando cree su grupo de nodos. Nopuede habilitar el acceso remoto después de crear el grupo de nodos.

1. Active la casilla de verificación para Permitir el acceso remoto a nodos.2. Para el par de claves SSH, elija una clave SSH de Amazon EC2 para usar. Para obtener

más información, consulte Pares de claves de Amazon EC2 en la Guía del usuario deAmazon EC2 para instancias de Linux.

3. En Permitir acceso remoto desde, elija Todo para permitir el acceso SSH desde cualquierlugar de Internet (0.0.0.0/0) o seleccione un grupo de seguridad para permitir el acceso SSHdesde instancias que pertenecen a ese grupo de seguridad.

• Etiquetas — (Opcional) Puede elegir etiquetar el grupo de nodos gestionados de Amazon EKS.Estas etiquetas no se propagan a otros recursos del grupo de nodos, como instancias o gruposAuto Scaling. Para obtener más información, consulte Etiquetado de los recursos de AmazonEKS (p. 279).

• Etiquetas de Kubernetes — (Opcional) Puede optar por aplicar etiquetas de Kubernetes a losnodos de su grupo de nodos administrados.

6. En la página Establecer configuración de cálculo rellene los parámetros en consecuencia y, acontinuación, elija Siguiente.

• Tipo de AMI — Elija Amazon Linux 2 (AL2_x86_64) para instancias que no sean GPU oAmazon Linux 2 GPU Enabled (AL2_x86_64_GPU) para instancias de GPU.

• Tipo de instancia — Elija el tipo de instancia que desea utilizar en el grupo de nodosadministrados. Los tipos de instancia más grandes pueden incorporar más pods.

• Tamaño del disco — Escriba el tamaño del disco (en GiB) que se utilizará para el volumen raízdel nodo de trabajo.

7. En la página Configurar políticas de escala rellene los parámetros en consecuencia y, acontinuación, elija Siguiente.

Note

Amazon EKS no escala automáticamente el grupo de nodos de entrada o salida. Sinembargo, puede configurar los Escalador automático del clúster (p. 142) de Kubernetespara que lo hagan por usted.

• Tamaño mínimo — Especifique el número mínimo de nodos de trabajo a los que puede escalarel grupo de nodos administrados.

• Tamaño máximo — Especifique el número máximo de nodos de trabajo a los que puedeescalar el grupo de nodos administrados.

• Tamaño deseado — Especifique el número actual de nodos de trabajo que el grupo de nodosadministrados debe mantener en el inicio.

8. En la página Revisar y crear revise la configuración del grupo de nodos administrados y elijaCrear.

9. Observe el estado de los nodos y espere a que aparezca el valor Ready.

kubectl get nodes --watch94

Page 102: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo de Linux de Amazon EKS

10. (Solo para procesos de trabajo de GPU) Si ha elegido un tipo de instancia de GPU y la AMIoptimizada para Amazon EKS compatible con GPU, debe aplicar el complemento de dispositivoNVIDIA para Kubernetes como un DaemonSet configurado en su clúster con el siguientecomando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

eksctl

Para lanzar nodos de trabajo con eksctl

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Note

Este procedimiento solo funciona para los clústeres que se crearon con eksctl.

1. Cree el grupo de nodos de trabajo con el siguiente comando. Sustituya los valores deejemplo por sus propios valores.

eksctl create nodegroup \--cluster default \--version auto \--name standard-workers \--node-type t3.medium \--node-ami auto \--nodes 3 \--nodes-min 1 \--nodes-max 4

Note

Para obtener más información acerca de las opciones disponibles para eksctl createnodegroup, consulte el proyecto README en GitHub o consulte la página de ayuda conel siguiente comando.

eksctl create nodegroup --help

Salida:

[ℹ] using region us-west-2[ℹ] will use version 1.12 for new nodegroup(s) based on control plane version[ℹ] nodegroup "standard-workers" will use "ami-0923e4b35a30a5f53" [AmazonLinux2/1.12][ℹ] 1 nodegroup (standard-workers) was included[ℹ] will create a CloudFormation stack for each of 1 nodegroups in cluster "default"[ℹ] 1 task: { create nodegroup "standard-workers" }[ℹ] building nodegroup stack "eksctl-default-nodegroup-standard-workers"[ℹ] deploying stack "eksctl-default-nodegroup-standard-workers"

95

Page 103: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo de Linux de Amazon EKS

[ℹ] adding role "arn:aws:iam::111122223333:role/eksctl-default-nodegroup-standard-NodeInstanceRole-12C2JO814XSEE" to auth ConfigMap[ℹ] nodegroup "standard-workers" has 0 node(s)[ℹ] waiting for at least 1 node(s) to become ready in "standard-workers"[ℹ] nodegroup "standard-workers" has 3 node(s)[ℹ] node "ip-192-168-52-42.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-7-27.us-west-2.compute.internal" is not ready[ℹ] node "ip-192-168-76-138.us-west-2.compute.internal" is not ready[ℹ] created 1 nodegroup(s) in cluster "default"[ℹ] checking security group configuration for all nodegroups[ℹ] all nodegroups have up-to-date configuration

2. (Opcional) Lanzar una aplicación de libro de invitados (p. 206): implemente una aplicación deejemplo para probar el clúster y los nodos de trabajo de Linux.

Unmanaged nodes

Estos procedimientos tienen los siguientes requisitos previos:

• Ha creado una VPC y un grupo de seguridad que cumple los requisitos de un clúster de AmazonEKS. Para obtener más información, consulte Consideraciones sobre la VPC del clúster (p. 164)y Consideraciones relativas al grupo de seguridad Amazon EKS (p. 167). La guía Introducción aAmazon EKS (p. 3) crea una VPC que cumple los requisitos; o también puede seguir Creación deuna VPC para su clúster Amazon EKS (p. 162) para crear una manualmente.

• Ha creado un clúster de Amazon EKS y ha especificado que utilice la VPC y el grupo de seguridadque cumplen los requisitos de un clúster de Amazon EKS. Para obtener más información, consulteCreación de un clúster de Amazon EKS (p. 23).

Para iniciar los nodos de trabajo no administrados con la Consola de administración de AWS

1. Espere a que el estado del clúster sea ACTIVE. Si lanza sus nodos de trabajo antes de que elclúster esté activo, los nodos de trabajo no podrán registrarse con el clúster y tendrá que volver alanzarlos.

2. En la tabla que corresponde a la versión de Kubernetes del clúster, elija un enlace Launchworkers (Lanzar procesos de trabajo) en la misma región que el clúster con el tipo de AMIque desee para los nodos de trabajo. Esto abre la consola de AWS CloudFormation y rellenaautomáticamente varios campos.

Kubernetes version 1.14.7

Región AMI optimizada paraAmazon EKS

con compatibilidad con GPU

EE.UU. Este (Ohio) (us-east-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

EE.UU. Este (Norte deVirginia) (us-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

EE.UU. Oeste (Oregón) (us-west-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Hong Kong)(ap-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Mumbai) (ap-south-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

96

Page 104: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo de Linux de Amazon EKS

Región AMI optimizada paraAmazon EKS

con compatibilidad con GPU

Asia Pacífico (Tokio) (ap-northeast-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Seúl) (ap-northeast-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Singapur)(ap-southeast-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Sídney) (ap-southeast-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Canadá (Central) (ca-central-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Fráncfort) (eu-central-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Irlanda) (eu-west-1) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Londres) (eu-west-2) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (París) (eu-west-3) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Estocolmo) (eu-north-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Medio Oriente (Baréin) (me-south-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

América del Sur (São Paulo)(sa-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Kubernetes version 1.13.11

Región AMI optimizada paraAmazon EKS

con compatibilidad con GPU

EE.UU. Este (Ohio) (us-east-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

EE.UU. Este (Norte deVirginia) (us-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

EE.UU. Oeste (Oregón) (us-west-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Hong Kong)(ap-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Mumbai) (ap-south-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Tokio) (ap-northeast-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

97

Page 105: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo de Linux de Amazon EKS

Región AMI optimizada paraAmazon EKS

con compatibilidad con GPU

Asia Pacífico (Seúl) (ap-northeast-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Singapur)(ap-southeast-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Sídney) (ap-southeast-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Canadá (Central) (ca-central-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Fráncfort) (eu-central-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Irlanda) (eu-west-1) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Londres) (eu-west-2) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (París) (eu-west-3) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Estocolmo) (eu-north-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Medio Oriente (Baréin) (me-south-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

América del Sur (São Paulo)(sa-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Kubernetes version 1.12.10

Región AMI optimizada paraAmazon EKS

con compatibilidad con GPU

EE.UU. Este (Ohio) (us-east-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

EE.UU. Este (Norte deVirginia) (us-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

EE.UU. Oeste (Oregón) (us-west-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Hong Kong)(ap-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Mumbai) (ap-south-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Tokio) (ap-northeast-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Seúl) (ap-northeast-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

98

Page 106: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo de Linux de Amazon EKS

Región AMI optimizada paraAmazon EKS

con compatibilidad con GPU

Asia Pacífico (Singapur)(ap-southeast-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Sídney) (ap-southeast-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Canadá (Central) (ca-central-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Fráncfort) (eu-central-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Irlanda) (eu-west-1) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Londres) (eu-west-2) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (París) (eu-west-3) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Estocolmo) (eu-north-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Medio Oriente (Baréin) (me-south-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

América del Sur (São Paulo)(sa-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Note

Si solo intenta implementar nodos de trabajo a subredes privadas, debe editaresta plantilla en el diseñador de AWS CloudFormation y modificar el parámetroAssociatePublicIpAddress en el NodeLaunchConfig para que sea false.

AssociatePublicIpAddress: 'false'

3. En la página Quick create stack (Crear pila rápida), rellene los siguientes parámetros segúncorresponda:

• Stack name (Nombre de pila): elija un nombre para la pila de AWS CloudFormation. Porejemplo, puede llamarla <cluster-name>-worker-nodes.

• ClusterName: escriba el nombre que usó al crear el clúster de Amazon EKS.

Important

El nombre debe coincidir exactamente con el utilizado en Paso 1: Crear el clúster deAmazon EKS (p. 16); de lo contrario, los nodos de trabajo no podrán unirse al clúster.

• ClusterControlPlaneSecurityGroup: elija el valor de SecurityGroups en la salida de AWSCloudFormation generada con Crear la VPC del clúster de Amazon EKS (p. 13).

• NodeGroupName: escriba un nombre para el grupo de nodos. Este nombre se puede utilizarmás adelante para identificar el grupo de nodos de Auto Scaling que se crea para los nodos detrabajo.

• NodeAutoScalingGroupMinSize: escriba el número mínimo de nodos al que pueda llegar elgrupo de Auto Scaling de nodos de trabajo.

99

Page 107: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo de Linux de Amazon EKS

• NodeAutoScalingGroupDesiredCapacity: escriba el número deseado de nodos que deseaescalar cuando se crea la pila.

• NodeAutoScalingGroupMaxSize: escriba el número máximo de nodos al que pueda llegar elgrupo de Auto Scaling de nodos de trabajo.

• NodeInstanceType: elija un tipo de instancia para los nodos de trabajo.

Note

Los tipos de instancias compatibles con la versión más reciente del complementoCNI de Amazon VPC para Kubernetes se muestran aquí. Es posible que tengaque actualizar la versión de CNI para beneficiarse de los últimos tipos de instanciaadmitidos. Para obtener más información, consulte Actualizaciones del complementoCNI de Amazon VPC para Kubernetes (p. 179).

Important

Algunos tipos de instancias podrían no estar disponibles en todas las regiones.• NodeImageIdSSMParam: rellenado previamente en función de la versión con la que lanzó

los nodos de trabajo en el paso 2. Este valor es el parámetro Amazon EC2 Systems ManagerParameter Store que se va a utilizar para el ID de AMI del nodo de trabajo. Por ejemplo, elparámetro /aws/service/eks/optimized-ami/1.15/amazon-linux-2/recommended/image_id es para la última AMI optimizada para la versión 1.15 de Kubernetes optimizadapara Amazon EKS.

Note

La AMI del nodo de trabajo de Amazon EKS se basa en Amazon Linux 2. Para hacerun seguimiento de los eventos de seguridad o privacidad de Amazon Linux 2, consulteel Centro de seguridad de Amazon Linux o suscríbase a la fuente RSS asociada. Loseventos de seguridad y privacidad incluyen una descripción general del problema, quépaquetes están afectados y cómo actualizar las instancias para corregir el problema.

• NodeImageId: (opcional) si utiliza su propia AMI personalizada (en lugar de la AMI optimizadapara Amazon EKS), escriba un ID de AMI de nodo de trabajo para su región. Si especifica unvalor aquí, anula cualquier valor del campo NodeImageIdSSMParam .

• NodeVolumeSize: especifique un tamaño de volumen raíz para los nodos de trabajo en GiB.• KeyName: escriba el nombre de un par de claves SSH de Amazon EC2 que pueda usar

para conectarse a través de SSH a los nodos de trabajo después de haberlos lanzado. Siaún no tiene un par de claves de Amazon EC2, puede crear uno utilizando en la Consola deadministración de AWS. Para obtener más información, consulte Amazon EC2Pares de clavesde en la Guía del usuario de Amazon EC2 para instancias de Linux.

Note

Si no proporciona un par de claves aquí, se produce un error al crear la pila de AWSCloudFormation.

• BootstrapArguments: especifique los argumentos opcionales que se van a pasar al script dearranque del nodo de trabajo, como los argumentos de kubelet adicionales. Para obtenermás información, consulte la información sobre cómo usar el script de arranque en https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh.

• VpcId: escriba el ID de la VPC creada en Crear la VPC del clúster de Amazon EKS (p. 13).• Subnets: elija las subredes creadas en Crear la VPC del clúster de Amazon EKS (p. 13). Si creó

su VPC siguiendo los pasos que se describen en Creación de una VPC para su clúster AmazonEKS (p. 162), especifique solo las subredes privadas en la VPC en las que desea lanzar susnodos de trabajo

4. Confirme que la pila pueda crear recursos de IAM y, a continuación, seleccione Create stack(Crear pila). 100

Page 108: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo de Linux de Amazon EKS

5. Una vez completada la creación de la pila, selecciónela en la consola y elija Outputs (Salidas).6. Anote el valor de NodeInstanceRoles correspondiente al grupo nodos creado. Lo necesitará al

configurar los nodos de trabajo de Amazon EKS.

Para permitir a los nodos unirse al clúster

1. Descargue, edite y aplique el mapa de configuración del autenticador de IAM de AWS.

a. Utilice el siguiente comando para descarga el mapa de configuración:

curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/aws-auth-cm.yaml

b. Abra el archivo con el editor de texto que prefiera. Sustituya el fragmento <ARN ofinstance role (not instance profile)> por el valor de NodeInstanceRole anotadoen el procedimiento anterior y guarde el archivo.

Important

No modifique ninguna otra línea de este archivo.

apiVersion: v1kind: ConfigMapmetadata: name: aws-auth namespace: kube-systemdata: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

c. Aplique la configuración. Este comando puede tardar varios minutos en finalizar.

kubectl apply -f aws-auth-cm.yaml

Note

Si aparece el error "aws-iam-authenticator": executable file notfound in $PATH, significa que kubectl no está configurado para AmazonEKS. Para obtener más información, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Accesodenegado o no autorizado (kubectl) (p. 293) en la sección de solución deproblemas.

2. Observe el estado de los nodos y espere a que aparezca el valor Ready.

kubectl get nodes --watch

3. (Solo para procesos de trabajo de GPU) Si ha elegido un tipo de instancia P2 o P3 y la AMIoptimizada para Amazon EKS compatible con GPU, debe aplicar el complemento de dispositivoNVIDIA para Kubernetes como un DaemonSet en su clúster con el siguiente comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

101

Page 109: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo

de Windows de Amazon EKS

4. (Opcional) Lanzar una aplicación de libro de invitados (p. 206): implemente una aplicación deejemplo para probar el clúster y los nodos de trabajo de Linux.

Lanzamiento de nodos de trabajo de Windows deAmazon EKS

Este tema le ayuda a lanzar un grupo de nodos de trabajo de Windows de Auto Scaling que se registra enel clúster de Amazon EKS. Una vez que los nodos se han unido al clúster, puede implementar aplicacionesde Kubernetes en ellos.

Important

Los nodos de trabajo de Amazon EKS son instancias de Amazon EC2 estándar y se le facturaránconforme a los precios ordinarios de Amazon EC2. Para obtener más información, consultePrecios de Amazon EC2.

Debe habilitar la compatibilidad con Windows para su clúster y recomendamos que revise lasconsideraciones importantes antes de lanzar un grupo de nodos de trabajo de Windows. Para obtener másinformación, consulte Habilitación de la compatibilidad con Windows (p. 61).

Seleccione la pestaña correspondiente al método de creación de nodos de trabajo que desee:

eksctl

Si aún no tiene un clúster de Amazon EKS ni un grupo de nodos de trabajo de Linux al que añadir ungrupo de nodos de trabajo de Windows, recomendamos que siga la guía Introducción a eksctl (p. 3)en su lugar. La guía proporciona instrucciones paso a paso completas para crear un clúster deAmazon EKS con nodos de trabajo de Linux y Windows. Si ya tiene un clúster de Amazon EKS y ungrupo de nodos de trabajo de Linux al que añadir un grupo de nodos de trabajo de Windows, completelos siguientes pasos para añadir el grupo de nodos de trabajo de Windows.

Para lanzar los nodos de trabajo de Windows con eksctl

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Note

Este procedimiento solo funciona para los clústeres que se crearon con eksctl.

1. Cree el grupo de nodos de trabajo con el siguiente comando. Sustituya los valores deejemplo por sus propios valores.

eksctl create nodegroup \--region us-west-2 \--cluster windows \--name windows-ng \--node-type t2.large \--nodes 3 \--nodes-min 1 \--nodes-max 4 \--node-ami-family WindowsServer2019FullContainer

102

Page 110: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo

de Windows de Amazon EKS

Note

Para obtener más información acerca de las opciones disponibles para eksctl createnodegroup, consulte el proyecto README en GitHub o consulte la página de ayuda conel siguiente comando.

eksctl create nodegroup --help

Salida:

[ℹ] using region us-west-2[ℹ] 1 nodegroup(s) that already exist (ng-9d1cc1f2) will be excluded[ℹ] nodegroup "windows-ng" will use "ami-0c7f1b5f1bebccac2" [WindowsServer2019FullContainer/1.14][ℹ] 1 nodegroup (windows-ng) was included (based on the include/exclude rules)[ℹ] combined exclude rules: ng-9d1cc1f2[ℹ] no nodegroups present in the current set were excluded by the filter[ℹ] will create a CloudFormation stack for each of 1 nodegroups in cluster "windows"[ℹ] 1 task: { create nodegroup "windows-ng" }[ℹ] building nodegroup stack "eksctl-windows-nodegroup-windows-ng"[ℹ] deploying stack "eksctl-windows-nodegroup-windows-ng"[ℹ] adding role "arn:aws:iam::123456789012:role/eksctl-windows-nodegroup-windows-NodeInstanceRole-1E4JMZRAT9AEZ" to auth ConfigMap[ℹ] nodegroup "windows-ng" has 0 node(s)[ℹ] waiting for at least 1 node(s) to become ready in "windows-ng"[ℹ] nodegroup "windows-ng" has 1 node(s)[ℹ] node "ip-192-168-88-105.us-west-2.compute.internal" is ready[ℹ] created 1 nodegroup(s) in cluster "windows"[ℹ] checking security group configuration for all nodegroups[ℹ] all nodegroups have up-to-date configuration

2. (Opcional) Implementación de una aplicación de ejemplo de Windows (p. 65): implemente unaaplicación de ejemplo para probar el clúster y los nodos de trabajo de Windows.

Consola de administración de AWS

Para lanzar los nodos de trabajo con la Consola de administración de AWS

Estos procedimientos tienen los siguientes requisitos previos:

• Ya tiene un clúster de Amazon EKS y un grupo de nodos de trabajo de Linux. Si no tiene estosrecursos, recomendamos que siga una de nuestras guías Introducción a Amazon EKS (p. 3) paracrearlos. Las guías proporcionan instrucciones paso a paso completas para crear un clúster deAmazon EKS con nodos de trabajo de Linux.

• Ha creado una VPC y un grupo de seguridad que cumple los requisitos de un clúster de AmazonEKS. Para obtener más información, consulte Consideraciones sobre la VPC del clúster (p. 164)y Consideraciones relativas al grupo de seguridad Amazon EKS (p. 167). La guía Introducción aAmazon EKS (p. 3) crea una VPC que cumple los requisitos; o también puede seguir Creación deuna VPC para su clúster Amazon EKS (p. 162) para crear una manualmente.

1. Espere a que el estado del clúster sea ACTIVE. Si lanza sus nodos de trabajo antes de que elclúster esté activo, los nodos de trabajo no podrán registrarse con el clúster y tendrá que volver alanzarlos.

2. Elija un enlace Launch workers (Lanzar procesos de trabajo) acorde con el tipo de AMI y región.Esto abre la consola de AWS CloudFormation y rellena automáticamente varios campos.

103

Page 111: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo

de Windows de Amazon EKS

Kubernetes version 1.14.6

Región Windows Server 2019 Fulloptimizado para AmazonEKS

Windows Server 2019 Coreoptimizado para AmazonEKS

EE.UU. Este (Ohio) (us-east-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

EE.UU. Este (Norte deVirginia) (us-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

EE.UU. Oeste (Oregón) (us-west-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Hong Kong)(ap-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Mumbai) (ap-south-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Tokio) (ap-northeast-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Seúl) (ap-northeast-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Singapur)(ap-southeast-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Asia Pacífico (Sídney) (ap-southeast-2)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Canadá (Central) (ca-central-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Fráncfort) (eu-central-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Irlanda) (eu-west-1) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Londres) (eu-west-2) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (París) (eu-west-3) Lanzar procesos de trabajo Lanzar procesos de trabajo

UE (Estocolmo) (eu-north-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

Medio Oriente (Baréin) (me-south-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

América del Sur (São Paulo)(sa-east-1)

Lanzar procesos de trabajo Lanzar procesos de trabajo

104

Page 112: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo

de Windows de Amazon EKS

Note

Si solo intenta implementar nodos de trabajo a subredes privadas, debe editaresta plantilla en el diseñador de AWS CloudFormation y modificar el parámetroAssociatePublicIpAddress en el NodeLaunchConfig para que sea false.

AssociatePublicIpAddress: 'false'

3. En la página Quick create stack (Crear pila rápida), rellene los siguientes parámetros segúncorresponda:

• Stack name (Nombre de pila): elija un nombre para la pila de AWS CloudFormation. Porejemplo, puede llamarla <cluster-name>-worker-nodes.

• ClusterName: escriba el nombre que usó al crear el clúster de Amazon EKS.

Important

El nombre debe coincidir exactamente con el utilizado en Paso 1: Crear el clúster deAmazon EKS (p. 16); de lo contrario, los nodos de trabajo no podrán unirse al clúster.

• ClusterControlPlaneSecurityGroup: elija el valor de SecurityGroups en la salida de AWSCloudFormation generada con Crear la VPC del clúster de Amazon EKS (p. 13).

• NodeGroupName: escriba un nombre para el grupo de nodos. Este nombre se puede utilizarmás adelante para identificar el grupo de nodos de Auto Scaling que se crea para los nodos detrabajo.

• NodeAutoScalingGroupMinSize: escriba el número mínimo de nodos al que pueda llegar elgrupo de Auto Scaling de nodos de trabajo.

• NodeAutoScalingGroupDesiredCapacity: escriba el número deseado de nodos que deseaescalar cuando se crea la pila.

• NodeAutoScalingGroupMaxSize: escriba el número máximo de nodos al que pueda llegar elgrupo de Auto Scaling de nodos de trabajo.

• NodeInstanceType: elija un tipo de instancia para los nodos de trabajo.

Note

Los tipos de instancias compatibles con la versión más reciente del complementoCNI de Amazon VPC para Kubernetes se muestran aquí. Es posible que tengaque actualizar la versión de CNI para beneficiarse de los últimos tipos de instanciaadmitidos. Para obtener más información, consulte Actualizaciones del complementoCNI de Amazon VPC para Kubernetes (p. 179).

Important

Algunos tipos de instancias podrían no estar disponibles en todas las regiones.• NodeImageIdSSMParam: rellenado previamente en función de la versión con la que

lanzó los nodos de trabajo en el paso 2. Este valor es el parámetro Amazon EC2 SystemsManager Parameter Store que se va a utilizar para el ID de AMI del nodo de trabajo. Porejemplo, el parámetro aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS-1.14_Optimized/image_id es para la AMI de Windows optimizadapara Amazon EKS para la última versión 1.15 de Kubernetes recomendada. Si desea usar laversión completa de Windows, sustituya Core por Full.

• NodeImageId: (opcional) si utiliza su propia AMI personalizada (en lugar de la AMI optimizadapara Amazon EKS), escriba un ID de AMI de nodo de trabajo para su región. Si especifica unvalor aquí, anula cualquier valor del campo NodeImageIdSSMParam .

• NodeVolumeSize: especifique un tamaño de volumen raíz para los nodos de trabajo en GiB.

105

Page 113: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioLanzamiento de nodos de trabajo

de Windows de Amazon EKS

• KeyName: escriba el nombre de un par de claves SSH de Amazon EC2 que pueda usarpara conectarse a través de SSH a los nodos de trabajo después de haberlos lanzado. Siaún no tiene un par de claves de Amazon EC2, puede crear uno utilizando en la Consola deadministración de AWS. Para obtener más información, consulte Pares de claves de AmazonEC2 en la Guía del usuario de Amazon EC2 para instancias de Windows.

Note

Si no proporciona un par de claves aquí, se produce un error al crear la pila de AWSCloudFormation.

• BootstrapArguments: especifique los argumentos opcionales que se van a pasar al scriptde arranque del nodo de trabajo, como los argumentos de kubelet adicionales mediante -KubeletExtraArgs.

• VpcId: seleccione el ID de la VPC creada en Crear la VPC del clúster de Amazon EKS (p. 13).• NodeSecurityGroups: seleccione el grupo de seguridad que se creó para su grupo de nodos de

trabajo de Linux en Crear la VPC del clúster de Amazon EKS (p. 13). Si sus nodos de trabajode Linux tienen más de un grupo de seguridad asociado a ellos (por ejemplo, si el grupo denodos de trabajo de Linux se creó con eksctl), especifíquelos todos aquí.

• Subnets: elija las subredes creadas en Crear la VPC del clúster de Amazon EKS (p. 13). Si creósu VPC siguiendo los pasos que se describen en Creación de una VPC para su clúster AmazonEKS (p. 162), especifique solo las subredes privadas en la VPC en las que desea lanzar susnodos de trabajo

4. Confirme que la pila pueda crear recursos de IAM y, a continuación, seleccione Create stack(Crear pila).

5. Una vez completada la creación de la pila, selecciónela en la consola y elija Outputs (Salidas).6. Anote el valor de NodeInstanceRoles correspondiente al grupo nodos creado. Lo necesitará al

configurar los nodos de trabajo de Windows de Amazon EKS.

Para permitir a los nodos unirse al clúster

1. Descargue, edite y aplique el mapa de configuración del autenticador de IAM de AWS.

a. Utilice el siguiente comando para descarga el mapa de configuración:

curl -o aws-auth-cm-windows.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/aws-auth-cm-windows.yaml

b. Abra el archivo con el editor de texto que prefiera. Sustituya los fragmentos <ARN delrol de instancia (no el perfil de instancia) del nodo de trabajo de**Linux**> y <ARN del rol de instancia (no el perfil de instancia)del nodo de trabajo de **Windows**> por los valores NodeInstanceRole que haregistrado para los nodos de trabajo de Linux y Windows, y guarde el archivo.

Important

No modifique ninguna otra línea de este archivo.

apiVersion: v1kind: ConfigMapmetadata: name: aws-auth namespace: kube-systemdata: mapRoles: | - rolearn: <ARN of instance role (not instance profile) of **Linux** worker node> username: system:node:{{EC2PrivateDNSName}}

106

Page 114: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualizaciones de nodos de trabajo

groups: - system:bootstrappers - system:nodes - rolearn: <ARN of instance role (not instance profile) of **Windows** worker node> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - eks:kube-proxy-windows

c. Aplique la configuración. Este comando puede tardar varios minutos en finalizar.

kubectl apply -f aws-auth-cm-windows.yaml

Note

Si aparece el error "aws-iam-authenticator": executable file notfound in $PATH, significa que kubectl no está configurado para AmazonEKS. Para obtener más información, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Accesodenegado o no autorizado (kubectl) (p. 293) en la sección de solución deproblemas.

2. Observe el estado de los nodos y espere a que aparezca el valor Ready.

kubectl get nodes --watch

3. (Opcional) Implementación de una aplicación de ejemplo de Windows (p. 65): implemente unaaplicación de ejemplo para probar el clúster y los nodos de trabajo de Windows.

Actualizaciones de nodos de trabajoCuando se lanza una nueva AMI optimizada para Amazon EKS, debe considerar la posibilidad dereemplazar los nodos de su grupo de nodos de trabajo por la nueva AMI. Asimismo, si ha actualizado laversión de Kubernetes de su clúster de Amazon EKS, también debe actualizar los nodos de trabajo parautilizar nodos de trabajo con la misma versión de Kubernetes.

Important

En este tema se tratan las actualizaciones de nodos de trabajo para grupos de nodos noadministrados. Si está usando Grupos de nodos administrados (p. 86), consulte Actualizaciónde un grupo de nodos administrados (p. 90).

Existen dos formas básicas de actualizar los grupos de nodos no administrados de los clústeres paraque utilicen una nueva AMI: crear un nuevo grupo de nodos de trabajo y migrar sus pods a ese grupo, oactualizar la pila de AWS CloudFormation de un grupo de nodos de trabajo existente de manera que utilicela nueva AMI. Este último método no se admite para los grupos de nodos de trabajo que se han creadocon eksctl.

La migración a un nuevo grupo de nodos de trabajo es una forma de actualización más elegante quesimplemente actualizar el ID de AMI de una pila de AWS CloudFormation existente, ya que el proceso demigración marca el grupo de nodos antiguo como NoSchedule y vacía los nodos cuando una nueva pilaestá lista para aceptar la carga de trabajo del pod existente.

Temas• Migración a un nuevo grupo de nodos de trabajo (p. 108)

107

Page 115: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioMigración a un nuevo grupo de nodos de trabajo

• Actualización de un grupo de nodos de trabajo existente (p. 113)

Migración a un nuevo grupo de nodos de trabajoEste tema le ayuda a crear un nuevo grupo de nodos de trabajo, migrar de forma elegante sus aplicacionesexistentes al nuevo grupo y después eliminar el grupo de nodos de trabajo antiguo del clúster.

eksctl

Para migrar sus aplicaciones a un nuevo grupo de nodos de trabajo con eksctl

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

Note

Este procedimiento solo funciona para los clústeres y los grupos de nodos de trabajo que secrearon con eksctl.

1. Recupere el nombre de sus grupos de nodos de trabajo existentes, sustituyendo el valorpredeterminado por el nombre de su clúster.

eksctl get nodegroups --cluster=default

Salida:

CLUSTER NODEGROUP CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE IDdefault standard-workers 2019-05-01T22:26:58Z 1 4 3 t3.medium ami-05a71d034119ffc12

2. Lance un nuevo grupo de nodos de trabajo con eksctl con el siguiente comando, sustituyendolos valores de ejemplo por sus propios valores.

Note

Para conocer los marcadores disponibles y sus descripciones, consulte https://eksctl.io/.

eksctl create nodegroup \--cluster default \--version 1.15 \--name standard-1-15 \--node-type t3.medium \--nodes 3 \--nodes-min 1 \--nodes-max 4 \--node-ami auto

3. Cuando se complete el comando anterior, compruebe que todos los nodos de trabajo tienen elestado Ready con el siguiente comando:

kubectl get nodes

108

Page 116: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioMigración a un nuevo grupo de nodos de trabajo

4. Elimine el grupo de nodos originales con el siguiente comando, sustituyendo los valores deejemplo por los nombres del clúster y del grupo de nodos:

eksctl delete nodegroup --cluster default --name standard-workers

Consola de administración de AWS

Para migrar sus aplicaciones a un nuevo grupo de nodos de trabajo con la Consola deadministración de AWS

1. Lance un nuevo grupo de nodos de trabajo siguiendo los pasos que se indican en Lanzamiento denodos de trabajo de Linux de Amazon EKS (p. 93).

2. Una vez completada la creación de la pila, selecciónela en la consola y elija Outputs (Salidas).3. Anote el valor de NodeInstanceRoles correspondiente al grupo nodos creado. Necesita este valor

para añadir los nuevos nodos de trabajo de Amazon EKS al clúster.Note

Si ha asociado políticas de IAM adicionales al rol de IAM de su grupo de nodos anterior(por ejemplo, para añadir permisos para el Cluster Autoscaler de Kubernetes), debeasociar esas mismas políticas al rol de IAM del nuevo grupo de nodos para mantener esafuncionalidad en el nuevo grupo.

4. Actualice los grupos de seguridad de ambos grupos de nodos de trabajo para que puedancomunicarse entre sí. Para obtener más información, consulte Consideraciones relativas al grupode seguridad Amazon EKS (p. 167).

a. Anote los ID de grupo de seguridad de ambos grupos de nodos de trabajo. Esto se muestracomo el valor NodeSecurityGroup en los resultados de la pila de AWS CloudFormation.

Puede utilizar los siguientes comandos de la AWS CLI para obtener los ID de grupo deseguridad de los nombres de pilas. En estos comandos, oldNodes es el nombre de pila deAWS CloudFormation de la pila de nodos de trabajo antigua y newNodes es el nombre de lapila a la que va a migrar.

oldNodes="<old_node_CFN_stack_name>"newNodes="<new_node_CFN_stack_name>"

oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \--query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \--output text)newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \--query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \--output text)

b. Añada reglas de entrada a cada grupo de seguridad de nodos de trabajo para que aceptentráfico de los otros grupos.

Los siguientes comandos de la AWS CLI añaden reglas de entrada a cada grupo deseguridad que permite todo el tráfico en todos los protocolos del otro grupo de seguridad.Esta configuración permite que los pods de cada grupo de nodos de trabajo se comuniquenentre ellos mientras migra su carga de trabajo al nuevo grupo.

aws ec2 authorize-security-group-ingress --group-id $oldSecGroup \--source-group $newSecGroup --protocol -1

109

Page 117: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioMigración a un nuevo grupo de nodos de trabajo

aws ec2 authorize-security-group-ingress --group-id $newSecGroup \--source-group $oldSecGroup --protocol -1

5. Edite el mapa de configuración aws-auth para asignar el rol de la instancia del nuevo nodo detrabajo en RBAC.

kubectl edit configmap -n kube-system aws-auth

Añada una nueva entrada mapRoles para el nuevo grupo de nodos de trabajo.

apiVersion: v1data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - rolearn: arn:aws:iam::111122223333:role/workers-1-10-NodeInstanceRole-U11V27W93CX5 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

Sustituya el fragmento <ARN of instance role (not instance profile)> por el valorde NodeInstanceRole anotado en Step 3 (p. 109) y después guarde y cierre el archivo paraaplicar el mapa de configuración personalizado.

6. Examine el estado de los nodos y espere a que los nuevos nodos de trabajo se unan al clúster ytengan el estado Ready.

kubectl get nodes --watch

7. (Opcional) Si utiliza el Cluster Autoscaler de Kubernetes, escale la implementación a 0 réplicaspara evitar acciones de escalado en conflicto.

kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system

8. Utilice el siguiente comando para marcar cada uno de los nodos que desee eliminar conNoSchedule, para que los nuevos pods no se programen ni reprogramen en los nodos que va asustituir:

kubectl taint nodes node_name key=value:NoSchedule

Si va a actualizar los nodos de trabajo a una nueva versión de Kubernetes, puede identificar ymarcar todos los nodos de una determinada versión de Kubernetes (en este caso, 1.10.3) con elsiguiente fragmento de código.

K8S_VERSION=1.10.3nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")for node in ${nodes[@]}do echo "Tainting $node" kubectl taint nodes $node key=value:NoScheduledone

9. Identifique el proveedor de DNS del clúster.

110

Page 118: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioMigración a un nuevo grupo de nodos de trabajo

kubectl get deployments -l k8s-app=kube-dns -n kube-system

Salida (este clúster utiliza kube-dns para la resolución DNS, pero el clúster puede devolvercoredns en su lugar):

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEkube-dns 1 1 1 1 31m

10. Si su implementación actual está ejecutando menos de dos réplicas, escale la implementación ados réplicas. Cambie coredns por kube-dns si el resultado del comando anterior ha devueltoese valor en su lugar.

kubectl scale deployments/kube-dns --replicas=2 -n kube-system

11. Vacíe cada uno de los nodos que desea eliminar de su clúster con el siguiente comando:

kubectl drain node_name --ignore-daemonsets --delete-local-data

Si va a actualizar los nodos de trabajo a una nueva versión de Kubernetes, puede identificar yvaciar todos los nodos de una determinada versión de Kubernetes (en este caso, 1.10.3) con elsiguiente fragmento de código.

K8S_VERSION=1.10.3nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")for node in ${nodes[@]}do echo "Draining $node" kubectl drain $node --ignore-daemonsets --delete-local-datadone

12. Una vez que haya terminado de vaciar los antiguos nodos de trabajo, revoque las reglasde entrada del grupo de seguridad que autorizó anteriormente y elimine la pila de AWSCloudFormation para terminar las instancias.

Note

Si ha asociado políticas de IAM adicionales al rol de IAM de su grupo de nodos anterior(por ejemplo, para añadir permisos para el Cluster Autoscaler de Kubernetes), debedesvincular estas políticas adicionales del rol para poder eliminar la pila de AWSCloudFormation.

a. Revoque las reglas de entrada que creó anteriormente para los grupos de seguridadde nodos de trabajo. En estos comandos, oldNodes es el nombre de pila de AWSCloudFormation de la pila de nodos de trabajo antigua y newNodes es el nombre de la pila ala que va a migrar.

oldNodes="<old_node_CFN_stack_name>"newNodes="<new_node_CFN_stack_name>"

oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \--query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \--output text)newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \

111

Page 119: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioMigración a un nuevo grupo de nodos de trabajo

--query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \--output text)aws ec2 revoke-security-group-ingress --group-id $oldSecGroup \--source-group $newSecGroup --protocol -1aws ec2 revoke-security-group-ingress --group-id $newSecGroup \--source-group $oldSecGroup --protocol -1

b. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.c. Seleccione la pila de nodos de trabajo antigua.d. Elija Actions (Acciones) y después Delete stack (Eliminar pila).

13. Edite el mapa de configuración aws-auth para eliminar el rol de la instancia del nodo de trabajoanterior de RBAC.

kubectl edit configmap -n kube-system aws-auth

Elimine la entrada mapRoles del grupo de nodos de trabajo antiguo.

apiVersion: v1data: mapRoles: | - rolearn: arn:aws:iam::111122223333:role/workers-1-11-NodeInstanceRole-W70725MZQFF8 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - rolearn: arn:aws:iam::111122223333:role/workers-1-10-NodeInstanceRole-U11V27W93CX5 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

Guarde y cierre el archivo para aplicar el mapa de configuración actualizado.14. (Opcional) Si utiliza el Cluster Autoscaler de Kubernetes, vuelva a escalar la implementación a

una réplica.

Note

También debe etiquetar su nuevo grupo de Auto Scaling correctamente (por ejemplo,k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/<YOURCLUSTER NAME>) y actualizar el comando de implementación del clúster automáticopara que apunte al grupo de Auto Scaling recién etiquetado. Para obtener másinformación, consulte Cluster Autoscaler en AWS.

kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system

15. De manera opcional, puede comprobar que está utilizando la última versión del complemento CNIde Amazon VPC para Kubernetes. Es posible que tenga que actualizar la versión de CNI parabeneficiarse de los últimos tipos de instancia admitidos. Para obtener más información, consulteActualizaciones del complemento CNI de Amazon VPC para Kubernetes (p. 179).

16. Si el clúster utiliza kube-dns para la resolución DNS (consulte el paso Step 9 (p. 110)), escalela implementación de kube-dns a una réplica.

kubectl scale deployments/kube-dns --replicas=1 -n kube-system

112

Page 120: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de un grupo de nodos de trabajo existente

Actualización de un grupo de nodos de trabajoexistenteEste tema le ayuda a actualizar una pila de nodos de trabajo sin administrar de AWS CloudFormationexistente con una nueva AMI. Puede utilizar este procedimiento para actualizar sus nodos de trabajo a unanueva versión de Kubernetes después de la actualización de un clúster o puede actualizar a la última AMIoptimizada para Amazon EKS-para una versión de Kubernetes existente.

Important

En este tema se tratan las actualizaciones de nodos de trabajo para grupos de nodos noadministrados. Si está usando Grupos de nodos administrados (p. 86), consulte Actualizaciónde un grupo de nodos administrados (p. 90).

La última plantilla de AWS CloudFormation de nodos de trabajo de Amazon EKS está configurada paralanzar una instancia con la nueva AMI del clúster antes de eliminar una antigua, una cada vez. Estaconfiguración garantiza que siempre tenga el número deseado de instancias activas del grupo de AutoScaling en el clúster durante la actualización gradual.

Note

Este último método no se admite para los grupos de nodos de trabajo que se han creado coneksctl. Si ha creado su clúster o grupo de nodos de trabajo con eksctl, consulte Migración aun nuevo grupo de nodos de trabajo (p. 108).

Para actualizar un grupo de nodos de trabajo existente

1. Identifique el proveedor de DNS del clúster.

kubectl get deployments -l k8s-app=kube-dns -n kube-system

Salida (este clúster utiliza kube-dns para la resolución DNS, pero el clúster puede devolver corednsen su lugar):

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEkube-dns 1 1 1 1 31m

2. Si su implementación actual está ejecutando menos de dos réplicas, escale la implementación a dosréplicas. Cambie coredns por kube-dns si el resultado del comando anterior ha devuelto ese valoren su lugar.

kubectl scale deployments/kube-dns --replicas=2 -n kube-system

3. (Opcional) Si utiliza el Cluster Autoscaler de Kubernetes, escale la implementación a cero réplicaspara evitar acciones de escalado en conflicto.

kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system

4. Determine el tipo de instancia y el número de instancias deseado de su grupo de nodos de trabajoactual. Especificará estos valores posteriormente cuando actualice la plantilla de AWS CloudFormationdel grupo.

a. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.b. Elija Launch Configurations (Configuraciones de lanzamiento) en el panel de navegación

izquierdo y anote el tipo de instancia de la configuración de lanzamiento de nodos de trabajoexistente.

113

Page 121: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de un grupo de nodos de trabajo existente

c. Elija Auto Scaling Groups (Grupos de Auto Scaling) en el panel de navegación izquierdo y anoteel número de instancias Desired (Deseado) para su grupo de Auto Scaling de nodos de trabajoexistente.

5. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.6. Seleccione la pila del grupo de nodos de trabajo y, a continuación, seleccione Update (Actualizar).7. Seleccione Replace current template (Reemplazar plantilla actual) y seleccione Amazon S3 URL.8. Para Amazon S3 URL, pegue la siguiente URL en el área de texto para asegurarse de que

está utilizando la última versión de la plantilla de AWS CloudFormation de nodos de trabajo y, acontinuación, seleccione Next (Siguiente):

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-nodegroup.yaml

9. En la página Specify Details (Especificar detalles), rellene los parámetros siguientes y seleccione Next(Siguiente):

• NodeAutoScalingGroupDesiredCapacity: especifique el número de instancias deseado que anotó enStep 4 (p. 113) o especifique el número de nodos al que desea escalar cuando se actualice la pila.

• NodeAutoScalingGroupMaxSize: escriba el número máximo de nodos al que pueda llegar el grupode Auto Scaling de nodos de trabajo. Este valor debe ser al menos un nodo más que la capacidaddeseada para que pueda realizar una actualización gradual de los nodos de trabajo sin que sereduzca el número de nodos durante la actualización.

• NodeInstanceType: elija el tipo de instancia que anotó en Step 4 (p. 113) o elija un tipo deinstancia diferente para sus nodos de trabajo.

Note

Los tipos de instancias compatibles con la versión más reciente del complemento CNI deAmazon VPC para Kubernetes se muestran aquí. Es posible que tenga que actualizar laversión de CNI para beneficiarse de los últimos tipos de instancia admitidos. Para obtenermás información, consulte Actualizaciones del complemento CNI de Amazon VPC paraKubernetes (p. 179).

Important

Algunos tipos de instancias podrían no estar disponibles en todas las regiones.• NodeImageIdSSMParam: el parámetro de Amazon EC2 Systems Manager del ID de AMI que desee

actualizar a: El siguiente valor utiliza la última AMI optimizada para Amazon EKS para la versión deKubernetes de 1.15.

/aws/service/eks/optimized-ami/1.15/amazon-linux-2/recommended/image_id

Puede cambiar el valor 1.15 a cualquier versión de Kubernetes compatible (p. 53). Si desea utilizarla AMI optimizada para Amazon EKS compatible con GPU, cambie amazon-linux-2 a amazon-linux-2-gpu.

Note

El uso del parámetro de Amazon EC2 Systems Manager le permitirá actualizar los nodosde trabajo en el futuro sin tener que buscar y especificar un ID de AMI. Si la pila de AWSCloudFormation utiliza este valor, cualquier actualización de la pila lanzará siempre laúltima AMI optimizada para Amazon EKS recomendada para su versión de Kubernetesespecificada, incluso si no cambia ningún valor en la plantilla.

• NodeImageId: para utilizar su propia AMI personalizada, introduzca el ID de la AMI que va a utilizar.

114

Page 122: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAMI de Ubuntu

Important

Este valor anula cualquier valor especificado para NodeImageIdSSMParam. Si deseautilizar el valor NodeImageIdSSMParam asegúrese de que el valor de NodeImageId estévacío.

10. (Opcional) En la página Options (Opciones), marque los recursos de la pila. Seleccione Siguiente.11. En la página Review (Revisar), revise la información, confirme la advertencia de que la pila puede

crear recursos de IAM y seleccione Update (Actualizar).

Note

La actualización de cada nodo del clúster tarda varios minutos. Espere a que se complete laactualización de todos los nodos antes de realizar los siguientes pasos.

12. Si su proveedor DNS del clúster es kube-dns, escale la implementación de kube-dns a una réplica.

kubectl scale deployments/kube-dns --replicas=1 -n kube-system

13. (Opcional) Si utiliza el Cluster Autoscaler de Kubernetes, vuelva a escalar la implementación a unaréplica.

kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system

14. De manera opcional, puede comprobar que está utilizando la última versión del complemento CNIde Amazon VPC para Kubernetes. Es posible que tenga que actualizar la versión de CNI parabeneficiarse de los últimos tipos de instancia admitidos. Para obtener más información, consulteActualizaciones del complemento CNI de Amazon VPC para Kubernetes (p. 179).

AMI de Ubuntu optimizadas para Amazon EKSAdemás de los nodos de trabajo oficiales optimizados para Amazon EKS, Canonical se ha asociado conAmazon EKS para crear AMI de nodo de trabajo que puede utilizar en sus clústeres.

Canonical distribuye una imagen de sistema operativo de nodo de Kubernetes personalizada. Esta imagende Ubuntu minimizada está optimizado para Amazon EKS e incluye el kernel de AWS personalizadodesarrollado conjuntamente con AWS. Para obtener más información, consulte Ubuntu y Amazon ElasticKubernetes Service y Compatibilidad optimizada para Amazon EKS en Ubuntu 18.04.

115

Page 123: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioConsideraciones de Fargate

AWS FargateEn este capítulo se explica cómo usar Amazon EKS para ejecutar pods de Kubernetes en AWS Fargate.

AWS Fargate es una tecnología que proporciona capacidad de cómputo bajo demanda correctamentedimensionada para contenedores. Con AWS Fargate ya no tendrá que aprovisionar, configurar ni escalarclústeres de máquinas virtuales para ejecutar los contenedores. De esta manera, se elimina la necesidadde elegir tipos de servidores, decidir cuándo escalar los grupos de nodos u optimizar conjuntos declústeres.

Puede controlar qué pods se inician en Fargate y cómo se ejecutan con perfiles de Fargate (p. 121), quese definen como parte del clúster de Amazon EKS.

Amazon EKS integra Kubernetes con AWS Fargate mediante el uso de controladores creados porAWS utilizando el modelo ascendente y extensible proporcionado por Kubernetes. Estos controladoresfuncionan como parte del plano de control de Kubernetes administrado por Amazon EKS y sonresponsables de programar los pods de Kubernetes nativos en Fargate. Los controladores de Fargateincluyen un nuevo programador que se ejecuta junto con el programador predeterminado de Kubernetes,además de varios controladores de admisión de mutación y validación. Cuando inicia un pod que cumplelos criterios para ejecutarse en Fargate, los controladores de Fargate que se ejecutan en el clústerreconocen, actualizan y programan el pod en Fargate.

Cada tarea que se ejecuta en Fargate tiene su propio límite de aislamiento y no comparte el kernelsubyacente, los recursos de CPU, los recursos de memoria ni la interfaz de red elástica con otro pod.

En este capítulo se describen los diferentes componentes de los pods que se ejecutan en Fargate y seofrecen consideraciones especiales sobre cómo usar Fargate con Amazon EKS.

AWS Fargate con Amazon EKS solo está disponible actualmente en las siguientes regiones:

Nombre de la región Región

EE.UU. Este (Ohio) us-east-2

EE.UU. Este (Norte de Virginia) us-east-1

Asia Pacífico (Tokio) ap-northeast-1

UE (Irlanda) eu-west-1

Temas• Consideraciones de AWS Fargate (p. 116)• Introducción a AWS Fargate en Amazon EKS (p. 117)• Perfil de AWS Fargate (p. 121)• Configuración de pods de Fargate (p. 125)

Consideraciones de AWS FargateAquí se incluyen algunos aspectos que debe tener en cuenta sobre el uso de Fargate en Amazon EKS.

• Los Classic Load Balancer y Balanceador de carga de red no se admiten en los pods que se ejecutanen Fargate. Para la entrada, le recomendamos que utilice Controlador de entrada de ALB en AmazonEKS (p. 157) (versión mínima v1.1.4).

116

Page 124: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioIntroducción a Fargate

• Los pods deben coincidir con un perfil de Fargate en el momento de su programación para poderejecutarse en Fargate. Los pods que no coinciden con un perfil de Fargate pueden quedarse bloqueadoscon el estado Pending. Si existe un perfil de Fargate coincidente, puede eliminar los pods pendientesque haya creado para reprogramarlos en Fargate.

• No se admiten daemonsets en Fargate. Si su aplicación requiere un daemon, debe reconfigurar esedaemon para que se ejecute como un contenedor asociado en sus pods.

• No se admiten contenedores con privilegios en Fargate.• Los pods que se ejecutan en Fargate no pueden especificar HostPort ni HostNetwork en el manifiesto

del pod.• Las GPU no están disponibles actualmente en Fargate.• Los pods que se ejecutan en Fargate no tienen asignadas direcciones IP públicas, por lo que solo se

admiten subredes privadas (sin ruta directa a una gateway de Internet) cuando se crea un perfil deFargate.

• Le recomendamos que utilice el Escalador automático vertical de pods (p. 150) con pods ejecutándoseen Fargate para optimizar la CPU y la memoria utilizadas para sus aplicaciones. Sin embargo, comopara cambiar la asignación de recursos para un pod es necesario reiniciar el pod, debe establecer lapolítica de actualización del pod en Auto o Recreate para garantizar una funcionalidad correcta.

• No se recomienda utilizar aplicaciones con estado para los pods que se ejecutan en Fargate. Ensu lugar, le recomendamos que utilice soluciones de AWS como Amazon S3 o DynamoDB para elalmacenamiento de datos del pod.

• Fargate ejecuta cada pod en un entorno aislado de máquina virtual sin compartir recursos conotros pods. Sin embargo, como Kubernetes es un orquestador de un solo inquilino, Fargate nopuede garantizar el aislamiento de seguridad de nivel de pod. Debe ejecutar las cargas de trabajoconfidenciales o las cargas de trabajo que no sean de confianza y necesiten un aislamiento completo deseguridad con clústeres de Amazon EKS independientes.

Introducción a AWS Fargate en Amazon EKSEste tema explica cómo empezar a ejecutar pods en AWS Fargate con su clúster de Amazon EKS.

Note

AWS Fargate con Amazon EKS solo está disponible actualmente en las siguientes regiones:

Nombre de la región Región

EE.UU. Este (Ohio) us-east-2

EE.UU. Este (Norte de Virginia) us-east-1

Asia Pacífico (Tokio) ap-northeast-1

UE (Irlanda) eu-west-1

Si se restringe el acceso al punto de enlace público del clúster mediante bloques de CIDR, se recomiendahabilitar también el acceso al punto de enlace privado para que los pods de Fargate puedan comunicarsecon el clúster. Si el punto de enlace privado no está habilitado, los bloques de CIDR que especifique parael acceso público deben incluir los orígenes de salida de su VPC. Para obtener más información, consulteControl de acceso al punto de enlace del clúster de Amazon EKS (p. 39).

(Opcional) Crear un clústerA partir de Kubernetes versión 1.14 y la versión de la plataforma (p. 53) eks.5, se admite la ejecución depods en Fargate en clústeres de Amazon EKS. Los clústeres existentes se pueden actualizar a la versión

117

Page 125: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAsegurarse de que los nodos existentes

puedan comunicarse con los pods de Fargate

1.14 para aprovechar esta característica. Para obtener más información, consulte Actualización de unaversión de Kubernetes de clúster de Amazon EKS (p. 33). Los clústeres 1.14 existentes se actualizaránautomáticamente a eks.5 con el tiempo para admitir esta característica.

Si aún no tiene un clúster de Amazon EKS compatible con Fargate, puede crear uno con el siguientecomando eksctl.

Note

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

eksctl create cluster --name my-cluster --version 1.15 --fargate

Al añadir la opción --fargate al comando anterior se crea un clúster sin un grupo de nodos. Sinembargo, eksctl crea un rol de ejecución de pods y un perfil de Fargate para los espacios de nombreskube-system y default, y aplica un parche a la implementación coredns para que pueda ejecutarseen Fargate.

Asegurarse de que los nodos existentes puedancomunicarse con los pods de FargateSi está trabajando con un nuevo clúster sin nodos de trabajo o con un clúster con solo grupos de nodosadministrados (p. 86), puede ir directamente a Crear un rol de ejecución de pods de Fargate (p. 118).

Si está trabajando con un clúster existente que ya tiene nodos de trabajo asociados, debe asegurarse deque 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 seguridaddel clúster al que están asociados. Debe asegurarse de que los nodos de trabajo existentes en el clústerpuedan enviar y recibir tráfico hacia y desde el grupo de seguridad del clúster. Los Grupos de nodosadministrados (p. 86) se configuran automáticamente para utilizar también el grupo de seguridad delclúster, por lo que no es necesario modificarlos ni comprobar si admiten esta función.

Para los grupos de nodos existentes que se crearon con eksctl o con las plantillas de AWSCloudFormation administradas por Amazon EKS, puede añadir manualmente el grupo de seguridad delclúster a los nodos o modificar la plantilla de lanzamiento de grupo de Auto Scaling del grupo de nodospara asociar el grupo de seguridad del clúster a las instancias. Para obtener más información, consulteCambio de los grupos de seguridad de una instancia en la Guía del usuario de Amazon VPC.

Puede buscar un grupo de seguridad de clúster para su clúster en la Consola de administración de AWS,en la sección Networking (Redes) del clúster, o con el siguiente comando de AWS CLI:

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

Crear un rol de ejecución de pods de FargateCuando el clúster crea pods en AWS Fargate, los pods necesitan realizar llamadas a las API de AWS ensu nombre para hacer cosas como extraer imágenes de contenedor de Amazon ECR. El rol de ejecuciónde pods de Amazon EKS proporciona los permisos de IAM para esta tarea.

118

Page 126: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCrear un perfil de Fargate para el clúster

Note

Si creó el clúster con eksctl utilizando la opción --fargate, el clúster ya tiene un rolde ejecución de pods y puede pasar directamente a Crear un perfil de Fargate para elclúster (p. 119). Del mismo modo, si utiliza eksctl para crear sus perfiles de Fargate, eksctlcreará su rol de ejecución de pods si aún no existe uno.

Al crear un perfil de Fargate, debe especificar un rol de ejecución de pods para utilizarlo con los pods. Esterol se añade al control de acceso basado en roles de Kubernetes (RBAC) del clúster para su autorización.Esto permite al kubelet que se está ejecutando en la infraestructura de Fargate registrarse en el clústerde Amazon EKS para que pueda aparecer en el clúster como un nodo. Para obtener más información,consulte Rol de ejecución de pods (p. 256).

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. Elija Roles y, a continuación, Create role (Crear rol).3. Seleccione EKS en la lista de servicios, EKS: pod de Fargate para su caso de uso y luego Next:

Permissions (Siguiente: Permisos.4. Elija Next: Tags (Siguiente: Etiquetas).5. De manera opcional, añada metadatos al rol asociando etiquetas como pares de clave-valor. Para

obtener más información sobre el uso de etiquetas en IAM, consulte Etiquetado de entidades de IAMen la Guía del usuario de IAM.

6. Elija Next: Review.7. En Role name (Nombre de rol), escriba un nombre exclusivo para su rol, como

AmazonEKSFargatePodExecutionRole y, a continuación, seleccione Create role (Crear rol).

Crear un perfil de Fargate para el clústerPara poder programar pods que se ejecuten en Fargate en el clúster, debe definir un perfil de Fargate queespecifique qué pods debe usar Fargate cuando se lancen. Para obtener más información, consulte Perfilde AWS Fargate (p. 121).

Note

Si creó el clúster con eksctl utilizando la opción --fargate, ya se habrá creado un perfil deFargate para el clúster con selectores para todos los pods en los espacios de nombres defaulty kube-system. Utilice el procedimiento siguiente para crear perfiles de Fargate para cualquierotro espacio de nombres que desee utilizar con Fargate.

Seleccione la pestaña siguiente correspondiente al método de creación de perfiles de Fargate que desee.

eksctl

Para crear un perfil de Fargate para un clúster con eksctl

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

• Cree su perfil de Fargate con el siguiente comando eksctl, reemplazando el texto de lavariable por sus propios valores. Debe especificar un espacio de nombres, pero la opción deetiquetas no es obligatoria.

119

Page 127: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario(Opcional) Actualizar CoreDNS

eksctl create fargateprofile --cluster cluster_name --name fargate_profile_name --namespace kubernetes_namespace --labels key=value

Consola de administración de AWS

Para crear un perfil de Fargate para un clúster con la Consola de administración de AWS

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Elija el clúster para el que desea crear un perfil de Fargate.3. En Fargate profiles (Perfiles de Fargate), elija Add Fargate profile (Añadir perfil de Fargate).4. En la página Configure Fargate profile (Configurar perfil de Fargate), escriba la siguiente

información y elija Next (Siguiente).

a. En Name (Nombre), escriba un nombre único para el perfil de Fargate.b. En Pod execution role (Rol de ejecución de pods), elija el rol de ejecución de pods que se va

a usar con el perfil de Fargate. Solo se muestran los roles de IAM con la entidad principal delservicio eks-fargate-pods.amazonaws.com. Si no ve ningún rol aquí, debe crear uno.Para obtener más información, consulte Rol de ejecución de pods (p. 256).

c. En Subnets (Subredes), elija las subredes que desee utilizar para los pods. De formapredeterminada, se seleccionan todas las subredes de la VPC del clúster. Solo se admitensubredes privadas para los pods que se ejecutan en Fargate; debe cancelar la selección delas subredes públicas.

d. En Tags (Etiquetas), puede etiquetar su perfil de Fargate si lo desea. Estas etiquetas no sepropagan a otros recursos asociados con el perfil, como sus pods.

5. En la página Configure pods selection (Configurar selección de pods), escriba la siguienteinformación y elija Next (Siguiente).

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

b. (Opcional) Añada etiquetas de Kubernetes al selector que deben tener los pods del espaciode nombres especificado para que coincidan con el selector. Por ejemplo, podría añadir laetiqueta infrastructure: fargate al selector para que solo los pods del espacio denombres especificado que también tengan la etiqueta infrastructure: fargate deKubernetes coincidan con el selector.

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

(Opcional) Actualizar CoreDNSDe forma predeterminada, CoreDNS está configurado para ejecutarse en la infraestructura de AmazonEC2 en clústeres de Amazon EKS. Si solo desea ejecutar los pods en Fargate en el clúster, debe modificarla implementación de CoreDNS para eliminar la anotación eks.amazonaws.com/compute-type :ec2. También es necesario crear un perfil de Fargate para establecer los pods de CoreDNS como destino.El siguiente archivo JSON de perfil de Fargate hace esto.

Note

Si ha creado el clúster con eksctl utilizando la opción --fargate, coredns ya habráaplicado un parche para que se ejecute en Fargate y puede pasar directamente a Pasossiguientes (p. 121).

{

120

Page 128: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPasos siguientes

"fargateProfileName": "coredns", "clusterName": "dev", "podExecutionRoleArn": "arn:aws:iam::111122223333:role/AmazonEKSFargatePodExecutionRole", "subnets": [ "subnet-0b64dd020cdff3864", "subnet-00b03756df55e2b87", "subnet-0418fcb68ed294abf" ], "selectors": [ { "namespace": "kube-system", "labels": { "k8s-app": "kube-dns" } } ]}

Puede aplicar este perfil de Fargate al clúster con el siguiente comando de la AWS CLI. Primero, cree unarchivo llamado coredns.json y pegue el archivo JSON del paso anterior en él, reemplazando el textode la variable por los valores de su clúster.

aws eks create-fargate-profile --cli-input-json file://coredns.json

A continuación, utilice el siguiente comando kubectl 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 siguientes• Puede comenzar a migrar las aplicaciones existentes para que se ejecuten en Fargate con el siguiente

flujo de trabajo.1. Cree un perfil de Fargate (p. 123) que coincida con el espacio de nombres de Kubernetes y las

etiquetas de Kubernetes de su aplicación.2. 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 elespacio de nombre y el tipo de implementación para actualizar sus pods específicos.

kubectl rollout restart -n kube-system deployment coredns

• Implemente el Controlador de entrada de ALB en Amazon EKS (p. 157) (versión v1.1.4 o posterior)para permitir que los objetos de Ingress de sus pods se ejecuten en Fargate.

• Implemente el Escalador automático vertical de pods (p. 150) para los pods que se ejecutan enFargate para optimizar la CPU y la memoria utilizadas para las aplicaciones. Asegúrese de establecer lapolítica de actualización de pods en cualquiera de las opciones Auto o Recreate para garantizar unafuncionalidad correcta.

Perfil de AWS FargatePara poder programar pods en Fargate en el clúster, debe definir al menos un perfil de Fargate queespecifique qué pods debe usar Fargate cuando se lancen.

121

Page 129: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioComponentes del perfil de Fargate

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

Si un pod coincide con varios perfiles de Fargate, Amazon EKS elige una de las coincidencias al azar. Eneste caso, puede especificar qué perfil debe usar un pod añadiendo la siguiente etiqueta de Kubernetes ala especificación del pod: eks.amazonaws.com/fargate-profile: profile_name. Sin embargo, elpod debe coincidir con un selector en ese perfil para que se pueda programar en Fargate.

Al crear un perfil de Fargate, debe especificar un rol de ejecución de pod para los pods que se ejecutan enFargate mediante el perfil. Este rol se añade al control de acceso basado en roles (RBAC) de Kubernetesdel clúster para su autorización, de modo que el kubelet que se esté ejecutando en la infraestructura deFargate pueda registrarse en el clúster de Amazon EKS y aparecer en el clúster como un nodo. El rol deejecución del pod también proporciona permisos de IAM a la infraestructura de Fargate para permitir elacceso de lectura a los repositorios de imágenes de Amazon ECR. Para obtener más información, consulteRol de ejecución de pods (p. 256).

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

Note

Cualquier pod que se esté ejecutando utilizando un perfil de Fargate se detendrá y se pondrá enestado 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 deFargate se termine de eliminar antes de poder crear otros perfiles en ese clúster.

Componentes del perfil de FargateUn perfil de Fargate consta de los siguientes componentes.

{ "fargateProfileName": "", "clusterName": "", "podExecutionRoleArn": "", "subnets": [ "" ], "selectors": [ { "namespace": "", "labels": { "KeyName": "" } } ], "clientRequestToken": "", "tags": { "KeyName": "" }}

122

Page 130: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de un perfil de Fargate

Rol de ejecución de pods

Cuando el clúster crea pods en AWS Fargate, el pod necesita realizar llamadas a las API de AWS ensu nombre, por ejemplo, para extraer imágenes de contenedor de Amazon ECR. El rol de ejecución depods 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 pods para utilizarlo con los pods.Este rol se añade al control de acceso basado en roles (RBAC) de Kubernetes del clúster para suautorización, de modo que el kubelet que se esté ejecutando en la infraestructura de Fargate puedaregistrarse en el clúster de Amazon EKS y aparecer en el clúster como un nodo. Para obtener másinformación, consulte Rol de ejecución de pods (p. 256).

Subredes

Los identificadores de las subredes en las que se lanzarán los pods que utilizan este perfil. En estemomento, los pods que se ejecutan en Fargate no tienen asignadas direcciones IP públicas, por lo quesolo se aceptan subredes privadas (sin ruta directa a una gateway de Internet) para este parámetro.

Selectores

Los selectores que deben coincidir para que los pods utilicen este perfil de Fargate. Cada selectordebe tener un espacio de nombres asociado. Si lo desea, también puede especificar etiquetas paraun espacio de nombres. Puede especificar hasta cinco selectores en un perfil de Fargate. Un pod solonecesita coincidir con un selector para ejecutarse usando el perfil de Fargate.Namespace

Debe especificar un espacio de nombres para un selector. El selector solo coincide con los podscreados en este espacio de nombres, pero puede crear varios selectores que apunten a distintosespacios de nombres.

Etiquetas

Si lo desea, puede especificar etiquetas de Kubernetes que coincidan con el selector. El selectorsolo coincide con los pods que tienen todas las etiquetas especificadas en el selector.

Creación de un perfil de FargateEn este tema se explica cómo crear un perfil de Fargate. Su clúster debe admitir Fargate (comenzandocon la versión 1.14 de Kubernetes y la versión de plataforma (p. 53) eks.5). También debe haber creadoun rol de ejecución de pods para utilizarlo en su perfil de Fargate. Para obtener más información, consulteRol de ejecución de pods (p. 256). Los pods que se ejecutan en Fargate solo se admiten en subredesprivadas (con acceso de gateway NAT a servicios de AWS, pero no una ruta directa a una gateway deInternet), por lo que la VPC del clúster debe tener subredes privadas disponibles.

eksctl

Para crear un perfil de Fargate para un clúster con eksctl

En este procedimiento, se presupone que ha instalado eksctl y que su versión de eksctl es almenos 0.16.0-rc.1. Puede comprobar la versión con el comando siguiente:

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

• Cree su perfil de Fargate con el siguiente comando eksctl, reemplazando el texto de lavariable por sus propios valores. Debe especificar un espacio de nombres, pero la opción deetiquetas no es obligatoria.

123

Page 131: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEliminación de un perfil de Fargate

eksctl create fargateprofile --cluster cluster_name --name fargate_profile_name --namespace kubernetes_namespace --labels key=value

Consola de administración de AWS

Para crear un perfil de Fargate para un clúster con la Consola de administración de AWS

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Elija el clúster para el que desea crear un perfil de Fargate.3. En Fargate profiles (Perfiles de Fargate), elija Add Fargate profile (Añadir perfil de Fargate).4. En la página Configure Fargate profile (Configurar perfil de Fargate), escriba la siguiente

información y elija Next (Siguiente).

a. En Name (Nombre), escriba un nombre único para el perfil de Fargate.b. En Pod execution role (Rol de ejecución de pods), elija el rol de ejecución de pods que se va

a usar con el perfil de Fargate. Solo se muestran los roles de IAM con la entidad principal delservicio eks-fargate-pods.amazonaws.com. Si no ve ningún rol aquí, debe crear uno.Para obtener más información, consulte Rol de ejecución de pods (p. 256).

c. En Subnets (Subredes), elija las subredes que desee utilizar para los pods. De formapredeterminada, se seleccionan todas las subredes de la VPC del clúster. Solo se admitensubredes privadas para los pods que se ejecutan en Fargate; debe cancelar la selección delas subredes públicas.

d. En Tags (Etiquetas), puede etiquetar su perfil de Fargate si lo desea. Estas etiquetas no sepropagan a otros recursos asociados con el perfil, como sus pods.

5. En la página Configure pods selection (Configurar selección de pods), escriba la siguienteinformación y elija Next (Siguiente).

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

b. (Opcional) Añada etiquetas de Kubernetes al selector que deben tener los pods del espaciode nombres especificado para que coincidan con el selector. Por ejemplo, podría añadir laetiqueta infrastructure: fargate al selector para que solo los pods del espacio denombres especificado que también tengan la etiqueta infrastructure: fargate deKubernetes coincidan con el selector.

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

Eliminación de un perfil de FargateEn 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. Siesos pods coinciden con otro perfil de Fargate, se programan en Fargate con ese perfil. Si ya no coincidencon ningún perfil de Fargate entonces no están programados en Fargate y pueden permanecer comopendientes.

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

Para eliminar un perfil Fargate de un clúster

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.

124

Page 132: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioConfiguración de pods de Fargate

2. Elija el clúster del que desea eliminar el perfil de Fargate.3. Elija el perfil de Fargate que desea eliminar y, a continuación, elija Delete (Eliminar).4. En la página Delete cluster_name (Eliminar nombre_clúster), escriba el nombre del clúster y elija

Confirm (Confirmar) para eliminarlo.

Configuración de pods de FargateEn esta sección se describen algunos de los detalles de configuración únicos de los pods para ejecutarpods de Kubernetes en AWS Fargate.

Memoria y CPU de los podsKubernetes le permite definir solicitudes, una cantidad mínima de recursos de vCPU y de memoria quese asignan a cada contenedor en un pod. Kubernetes programa los pods para garantizar que al menoslos recursos solicitados para cada pod estén disponibles en el recurso informático. Para obtener másinformación, consulte Managing Compute Resources for Containers en la documentación de Kubernetes.

Cuando los pods están programados en Fargate, las reservas de vCPU y memoria dentro de laespecificación del pod determinan cuánta CPU y memoria se debe aprovisionar para el pod.

• La solicitud máxima de cualquier contenedor Init se utiliza para determinar los requisitos de vCPU y dememoria de la solicitud Init.

• Las solicitudes para todos los contenedores de larga duración se suman para determinar los requisitosde memoria y vCPU de las solicitudes de larga duración.

• El mayor de los dos valores anteriores se elige para la solicitud de vCPU y de memoria que se utilizarápara el pod.

• Fargate añade 256 MB a la reserva de memoria de cada pod para los componentes de Kubernetesnecesarios (kubelet, kube-proxy y containerd).

Fargate redondea hasta la configuración informática que se muestra a continuación que más se acerque ala suma de las solicitudes de vCPU y memoria para garantizar que los pods siempre tengan los recursosque necesitan para ejecutarse.

Si no especifica una combinación de vCPU y memoria, se utilizará la menor combinación disponible (0,25de vCPU y 0,5 GB de memoria).

La siguiente tabla muestra las combinaciones de vCPU y memoria disponibles para los pods que seejecutan en Fargate.

Valor de vCPU Valor de memoria

0,25 vCPU 0,5 GB, 1 GB, 2 GB

0,5 vCPU 1 GB, 2 GB, 3 GB, 4 GB

1 vCPU 2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB

2 vCPU Entre 4 GB y 16 GB en incrementos de 1 GB

4 vCPU Entre 8 GB y 30 GB en incrementos de 1 GB

Para obtener información sobre los precios de estas configuraciones informáticas, consulte Precios deAWS Fargate.

125

Page 133: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAlmacenamiento de Fargate

Almacenamiento de FargateCuando se aprovisiona, cada pod que se ejecuta en Fargate recibe 10 GB de almacenamiento de la capade imagen del contenedor. El almacenamiento de los pods es efímero. Después de que se detenga el pod,se elimina el almacenamiento.

126

Page 134: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioClases de almacenamiento

AlmacenamientoEn este capítulo se tratan las opciones de almacenamiento para clústeres de Amazon EKS.

El tema de Clases de almacenamiento (p. 127) utiliza el aprovisionador de almacenamiento de AmazonEBS en árbol. Para los clústeres de Kubernetes 1.14 y versiones posteriores, la Controlador de CSI deAmazon EBS (p. 128) está disponible para administrar el almacenamiento.

Note

El complemento de Amazon EBS en árbol existente sigue siendo compatible, pero al usar uncontrolador CSI, se beneficia del desacoplamiento del ciclo de lanzamiento ascendente deKubernetes y del ciclo de lanzamiento del controlador CSI. Con el tiempo, el complemento enárbol quedará obsoleto en favor del controlador CSI.

Temas• Clases de almacenamiento (p. 127)• Controlador de CSI de Amazon EBS (p. 128)• Controlador de CSI de Amazon EFS (p. 132)• Controlador de CSI de Amazon FSx for Lustre (p. 136)

Clases de almacenamientoLos clústeres de Amazon EKS que se crearon antes de la versión 1.11 de Kubernetes no se crearon conclases de almacenamiento. Debe definir las clases de almacenamiento que utilice el clúster y también unaclase de almacenamiento predeterminada para las demandas de volumen persistentes. Para obtener másinformación, consulte Storage Classes en la documentación de Kubernetes.

Note

En este tema se utiliza el aprovisionador de almacenamiento de Amazon EBS en árbol. Paralos clústeres de Kubernetes 1.14 y versiones posteriores, la Controlador de CSI de AmazonEBS (p. 128) está disponible para administrar el almacenamiento. El complemento de AmazonEBS en árbol existente sigue siendo compatible, pero al usar un controlador CSI, se beneficia deldesacoplamiento del ciclo de lanzamiento ascendente de Kubernetes y del ciclo de lanzamientodel controlador CSI. Con el tiempo, el complemento en árbol quedará obsoleto en favor delcontrolador CSI.

Para crear una clase de almacenamiento de AWS para un clúster de Amazon EKS

1. Cree un archivo de manifiesto de clase de almacenamiento de AWS para su clase dealmacenamiento. El ejemplo gp2-storage-class.yaml siguiente define una clase dealmacenamiento llamada gp2 que utiliza el tipo de volumen gp2 de Amazon EBS.

Para obtener más información acerca de las opciones disponibles para las clases de almacenamientode AWS, consulte AWS EBS en la documentación de Kubernetes.

kind: StorageClassapiVersion: storage.k8s.io/v1

127

Page 135: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon EBS

metadata: name: gp2 annotations: storageclass.kubernetes.io/is-default-class: "true"provisioner: kubernetes.io/aws-ebsparameters: type: gp2 fsType: ext4

2. Utilice kubectl para crear la clase de almacenamiento a partir del archivo de manifiesto.

kubectl create -f gp2-storage-class.yaml

Salida:

storageclass "gp2" created

Para definir una clase de almacenamiento predeterminada

1. Liste las clases de almacenamiento existentes para el clúster. Las clases de almacenamiento debenhaberse definido previamente para poder configurarlas como predeterminadas.

kubectl get storageclass

Salida:

NAME PROVISIONER AGEgp2 kubernetes.io/aws-ebs 8m

2. Elija una clase de almacenamiento y selecciónela como predeterminada definiendo la anotaciónstorageclass.kubernetes.io/is-default-class=true.

kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

Salida:

storageclass "gp2" patched

3. Compruebe que la clase de almacenamiento sea ahora la predeterminada.

kubectl get storageclass

Salida:

gp2 (default) kubernetes.io/aws-ebs 12m

Controlador de CSI de Amazon EBSEl controlador de Container Storage Interface (CSI) de Amazon EBS proporciona una interfaz CSI quepermite a los clústeres Amazon EKS administrar el ciclo de vida de los volúmenes de Amazon EBS paravolúmenes persistentes.

128

Page 136: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon EBS

En este tema se muestra cómo implementar el controlador de CSI de Amazon EBS en su clúster AmazonEKS y verificar que funciona. Le recomendamos que utilice la versión 0.4.0 del controlador.

Note

Este controlador solo es compatible con los clústeres y nodos de trabajo de Amazon EKS conversión de Kubernetes 1.14 y superior. Las características alfa del controlador de CSI de AmazonEBS no se admiten en los clústeres de Amazon EKS. El controlador está en versión Beta. Estábien probado y es compatible con Amazon EKS para uso en producción. No se eliminará lacompatibilidad con el controlador, aunque pueden cambiar algunos detalles. Si cambian losesquemas de un controlador, se proporcionarán instrucciones para migrar a la versión siguiente.

Para obtener descripciones detalladas de los parámetros disponibles y ejemplos completos quedemuestran las características del controlador, consulte el proyecto Amazon EBS Container StorageInterface (CSI) Driver en GitHub.

Para implementar el controlador de CSI de Amazon EBS en un clúster de Amazon EKS

1. Cree una política de IAM llamada Amazon_EBS_CSI_Driver para su perfil de instancia de nodo detrabajo que permita al controlador de CSI de Amazon EBS realizar llamadas a las API de AWS en sunombre. Utilice los siguientes comandos de la AWS CLI para crear la política de IAM en su cuenta deAWS. Puede ver el documento de política en GitHub.

a. Descargue el documento de política desde GitHub.

curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-ebs-csi-driver/v0.4.0/docs/example-iam-policy.json

b. Cree la política.

aws iam create-policy --policy-name Amazon_EBS_CSI_Driver \--policy-document file://example-iam-policy.json

Anote el ARN de política que se devuelve.2. Obtenga el nombre del rol de IAM para sus nodos de trabajo. Utilice el comando siguiente para

imprimir el mapa de configuración aws-auth.

kubectl -n kube-system describe configmap aws-auth

Salida:

Name: aws-authNamespace: kube-systemLabels: <none>Annotations: <none>

Data====mapRoles:----- groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/eksctl-alb-nodegroup-ng-b1f603c5-NodeInstanceRole-GKNS581EASPU username: system:node:{{EC2PrivateDNSName}}

Events: <none>

129

Page 137: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon EBS

Registre el nombre de rol para cualquier valor de rolearn que tenga asignado el gruposystem:nodes. En la salida del ejemplo anterior, el nombre del rol es eksctl-alb-nodegroup-ng-b1f603c5-NodeInstanceRole-GKNS581EASPU. Debe tener un valor para cada grupo denodos del clúster.

3. Asocie la nueva política de IAM Amazon_EBS_CSI_Driver a cada uno de los roles de IAM del nodode trabajo que identificó anteriormente con el comando siguiente, sustituyendo el texto rojo por supropio número de cuenta de AWS y nombre del rol de IAM del nodo de trabajo.

aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/Amazon_EBS_CSI_Driver \--role-name eksctl-alb-nodegroup-ng-b1f603c5-NodeInstanceRole-GKNS581EASPU

4. Implemente el controlador de CSI de Amazon EBS con el siguiente comando.Note

Este comando requiere la versión 1.14 o una versión superior de kubectl. Puede ver suversión kubectl con el siguiente comando. Para instalar o actualizar su versión kubectl,consulte Instalación de kubectl (p. 188).

kubectl version --client --short

kubectl apply -k "github.com/kubernetes-sigs/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/?ref=master"

Para implementar una aplicación de ejemplo y verificar que el controlador CSI funciona

Este procedimiento utiliza el ejemplo de aprovisionamiento de volúmenes dinámico del repositorio deGitHub del controlador Amazon EBS de la interfaz de almacenamiento de contenedores (CSI) paraconsumir un volumen Amazon EBS aprovisionado dinámicamente.

1. Clone el repositorio de GitHub del controlador Amazon EBS de la interfaz de almacenamiento decontenedores (CSI) en su sistema local.

git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git

2. Vaya al directorio de ejemplo de dynamic-provisioning.

cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/

3. Implemente la clase de almacenamiento ebs-sc, la notificación de volumen ebs-claim persistente yla aplicación de ejemplo app desde el directorio specs.

kubectl apply -f specs/

4. Describa la clase de almacenamiento ebs-sc.

kubectl describe storageclass ebs-sc

Salida:

Name: ebs-scIsDefaultClass: NoAnnotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":

130

Page 138: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon EBS

{"annotations":{},"name":"ebs-sc"},"provisioner":"ebs.csi.aws.com","volumeBindingMode":"WaitForFirstConsumer"}

Provisioner: ebs.csi.aws.comParameters: <none>AllowVolumeExpansion: <unset>MountOptions: <none>ReclaimPolicy: DeleteVolumeBindingMode: WaitForFirstConsumerEvents: <none>

Tenga en cuenta que la clase de almacenamiento utiliza el modo de enlace de volumenWaitForFirstConsumer. Esto significa que los volúmenes no se aprovisionan dinámicamente hastaque un pod realiza una reclamación de volumen persistente. Para obtener más información, consulteVolume Binding Mode en la documentación de Kubernetes.

5. Vea los pods en el espacio de nombres predeterminado y espere a que el pod app esté listo.

kubectl get pods --watch

6. Enumere los volúmenes persistentes en el espacio de nombres predeterminado. Busque un volumenpersistente con la notificación default/ebs-claim.

kubectl get pv

Salida:

NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGEpvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a 4Gi RWO Delete Bound default/ebs-claim ebs-sc 30s

7. Describa el volumen persistente.

kubectl describe pv pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a

Salida:

Name: pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5aLabels: <none>Annotations: pv.kubernetes.io/provisioned-by: ebs.csi.aws.comFinalizers: [kubernetes.io/pv-protection external-attacher/ebs-csi-aws-com]StorageClass: ebs-scStatus: BoundClaim: default/ebs-claimReclaim Policy: DeleteAccess Modes: RWOVolumeMode: FilesystemCapacity: 4GiNode Affinity: Required Terms: Term 0: topology.ebs.csi.aws.com/zone in [us-west-2a]Message:Source: Type: CSI (a Container Storage Interface (CSI) volume source) Driver: ebs.csi.aws.com VolumeHandle: vol-0d651e157c6d93445 ReadOnly: false VolumeAttributes: storage.kubernetes.io/csiProvisionerIdentity=1567792483192-8081-ebs.csi.aws.com

131

Page 139: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon EFS

Events: <none>

El ID de volumen de Amazon EBS se muestra como VolumeHandle.8. Compruebe que el pod está escribiendo correctamente los datos en el volumen.

kubectl exec -it app cat /data/out.txt

Salida:

Fri Sep 6 19:26:53 UTC 2019Fri Sep 6 19:26:58 UTC 2019Fri Sep 6 19:27:03 UTC 2019Fri Sep 6 19:27:08 UTC 2019Fri Sep 6 19:27:13 UTC 2019Fri Sep 6 19:27:18 UTC 2019

9. Cuando termine de experimentar, elimine los recursos para limpiar esta aplicación de ejemplo.

kubectl delete -f specs/

Controlador de CSI de Amazon EFSEl controlador de Container Storage Interface (CSI) de Amazon EFS proporciona una interfaz CSI quepermite a los clústeres Amazon EKS administrar el ciclo de vida de los sistemas de archivos Amazon EFS.

En este tema se muestra cómo implementar el controlador de CSI de Amazon EFS en su clúster AmazonEKS y verificar que funciona.

Note

Este controlador es compatible con los clústeres y nodos de trabajo de Amazon EKS con versión1.14 y posterior de Kubernetes. Las características alfa del controlador de CSI de AmazonEFS no se admiten en los clústeres de Amazon EKS. El controlador está en versión Beta. Estábien probado y es compatible con Amazon EKS para uso en producción. No se eliminará lacompatibilidad con el controlador, aunque pueden cambiar algunos detalles. Si cambian losesquemas de un controlador, se proporcionarán instrucciones para migrar a la versión siguiente.

Para obtener descripciones detalladas de los parámetros disponibles y ejemplos completos quedemuestran las características del controlador, consulte el proyecto Amazon EFSContainer StorageInterface (CSI) Driver en GitHub.

Para implementar el controlador CSI Amazon EFS en un clúster de Amazon EKS

• Implemente el controlador de CSI de Amazon EFS con el siguiente comando.Note

Este comando requiere la versión 1.14 o una versión superior de kubectl. Puede ver suversión kubectl con el siguiente comando. Para instalar o actualizar su versión kubectl,consulte Instalación de kubectl (p. 188).

kubectl version --client --short

kubectl apply -k "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=master"

132

Page 140: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon EFS

Para crear un sistema de archivos de Amazon EFS para el clúster Amazon EKS

1. Localice el ID de la VPC del clúster Amazon EKS. Puede encontrar este ID en la consola de AmazonEKS o puede utilizar el siguiente comando AWS CLI.

aws eks describe-cluster --name cluster_name --query "cluster.resourcesVpcConfig.vpcId" --output text

Salida:

vpc-exampledb76d3e813

2. Localice el rango de CIDR de la VPC del clúster. Puede encontrarlo en la consola de Amazon VPC opuede utilizar el siguiente comando AWS CLI.

aws ec2 describe-vpcs --vpc-ids vpc-exampledb76d3e813 --query "Vpcs[].CidrBlock" --output text

Salida:

192.168.0.0/16

3. Cree un grupo de seguridad que permita el tráfico NFS entrante para los puntos de montaje AmazonEFS.

a. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.b. En el panel de navegación izquierdo, seleccione Security Groups, Create Security Group.c. Escriba un nombre y una descripción para el grupo de seguridad y elija la VPC que está utilizando

el clúster Amazon EKS.d. Elija Create y, a continuación Close para terminar.

4. Añada una regla al grupo de seguridad para permitir el tráfico NFS entrante desde el rango de CIDRde la VPC.

a. Elija el grupo de seguridad que creó en el paso anterior.b. Elija la pestaña Inbound Rules (Reglas de entrada) y, a continuación, elija Edit rule (Editar regla).c. Elija Add Rule (Añadir regla, ), rellene los campos siguientes y, a continuación, elija Save rules

(Guardar reglas).

• Type (Tipo): NFS• Source (Fuente): Custom (Personalizada) Pegue el rango de CIDR de la VPC.• Descripción: añada una descripción, como "Permite el tráfico NFS entrante desde dentro de la

VPC".5. Cree el sistema de archivos Amazon EFS para el clúster Amazon EKS.

a. Abra la consola de Amazon Elastic File System en https://console.aws.amazon.com/efs/.b. Seleccione Create file system (Crear sistema de archivos).c. En la página Configure file system access (Configurar acceso al sistema de archivos), elija la VPC

que está utilizando el clúster Amazon EKS.d. En Security groups (Grupos de seguridad), añada el grupo de seguridad que creó en el paso

anterior a cada destino de montaje y elija Next step(Paso siguiente).e. Configure los ajustes opcionales para su sistema de archivos y, a continuación, elija Next step

(Paso siguiente) y Create File System (Crear sistema de archivos) para finalizar.

133

Page 141: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon EFS

Important

De forma predeterminada, los nuevos sistemas de archivos Amazon EFS son propiedadde root:root,y solo el usuario root (UID 0) tiene permisos de lectura, escritura yejecución. Si los contenedores no se ejecutan como root, debe cambiar los permisosdel sistema de archivos Amazon EFS para permitir a otros usuarios modificar el sistemade archivos. Para obtener más información, consulte Working with Users, Groups, andPermissions at the Network File System (NFS) Level en laGuía del usuario de AmazonElastic File System.

Para implementar una aplicación de ejemplo y verificar que el controlador CSI funciona

Este procedimiento utiliza el ejemplo Multiple Pods Read Write Many del repositorio de GitHub delAmazon EFS Container Storage Interface (CSI) Driver para consumir un volumen Amazon EFSpersistente aprovisionado estáticamente y obtener acceso a él desde varios pods con el modo de accesoReadWriteMany.

1. Clone el repositorio de GitHub del Amazon EFSContainer Storage Interface (CSI) Driver en su sistemalocal.

git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git

2. Vaya al directorio de ejemplo multiple_pods.

cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/

3. Recupere el ID del sistema de archivos Amazon EFS. Puede encontrarlo en la consola de AmazonEFS o utilizar el siguiente comando AWS CLI.

aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text

Salida:

fs-582a03f3

4. Edite el archivo specs/pv.yaml y sustituya el valor volumeHandle por el ID del sistema dearchivos Amazon EFS.

apiVersion: v1kind: PersistentVolumemetadata: name: efs-pvspec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: efs-sc csi: driver: efs.csi.aws.com volumeHandle: fs-582a03f3

134

Page 142: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon EFS

Note

Dado que Amazon EFS es un sistema de archivos elástico, no aplica ningún límite decapacidad del sistema de archivos. El valor de capacidad de almacenamiento real envolúmenes persistentes y notificaciones de volúmenes persistentes no se utiliza al crear elsistema de archivos. Sin embargo, dado que la capacidad de almacenamiento es un campoobligatorio en Kubernetes, debe especificar un valor válido, como, 5Gi en este ejemplo. Estevalor no limita el tamaño de su sistema de archivos Amazon EFS.

5. Implemente la clase de almacenamiento efs-sc, la notificación de volumen persistente efs-claim,el volumen persistente efs-pv y las aplicaciones de muestra app1 y app2 desde el specs directorio.

kubectl apply -f specs/

6. Vea los pods en el espacio de nombres predeterminado y espere a que los pods app1 y app2 esténlistos.

kubectl get pods --watch

7. Enumere los volúmenes persistentes en el espacio de nombres predeterminado. Busque un volumenpersistente con la notificación default/efs-claim.

kubectl get pv

Salida:

NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGEefs-pv 5Gi RWX Retain Bound default/efs-claim efs-sc 2m50s

8. Describa el volumen persistente.

kubectl describe pv efs-pv

Salida:

Name: efs-pvLabels: <none>Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"PersistentVolume","metadata":{"annotations":{},"name":"efs-pv"},"spec":{"accessModes":["ReadWriteMany"],"capaci... pv.kubernetes.io/bound-by-controller: yesFinalizers: [kubernetes.io/pv-protection]StorageClass: efs-scStatus: BoundClaim: default/efs-claimReclaim Policy: RetainAccess Modes: RWXVolumeMode: FilesystemCapacity: 5GiNode Affinity: <none>Message:Source: Type: CSI (a Container Storage Interface (CSI) volume source) Driver: efs.csi.aws.com VolumeHandle: fs-582a03f3 ReadOnly: false VolumeAttributes: <none>

135

Page 143: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon FSx for Lustre

Events: <none>

El ID del sistema de archivos Amazon EFS se muestra como VolumeHandle.9. Compruebe que el pod app1 está escribiendo correctamente los datos en el volumen.

kubectl exec -ti app1 -- tail /data/out1.txt

Salida:

Wed Sep 18 20:30:48 UTC 2019Wed Sep 18 20:30:53 UTC 2019Wed Sep 18 20:30:58 UTC 2019Wed Sep 18 20:31:03 UTC 2019Wed Sep 18 20:31:08 UTC 2019Wed Sep 18 20:31:13 UTC 2019

10. Compruebe que el pod app2 muestra los mismos datos en el volumen.

kubectl exec -ti app2 -- tail /data/out1.txt

Salida:

Wed Sep 18 20:30:48 UTC 2019Wed Sep 18 20:30:53 UTC 2019Wed Sep 18 20:30:58 UTC 2019Wed Sep 18 20:31:03 UTC 2019Wed Sep 18 20:31:08 UTC 2019Wed Sep 18 20:31:13 UTC 2019

11. Cuando termine de experimentar, elimine los recursos para limpiar esta aplicación de ejemplo.

kubectl delete -f specs/

Controlador de CSI de Amazon FSx for LustreEl controlador de Container Storage Interface (CSI) de Amazon FSx for Lustre proporciona una interfazCSI que permite a los clústeres de Amazon EKS administrar el ciclo de vida de los sistemas de archivos deAmazon FSx for Lustre.

En este tema se muestra cómo implementar el controlador de CSI de Amazon FSx for Lustre en su clústerde Amazon EKS y verificar que funciona. Le recomendamos que utilice la versión 0.2.0 del controlador.

Note

Este controlador es compatible con los clústeres y nodos de trabajo de Amazon EKS con versión1.15 y posterior de Kubernetes. Las características alfa del controlador de CSI de Amazon FSxfor Lustre no se admiten en los clústeres de Amazon EKS. El controlador está en versión Beta.Está bien probado y es compatible con Amazon EKS para uso en producción. No se eliminarála compatibilidad con el controlador, aunque pueden cambiar algunos detalles. Si cambian losesquemas de un controlador, se proporcionarán instrucciones para migrar a la versión siguiente.

Para obtener descripciones detalladas de los parámetros disponibles y ejemplos completos quedemuestran las características del controlador, consulte el proyecto Amazon FSx for Lustre ContainerStorage Interface (CSI) en GitHub.

136

Page 144: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon FSx for Lustre

Requisitos previos

Debe tener:

• Versión 1.18.17 o posterior de la AWS CLI instalada. Puede comprobar su versión instalada actualmentecon el comando aws --version. Para instalar o actualizar la AWS CLI, consulte Installing the AWSCLI (Instalación de la CLI de AWS).

• Un clúster de Amazon EKS existente. Si no dispone de un clúster, consulte ??? (p. 3) para crear uno.• Versión 0.16.0-rc.1 o posterior de eksctl instalada. Puede comprobar su versión instalada actualmente

con el comando eksctl version. Para instalar o actualizar eksctl, consulte Instalación oactualización de eksctl (p. 204).

• La versión más reciente de kubectl instalada que se alinea con la versión de su clúster. Puedecomprobar su versión instalada actualmente con el comando kubectl version --short --client. Para obtener más información, consulte Instalación de kubectl (p. 188).

Para implementar el controlador de CSI de Amazon FSx for Lustre en un clúster de Amazon EKS

1. Cree un proveedor OIDC de AWS Identity and Access Management y asócielo con su clúster.

eksctl utils associate-iam-oidc-provider \ --region us-west-2 \ --cluster prod \ --approve

2. Cree una cuenta de servicio y política de IAM que permita al controlador realizar llamadas a las API deAWS en su nombre.

a. Copie el siguiente texto y guárdelo en un archivo llamado fsx-csi-driver.json.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iam:CreateServiceLinkedRole", "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource":"arn:aws:iam::*:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/*" }, { "Action":"iam:CreateServiceLinkedRole", "Effect":"Allow", "Resource":"*", "Condition":{ "StringLike":{ "iam:AWSServiceName":[ "fsx.amazonaws.com" ] } } }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "fsx:CreateFileSystem", "fsx:DeleteFileSystem",

137

Page 145: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon FSx for Lustre

"fsx:DescribeFileSystems" ], "Resource":[ "*" ] } ]}

b. Cree la política.

aws iam create-policy \ --policy-name Amazon_FSx_Lustre_CSI_Driver \ --policy-document file://fsx-csi-driver.json

Anote el nombre de recurso de Amazon (ARN) de la política que se devuelve.3. Cree una cuenta de servicio de Kubernetes para el controlador y asigne la política a la cuenta de

servicio. Reemplazar el ARN de la política por el ARN devuelto en el paso anterior.

eksctl create iamserviceaccount \ --region us-west-2 \ --name fsx-csi-controller-sa \ --namespace kube-system \ --cluster prod \ --attach-policy-arn arn:aws:iam::111122223333:policy/Amazon_FSx_Lustre_CSI_Driver \ --approve

Salida prevista:

[ℹ] eksctl version 0.11.0[ℹ] using region us-west-2[ℹ] 1 iamserviceaccount (kube-system/fsx-csi-controller-sa) was included (based on the include/exclude rules)[!] serviceaccounts that exists in Kubernetes will be excluded, use --override-existing-serviceaccounts to override[ℹ] 1 task: { 2 sequential sub-tasks: { create IAM role for serviceaccount "kube-system/fsx-csi-controller-sa", create serviceaccount "kube-system/fsx-csi-controller-sa" } }[ℹ] building iamserviceaccount stack "eksctl-prod-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa"[ℹ] deploying stack "eksctl-prod-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa"[ℹ] created serviceaccount "kube-system/fsx-csi-controller-sa"

Apunte el nombre de la pila de AWS CloudFormation que se implementó. En la salida de ejemploanterior, la pila se denomina eksctl-prod-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa.

4. Apunte el ARN del rol para el rol que se creó.

a. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.b. Asegúrese de que la consola esté configurada en la región en la que creó el rol de IAM y, a

continuación, seleccione Stacks (Pilas).c. Seleccione la pila denominada eksctl-prod-addon-iamserviceaccount-kube-system-

fsx-csi-controller-sa.d. Seleccione la pestaña Outputs (Salidas). El Role ARN (ARN del rol) aparece en la página

Output(1) (Salida)(1) .5. Implemente el controlador con el siguiente comando.

138

Page 146: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon FSx for Lustre

kubectl apply -k github.com/kubernetes-sigs/aws-fsx-csi-driver/deploy/kubernetes/overlays/stable/?ref=master

Salida prevista

Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl applyserviceaccount/fsx-csi-controller-sa configuredclusterrole.rbac.authorization.k8s.io/fsx-csi-external-provisioner-role createdclusterrolebinding.rbac.authorization.k8s.io/fsx-csi-external-provisioner-binding createddeployment.apps/fsx-csi-controller createddaemonset.apps/fsx-csi-node createdcsidriver.storage.k8s.io/fsx.csi.aws.com created

6. Parche la implementación del controlador para añadir la cuenta de servicio que creó en el paso 3reemplazando el ARN por el ARN que anotó en el paso 4.

kubectl annotate serviceaccount -n kube-system fsx-csi-controller-sa \ eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/eksctl-prod-addon-iamserviceaccount-kube-sys-Role1-NPFTLHJ5PJF5

Para implementar un tipo de almacenamiento de Kubernetes, una notificación de volumenpersistente y una aplicación de muestra para comprobar que el controlador de CSI estáfuncionando

Este procedimiento utiliza el aprovisionamiento dinámico de volúmenes para Amazon S3 del repositorio deGitHub del controlador de la interfaz de almacenamiento en contenedores (CSI) de Amazon FSx for Lustrepara consumir un volumen de Amazon FSx for Lustre aprovisionado dinámicamente.

1. Cree un bucket de Amazon S3 y una carpeta dentro de él denominada export creando y copiando unarchivo en el bucket.

aws s3 mb s3://fsx-csiecho test-file >> testfileaws s3 cp testfile s3://fsx-csi/export/testfile

2. Descargue el manifiesto de storageclass con el siguiente comando.

curl -o storageclass.yaml https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning_s3/specs/storageclass.yaml

3. Edite el archivo y reemplace los valores alternate-colored existentes por los suyos propios.

parameters: subnetId: subnet-056da83524edbe641 securityGroupIds: sg-086f61ea73388fb6b s3ImportPath: s3://ml-training-data-000 s3ExportPath: s3://ml-training-data-000/export

• subnetId: el ID de subred en el que se debe crear el sistema de archivos de Amazon FSx for Lustre.Amazon FSx for Lustre no se admite en todas las zonas de disponibilidad. Abra la consola deAmazon FSx for Lustre en https://console.aws.amazon.com/fsx/ para confirmar que la subred quedesea utilizar se encuentra en una zona de disponibilidad compatible. La subred puede incluirsus nodos de trabajo o puede ser una subred o VPC diferente. Si la subred que especifica no es

139

Page 147: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon FSx for Lustre

la misma subred en la que tiene los nodos de trabajo, las VPC deben estar conectadas y debeasegurarse de que tiene abiertos los puertos necesarios en los grupos de seguridad.

• securityGroupIds: el ID de grupo de seguridad para los nodos de trabajo.• s3ImportPath: el repositorio de datos de Amazon Simple Storage Service desde el que desea copiar

datos en el volumen persistente. Especifique el bucket fsx-csi que creó en el paso 1.• s3ExportPath: el repositorio de datos de Amazon S3 al que desea exportar archivos nuevos o

modificados. Especifique la carpeta fsx-csi/export que creó en el paso 1.

Note

El bucket de Amazon S3 para s3ImportPath y s3ExportPath debe ser el mismo; de locontrario, el controlador no puede crear el sistema de archivos de Amazon FSx for Lustre.s3ImportPath puede ser independiente. Se creará automáticamente una ruta aleatoriacomo s3://ml-training-data-000/FSxLustre20190308T012310Z. s3ExportPathno se puede utilizar sin especificar un valor para S3ImportPath.

4. Cree el storageclass.

kubectl apply -f storageclass.yaml

5. Descargue el manifiesto de notificación de volumen persistente.

curl -o claim.yaml https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning_s3/specs/claim.yaml

6. (Opcional) Edite el archivo claim.yaml cambiando el valor de la siguiente línea a 2400 GiB o unmúltiplo de 3600 GiB para cumplir con sus requisitos de almacenamiento.

storage: 1200Gi

7. Cree la notificación de volumen persistente.

kubectl apply -f claim.yaml

8. Confirme que el sistema de archivos está aprovisionado.

kubectl get pvc

Salida prevista.

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEfsx-claim Bound pvc-15dad3c1-2365-11ea-a836-02468c18769e 1200Gi RWX fsx-sc 7m37s

Note

El STATUS puede aparecer como Pending durante 5-10 minutos, antes de cambiar a Bound.No continúe con el siguiente paso hasta que el STATUS sea Bound.

9. Implemente la aplicación de muestra.

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning_s3/specs/pod.yaml

10. Compruebe que la aplicación de muestra se está ejecutando.140

Page 148: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de CSI de Amazon FSx for Lustre

kubectl get pods

Salida prevista

NAME READY STATUS RESTARTS AGEfsx-app 1/1 Running 0 8s

Acceso a archivos de Amazon S3 desde el sistema de archivos de Amazon FSx for Lustre

Si solo desea importar datos y leerlos sin realizar ninguna modificación ni creación, entonces no necesitaun valor para s3ExportPath en su archivo de storageclass.yaml. Compruebe que la aplicación demuestra haya escrito los datos en el sistema de archivos de Amazon FSx for Lustre.

kubectl exec -it fsx-app ls /data

Salida prevista.

export out.txt

La aplicación de muestra escribió el archivo out.txt en el sistema de archivos.

Archivar archivos en s3ExportPath

Con los archivos nuevos y modificados, puede utilizar la herramienta de espacio de usuario de Lustre paraarchivar de nuevo los datos en Amazon S3 con el valor especificado para s3ExportPath.

1. Exporte de nuevo el archivo a Amazon S3.

kubectl exec -ti fsx-app -- lfs hsm_archive /data/out.txt

Note

• Los archivos nuevos no se sincronizan con Amazon S3 automáticamente. Para sincronizararchivos con la s3ExportPath, debe instalar el cliente de Lustre en su imagen decontenedor y ejecutar manualmente el comando lfs hsm_archive. El contenedor debeejecutarse en modo privilegiado con la capacidad de CAP_SYS_ADMIN.

• En este ejemplo se utiliza un enlace de ciclo de vida para instalar el cliente de Lustre confines ilustrativos. Un enfoque normal consiste en construir una imagen de contenedor conel cliente de Lustre.

2. Confirme que el archivo out.txt se escribió en la carpeta s3ExportPath de Amazon S3.

aws s3 ls fsx-csi/export/

Salida prevista

2019-12-23 12:11:35 4553 out.txt2019-12-23 11:41:21 10 testfile

141

Page 149: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEscalador automático del clúster

AutoescaladoEste capítulo comprende varias configuraciones de autoescalado para su clúster de Amazon EKS. Hayvarios tipos de autoescalado de Kubernetes compatibles con Amazon EKS:

• Escalador automático del clúster (p. 142) — El escalador automático del clúster de Kubernetes ajustaautomáticamente el número de nodos de su clúster cuando los pods no se pueden ejecutar por falta derecursos o cuando los nodos del clúster están infrautilizados y sus pods se pueden reprogramar a otrosnodos del clúster.

• Escalador automático de pods horizontales (p. 146) — El escalador automático horizontal de podsde Kubernetes escala automáticamente el número de pods en una implementación, un controlador dereplicación o un conjunto de réplicas en función del uso de la CPU de ese recurso.

• Escalador automático vertical de pods (p. 150) — El escalador automático vertical de pods deKubernetes ajusta automáticamente las reservas de CPU y memoria para sus pods para ayudar a"ajustar correctamente el tamaño" de sus aplicaciones. Esto puede ayudarle a utilizar mejor los recursosdel clúster y a liberar CPU y memoria para otros pods.

Escalador automático del clústerEl escalador automático del clúster de Kubernetes ajusta automáticamente el número de nodos delclúster cuando los pods no se pueden ejecutar por falta de recursos o cuando los nodos del clúster estáninfrautilizados y sus pods se pueden reprogramar en otros nodos del clúster.

En este tema se muestra cómo implementar el escalador automático del clúster en su clúster de AmazonEKS y cómo configurarlo para modificar sus grupos de Amazon EC2 Auto Scaling. El escalador automáticodel clúster modifica sus grupos de nodos de trabajo para que escalen de forma ascendente cuandonecesite más recursos y de forma descendente cuando tenga recursos infrautilizados.

Crear un clúster de Amazon EKSEsta sección le ayuda a crear un clúster y un grupo o grupos de nodos. Si ya tiene un clúster, puedeavanzar hasta el paso Consideraciones del grupo de nodos del escalador automático del clúster (p. 144).

Si está ejecutando una aplicación con estado en varias zonas de disponibilidad respaldadas porvolúmenes Amazon EBS y utilizando el Escalador automático del clúster (p. 142) de Kubernetes, debeconfigurar varios grupos de nodos, cada uno enfocado a una sola zona de disponibilidad. Además, debehabilitar la función --balance-similar-node-groups. De lo contrario, puede crear un único grupo denodos que abarque varias zonas de disponibilidad.

Elija uno de los procedimientos de creación de clústeres que se indican a continuación que satisfaga susrequisitos.

Para crear un clúster con un único grupo administrado que abarque varias zonas de disponibilidad

• Cree un clúster Amazon EKS con un único grupo de nodos administrados con el siguiente comandoeksctl. Para obtener más información, consulte Creación de un clúster de Amazon EKS (p. 23).Sustituya el texto de la variable por sus propios valores.

eksctl create cluster --name my-cluster --version 1.15 --managed --asg-access

Salida:

[ℹ] eksctl version[ℹ] using region us-west-2

142

Page 150: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCrear un clúster de Amazon EKS

[ℹ] setting availability zones to [us-west-2a us-west-2b us-west-2c][ℹ] subnets for us-west-2a - public:192.168.0.0/19 private:192.168.96.0/19[ℹ] subnets for us-west-2b - public:192.168.32.0/19 private:192.168.128.0/19[ℹ] subnets for us-west-2c - public:192.168.64.0/19 private:192.168.160.0/19[ℹ] using Kubernetes version 1.14[ℹ] creating EKS cluster "my-cluster" in "us-west-2" region[ℹ] will create 2 separate CloudFormation stacks for cluster itself and the initial managed nodegroup[ℹ] if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-west-2 --cluster=my-cluster'[ℹ] CloudWatch logging will not be enabled for cluster "my-cluster" in "us-west-2"[ℹ] you can enable it with 'eksctl utils update-cluster-logging --region=us-west-2 --cluster=my-cluster'[ℹ] Kubernetes API endpoint access will use default of {publicAccess=true, privateAccess=false} for cluster "my-cluster" in "us-west-2"[ℹ] 2 sequential tasks: { create cluster control plane "my-cluster", create managed nodegroup "ng-6bcca56a" }[ℹ] building cluster stack "eksctl-my-cluster-cluster"[ℹ] deploying stack "eksctl-my-cluster-cluster"[ℹ] deploying stack "eksctl-my-cluster-nodegroup-ng-6bcca56a"[ℹ] all EKS cluster resources for "my-cluster" have been created[ℹ] saved kubeconfig as "/Users/ericn/.kube/config"[ℹ] nodegroup "ng-6bcca56a" has 2 node(s)[ℹ] node "ip-192-168-28-68.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-61-153.us-west-2.compute.internal" is ready[ℹ] waiting for at least 2 node(s) to become ready in "ng-6bcca56a"[ℹ] nodegroup "ng-6bcca56a" has 2 node(s)[ℹ] node "ip-192-168-28-68.us-west-2.compute.internal" is ready[ℹ] node "ip-192-168-61-153.us-west-2.compute.internal" is ready[ℹ] kubectl command should work with "/Users/ericn/.kube/config", try 'kubectl get nodes'[ℹ] EKS cluster "my-cluster" in "us-west-2" region is ready

Para crear un clúster con un grupo de nodos administrados dedicado para cada zona dedisponibilidad

1. Cree un clúster de Amazon EKS sin grupos de nodos con el siguiente comando de eksctl. Paraobtener más información, consulte Creación de un clúster de Amazon EKS (p. 23). Anote las zonas dedisponibilidad en las que se crea el clúster. Utilizará estas zonas de disponibilidad al crear sus gruposde nodos. Sustituya el texto en rojo por sus propios valores.

eksctl create cluster --name my-cluster --version 1.15 --without-nodegroup

Salida:

[ℹ] using region us-west-2[ℹ] setting availability zones to [us-west-2a us-west-2c us-west-2b][ℹ] subnets for us-west-2a - public:192.168.0.0/19 private:192.168.96.0/19[ℹ] subnets for us-west-2c - public:192.168.32.0/19 private:192.168.128.0/19[ℹ] subnets for us-west-2b - public:192.168.64.0/19 private:192.168.160.0/19[ℹ] using Kubernetes version 1.15[ℹ] creating EKS cluster "my-cluster" in "us-west-2" region[ℹ] will create a CloudFormation stack for cluster itself and 0 nodegroup stack(s)[ℹ] if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-west-2 --name=my-cluster'[ℹ] CloudWatch logging will not be enabled for cluster "my-cluster" in "us-west-2"[ℹ] you can enable it with 'eksctl utils update-cluster-logging --region=us-west-2 --name=my-cluster'[ℹ] 1 task: { create cluster control plane "my-cluster" }[ℹ] building cluster stack "eksctl-my-cluster-cluster"[ℹ] deploying stack "eksctl-my-cluster-cluster"

143

Page 151: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioConsideraciones del grupo de nodosdel escalador automático del clúster

[ℹ] all EKS cluster resource for "my-cluster" had been created[ℹ] saved kubeconfig as "/Users/ericn/.kube/config"[ℹ] kubectl command should work with "/Users/ericn/.kube/config", try 'kubectl get nodes'[ℹ] EKS cluster "my-cluster" in "us-west-2" region is ready

Este clúster se creó en las siguientes zonas de disponibilidad: us-west-2a us-west-2c us-west-2b.

2. Para cada zona de disponibilidad del clúster, utilice el siguiente comando de eksctl para crear ungrupo de nodos. Sustituya el texto de la variable por sus propios valores. Este comando creaun grupo de Auto Scaling con un recuento mínimo de uno y un recuento máximo de diez.

eksctl create nodegroup --cluster my-cluster --node-zones us-west-2a --name us-west-2a --asg-access --nodes-min 1 --nodes 5 --nodes-max 10 --managed

Consideraciones del grupo de nodos del escaladorautomático del clústerEl escalador automático del clúster requiere consideraciones adicionales de etiquetado de recursos y deIAM que se explican en esta sección.

Política de IAM de grupo de nodosEl escalador automático requiere los siguientes permisos de IAM para realizar llamadas a las API de AWSen su nombre.

Si utilizó los comandos de eksctl anteriores para crear los grupos de nodos, estos permisos seproporcionan automáticamente y se asocian a los roles de IAM de su nodo de trabajo. Si no utilizóeksctl, debe crear una política de IAM con el siguiente documento y adjuntarla a sus roles de IAM delnodo de trabajo. Para obtener más información, consulte Modificación de una función en la Guía delusuario de IAM.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeLaunchConfigurations", "autoscaling:DescribeTags", "autoscaling:SetDesiredCapacity", "autoscaling:TerminateInstanceInAutoScalingGroup", "ec2:DescribeLaunchTemplateVersions" ], "Resource": "*", "Effect": "Allow" } ]}

Auto Scaling Etiquetas del grupoEl escalador automático del clúster requiere las siguientes etiquetas en su grupo de nodos de Auto Scalingpara que se puedan detectar automáticamente.

144

Page 152: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioImplementación del escalador automático del clúster

Si utilizó los comandos de eksctl anteriores para crear sus grupos de nodos, estas etiquetas se aplicaránautomáticamente. De lo contrario, debe etiquetar manualmente sus grupos de Auto Scaling con lassiguientes etiquetas. Para obtener más información, consulte Etiquetado de los recursos de Amazon EC2en la Guía del usuario de Amazon EC2 para instancias de Linux.

Key Valor

k8s.io/cluster-autoscaler/<cluster-name>

owned

k8s.io/cluster-autoscaler/enabled true

Implementación del escalador automático del clústerPara implementar el escalador automático del clúster

1. Implemente el escalador automático del clúster en su clúster con el siguiente comando.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml

2. Añada la anotación de cluster-autoscaler.kubernetes.io/safe-to-evict a laimplementación con el siguiente comando.

kubectl -n kube-system annotate deployment.apps/cluster-autoscaler cluster-autoscaler.kubernetes.io/safe-to-evict="false"

3. Edite la implementación del escalador automático del clúster con el siguiente comando.

kubectl -n kube-system edit deployment.apps/cluster-autoscaler

Edite el comando del contenedor de cluster-autoscaler para sustituir <YOUR CLUSTER NAME>por el nombre del clúster y, a continuación, añada las siguientes opciones.

• -balance-similar-node-groups

• -skip-nodes-with-system-pods = false

spec: containers: - command: - ./cluster-autoscaler - --v=4 - --stderrthreshold=info - --cloud-provider=aws - --skip-nodes-with-local-storage=false - --expander=least-waste - --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/<YOUR CLUSTER NAME> - --balance-similar-node-groups - --skip-nodes-with-system-pods=false

Guarde y cierre el archivo para aplicar los cambios.4. Abra la página de versiones del escalador automático del clúster en un navegador web y busque la

versión de escalador automático del clúster que coincida con la versión principal y secundaria deKubernetes de su clúster. Por ejemplo, si la versión de Kubernetes del clúster es 1.15, busque la

145

Page 153: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioConsulte los registros del escalador automático del clúster

versión del escalador automático del clúster que comienza por 1.14. Registre el número de versiónsemántica (1.15.n) de esa versión para utilizarlo en el siguiente paso.

5. Establezca la etiqueta de la imagen del escalador automático del clúster en la versión que haregistrado en el paso anterior con el siguiente comando. Sustituya el texto en rojo por sus propiosvalores.

kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=k8s.gcr.io/cluster-autoscaler:v1.15.7

Consulte los registros del escalador automático delclústerDespués de haber implementado el escalador automático del clúster, podrá ver los registros y comprobarque está monitorizando la carga de su clúster.

Consulte los registros del escalador automático del clúster con el siguiente comando.

kubectl -n kube-system logs -f deployment.apps/cluster-autoscaler

Salida:

I0926 23:15:55.165842 1 static_autoscaler.go:138] Starting main loopI0926 23:15:55.166279 1 utils.go:595] No pod using affinity / antiaffinity found in cluster, disabling affinity predicate for this loopI0926 23:15:55.166293 1 static_autoscaler.go:294] Filtering out schedulablesI0926 23:15:55.166330 1 static_autoscaler.go:311] No schedulable podsI0926 23:15:55.166338 1 static_autoscaler.go:319] No unschedulable podsI0926 23:15:55.166345 1 static_autoscaler.go:366] Calculating unneeded nodesI0926 23:15:55.166357 1 utils.go:552] Skipping ip-192-168-3-111.us-west-2.compute.internal - node group min size reachedI0926 23:15:55.166365 1 utils.go:552] Skipping ip-192-168-71-83.us-west-2.compute.internal - node group min size reachedI0926 23:15:55.166373 1 utils.go:552] Skipping ip-192-168-60-191.us-west-2.compute.internal - node group min size reachedI0926 23:15:55.166435 1 static_autoscaler.go:393] Scale down status: unneededOnly=false lastScaleUpTime=2019-09-26 21:42:40.908059094 ...I0926 23:15:55.166458 1 static_autoscaler.go:403] Starting scale downI0926 23:15:55.166488 1 scale_down.go:706] No candidates for scale down

Escalador automático de pods horizontalesEl escalador automático de pods horizontales (Horizontal Pod Autoscaler) de Kubernetes escalaautomáticamente el número de pods en una implementación, un controlador de replicación o un conjuntode réplicas en función del uso de la CPU de ese recurso. Esto puede ayudar a sus aplicaciones a escalarde forma ascendente para satisfacer el aumento de la demanda o descendente cuando no se necesitanrecursos, liberando así los nodos de trabajo para otras aplicaciones. Cuando se establece un porcentajede utilización de CPU objetivo, el escalador automático de pods horizontales escala su aplicación de formaascendente o descendente para intentar alcanzar ese objetivo.

El escalador automático de pods horizontales es un recurso de API estándar en Kubernetes quesimplemente requiere que un origen de métricas (como el servidor de métricas de Kubernetes) estéinstalado en el clúster Amazon EKS para funcionar. No es necesario implementar ni instalar el escaladorautomático de pods horizontales en su clúster para comenzar a escalar sus aplicaciones. Para obtenermás información, consulte Horizontal Pod Autoscaler en la documentación de Kubernetes.

146

Page 154: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación del servidor de métricas

Utilice este tema para preparar el escalador automático de pods horizontales para su clúster Amazon EKSy para verificar que funciona con una aplicación de ejemplo.

Note

Este tema se explica en Horizontal Pod Autoscaler Walkthrough en la documentación deKubernetes.

Instalación del servidor de métricasEl servidor de métricas de Kubernetes es un agregador de datos de uso de recursos en el clúster. Elservidor de métricas de no se implementa de forma predeterminada en clústeres de Amazon EKS, peroproporciona métricas requeridas por el escalador automático de pods horizontales. En este tema se explicacómo implementar el servidor de métricas de Kubernetes en el clúster de Amazon EKS.

Si ya ha implementado el servidor de métricas en el clúster, puede pasar a la siguiente sección. Puedecomprobar el servidor de métricas con el siguiente comando.

kubectl -n kube-system get deployment/metrics-server

Si este comando devuelve un error NotFound, debe implementar el servidor de métricas en el clústerAmazon EKS. Seleccione la pestaña correspondiente al método de instalación que prefiera.

curl and jq

Para instalar el metrics-server desde GitHub en un clúster de Amazon EKS con curl yjq

Si tiene un sistema MacOS o Linux con curl, tar, gzip y el analizador de JSON jq instalados,puede descargar, extraer e instalar la última versión con los siguientes comandos. De lo contrario,utilice el siguiente procedimiento para descargar la última versión con un navegador web.

1. Abra una ventana de terminal y vaya al directorio en el que desea descargar la última versión delmetrics-server.

2. Copie y pegue los siguientes comandos en la ventana de terminal y, a continuación, escriba Enter(Intro) para ejecutarlos. Estos comandos descargan la última versión. Extráigala y aplique losmanifiestos de versión 1.8 o superior a su clúster.

DOWNLOAD_URL=$(curl -Ls "https://api.github.com/repos/kubernetes-sigs/metrics-server/releases/latest" | jq -r .tarball_url)DOWNLOAD_VERSION=$(grep -o '[^/v]*$' <<< $DOWNLOAD_URL)curl -Ls $DOWNLOAD_URL -o metrics-server-$DOWNLOAD_VERSION.tar.gzmkdir metrics-server-$DOWNLOAD_VERSIONtar -xzf metrics-server-$DOWNLOAD_VERSION.tar.gz --directory metrics-server-$DOWNLOAD_VERSION --strip-components 1kubectl apply -f metrics-server-$DOWNLOAD_VERSION/deploy/1.8+/

3. Compruebe que la implementación de metrics-server está ejecutando la cantidad deseada depods con el siguiente comando:

kubectl get deployment metrics-server -n kube-system

Salida:

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmetrics-server 1 1 1 1 56m

147

Page 155: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEjecutar una aplicación de prueba del

escalador automático de pods horizontales

Web browser

Para instalar el metrics-server desde GitHub en un clúster de Amazon EKS con unnavegador web

1. Descargue y extraiga la última versión del código del servidor de métricas de GitHub.

a. Vaya a la página de la última versión del proyecto metrics-server en GitHub (https://github.com/kubernetes-sigs/metrics-server/releases/latest) y, a continuación, elija un archivode código fuente de la última versión para descargarlo.

Note

Si va a descargar a un servidor remoto, puede utilizar el siguiente comando wgetsustituyendo el texto de color alternativo por el número de versión másreciente.

wget -O v0.3.6.tar.gz https://codeload.github.com/kubernetes-sigs/metrics-server/tar.gz/v0.3.6

b. Vaya a su carpeta de descargas y extraiga el archivo de código fuente. Por ejemplo, sidescargó el archivo .tar.gz, utilice el siguiente comando para extraerlo (sustituyendo suversión de lanzamiento).

tar -xzf v0.3.6.tar.gz

2. Aplique todos los manifiestos YAML en el directorio de metrics-server-0.3.6/deploy/1.8+(sustituyendo su versión de lanzamiento).

kubectl apply -f metrics-server-0.3.6/deploy/1.8+/

3. Compruebe que la implementación de metrics-server está ejecutando la cantidad deseada depods con el siguiente comando:

kubectl get deployment metrics-server -n kube-system

Salida:

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmetrics-server 1 1 1 1 56m

Ejecutar una aplicación de prueba del escaladorautomático de pods horizontalesEn esta sección, implementará una aplicación de ejemplo para verificar que el escalador automático depods horizontales está funcionando.

Note

Este ejemplo se explica en Horizontal Pod Autoscaler Walkthrough en la documentación deKubernetes.

Para probar la instalación del escalador automático de pods horizontales

1. Cree una aplicación de servidor web Apache sencilla con el siguiente comando.

148

Page 156: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEjecutar una aplicación de prueba del

escalador automático de pods horizontales

kubectl run httpd --image=httpd --requests=cpu=100m --limits=cpu=200m --expose --port=80

Este pod de servidor web Apache tiene 100 milicpu y 200 megabytes de memoria, y sirve en el puerto80.

2. Cree un recurso del escalador automático de pods horizontales para la implementación de httpd.

kubectl autoscale deployment httpd --cpu-percent=50 --min=1 --max=10

Este comando crea un escalador automático que tiene como objetivo el 50 por ciento de utilizaciónde la CPU para la implementación, con un mínimo de un pod y un máximo de diez pods. Cuando lacarga media de CPU es inferior al 50 por ciento, el escalador automático intenta reducir el númerode pods en la implementación a un mínimo de uno. Cuando la carga es superior al 50 por ciento, elescalador automático intenta aumentar el número de pods en la implementación, hasta un máximode diez. Para obtener más información, consulte How does the Horizontal Pod Autoscaler work? en ladocumentación de Kubernetes.

3. Describa el escalador automático con el siguiente comando para ver sus detalles.

kubectl describe hpa/httpd

Salida:

Name: httpdNamespace: defaultLabels: <none>Annotations: <none>CreationTimestamp: Fri, 27 Sep 2019 13:32:15 -0700Reference: Deployment/httpdMetrics: ( current / target ) resource cpu on pods (as a percentage of request): 1% (1m) / 50%Min replicas: 1Max replicas: 10Deployment pods: 1 current / 1 desiredConditions: Type Status Reason Message ---- ------ ------ ------- AbleToScale True ReadyForNewScale recommended size matches current size ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from cpu resource utilization (percentage of request) ScalingLimited False DesiredWithinRange the desired count is within the acceptable rangeEvents: <none>

Como puede ver, la carga de CPU actual es solo del uno por ciento, pero el recuento de pods ya estáen su límite más bajo (uno), por lo que no puede escalar de forma descendente.

4. Cree una carga para el servidor web. El siguiente comando utiliza el programa Apache Bench paraenviar cientos de miles de solicitudes al servidor httpd. Esto debería aumentar significativamente lacarga y hacer que el escalador automático escale de forma ascendente la implementación.

kubectl run apache-bench -i --tty --rm --image=httpd -- ab -n 500000 -c 1000 http://httpd.default.svc.cluster.local/

5. Vea el escalado ascendente de la implementación de httpd mientras se genera la carga. Para ver laimplementación y el escalador automático, ejecute periódicamente el siguiente comando.

149

Page 157: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEscalador automático vertical de pods

kubectl get horizontalpodautoscaler.autoscaling/httpd

Salida:

NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGEhttpd Deployment/httpd 76%/50% 1 10 10 4m50s

Cuando finaliza la carga, la implementación debe reducirse a 1.6. Cuando haya terminado de experimentar con la aplicación de ejemplo, elimine los recursos httpd.

kubectl delete deployment.apps/httpd service/httpd horizontalpodautoscaler.autoscaling/httpd

Escalador automático vertical de podsEl escalador automático vertical de pods de Kubernetes ajusta automáticamente las reservas de CPU ymemoria de sus pods para ayudar a "ajustar el tamaño" de sus aplicaciones. Este ajuste puede mejorarla utilización de los recursos del clúster y liberar CPU y memoria para otros pods. Este tema le ayuda aimplementar el escalador automático vertical de pods en su clúster y a comprobar que funciona.

Instalación del servidor de métricasEl servidor de métricas de Kubernetes es un agregador de datos de uso de recursos en el clúster. No seimplementa de forma predeterminada en los clústeres de Amazon EKS, pero proporciona métricas querequiere el escalador automático vertical de pods. En este tema se explica cómo implementar el servidorde métricas de Kubernetes en el clúster de Amazon EKS.

Note

También puede utilizar Prometheus para proporcionar métricas al escalador automáticovertical de pods. Para obtener más información, consulte Métricas del plano de control conPrometheus (p. 211).

Si ya ha implementado el servidor de métricas en el clúster, puede pasar a la siguiente sección. Puedecomprobar el servidor de métricas con el siguiente comando.

kubectl -n kube-system get deployment/metrics-server

Si este comando devuelve un error NotFound, debe implementar el servidor de métricas en el clústerAmazon EKS. Seleccione la pestaña correspondiente al método de eliminación del clúster que desee.

curl and jq

Para instalar el metrics-server desde GitHub en un clúster de Amazon EKS con curl yjq

Si tiene un sistema MacOS o Linux con curl, tar, gzip y el analizador de JSON jq instalados,puede descargar, extraer e instalar la última versión con los siguientes comandos. De lo contrario,utilice el siguiente procedimiento para descargar la última versión con un navegador web.

1. Abra una ventana de terminal y vaya al directorio en el que desea descargar la última versión delmetrics-server.

150

Page 158: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación del servidor de métricas

2. Copie y pegue los siguientes comandos en la ventana de terminal y, a continuación, escriba Enter(Intro) para ejecutarlos. Estos comandos descargan la última versión. Extráigala y aplique losmanifiestos de versión 1.8 o superior a su clúster.

DOWNLOAD_URL=$(curl -Ls "https://api.github.com/repos/kubernetes-sigs/metrics-server/releases/latest" | jq -r .tarball_url)DOWNLOAD_VERSION=$(grep -o '[^/v]*$' <<< $DOWNLOAD_URL)curl -Ls $DOWNLOAD_URL -o metrics-server-$DOWNLOAD_VERSION.tar.gzmkdir metrics-server-$DOWNLOAD_VERSIONtar -xzf metrics-server-$DOWNLOAD_VERSION.tar.gz --directory metrics-server-$DOWNLOAD_VERSION --strip-components 1kubectl apply -f metrics-server-$DOWNLOAD_VERSION/deploy/1.8+/

3. Compruebe que la implementación de metrics-server está ejecutando la cantidad deseada depods con el siguiente comando:

kubectl get deployment metrics-server -n kube-system

Salida:

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmetrics-server 1 1 1 1 56m

Web browser

Para instalar el metrics-server desde GitHub en un clúster de Amazon EKS con unnavegador web

1. Descargue y extraiga la última versión del código del servidor de métricas de GitHub.

a. Vaya a la página de la última versión del proyecto metrics-server en GitHub (https://github.com/kubernetes-sigs/metrics-server/releases/latest) y, a continuación, elija un archivode código fuente de la última versión para descargarlo.

Note

Si va a descargar a un servidor remoto, puede utilizar el siguiente comando wgetsustituyendo el texto de color alternativo por el número de versión másreciente.

wget -O v0.3.6.tar.gz https://codeload.github.com/kubernetes-sigs/metrics-server/tar.gz/v0.3.6

b. Vaya a su carpeta de descargas y extraiga el archivo de código fuente. Por ejemplo, sidescargó el archivo .tar.gz, utilice el siguiente comando para extraerlo (sustituyendo suversión de lanzamiento).

tar -xzf v0.3.6.tar.gz

2. Aplique todos los manifiestos YAML en el directorio de metrics-server-0.3.6/deploy/1.8+(sustituyendo su versión de lanzamiento).

kubectl apply -f metrics-server-0.3.6/deploy/1.8+/

3. Compruebe que la implementación de metrics-server está ejecutando la cantidad deseada depods con el siguiente comando:

151

Page 159: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioImplementación del escalador automático vertical de pods

kubectl get deployment metrics-server -n kube-system

Salida:

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmetrics-server 1 1 1 1 56m

Implementación del escalador automático vertical depodsEn esta sección, implementará el escalador automático vertical de pods en su clúster.

Para implementar el escalador automático vertical de pods

1. Abra una ventana de terminal y vaya al directorio en el que desee descargar el código fuente delescalador automático vertical de pods.

2. Clone el repositorio GitHub kubernetes/autoscaler .

git clone https://github.com/kubernetes/autoscaler.git

3. Cambie al directorio de vertical-pod-autoscaler.

cd autoscaler/vertical-pod-autoscaler/

4. (Opcional) Si ya ha implementado otra versión del escalador automático vertical de pods, elimínelocon el siguiente comando.

./hack/vpa-down.sh

5. Implemente el escalador automático vertical de pods en su clúster con el siguiente comando.

./hack/vpa-up.sh

6. Compruebe que se han creado correctamente los pods del escalador automático vertical de pods.

kubectl get pods -n kube-system

Salida:

NAME READY STATUS RESTARTS AGEaws-node-949vx 1/1 Running 0 122maws-node-b4nj8 1/1 Running 0 122mcoredns-6c75b69b98-r9x68 1/1 Running 0 133mcoredns-6c75b69b98-rt9bp 1/1 Running 0 133mkube-proxy-bkm6b 1/1 Running 0 122mkube-proxy-hpqm2 1/1 Running 0 122mmetrics-server-8459fc497-kfj8w 1/1 Running 0 83mvpa-admission-controller-68c748777d-ppspd 1/1 Running 0 7svpa-recommender-6fc8c67d85-gljpl 1/1 Running 0 8svpa-updater-786b96955c-bgp9d 1/1 Running 0 8s

152

Page 160: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioProbar la instalación del escalador

automático vertical de pods.

Probar la instalación del escalador automático verticalde pods.En esta sección, implementará una aplicación de muestra para comprobar que el escalador automáticovertical de pods funciona.

Para probar la instalación del escalador automático vertical de pods

1. Implemente la prueba del escalador automático vertical de pods de hamster.yaml con el siguientecomando.

kubectl apply -f examples/hamster.yaml

2. Obtenga los pods de la aplicación de muestra de hamster.

kubectl get pods -l app=hamster

Salida:

hamster-c7d89d6db-rglf5 1/1 Running 0 48shamster-c7d89d6db-znvz5 1/1 Running 0 48s

3. Describa uno de los pods para ver su reserva de CPU y memoria.

kubectl describe pod hamster-c7d89d6db-rglf5

Salida:

Name: hamster-c7d89d6db-rglf5Namespace: defaultPriority: 0Node: ip-192-168-9-44.us-west-2.compute.internal/192.168.9.44Start Time: Fri, 27 Sep 2019 10:35:15 -0700Labels: app=hamster pod-template-hash=c7d89d6dbAnnotations: kubernetes.io/psp: eks.privileged vpaUpdates: Pod resources updated by hamster-vpa: container 0:Status: RunningIP: 192.168.23.42IPs: <none>Controlled By: ReplicaSet/hamster-c7d89d6dbContainers: hamster: Container ID: docker://e76c2413fc720ac395c33b64588c82094fc8e5d590e373d5f818f3978f577e24 Image: k8s.gcr.io/ubuntu-slim:0.1 Image ID: docker-pullable://k8s.gcr.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1 Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Fri, 27 Sep 2019 10:35:16 -0700 Ready: True

153

Page 161: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioProbar la instalación del escalador

automático vertical de pods.

Restart Count: 0 Requests: cpu: 100m memory: 50Mi...

Puede ver que el pod original reserva 100 millicpu de CPU y 50 mebibytes de memoria. En estaaplicación de muestra, 100 mililicpu es menos de lo que necesita el pod para ejecutarse, porlo que está limitada a la CPU. También reserva mucha menos memoria de la que necesita. Laimplementación del escalador automático vertical de pods de vpa-recommender analiza los pods dehamster para ver si los requisitos de CPU y memoria son adecuados. Si se necesita realizar ajustes,la vpa-updatervuelve a lanzar los pods con valores actualizados.

4. Espere a que vpa-updater lance un nuevo pod de hamster. Esto debería tardar uno o dos minutos.Puede monitorizar los pods con el siguiente comando.

Note

Si no está seguro de que se haya lanzado un nuevo pod, compare los nombres de los podscon la lista anterior. Cuando se lance el nuevo pod, verá un nuevo nombre de pod.

kubectl get --watch pods -l app=hamster

5. Cuando se inicie un nuevo pod de hamster, descríbalo y vea las reservas de CPU y memoriaactualizadas.

kubectl describe pod hamster-c7d89d6db-jxgfv

Salida:

Name: hamster-c7d89d6db-jxgfvNamespace: defaultPriority: 0Node: ip-192-168-9-44.us-west-2.compute.internal/192.168.9.44Start Time: Fri, 27 Sep 2019 10:37:08 -0700Labels: app=hamster pod-template-hash=c7d89d6dbAnnotations: kubernetes.io/psp: eks.privileged vpaUpdates: Pod resources updated by hamster-vpa: container 0: cpu request, memory requestStatus: RunningIP: 192.168.3.140IPs: <none>Controlled By: ReplicaSet/hamster-c7d89d6dbContainers: hamster: Container ID: docker://2c3e7b6fb7ce0d8c86444334df654af6fb3fc88aad4c5d710eac3b1e7c58f7db Image: k8s.gcr.io/ubuntu-slim:0.1 Image ID: docker-pullable://k8s.gcr.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1 Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Fri, 27 Sep 2019 10:37:08 -0700 Ready: True Restart Count: 0

154

Page 162: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioProbar la instalación del escalador

automático vertical de pods.

Requests: cpu: 587m memory: 262144k...

Aquí puede ver que la reserva de CPU ha aumentado a 587 mililicpu, que es más de cinco veces elvalor original. La memoria ha aumentado a 262 144 kilobytes, lo que equivale a 250 mebibytes, o acinco veces el valor original. Este pod no tenía recursos suficientes y el escalador automático verticalde pods corrigió nuestra estimación con un valor mucho más adecuado.

6. Describa el recurso de hamster-vpa para ver la nueva recomendación.

kubectl describe vpa/hamster-vpa

Salida:

Name: hamster-vpaNamespace: defaultLabels: <none>Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"autoscaling.k8s.io/v1beta2","kind":"VerticalPodAutoscaler","metadata":{"annotations":{},"name":"hamster-vpa","namespace":"d...API Version: autoscaling.k8s.io/v1beta2Kind: VerticalPodAutoscalerMetadata: Creation Timestamp: 2019-09-27T18:22:51Z Generation: 23 Resource Version: 14411 Self Link: /apis/autoscaling.k8s.io/v1beta2/namespaces/default/verticalpodautoscalers/hamster-vpa UID: d0d85fb9-e153-11e9-ae53-0205785d75b0Spec: Target Ref: API Version: apps/v1 Kind: Deployment Name: hamsterStatus: Conditions: Last Transition Time: 2019-09-27T18:23:28Z Status: True Type: RecommendationProvided Recommendation: Container Recommendations: Container Name: hamster Lower Bound: Cpu: 550m Memory: 262144k Target: Cpu: 587m Memory: 262144k Uncapped Target: Cpu: 587m Memory: 262144k Upper Bound: Cpu: 21147m Memory: 387863636Events: <none>

7. Cuando termine de probar la aplicación de muestra, elimínela con los siguientes comandos.

kubectl delete -f examples/hamster.yaml

155

Page 163: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEquilibrio de carga

Balanceo de carga e ingresoEn este capítulo se trata el balanceo de carga común y la configuración de entrada para clústeres deAmazon EKS.

Equilibrio de cargaAmazon EKS admite Balanceador de carga de red y Classic Load Balancer para los pods que seejecutan en nodos de trabajo de instancia de Amazon EC2 a través del servicio de Kubernetes de tipoLoadBalancer. Los balanceadores de carga clásicos y los balanceadores de carga de red no soncompatibles con los pods que se ejecutan en AWS Fargate (Fargate). Para la entrada de Fargate, lerecomendamos que utilice el controlador de entrada de ALB (p. 157) en Amazon EKS (como mínimo laversión 1.1.4).

La configuración del balanceador de carga se controla mediante anotaciones que se añaden al manifiestodel servicio. De forma predeterminada, las instancias de Classic Load Balancer se usan para los serviciosdel tipo LoadBalancer. Para utilizar Balanceador de carga de red en su lugar, aplique la siguienteanotación al servicio:

service.beta.kubernetes.io/aws-load-balancer-type: nlb

Para ver un manifiesto de servicio de ejemplo que especifica un balanceador de carga, consulte TypeLoadBalancer en la documentación de Kubernetes. Para obtener más información acerca del uso deBalanceador de carga de red con Kubernetes, consulte la página sobre la compatibilidad de balanceadoresde carga de red en AWS en la documentación de Kubernetes.

De forma predeterminada, los servicios del tipo LoadBalancer crean balanceadores de carga orientadosal público. Para utilizar un balanceador de carga interno, aplique la siguiente anotación al servicio:

service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0

Para los balanceadores de carga internos, el clúster de Amazon EKS debe estar configurado para utilizaral menos una subred privada de la VPC. Kubernetes examina la tabla de ruteo de las subredes con el finde identificar si son públicas o privadas. Las subredes públicas tienen una ruta directa a Internet medianteun gateway de Internet, pero no así las subredes privadas.

Etiquetado de subred para balanceadores de cargaDebe etiquetar las subredes públicas de la VPC para que Kubernetes sepa que debe utilizar solo esassubredes para los balanceadores de carga externos, en lugar de elegir una subred pública en cada zonade disponibilidad (en orden lexicográfico por ID de subred). Si utiliza una plantilla AWS CloudFormation deAmazon EKS para crear la VPC después de 03/26/2020, las subredes creadas por la plantilla se etiquetancuando se crean. Para obtener más información acerca de las plantillas de VPC AWS CloudFormation deAmazon EKS, consulte ??? (p. 162).

Clave Valor

kubernetes.io/role/elb 1

Las subredes privadas deben etiquetarse de la siguiente manera para que Kubernetes sepa que puedeutilizar las subredes para los balanceadores de carga internos. Si utiliza una plantilla AWS CloudFormation

156

Page 164: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de entrada de ALB en Amazon EKS

de Amazon EKS para crear la VPC después de 03/26/2020, las subredes creadas por la plantillase etiquetan cuando se crean. Para obtener más información acerca de las plantillas de VPC AWSCloudFormation de Amazon EKS, consulte ??? (p. 162).

Clave Valor

kubernetes.io/role/internal-elb 1

Controlador de entrada de ALB en Amazon EKSEl controlador de entrada de ALB para Kubernetes de AWS es un controlador que activa la creación de unBalanceador de carga de aplicaciones (ALB) y los recursos de apoyo necesarios de AWS cada vez quese crea un recurso de entrada en el clúster con la anotación kubernetes.io/ingress.class: alb.El recurso de entrada configura el ALB para dirigir el tráfico HTTP o HTTPS a diferentes pods dentro delclúster. El controlador de entrada de ALB es compatible con las cargas de trabajo de producción que seejecutan en los clústeres de Amazon EKS.

Para asegurarse de que sus objetos de entrada utilizan el controlador de entrada de ALB, añada lasiguiente anotación a su especificación de entrada. Para obtener más información, consulte Especificaciónde entrada en la documentación.

annotations: kubernetes.io/ingress.class: alb

El controlador de entrada de ALB admite los siguientes modos de tráfico:

• Instance (Instancia): registra los nodos dentro del clúster como destinos para el ALB. El tráficoque llega al ALB se redirige al NodePort para su servicio y luego se envía a sus pods. Este esel modo de tráfico predeterminado. También puede especificarlo explícitamente con la anotaciónalb.ingress.kubernetes.io/target-type: instance.

Note

Su servicio de Kubernetes debe especificar el tipo de NodePort necesario para utilizar estemodo de tráfico.

• IP: registra los pods como destinos para el ALB. El tráfico que llega al ALB se redirige directamente a lospods para su servicio. Debe especificar la anotación alb.ingress.kubernetes.io/target-type:ip necesaria para utilizar este modo de tráfico.

Para otras anotaciones disponibles que admite el controlador de entrada de ALB, consulte Anotaciones deentrada.

En este tema se muestra cómo configurar el controlador de entrada de ALB para que funcione con suclúster de Amazon EKS.

Para implementar el controlador de entrada de ALB en un clúster de Amazon EKS

1. Etiquete las subredes en su VPC que desee usar para los balanceadores de carga con el fin de queel controlador de entrada de ALB sepa que puede usarlas. Para obtener más información, consulteRequisito de etiquetado de subred (p. 166). Si implementó el clúster con ekctl, las etiquetas ya sehan aplicado.

• Todas las subredes de su VPC deben etiquetarse en consecuencia para que Kubernetes puedadescubrirlas.

157

Page 165: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de entrada de ALB en Amazon EKS

Clave Valor

kubernetes.io/cluster/<cluster-name>

shared

• Las subredes públicas de su VPC deben estar etiquetadas de forma que Kubernetes sepa usar soloesas subredes para balanceadores de carga externos.

Key Valor

kubernetes.io/role/elb 1

• Las subredes privadas deben etiquetarse de la siguiente manera para que Kubernetes sepa quepuede utilizar las subredes para los balanceadores de carga internos. Si utiliza una plantilla AWSCloudFormation de Amazon EKS para crear la VPC después de 03/26/2020, las subredes creadaspor la plantilla se etiquetan cuando se crean. Para obtener más información acerca de las plantillasde VPC AWS CloudFormation de Amazon EKS, consulte ??? (p. 162).

Clave Valor

kubernetes.io/role/internal-elb 1

2. Cree un proveedor OIDC de IAM y asócielo con su clúster. Si no tiene instalada la versión 0.16.0-rc.1 o una versión posterior de eksctl, complete las instrucciones de Instalación o actualización deeksctl (p. 204) para instalarla o actualizarla. Puede comprobar su versión instalada con eksctlversion.

eksctl utils associate-iam-oidc-provider \ --region us-east-1 \ --cluster prod \ --approve

3. Cree una política de IAM llamada ALBIngressControllerIAMPolicy para el pod de controladorde entrada de ALB que le permita realizar llamadas a las API de AWS en su nombre. Utilice elsiguiente comando de la AWS CLI para crear la política de IAM en su cuenta de AWS. Puede ver eldocumento de política en GitHub.

aws iam create-policy \ --policy-name ALBIngressControllerIAMPolicy \ --policy-document https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/iam-policy.json

Anote el ARN de política que se devuelve.4. Cree una cuenta de servicio Kubernetes llamada alb-ingress-controller en el espacio de

nombres kube-system, un rol de clúster y un enlace de rol de clúster para que el controlador deentrada de ALB los utilice con el siguiente comando. Si no tiene kubectl instalado, complete lasinstrucciones de Instalación de kubectl (p. 188) para instalarlo.

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/rbac-role.yaml

5. Cree un rol de IAM para el controlador de entrada de ALB y asocie el rol a la cuenta de servicio creadaen el paso anterior. Si no ha creado el clúster con eksctl, utilice las instrucciones de las pestañas dela AWS CLI o la Consola de administración de AWS.

158

Page 166: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de entrada de ALB en Amazon EKS

eksctl

El comando siguiente solo funciona para clústeres creados con eksctl.

eksctl create iamserviceaccount \ --region us-east-1 \ --name alb-ingress-controller \ --namespace kube-system \ --cluster prod \ --attach-policy-arn arn:aws:iam::111122223333:policy/ALBIngressControllerIAMPolicy \ --override-existing-serviceaccounts \ --approve

Consola de administración de AWS

1. Usando las instrucciones de Creación de una función de IAM (p. 265), cree unrol de IAM denominado eks-alb-ingress-controller y asocie la políticaALBIngressControllerIAMPolicy de IAM que creó en un paso anterior. Tome nota delnombre de recurso de Amazon (ARN) del rol una vez que lo haya creado.

2. Tome nota de la cuenta de servicio de Kubernetes con el ARN del rol que creó con el siguientecomando.

kubectl annotate serviceaccount -n kube-system alb-ingress-controller \eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/eks-alb-ingress-controller

AWS CLI

1. Usando las instrucciones de Creación de una función de IAM (p. 265), cree unrol de IAM denominado eks-alb-ingress-controller y asocie la políticaALBIngressControllerIAMPolicy de IAM que creó en un paso anterior. Tome nota delnombre de recurso de Amazon (ARN) del rol una vez que lo haya creado.

2. Tome nota de la cuenta de servicio de Kubernetes con el ARN del rol que creó con el siguientecomando.

kubectl annotate serviceaccount -n kube-system alb-ingress-controller \eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/eks-alb-ingress-controller

6. Implemente el controlador de entrada de ALB con el comando siguiente.

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/alb-ingress-controller.yaml

7. Abra el manifiesto de implementación del controlador de entrada de ALB para editarlo con el comandosiguiente.

kubectl edit deployment.apps/alb-ingress-controller -n kube-system

8. Añada una línea para el nombre del clúster después de la línea de --ingress-class=alb. Si estáejecutando el controlador de entrada de ALB en Fargate, también debe añadir líneas para el ID de laVPC y el nombre de región de AWS del clúster. Cuando haya añadido las líneas adecuadas, guarde ycierre el archivo.

spec:

159

Page 167: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de entrada de ALB en Amazon EKS

containers: - args: - --ingress-class=alb - --cluster-name=prod - --aws-vpc-id=vpc-03468a8157edca5bd - --aws-region=us-east-1

9. Confirme que el controlador de entrada de ALB se está ejecutando el siguiente comando.

kubectl get pods -n kube-system

Salida prevista:

NAME READY STATUS RESTARTS AGEalb-ingress-controller-55b5bbcb5b-bc8q9 1/1 Running 0 56s

Para implementar una aplicación de ejemplo

1. Implemente el juego 2048 como una aplicación de muestra para comprobar que el controlador deentrada de ALB crea un Balanceador de carga de aplicaciones como resultado del objeto de entrada.Puede ejecutar la aplicación de ejemplo en un clúster que solo tenga nodos de trabajo de AmazonEC2, uno o más pods de Fargate o una combinación de ambos. Si el clúster tiene nodos de trabajo deAmazon EC2 y no tiene ningún pod de Fargate, seleccione la pestaña Amazon EC2 worker nodes only(Solo nodos de trabajo de Amazon EC2). Si el clúster tiene algún pod de Fargate existente o deseaimplementar la aplicación en nuevos pods de Fargate, seleccione la pestaña Fargate. Para obtenermás información acerca de los pods de Fargate, consulte Introducción a AWS Fargate en AmazonEKS (p. 117).

Amazon EC2 worker nodes only

Implemente la aplicación con los siguientes comandos.

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-namespace.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-deployment.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-service.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-ingress.yaml

Fargate

a. Cree un perfil de Fargate que incluya el espacio de nombres de la aplicación de muestra con elsiguiente comando. Reemplace el texto de color alternativo por sus propios valores.

Note

El comando siguiente solo funciona para clústeres creados con eksctl. Si no creóel clúster con eksctl, puede crear el perfil con la Consola de administración deAWS (p. 123), utilizando los mismos valores para name y namespace que aparecenen el comando siguiente.

eksctl create fargateprofile --cluster prod --region us-east-1 --name alb-sample-app --namespace 2048-game

b. Descargue y aplique los archivos de manifiesto para crear el espacio de nombres, laimplementación y el servicio de Kubernetes con los siguientes comandos.

160

Page 168: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioControlador de entrada de ALB en Amazon EKS

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-namespace.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-deployment.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-service.yaml

c. Descargue el archivo de manifiesto de entrada con el siguiente comando.

curl -o 2048-ingress.yaml https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-ingress.yaml

d. Edite el archivo 2048-ingress.yaml. Debajo de la línea alb.ingress.kubernetes.io/scheme: internet-facing existente, añada la línea alb.ingress.kubernetes.io/target-type: ip.

e. Aplique el archivo de manifiesto de entrada con el siguiente comando.

kubectl apply -f 2048-ingress.yaml

2. Al cabo de unos minutos, verifique que el recurso de entrada se creó con el comando siguiente.

kubectl get ingress/2048-ingress -n 2048-game

Salida:

NAME HOSTS ADDRESS PORTS AGE2048-ingress * example-2048game-2048ingr-6fa0-352729433.us-west-2.elb.amazonaws.com 80 24h

Note

Si su entrada no se ha creado después de varios minutos, ejecute el siguiente comando paraver los registros del controlador de entrada. Estos registros pueden contener mensajes deerror que pueden ayudarle a diagnosticar cualquier problema con la implementación.

kubectl logs -n kube-system deployment.apps/alb-ingress-controller

3. Abra un navegador y navegue hasta la URL ADDRESS de la salida del comando anterior para ver laaplicación de muestra.

4. Cuando termine de experimentar con la aplicación de muestra, elimínela con los siguientes comandos.

kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-ingress.yamlkubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-service.yamlkubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-deployment.yamlkubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/2048/2048-namespace.yaml

5. (Opcional) Si creó el perfil de Fargate en un paso anterior, elimínelo con el siguiente comando.

eksctl delete fargateprofile --cluster prod --region us-east-1 --name alb-sample-app

161

Page 169: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de una VPC para Amazon EKS

Conexión de red en Amazon EKSEn este capítulo se tratan algunas consideraciones sobre la red para el funcionamiento de Kubernetes enAmazon EKS.

Temas• Creación de una VPC para su clúster Amazon EKS (p. 162)• Consideraciones sobre la VPC del clúster (p. 164)• Consideraciones relativas al grupo de seguridad Amazon EKS (p. 167)• Conexión de pods en red (CNI) (p. 170)• Instalación o actualización de CoreDNS (p. 180)• Instalación de Calico en Amazon EKS (p. 182)

Creación de una VPC para su clúster Amazon EKSAmazon Virtual Private Cloud (Amazon VPC) le permite lanzar recursos de AWS en una red virtual quehaya definido. Dicha red virtual es muy similar a la red tradicional que se utilizaría en su propio centro dedatos, pero con los beneficios que supone utilizar la infraestructura escalable de AWS. Para obtener másinformación, consulte la Guía del usuario de Amazon VPC.

Este tema le guiará durante la creación de una VPC para su clúster con 3 subredes públicas o dossubredes públicas y dos privadas que se proporcionan con acceso a Internet a través de una gatewayNAT. Puede utilizar esta VPC para el clúster de Amazon EKS. Se recomienda una arquitectura de redque utilice subredes privadas para los nodos de trabajo y subredes públicas en las que Kubernetes crearábalanceadores de carga de cara al público.

Seleccione de entre las siguientes pestañas la que represente la configuración de VPC que desee.

Only public subnets

Para crear la VPC de su clúster únicamente con subredes públicas

1. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.2. En la barra de navegación, seleccione una región compatible con Amazon EKS.3. Elija Create stack.4. En Choose a template (Elegir una plantilla), seleccione Specify an Amazon S3 template URL

(Especificar una URL de plantilla de Amazon S3).5. Pegue la URL siguiente en el área de texto y elija Next (Siguiente).

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-vpc-sample.yaml

6. En la página Specify Details (Especificar detalles), rellene los parámetros como corresponda y, acontinuación, elija Next (Siguiente).

• Stack name (Nombre de pila): elija un nombre para la pila de AWS CloudFormation. Porejemplo, puede llamarla eks-VPC.

162

Page 170: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de una VPC para Amazon EKS

• VpcBlock: elija un rango de CIDR para la VPC. Puede mantener el valor predeterminado.• Subnet01Block: especifique un rango de CIDR para la subred 1. Le recomendamos que

mantenga el valor predeterminado para que tenga suficientes direcciones IP para que lasvainas las utilicen.

• Subnet02Block: especifique un rango de CIDR para la subred 2. Le recomendamos quemantenga el valor predeterminado para que tenga suficientes direcciones IP para que lasvainas las utilicen.

• Subnet03Block: especifique un rango de CIDR para la subred 3. Le recomendamos quemantenga el valor predeterminado para que tenga suficientes direcciones IP para que lasvainas las utilicen.

7. (Opcional) En la página Options (Opciones), marque los recursos de la pila. Seleccione Next(Siguiente).

8. En la página Review, elija Create.9. Una vez creada la pila, selecciónela en la consola y elija Outputs (Salidas).10. Anote el valor de SecurityGroups (Grupos de seguridad) correspondiente al grupo de seguridad

que se ha creado. Lo necesitará al crear el clúster de EKS. Este grupo de seguridad se aplica alas interfaces de red elásticas entre cuentas que se crean en las subredes y que permiten al planode control de Amazon EKS comunicarse con los nodos de trabajo.

11. Registre el VpcId de la VPC que ha creado. Lo necesitará al lanzar la plantilla del grupo de nodosde trabajo.

12. Anote el valor de SubnetIds de las subredes que se han creado. Lo necesitará al crear el clústerde EKS. Se trata de las subredes en las que se lanzan los nodos de trabajo.

Public and private subnets

Crear una VPC para el clúster con subredes públicas y privadas

1. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.2. En la barra de navegación, seleccione una región compatible con Amazon EKS.3. Elija Create stack.4. En Choose a template (Elegir una plantilla), seleccione Specify an Amazon S3 template URL

(Especificar una URL de plantilla de Amazon S3).5. Pegue la URL siguiente en el área de texto y elija Next (Siguiente).

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-vpc-private-subnets.yaml

6. En la página Specify Details (Especificar detalles), rellene los parámetros como corresponda y, acontinuación, elija Next (Siguiente).

• Stack name (Nombre de pila): elija un nombre para la pila de AWS CloudFormation. Porejemplo, puede llamarla eks-VPC.

• VpcBlock: elija un rango de CIDR para la VPC. Puede mantener el valor predeterminado.• PublicSubnet01Block: especifique un rango de CIDR para la subred pública 1. Le

recomendamos que mantenga el valor predeterminado para que tenga suficientes direccionesIP para que las vainas las utilicen.

• PublicSubnet02Block: especifique un rango de CIDR para la subred pública 2. Lerecomendamos que mantenga el valor predeterminado para que tenga suficientes direccionesIP para que las vainas las utilicen.

• PrivateSubnet01Block: especifique un rango de CIDR para la subred privada 1. Lerecomendamos que mantenga el valor predeterminado para que tenga suficientes direccionesIP para que las vainas las utilicen.

163

Page 171: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPasos siguientes

• PrivateSubnet02Block: especifique un rango de CIDR para la subred privada 2. Lerecomendamos que mantenga el valor predeterminado para que tenga suficientes direccionesIP para que las vainas las utilicen.

7. (Opcional) En la página Options (Opciones), marque los recursos de la pila. Seleccione Next(Siguiente).

8. En la página Review, elija Create.9. Una vez creada la pila, selecciónela en la consola y elija Outputs (Salidas).10. Anote el valor de SecurityGroups (Grupos de seguridad) correspondiente al grupo de seguridad

que se ha creado. Lo necesitará al crear el clúster de EKS. Este grupo de seguridad se aplica alas interfaces de red elásticas entre cuentas que se crean en las subredes y que permiten al planode control de Amazon EKS comunicarse con los nodos de trabajo.

11. Registre el VpcId de la VPC que ha creado. Lo necesitará al lanzar la plantilla del grupo de nodosde trabajo.

12. Anote el valor de SubnetIds de las subredes que se han creado. Lo necesitará al crear el clústerde EKS. Se trata de las subredes en las que se lanzan los nodos de trabajo.

13. Etiquete las subredes privadas para que Kubernetes sepa que puede utilizarlas para losbalanceadores de carga internos.

a. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.b. Elija Subnets (Subredes) en el panel de navegación izquierdo.c. Seleccione una de las subredes privadas para la VPC del clúster de Amazon EKS

(puede filtrarlas con la cadena PrivateSubnet) y elija la pestaña Tags (Etiquetas) y, acontinuación, Add/Edit Tags (Añadir/editar etiquetas).

d. Seleccione Create Tag (Crear etiqueta) y añada la siguiente clave y el siguiente valor y, acontinuación, seleccione Save (Guardar).

Key Valor

kubernetes.io/role/internal-elb 1

e. Repita estos pasos secundarios en cada subred privada de la VPC.

Pasos siguientesUna vez que haya creado la VPC, puede probar el tutorial Introducción a Amazon EKS (p. 3) omitiendo lasección Crear la VPC del clúster de Amazon EKS (p. 13) y utilizar estas subredes y grupos de seguridadpara el clúster.

Consideraciones sobre la VPC del clústerCuando se crea un clúster de Amazon EKS, se especifican las subredes de la VPC que el clúster va ausar. Amazon EKS requiere subredes en al menos dos Zona de disponibilidad. Recomendamos una VPCcon subredes públicas y privadas para que Kubernetes pueda crear balanceadores de carga públicosen las subredes públicas que equilibren la carga de tráfico con los pods que se ejecutan en los nodos detrabajo de las subredes privadas.

Cuando cree el clúster, especifique todas las subredes que alojarán los recursos de su clúster (comonodos de trabajo y balanceadores de carga).

Note

Los balanceadores de carga expuestos a Internet requieren una subred pública en su clúster. Losnodos de trabajo también requieren que haya acceso de salida de Internet a las API de Amazon

164

Page 172: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioDirecciones IP de la VPC

EKS para poder realizar la introspección del clúster y el registro de nodos en el momento dellanzamiento. Para extraer las imágenes de contenedores, estas necesitan tener acceso a lasAPI de Amazon S3 y Amazon ECR (y cualquier otro registro de contenedor, como DockerHub).Para obtener más información, consulte Consideraciones relativas al grupo de seguridad AmazonEKS (p. 167) y Rangos de direcciones IP de AWS en la AWS General Reference.

Las subredes especificadas al crear el clúster influyen en dónde sitúa Amazon EKS las interfaces de redelásticas empleadas por el plano de control para la comunicación con los nodos de trabajo.

Es posible especificar solo subredes públicas o solo subredes privadas al crear el clúster, pero existenalgunas limitaciones asociadas a estas configuraciones:

• Solo privada: todo se ejecuta en una subred privada y Kubernetes no puede crear balanceadores decarga de cara a Internet para los pods.

• Solo pública: todo se ejecuta en una subred pública, incluidos los nodos de trabajo.

Amazon EKS crea una interfaz de red elástica en las subredes privadas para facilitar la comunicacióncon los nodos de trabajo. Este canal de comunicación es compatible con funciones de Kubernetescomo kubectl exec y kubectl logs. El grupo de seguridad que especifica al crear el clúster se aplica a lasinterfaces de red elásticas que se crean para el plano de control del clúster.

La VPC debe tener un nombre de host DNS y admitir la resolución DNS. De lo contrario, sus nodos detrabajo no podrán registrarse con el clúster. Para obtener más información, consulte Utilización de DNScon su VPC en la Guía del usuario de Amazon VPC.

Direcciones IP de la VPCPuede definir intervalos de CIDR privados (RFC 1918) y públicos (non-RFC 1918) en la VPC utilizada parasu clúster de Amazon EKS. Para obtener más información, consulte VPC y subredes y Direcciones IP ensu VPC en la Guía del usuario de Amazon VPC.

El plano de control de Amazon EKS crea hasta 4 interfaces de red elásticas entre cuentas en su VPC paracada clúster. Asegúrese de que las subredes que especifique tengan suficientes direcciones IP disponiblespara las interfaces de red elásticas entre cuentas y los pods.

Important

Docker se ejecuta en el intervalo de CIDR 172.17.0.0/16 en los clústeres de Amazon EKS.Le recomendamos que la subredes de la VPC de su clúster no se superpongan. De lo contrario,recibirá el siguiente error:

Error: : error upgrading connection: error dialing backend: dial tcp 172.17.nn.nn:10250: getsockopt: no route to host

Requisito de etiquetado de VPCAl crear el clúster de Amazon EKS, Amazon EKS etiqueta la VPC que contienen las subredesespecificadas de la forma siguiente para que Kubernetes la encuentre:

Key Valor

kubernetes.io/cluster/<cluster-name> shared

• Key (Clave): el valor de <cluster-name> coincide con el nombre del clúster de Amazon EKS.

165

Page 173: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRequisito de etiquetado de subred

• Value (Valor): el valor shared permite que más de un clúster utilice esta VPC.

Requisito de etiquetado de subredAl crear el clúster de Amazon EKS, Amazon EKS etiqueta las subredes especificadas de la forma siguientepara que Kubernetes las encuentre:

Note

Todas las subredes (públicas y privadas) que utiliza el clúster para los recursos deben tener estaetiqueta.

Key Valor

kubernetes.io/cluster/<cluster-name> shared

• Key (Clave): el valor de <cluster-name> coincide con el clúster de Amazon EKS.• Value (Valor): el valor shared permite que más de un clúster utilice esta subred.

Requisito de etiquetado de subredes privadas para losbalanceadores de carga internosLas subredes privadas deben etiquetarse de la siguiente manera para que Kubernetes sepa que puedeutilizar las subredes para los balanceadores de carga internos. Si utiliza una plantilla AWS CloudFormationde Amazon EKS para crear la VPC después de 03/26/2020, las subredes creadas por la plantillase etiquetan cuando se crean. Para obtener más información acerca de las plantillas de VPC AWSCloudFormation de Amazon EKS, consulte ??? (p. 162).

Clave Valor

kubernetes.io/role/internal-elb 1

Opción de etiquetado de subredes públicas para losbalanceadores de carga externosDebe etiquetar las subredes públicas de la VPC para que Kubernetes sepa que debe utilizar solo esassubredes para los balanceadores de carga externos, en lugar de elegir una subred pública en cada zonade disponibilidad (en orden lexicográfico por ID de subred). Si utiliza una plantilla AWS CloudFormation deAmazon EKS para crear la VPC después de 03/26/2020, las subredes creadas por la plantilla se etiquetancuando se crean. Para obtener más información acerca de las plantillas de VPC AWS CloudFormation deAmazon EKS, consulte ??? (p. 162).

Clave Valor

kubernetes.io/role/elb 1

166

Page 174: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioConsideraciones relativas al

grupo de seguridad Amazon EKS

Consideraciones relativas al grupo de seguridadAmazon EKS

En las siguientes secciones se describe la configuración mínima requerida y recomendada del grupo deseguridad para el clúster, el plano de control y los grupos de seguridad del nodo de trabajo del clúster,según la versión de Kubernetes y la versión de la plataforma Amazon EKS.

Grupo de seguridad del clúster (disponible a partir declústeres Amazon EKS que ejecutan Kubernetes 1.14y la versión de la plataforma eks.3)Los clústeres de Amazon EKS que comienzan con la versión 1.14 de Kubernetes y la versión deplataforma eks.3 (p. 53) crean un grupo de seguridad de clústeres como parte de la creación de clústeres(o cuando un clúster se actualiza a esta versión y versión de la plataforma de Kubernetes). Este grupode seguridad está diseñado para permitir que todo el tráfico del plano de control y de los grupos denodos administrados (p. 86) fluya libremente entre sí. Al asignar el grupo de seguridad del clúster alas interfaces de red elásticas de cuentas cruzadas del plano de control y a las instancias del grupo denodos administrados, no es necesario configurar reglas de grupo de seguridad complejas para permitiresta comunicación. Cualquier instancia o interfaz de red asignada a este grupo de seguridad puedecomunicarse libremente con otros recursos con este grupo de seguridad.

Puede buscar un grupo de seguridad de clúster para su clúster en la Consola de administración de AWS,en la sección Networking (Redes) del clúster, o con el siguiente comando de AWS CLI:

aws eks describe-cluster --name --query cluster.resourcesVpcConfig.securityGroupIds

Si su clúster ejecuta la versión 1.14 de Kubernetes y la versión de la plataforma (p. 53) eks.3 o posterior,le recomendamos que agregue el grupo de seguridad de clúster a todos los grupos de nodos de trabajoexistentes y futuros. Para obtener más información, consulte Grupos de seguridad para su VPC en Guíadel usuario de Amazon VPC. Los grupos de nodos administrados Amazon EKS (p. 86) se configuranautomáticamente para utilizar el grupo de seguridad del clúster.

  Protocolo Rango de puertos Fuente Destino

Tráfico de entradarecomendado

Todos Todos El mismo  

Tráfico de salidarecomendado

Todo Todos   0.0.0.0/0

Grupos de seguridad de nodos de trabajo y plano decontrol (para clústeres de Amazon EKS anterioresa la versión 1.14 de Kubernetes y la versión deplataforma (p. 53) eks.3)Para clústeres Amazon EKS anteriores a la versión 1.14 de Kubernetes y la versión de plataforma (p. 53)eks.3, la comunicación entre el plano de control y el nodo de trabajo se configura creando manualmenteun grupo de seguridad de plano de control y especificando ese grupo de seguridad al crear el clúster. En

167

Page 175: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioGrupos de seguridad de nodos de trabajo y plano de control

(para clústeres de Amazon EKS anteriores a la versión1.14 de Kubernetes y la versión de plataforma eks.3)

la creación del clúster, este grupo de seguridad se adjunta a las interfaces de red elásticas entre cuentaspara el clúster.

Puede comprobar el grupo de seguridad del plano de control del clúster en la Consola de administraciónde AWS, en la sección Networking (Redes) del clúster (en la lista Grupos de seguridad adicionales) o conel siguiente comando AWS CLI:

aws eks describe-cluster --name --query cluster.resourcesVpcConfig.securityGroupIds

Si inicia nodos de trabajo con la plantilla AWS CloudFormation en el Introducción a Amazon EKS (p. 3)tutorial, AWS CloudFormation modifica el grupo de seguridad del plano de control para permitir lacomunicación con los nodos de trabajo. Amazon EKS recomienda encarecidamente que utilice un grupode seguridad dedicado para cada plano de control (uno por clúster). Si comparte un grupo de seguridaddel plano de control con otros clústeres o recursos de Amazon EKS, puede bloquear o interrumpir lasconexiones a esos recursos.

El grupo de seguridad de los nodos de trabajo y el grupo de seguridad para la comunicación del plano decontrol con los nodos de trabajo se han configurado para evitar la comunicación con puertos privilegiadosde los nodos de trabajo. Si las aplicaciones requieren mayor acceso entrante o saliente desde el planode control o los nodos de trabajo, deberá agregar las reglas correspondientes a los grupos de seguridadasociados al clúster. Para obtener más información, consulte Grupos de seguridad de su VPC en la Guíadel usuario de Amazon VPC.

Note

Para permitir la funcionalidad de proxy en los puertos privilegiados o para ejecutar pruebas deconformidad CNCF por sí mismo, deberá editar los grupos de seguridad del plano de control y delos nodos de trabajo. El grupo de seguridad en el lado de los nodos de trabajo debe permitir elacceso de entrada en los puertos 0-65535 desde el plano de control y el lado del plano de controldebe permitir el acceso saliente hacia los nodos de trabajo en los puertos 0-65535.

Grupo de seguridad del plano de control

  Protocolo Rango de puertos Fuente Destino

Tráfico de entradamínimo

TCP 443 Todos los gruposde seguridad denodos de trabajo

Cuando el accesoprivado de puntode enlace delclúster (p. 39)está habilitado:cualquier grupode seguridad quegenera tráficode cliente deservidor de API(como comandoskubectl en unhost bastión dentrode la VPC de suclúster)

 

Tráfico de entradarecomendado

TCP 443 Todos los gruposde seguridad denodos de trabajo

 

168

Page 176: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioGrupos de seguridad de nodos de trabajo y plano de control

(para clústeres de Amazon EKS anteriores a la versión1.14 de Kubernetes y la versión de plataforma eks.3)

  Protocolo Rango de puertos Fuente DestinoCuando el accesoprivado de puntode enlace delclúster (p. 39)está habilitado:cualquier grupode seguridad quegenera tráficode cliente deservidor de API(como comandoskubectl en unhost bastión dentrode la VPC de suclúster)

Tráfico de salidamínimo

TCP 10250   Todos los gruposde seguridad denodos de trabajo

Tráfico de salidarecomendado

TCP 1025-65535   Todos los gruposde seguridad denodos de trabajo

Grupo de seguridad de nodos de trabajo

  Protocolo Rango de puertos Fuente Destino

Tráfico de entradamínimo (desdeotros nodos detrabajo)

Cualquierprotocolo que losnodos de trabajopuedan usar parala comunicaciónentre trabajos

Cualesquierapuertos que losnodos de trabajopuedan usar parala comunicaciónentre trabajos

Todos los gruposde seguridad denodos de trabajo

 

Tráfico de entradamínimo (desde elplano de control)

TCP 10250 Grupo deseguridad delplano de control

 

Tráfico de entradarecomendado

Todo

TCP

Todo

443, 1025-65535

Todos los gruposde seguridad denodos de trabajo

Grupo deseguridad delplano de control

 

Tráfico de salidamínimo*

TCP 443   Grupo deseguridad delplano de control

Tráfico de salidarecomendado

Todo Todos   0.0.0.0/0

169

Page 177: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioConexión de pods en red (CNI)

* Los nodos de trabajo también requieren acceso de salida a Internet para las API de Amazon EKS APIpara la introspección y el registro de nodos en el momento del lanzamiento. Para extraer las imágenesde contenedores, estas necesitan tener acceso a las API de Amazon S3 y Amazon ECR (y cualquier otroregistro de contenedor, como DockerHub). Para obtener más información, consulte Rangos de direccionesIP de AWS en la AWS General Reference.

Si tiene más de un grupo de seguridad asociado a los nodos de trabajo, uno de los grupos de seguridaddebe tener aplicada la siguiente etiqueta. Si solo tiene un grupo de seguridad asociado a los nodos detrabajo, la etiqueta es opcional. Para obtener más información acerca del etiquetado, consulte Uso deetiquetas mediante la consola (p. 281).

Clave Valor

kubernetes.io/cluster/<cluster-name> owned

Conexión de pods en red (CNI)Amazon EKS admite redes VPC nativas gracias al complemento CNI de Amazon VPC para Kubernetes.Con el complemento CNI, los pods de Kubernetes pueden tener dentro del pod la misma dirección IP queen la red VPC. El complemento CNI es un proyecto de código abierto mantenido en GitHub.

El complemento CNI se encarga de asignar direcciones IP de la VPC a los nodos de Kubernetes yestablecer la configuración de red necesaria para los pods de cada nodo. El complemento consta de doscomponentes principales:

• El demonio de L-IPAM es responsable de asociar interfaces de red elásticas a instancias, asignardirecciones IP secundarias a las interfaces de red elásticas y mantener una "reserva rápida" dedirecciones IP en cada nodo para asignarlas a los pods de Kubernetes cuando se programan.

• El complemento CNI en sí es responsable de las conexiones de red anfitriona (por ejemplo, de laconfiguración de las interfaces y los pares Ethernet virtuales) y de añadir la interfaz correcta al espaciode nombres del pod.

170

Page 178: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVariables de configuración de CNI

Para obtener más información acerca del diseño y configuración de la red, consulte Complemento de CNIpara la red de Kubernetes en la VPC de AWS.

Los tipos de instancias de Amazon EC2 pueden plantear limitaciones a las interfaces de red elásticas ylas direcciones IP secundarias. En general, las instancias más grandes admiten más direcciones IP. Paraobtener más información, consulte Direcciones IP por interfaz de red por tipo de instancia en la Guía delusuario de Amazon EC2 para instancias de Linux.

Temas• Variables de configuración de CNI (p. 171)• Traducción de direcciones de red de origen (SNAT) externa (p. 172)• Redes personalizadas de CNI (p. 174)• Auxiliar de métricas de CNI (p. 177)• Actualizaciones del complemento CNI de Amazon VPC para Kubernetes (p. 179)

Variables de configuración de CNIEl complemento CNI de Amazon VPC para Kubernetes admite una serie de opciones de configuración,que se establecen a través de variables de entorno. Están disponibles las siguientes variables de entorno ytodas ellas son opcionales.

AWS_VPC_CNI_NODE_PORT_SUPPORT

Tipo: booleano

Valor predeterminado: true

Especifica si los servicios NodePort están habilitados en la interfaz de red principal de un nodo detrabajo. Esto requiere reglas iptables adicionales y que el filtro de rutas inversas del kernel en lainterfaz principal se establezca en loose.

AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG

Tipo: booleano

Valor predeterminado: false

Especifica que sus pods pueden utilizar subredes y grupos de seguridad (dentro de la misma VPC quelos recursos del plano de control) que son independientes de la resourcesVpcConfig de su clúster.De forma predeterminada, los pods comparten la misma subred y los mismos grupos de seguridadque la interfaz principal del nodo de trabajo. Si se establece esta variable en true, ipamD utilizalos grupos de seguridad y las subredes de la ENIConfig de un nodo de trabajo para la asignaciónde la interfaz de red elástica. Debe crear una definición de recursos personalizados ENIConfigpara cada subred en la que sus pods vayan a residir y, a continuación, anotar cada nodo de trabajopara que utilice una ENIConfig específica (se pueden anotar varios nodos de trabajo con la mismaENIConfig). Los nodos de trabajo solo se pueden anotar con una única ENIConfig cada vez, y lasubred de la ENIConfig debe pertenecer a la misma zona de disponibilidad en la que reside el nodode trabajo. Para obtener más información, consulte Redes personalizadas de CNI (p. 174).

AWS_VPC_K8S_CNI_EXTERNALSNAT

Tipo: booleano

Valor predeterminado: false

Especifica si debe utilizarse una gateway NAT externa para proporcionar la SNAT de las direccionesIP de la ENI secundaria. Si se establece en true, la regla iptables de SNAT y la regla IP fuera dela VPC no se aplican, y estas reglas se eliminan si ya se han aplicado.

171

Page 179: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioSNAT externa

Deshabilite SNAT si necesita permitir la comunicación entrante a sus pods desde VPN externas,conexiones directas y VPC externas, y sus pods no necesitan obtener acceso a Internet directamentea través de una gateway de Internet. Sin embargo, los nodos deben estar ejecutándose en una subredprivada y conectados a Internet a través de una Gateway NAT de AWS u otro dispositivo NAT externo.

Para obtener más información, consulte Traducción de direcciones de red de origen (SNAT)externa (p. 172).

WARM_ENI_TARGET

Tipo: Número entero

Valor predeterminado: 1

Especifica el número de interfaces de red elásticas gratuitas (y todas sus direcciones IP disponibles)que el daemon ipamD debe intentar mantener disponibles para la asignación de pods en el nodo. Deforma predeterminada, ipamD intenta mantener 1 interfaz de red elástica y todas sus direcciones IPdisponibles para la asignación de pods.

Note

El número de direcciones IP por interfaz de red varía en función del tipo de instancia. Paraobtener más información, consulte Direcciones IP por interfaz de red por tipo de instancia enla Guía del usuario de Amazon EC2 para instancias de Linux.

Por ejemplo, una m4.4xlarge se lanza con una interfaz de red y 30 direcciones IP. Si se colocan 5pods en el nodo y se eliminan 5 direcciones IP libres del grupo activo de direcciones IP, ipamD intentaasignar más interfaces hasta que haya WARM_ENI_TARGET interfaces libres en el nodo.

Note

Si se establece WARM_IP_TARGET, se pasa por alto esta variable de entorno y se utiliza ensu lugar el comportamiento WARM_IP_TARGET.

WARM_IP_TARGET

Tipo: Número entero

Valor predeterminado: None

Especifica el número de direcciones IP libres que el daemon ipamD debe intentar mantenerdisponibles para la asignación de pods en el nodo. Por ejemplo, si WARM_IP_TARGET se establece en10, ipamD intenta mantener disponibles 10 direcciones IP libres en todo momento. Si las interfacesde red elásticas del nodo no pueden proporcionar estas direcciones libres, ipamD intenta asignar másinterfaces hasta que haya WARM_IP_TARGET direcciones IP libres disponibles.

Note

Esta variable de entorno sustituye el comportamiento WARM_ENI_TARGET.

Traducción de direcciones de red de origen (SNAT)externaLa comunicación dentro de una VPC (por ejemplo de pod a pod) es directa entre direcciones IP privadasy no requiere traducción de direcciones de red de origen (SNAT). Cuando el tráfico está destinado a unadirección fuera de la VPC, el complemento CNI de Amazon VPC para Kubernetes traduce la dirección

172

Page 180: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioSNAT externa

IP privada de cada pod a la dirección IP privada principal asignada a la interfaz de red elástica principal(interfaz de red) del nodo de trabajo de instancia Amazon EC2 en el que se está ejecutando el pod, deforma predeterminada. SNAT:

• Permite que los pods se comuniquen bidireccionalmente con Internet. El nodo de trabajo debe estar enuna subred pública y tener una dirección IP pública o elástica asignada a la dirección IP privada principalde su interfaz de red principal. El tráfico se traduce hacia y desde la dirección IP pública o elástica y sedirige hacia y desde Internet mediante ungateway de Internet, como se muestra en la imagen siguiente.

SNAT es necesario porque el gateway de Internet sólo sabe cómo traducir entre la dirección IP privadaprincipal y pública o elástica asignada a la interfaz de red elástica principal del nodo de trabajo deinstancia de Amazon EC2 en el que se ejecutan los pods.

• Impide que un dispositivo en otros espacios de direcciones IP privadas (por ejemplo, el interconexióncon VPC, VPC de tránsito o conexión directa) se comunique directamente a un pod al que no se leasigna la dirección IP privada principal de la interfaz de red elástica del nodo de trabajo de la instanciaAmazon EC2.

Si Internet o los dispositivos de otros espacios de direcciones IP privados tienen que comunicarse con unpod que no tenga asignada la dirección IP privada principal asignada a la interfaz de red elástica principaldel nodo de trabajo de instancia Amazon EC2 en el que se está ejecutando el pod, entonces:

• El nodo de trabajo debe implementarse en una subred privada que tenga una ruta a un dispositivo NATen una subred pública.

• Tiene que habilitar SNAT externo en el DaemonSet aws-node del complemento de CNI con el siguientecomando:

kubectl set env daemonset -n kube-system aws-node AWS_VPC_K8S_CNI_EXTERNALSNAT=true

Una vez habilitado el SNAT externo, el complemento de CNI no traduce la dirección IP privada de un poda la dirección IP privada principal asignada a la interfaz de red elástica principal del nodo de trabajo de lainstancia Amazon EC2 en el que se ejecuta el pod cuando el tráfico está destinado a una dirección situadafuera de la VPC. El tráfico desde el pod a Internet se traduce externamente hacia y desde la dirección IP

173

Page 181: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRedes personalizadas de CNI

pública del dispositivo NAT y se dirige hacia y desde Internet por un gateway de Internet, como se muestraen la imagen siguiente.

Redes personalizadas de CNIDe forma predeterminada, cuando se asignan nuevas interfaces de red para los pods, ipamD utilizala subred y los grupos de seguridad de la interfaz de red elástica (ENI) principal del nodo de trabajo.No obstante, hay casos de uso en los que las interfaces de red de los pods deben utilizar un grupo deseguridad o una subred diferente, dentro de la misma VPC que su grupo de seguridad del plano de control.Por ejemplo:

• Hay un número limitado de direcciones IP disponibles en una subred. Esto limita el número de podsque se pueden crear en el clúster. El uso de subredes diferentes para los grupos de pods le permiteaumentar el número de direcciones IP disponibles.

• Por motivos de seguridad, sus pods deben utilizar distintos grupos de seguridad o subredes que lainterfaz de red principal del nodo.

• Los nodos de trabajo están configurados en subredes públicas y desea situar los pods en subredesprivadas utilizando una Gateway NAT. Para obtener más información, consulte Traducción dedirecciones de red de origen (SNAT) externa (p. 172).

Note

Puede configurar redes personalizadas para grupos de nodos no administrados, pero nopara grupos de nodos administrados. Los casos de uso tratados en este tema requieren elcomplemento CNI de Amazon VPC para Kubernetes versión 1.4.0 o posterior. Para comprobar laversión de CNI, y actualizarla si es necesario, consulte Actualizaciones del complemento CNI deAmazon VPC para Kubernetes (p. 179).

Cuando se habilita una red personalizada se elimina efectivamente una interfaz de red elástica disponible(y todas sus direcciones IP disponibles para los pods) de cada nodo de trabajo que la utiliza. La interfazde red principal para el nodo de trabajo no se utiliza para la colocación de pods si hay habilitada una redpersonalizada.

174

Page 182: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRedes personalizadas de CNI

Para configurar redes personalizadas de CNI

1. Asocie un bloque de CIDR secundario a la VPC de su clúster. Para obtener más información, consulteAsociación de un bloque de CIDR IPv4 secundario con su VPC en la Guía del usuario de AmazonVPC.

2. Cree una subred en la VPC para cada zona de disponibilidad utilizando su bloque de CIDRsecundario. Las subredes personalizadas deben proceder de un bloque de CIDR de la VPC diferentede la subred en la que se lanzaron los nodos de trabajo. Para obtener más información, consulteCreación de una subred en la VPC en la Guía del usuario de Amazon VPC.

3. Establezca la variable de entorno de AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true a true enel DaemonSet de aws-node:

kubectl set env daemonset aws-node -n kube-system AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true

4. Defina un nuevo recurso ENIConfig personalizado para el clúster.

a. Cree un archivo denominado ENIConfig.yaml y pegue en él el siguiente contenido:

apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata: name: eniconfigs.crd.k8s.amazonaws.comspec: scope: Cluster group: crd.k8s.amazonaws.com version: v1alpha1 names: plural: eniconfigs singular: eniconfig kind: ENIConfig

b. Aplique el archivo al clúster con el comando siguiente:

kubectl apply -f ENIConfig.yaml

5. Cree un recurso personalizado ENIConfig para cada subred en la que desee programar pods.

a. Cree un archivo único para cada configuración de interfaz de red elástica. Cada archivo debeincluir el contenido siguiente con un valor único para name. En este ejemplo, se crea unarchivo denominado us-east-1a.yaml. Sustituya los valores de ejemplo por name,subnet y securityGroups con sus propios valores . En este ejemplo, el valor de name es elmismo que la zona de disponibilidad en la que se encuentra la subred. Si no tiene un grupo deseguridad específico que desee asociar a sus pods, puede dejar ese valor en blanco por ahora.Posteriormente, especificará el grupo de seguridad de los nodos de trabajo en ENIConfig.

Note

Cada combinación de subred y grupo de seguridad requiere su propio recursopersonalizado.

apiVersion: crd.k8s.amazonaws.com/v1alpha1kind: ENIConfigmetadata: name: us-east-1aspec: securityGroups: - sg-0dff111a1d11c1c11 subnet: subnet-011b111c1f11fdf11

175

Page 183: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRedes personalizadas de CNI

b. Aplique al clúster cada archivo de recursos personalizados que creó anteriormente con elcomando siguiente:

kubectl apply -f us-east-1a.yaml

c. (Opcional) De forma predeterminada, Kubernetes aplica la zona de disponibilidad de un nodoa la etiqueta k8s.amazonaws.com/eniConfig. Si ha asignado un nombre a los recursospersonalizados de ENIConfig después de cada zona de disponibilidad de la VPC, puede habilitarKubernetes para que aplique automáticamente ENIConfig para cada zona de disponibilidad alnodo de trabajo de la misma zona de disponibilidad con el siguiente comando.

kubectl set env daemonset aws-node -n kube-system ENI_CONFIG_LABEL_DEF=failure-domain.beta.kubernetes.io/zone

Note

Asegúrese de que una anotación con la clave k8s.amazonaws.com/eniConfigpara la variable de entorno ENI_CONFIG_ANNOTATION_DEF no exista en laespecificación del contenedor para el daemonset aws-node. Si existe, anula el valorENI_CONFIG_LABEL_DEF y debe eliminarse. Puede comprobar si la variable seestablece con el comando kubectl describe daemonset aws-node -n kube-system | grep ENI_CONFIG_ANNOTATION_DEF. Si no se devuelve ninguna salida,entonces la variable no se establece.

6. Cree un nuevo grupo de nodos de trabajo no administrado para cada uno de los ENIConfig que hayaconfigurado.

a. Determine el número máximo de pods que se pueden programar en cada nodo de trabajomediante la fórmula siguiente.

maxPods = (number of interfaces - 1) * (max IPv4 address per interface - 1) + 2

Por ejemplo, el tipo de instancia m5.large admite tres interfaces de red y diez direcciones IPv4por interfaz. Al insertar los valores en la fórmula, la instancia puede admitir un máximo de 20pods, como se muestra en el cálculo siguiente.

maxPods = (3 - 1) * (10 - 1) + 2 = 20

Para obtener más información acerca del número máximo de interfaces de red por tipo deinstancia, consulte Interfaces de red elástica en Guía del usuario de Amazon EC2 para instanciasde Linux.

b. Siga los pasos de la pestaña Unmanaged nodes (Nodos no administrados) de Lanzamientode nodos de trabajo de Linux de Amazon EKS (p. 93) para crear cada nuevo grupo de nodosde trabajo no administrados. Después de abrir la plantilla de AWS CloudFormation, introduzcalos valores que se describen en las instrucciones. Sin embargo, para los siguientes campos,asegúrese de escribir o seleccionar los valores de la lista.

• BootstrapArguments: escriba --use-max-pods false --kubelet-extra-args '--node-labels=k8s.amazonaws.com/eniConfig=us-east-1a --max-pods=20'

• Subnets (Subredes): elija la subred que creó específicamente para este grupo de nodos detrabajo en el paso 2.

7. Una vez creados los grupos de nodos de trabajo, registre el grupo de seguridad que se creó paracada grupo de nodos de trabajo y aplíquelo a su ENIConfig asociado. Edite cada ENIConfig con elsiguiente comando, sustituyendo us-east-1a por su valor:

176

Page 184: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAuxiliar de métricas de CNI

kubectl edit eniconfig.crd.k8s.amazonaws.com/us-east-1a

La sección spec debe tener el siguiente aspecto:

spec: securityGroups: - sg-0dff222a2d22c2c22 subnet: subnet-022b222c2f22fdf22

8. Si tiene nodos de trabajo en el clúster que contenían pods antes de realizar este procedimiento,debe terminarlos. Solo los nuevos nodos que se registren con la etiqueta k8s.amazonaws.com/eniConfig utilizarán la nueva característica de redes personalizadas.

Auxiliar de métricas de CNIEl auxiliar de métricas de CNI es una herramienta que puede utilizar para extraer información de la interfazde red elástica y la dirección IP, agregar métricas en el nivel del clúster y publicar las métricas en AmazonCloudWatch.

Al administrar un clúster de Amazon EKS, es posible que desee saber cuántas direcciones IP se hanasignado y cuántas están disponibles. El ayudante de métricas de CNI le ayuda a:

• Realizar un seguimiento de estas métricas a lo largo del tiempo• Solución y diagnóstico de problemas relacionados con la asignación y recuperación de IP• Proporcionar información detallada sobre la planificación de capacidad

Cuando se aprovisiona un nodo de trabajo, el complemento CNI asigna automáticamente un grupo dedirecciones IP secundarias de la subred del nodo a la interfaz de red elástica principal (eth0). Este grupode direcciones IP se conoce como grupo templado, y su tamaño lo determina el tipo de instancia del nodode trabajo. Por ejemplo, una instancia c4.large puede admitir tres interfaces de red elásticas y nuevedirecciones IP por interfaz. El número de direcciones IP disponibles para un pod determinado es unamenor que el máximo (de diez), ya que una de las direcciones IP está reservada para la propia interfazde red elástica. Para obtener más información, consulte Direcciones IP por interfaz de red por tipo deinstancia en la Guía del usuario de Amazon EC2 para instancias de Linux.

A medida que se agota el grupo de direcciones IP, el complemento asocia automáticamente otra interfazde red elástica a la instancia y asigna otro conjunto de direcciones IP secundarias a esa interfaz. Esteproceso continúa hasta que el nodo ya no puede admitir interfaces de red elásticas adicionales.

Las siguientes métricas se recopilan para el clúster y se exportan a CloudWatch:

• El número máximo de interfaces de red elásticas que el clúster puede admitir• El número de interfaces de red elásticas se han asignado a los pods• El número de direcciones IP asignadas actualmente a los pods• Número total y máximo de direcciones IP disponibles• El número de errores de ipamD

Implementación del auxiliar de métricas de CNIEl auxiliar de métricas de CNI requiere cloudwatch:PutMetricData permisos para enviar datos demétricas a CloudWatch. Esta sección le ayuda a crear una política de IAM con esos permisos, aplicarla alrol de instancia del nodo de trabajo y, a continuación, implementar el auxiliar de métricas de CNI.

177

Page 185: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAuxiliar de métricas de CNI

Para crear una política de IAM para el auxiliar de métricas de CNI

1. Cree un archivo llamado allow_put_metrics_data.json y rellénelo con el siguiente documentode políticas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" } ]}

2. Cree una política de IAM llamada CNIMetricsHelperPolicy para su perfil de instancia de nodo detrabajo que permita al auxiliar de métricas de CNI realizar llamadas a las API de AWS en su nombre.Utilice el siguiente comando de la AWS CLI para crear la política de IAM en su cuenta de AWS.

aws iam create-policy --policy-name CNIMetricsHelperPolicy \--description "Grants permission to write metrics to CloudWatch" \--policy-document file://allow_put_metrics_data.json

Anote el ARN de política que se devuelve.3. Obtenga el nombre del rol de IAM para sus nodos de trabajo. Utilice el comando siguiente para

imprimir el mapa de configuración aws-auth.

kubectl -n kube-system describe configmap aws-auth

Salida:

Name: aws-authNamespace: kube-systemLabels: <none>Annotations: <none>

Data====mapRoles:----- groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/eksctl-prod-nodegroup-standard-wo-NodeInstanceRole-GKNS581EASPU username: system:node:{{EC2PrivateDNSName}}

Events: <none>

Registre el nombre de rol para cualquier valor de rolearn que tenga asignado el gruposystem:nodes. En la salida del ejemplo anterior, el nombre del rol es eksctl-prod-nodegroup-standard-wo-NodeInstanceRole-GKNS581EASPU. Debe tener un valor para cada grupo denodos del clúster.

4. Asocie la nueva política de CNIMetricsHelperPolicy IAM a cada uno de los roles de IAM del nodode trabajo que identificó anteriormente con el comando siguiente, sustituyendo el texto rojo por supropio número de cuenta de AWS y el nombre del rol de IAM del nodo de trabajo.

178

Page 186: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualizaciones de CNI

aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/CNIMetricsHelperPolicy \--role-name eksctl-prod-nodegroup-standard-wo-NodeInstanceRole-GKNS581EASPU

Para implementar el auxiliar de métricas de CNI

• Aplique el manifiesto auxiliar de métricas de CNI con el siguiente comando.

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.5/config/v1.5/cni-metrics-helper.yaml

Creación de un panel de métricasDespués de haber implementado el auxiliar de métricas de CNI, puede ver las métricas de CNI en laconsola de CloudWatch. Este tema le ayuda a crear un panel para ver las métricas de CNI del clúster.

Para crear un panel de métricas de CNI

1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.2. En el panel de navegación izquierdo, seleccione Rules.3. En Custom Namespaces (Espacios de nombres personalizados), elija Kubernetes.4. Elija CLUSTER_ID.5. En la pestaña All metrics (Todas las métricas), seleccione las métricas que desea añadir al panel.6. Elija Actions (Acciones), y, a continuación, Add to dashboard (Añadir al panel).7. En la sección Select a dashboard (Seleccionar un panel), elija Create new (Crear nuevo) y escriba un

nombre para el panel, como "EKS-CNI-metrics".8. En la sección Select a widget type (Seleccionar un tipo de widget), elija Number (Número).9. En la sección Customize the widget title (Personalizar el título del widget) escriba un nombre lógico

para el título del panel, como "Métricas de EKS CNI".10. Elija Add to dashboard (Añadir al panel) para terminar. Ahora las métricas de CNI se añaden a un

panel que puede monitorizar, tal y como se muestra a continuación.

Actualizaciones del complemento CNI de AmazonVPC para KubernetesCuando se lanza un clúster de Amazon EKS, le aplicamos una versión reciente del complemento CNIde Amazon VPC para Kubernetes (la última versión absoluta del complemento está disponible en

179

Page 187: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación o actualización de CoreDNS

GitHub durante un breve periodo de gracia antes de que los nuevos clústeres comiencen a utilizarlo).Sin embargo, Amazon EKS no actualiza automáticamente el complemento CNI en el clúster cuando sepublican nuevas versiones. Debe actualizar manualmente el complemento CNI para obtener la versión másreciente en los clústeres ya existentes.

La versión más reciente de CNI recomendada en GitHub es 1.5.5. Puede ver las distintas versionesdisponibles para el complemento y leer las notas de la versión de cada versión en GitHub.

Utilice los siguientes procedimientos para comprobar su versión de CNI y actualizar a la versión másreciente.

Para comprobar la versión del complemento CNI de Amazon VPC para Kubernetes

• Utilice el siguiente comando para imprimir la versión de CNI del clúster:

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

Salida:

amazon-k8s-cni:1.5.3

En este ejemplo de resultado, la version de CNI es 1.5.3, la cual es anterior a la versión recomendadaactual, 1.5.5. Utilice el siguiente procedimiento para actualizar CNI.

Para actualizar el complemento CNI de Amazon VPC para Kubernetes

• Utilice el comando siguiente para actualizar su versión de CNI a la versión recomendada más reciente:

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.5/config/v1.5/aws-k8s-cni.yaml

Instalación o actualización de CoreDNSCoreDNS se admite en los clústeres de Amazon EKS con la versión de Kubernetes 1.11 o posterior. Losclústeres que se crearon con Kubernetes versión 1.10 se entregaron con kube-dns como el proveedor deDNS y detección de servicios predeterminado. Si ha realizado una actualización desde un clúster 1.10 ydesea usar CoreDNS como proveedor de DNS y detección de servicios, debe instalar CoreDNS y eliminarkube-dns.

Para comprobar si el clúster ya está ejecutando CoreDNS, utilice el siguiente comando.

kubectl get pod -n kube-system -l k8s-app=kube-dns

Si el resultado muestra coredns en los nombres de pod, ya se está ejecutando CoreDNS en su clúster.De lo contrario, utilice el siguiente procedimiento para actualizar el proveedor de DNS y detección deservicios a CoreDNS.

Note

El servicio de CoreDNS se aún se llama kube-dns para la compatibilidad con versionesanteriores.

180

Page 188: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación o actualización de CoreDNS

Para instalar CoreDNS en un clúster de Amazon EKS actualizado con kubectl

1. Añada el selector {"eks.amazonaws.com/component": "kube-dns"} a la implementación dekube-dns de su clúster. Esto impide que las dos implementaciones de DNS compitan por el controldel mismo conjunto de etiquetas.

kubectl patch -n kube-system deployment/kube-dns --patch \'{"spec":{"selector":{"matchLabels":{"eks.amazonaws.com/component":"kube-dns"}}}}'

2. Implemente CoreDNS en su clúster.

a. Establezca la dirección IP de DNS del clúster en la variable de entorno DNS_CLUSTER_IP.

export DNS_CLUSTER_IP=$(kubectl get svc -n kube-system kube-dns -o jsonpath='{.spec.clusterIP}')

b. Establezca la región de AWS del clúster en la variable de entorno REGION.

export REGION="us-west-2"

c. Descargue el manifiesto de CoreDNS del bucket de recursos de Amazon EKS.

curl -o dns.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/dns.yaml

d. Sustituya la variable de entorno del archivo dns.yaml por sus valores de la variable de entorno yaplique el manifiesto actualizado a su clúster. El siguiente comando realiza esta operación en unsolo paso.

cat dns.yaml | sed -e "s/REGION/$REGION/g" | sed -e "s/DNS_CLUSTER_IP/$DNS_CLUSTER_IP/g" | kubectl apply -f -

e. Obtenga el nombre del pod de coredns de su clúster.

COREDNS_POD=$(kubectl get pod -n kube-system -l eks.amazonaws.com/component=coredns \-o jsonpath='{.items[0].metadata.name}')

f. Consulte el pod coredns para asegurarse de que recibe solicitudes.

kubectl get --raw /api/v1/namespaces/kube-system/pods/$COREDNS_POD:9153/proxy/metrics \| grep 'coredns_dns_request_count_total'

Note

Podrían transcurrir varios minutos hasta que se devuelva el resultado, en función delporcentaje de solicitudes de DNS del clúster.

En el siguiente resultado esperado, el número 23 es la cantidad total de solicitudes DNS.

ℹ HELP coredns_dns_request_count_total Counter of DNS requests made per zone, protocol and family.ℹ TYPE coredns_dns_request_count_total countercoredns_dns_request_count_total{family="1",proto="udp",server="dns://:53",zone="."} 23

181

Page 189: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioActualización de CoreDNS

3. Actualice CoreDNS a la versión recomendada para su clúster. Para ello, complete los pasos descritosen the section called “Actualización de CoreDNS” (p. 182).

4. Reduzca la implementación de kube-dns a cero réplicas.

kubectl scale -n kube-system deployment/kube-dns --replicas=0

5. Limpie los recursos de kube-dns antiguos.

kubectl delete -n kube-system deployment/kube-dns serviceaccount/kube-dns configmap/kube-dns

Actualización de CoreDNS1. Compruebe la versión actual de la implementación de coredns del clúster.

kubectl describe deployment coredns --namespace kube-system | grep Image | cut -d "/" -f 3

Salida:

coredns:v1.1.3

Las versiones de coredns recomendadas para las correspondientes versiones de Kubernetes son lassiguientes:

Versión de Kubernetes 1.14 1.13 1.12

CoreDNS 1.6.6 1.6.6 1.6.6

2. Si la versión actual de coredns es 1.5.0 o posterior, pero una versión anterior a la recomendada,omita este paso. Si la versión actual es anterior a la 1.5.0, debe modificar el mapa de configuraciónpara que coredns use el complemento forward, en lugar del complemento proxy.

a. Abra el mapa de configuración con el siguiente comando.

kubectl edit configmap coredns -n kube-system

b. Sustituya proxy en la siguiente línea por forward. Guarde el archivo y salga del editor.

proxy . /etc/resolv.conf

3. Actualice coredns a la versión recomendada. Para ello, sustituya region-code por su región y1.6.6 por la versión de coredns recomendada del clúster:

kubectl set image --namespace kube-system deployment.apps/coredns \coredns=602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/coredns:v1.6.6

Instalación de Calico en Amazon EKSEl Proyecto Calico es un motor de políticas de red para Kubernetes. La ejecución de políticas de red deCalico le permite implementar la segmentación de la red y el aislamiento de inquilinos. Esto resulta útil

182

Page 190: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioDemostración de política Stars

en entornos con múltiples inquilinos que deben estar aislados entre sí, o cuando se desea crear entornosseparados para desarrollo, ensayo y producción. Las políticas de red se asemejan a los grupos deseguridad de AWS en que pueden crearse reglas de entrada y salida. Pero en lugar de asignar instanciasa un grupo de seguridad se asignan políticas de red a los pods mediante selectores de pods y etiquetas.En el procedimiento siguiente se muestra cómo instalar Calico en un clúster de Amazon EKS.

Note

Calico no es compatible cuando se utiliza Fargate con Amazon EKS.

Para instalar Calico en un clúster de Amazon EKS

1. Aplique el manifiesto de Calico desde el proyecto GitHub aws/amazon-vpc-cni-k8s. Estemanifiesto crea conjuntos de demonios en el espacio de nombres kube-system.

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.5/config/v1.5/calico.yaml

2. Observe los conjuntos de demonios de kube-system y espere a que el conjunto calico-nodetenga el número de pods DESIRED con el estado READY. Cuando esto sucede, Calico está enfuncionamiento.

kubectl get daemonset calico-node --namespace kube-system

Salida:

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEcalico-node 3 3 3 3 3 <none> 38s

Para eliminar Calico del clúster de Amazon EKS

• Si ha terminado de usar Calico en el clúster de Amazon EKS, puede eliminar el conjunto de demonioscon el siguiente comando:

kubectl delete -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.5/config/v1.5/calico.yaml

Demostración de política StarsEn esta sección se describe la demostración de política Stars incluida en la documentación del ProyectoCalico. La demostración crea un frontend, un backend y un servicio cliente en el clúster de Amazon EKS.La demostración también crea una interfaz gráfica de usuario de administración que muestra las rutas deentrada y salida disponibles entre los servicios.

Cuando aún no se ha creado ninguna política de red, todos los servicios pueden comunicarse en ambasdirecciones. Después de aplicar las políticas de la red, puede ver que el cliente solo puede comunicarsecon el servicio frontend y el backend solo puede comunicarse con el frontend.

Para ejecutar la demostración de política Stars

1. Aplique los servicios de frontend, backend, cliente e interfaz de usuario de administración:

183

Page 191: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioDemostración de política Stars

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/00-namespace.yamlkubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/01-management-ui.yamlkubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/02-backend.yamlkubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/03-frontend.yamlkubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/04-client.yaml

2. Espere a que todos los pods se encuentren en el estado Running:

kubectl get pods --all-namespaces --watch

3. Para conectarse a la interfaz de usuario de administración, reenviar el puerto local 9001 al serviciomanagement-ui que se ejecuta en el clúster:

kubectl port-forward service/management-ui -n management-ui 9001

4. Abra un navegador en el sistema local y diríjalo a http://localhost:9001/. Aparecerá la interfaz deusuario de administración. El nodo C es el servicio cliente, el nodo F es el servicio frontend y el nodo Bes el servicio backend. Cada nodo tiene acceso de comunicación completo a todos los demás nodos(como indican las líneas gruesas de colores).

184

Page 192: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioDemostración de política Stars

5. Aplique las políticas de red siguientes para aislar los servicios entre sí:

kubectl apply -n stars -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/default-deny.yamlkubectl apply -n client -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/default-deny.yaml

6. Actualice su navegador. Verá que la interfaz de usuario de administración ya no tiene acceso a losnodos, que dejan de aparecer.

7. Aplique las políticas de red siguientes para permitir el acceso de la interfaz de usuario deadministración a los servicios:

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/allow-ui.yamlkubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/allow-ui-client.yaml

8. Actualice su navegador. Verá que la interfaz de administración tiene de nuevo acceso a los nodos,pero los nodos no pueden comunicarse entre sí.

185

Page 193: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioDemostración de política Stars

9. Aplique la política de red siguiente para permitir el tráfico desde el servicio frontend hacia el serviciobackend:

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/backend-policy.yaml

10. Aplique la política de red siguiente para permitir el tráfico desde el espacio de nombres client haciael servicio frontend:

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/frontend-policy.yaml

186

Page 194: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioDemostración de política Stars

11. (Opcional) Cuando haya terminado con la demostración, puede eliminar sus recursos con lossiguientes comandos:

kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/04-client.yamlkubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/03-frontend.yamlkubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/02-backend.yamlkubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/01-management-ui.yamlkubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/00-namespace.yaml

187

Page 195: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación de kubectl

Administración de la autenticación declústeres

Amazon EKS utiliza IAM para proporcionar la autenticación a su clúster de Kubernetes (a través delcomando aws eks get-token, disponible en la versión 1.18.17 o posterior de la AWS CLI o el autenticadorde AWS IAM para Kubernetes), pero sigue dependiendo del Control de acceso basado en roles (RBAC)nativo de Kubernetes para la autorización. Esto significa que IAM solo se utiliza para la autenticación deentidades de IAM válidas. Todos los permisos para interactuar con la API de Kubernetes del clúster deAmazon EKS se administran a través del sistema RBAC nativo de Kubernetes.

Temas• Instalación de kubectl (p. 188)• Instalación de aws-iam-authenticator (p. 193)• Crear un archivo kubeconfig para Amazon EKS (p. 196)• Administración de usuarios o funciones de IAM para su clúster (p. 200)

Instalación de kubectlKubernetes utiliza una utilidad de línea de comandos llamada kubectl para comunicarse con el servidorde la API del clúster. El binario kubectl está disponible en muchos administradores de paquetes desistema operativo y esta opción es normalmente mucho más sencilla que el proceso manual de descargae instalación. Puede seguir las instrucciones de su sistema operativo o administrador de paquetes que seindican en la documentación de Kubernetes para realizar la instalación.

188

Page 196: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación de kubectl

Este tema le ayuda a descargar e instalar los binarios de kubectl ofrecidos por Amazon EKS parasistemas operativos macOS, Linux y Windows. Los binarios son idénticos a las versiones de la comunidadascendente y no son únicos para Amazon EKS o AWS.

Note

Debe utilizar una versión de kubectl con una diferencia de versión de menos de un número queel plano del control del clúster de Amazon EKS. Por ejemplo, el cliente de kubectl 1.12 debefuncionar con los clústeres 1.11, 1.12 y 1.13 de Kubernetes.

macOS

Para instalar kubectl en macOS

1. Descargue el binario de kubectl ofrecido por Amazon EKS para la versión de Kubernetes delclúster de Amazon S3:

• Kubernetes 1.14:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.6/2019-08-22/bin/darwin/amd64/kubectl

• Kubernetes 1.13:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.13.8/2019-08-14/bin/darwin/amd64/kubectl

• Kubernetes 1.12:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.12.10/2019-08-14/bin/darwin/amd64/kubectl

• Kubernetes 1.11:

curl -o kubectl bin/darwin/amd64/kubectl

2. (Opcional) Compruebe el binario descargado con la suma SHA-256 del binario.

a. Descargue la suma SHA-256 para la versión de Kubernetes del clúster para macOS:

• Kubernetes 1.14:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.6/2019-08-22/bin/darwin/amd64/kubectl.sha256

• Kubernetes 1.13:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.13.8/2019-08-14/bin/darwin/amd64/kubectl.sha256

• Kubernetes 1.12:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.12.10/2019-08-14/bin/darwin/amd64/kubectl.sha256

• Kubernetes 1.11:

curl -o kubectl.sha256 bin/darwin/amd64/kubectl.sha256

189

Page 197: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación de kubectl

b. Compruebe la suma SHA-256 para su binario descargado.

openssl sha1 -sha256 kubectl

c. Compare la suma SHA-256 generada en la salida del comando con su archivo SHA-256descargado. Los dos deben coincidir.

3. Ejecute permisos de ejecución al binario.

chmod +x ./kubectl

4. Copie el binario en una carpeta en PATH. Si ya ha instalado una versión de kubectl, lerecomendamos que cree un $HOME/bin/kubectl y se asegure de que $HOME/bin es el primerelemento de $PATH.

mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

5. (Opcional) Añada la ruta $HOME/bin a su archivo de inicialización del shell para que se configureal abrir un shell.

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

6. Una vez instalado kubectl, puede comprobar la versión con el comando siguiente:

kubectl version --short --client

Linux

Para instalar kubectl en Linux

1. Descargue el binario de kubectl ofrecido por Amazon EKS para la versión de Kubernetes delclúster de Amazon S3:

• Kubernetes 1.14:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.6/2019-08-22/bin/linux/amd64/kubectl

• Kubernetes 1.13:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.13.8/2019-08-14/bin/linux/amd64/kubectl

• Kubernetes 1.12:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.12.10/2019-08-14/bin/linux/amd64/kubectl

• Kubernetes 1.11:

curl -o kubectl bin/linux/amd64/kubectl

2. (Opcional) Compruebe el binario descargado con la suma SHA-256 del binario.

a. Descargue la suma SHA-256 para la versión de Kubernetes del clúster para Linux:

• Kubernetes 1.14:

190

Page 198: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación de kubectl

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.6/2019-08-22/bin/linux/amd64/kubectl.sha256

• Kubernetes 1.13:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.13.8/2019-08-14/bin/linux/amd64/kubectl.sha256

• Kubernetes 1.12:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.12.10/2019-08-14/bin/linux/amd64/kubectl.sha256

• Kubernetes 1.11:

curl -o kubectl.sha256 bin/linux/amd64/kubectl.sha256

b. Compruebe la suma SHA-256 para su binario descargado.

openssl sha1 -sha256 kubectl

c. Compare la suma SHA-256 generada en la salida del comando con su archivo SHA-256descargado. Los dos deben coincidir.

3. Ejecute permisos de ejecución al binario.

chmod +x ./kubectl

4. Copie el binario en una carpeta en PATH. Si ya ha instalado una versión de kubectl, lerecomendamos que cree un $HOME/bin/kubectl y se asegure de que $HOME/bin es el primerelemento de $PATH.

mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

5. (Opcional) Añada la ruta $HOME/bin a su archivo de inicialización del shell para que se configureal abrir un shell.

Note

En este paso se presupone que usa el shell Bash; si utiliza otro shell, cambie el comandopara utilizar su archivo de inicialización del shell específico.

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc

6. Una vez instalado kubectl, puede comprobar la versión con el comando siguiente:

kubectl version --short --client

Windows

Para instalar kubectl en Windows

1. Abra un terminal de PowerShell.2. Descargue el binario de kubectl ofrecido por Amazon EKS para la versión de Kubernetes del

clúster de Amazon S3:

191

Page 199: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación de kubectl

• Kubernetes 1.14:

curl -o kubectl.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.6/2019-08-22/bin/windows/amd64/kubectl.exe

• Kubernetes 1.13:

curl -o kubectl.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.13.8/2019-08-14/bin/windows/amd64/kubectl.exe

• Kubernetes 1.12:

curl -o kubectl.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.12.10/2019-08-14/bin/windows/amd64/kubectl.exe

• Kubernetes 1.11:

curl -o kubectl.exe bin/windows/amd64/kubectl.exe

3. (Opcional) Compruebe el binario descargado con la suma SHA-256 del binario.

a. Descargue la suma SHA-256 para la versión de Kubernetes del clúster para Windows:

• Kubernetes 1.14:

curl -o kubectl.exe.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.6/2019-08-22/bin/windows/amd64/kubectl.exe.sha256

• Kubernetes 1.13:

curl -o kubectl.exe.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.13.8/2019-08-14/bin/windows/amd64/kubectl.exe.sha256

• Kubernetes 1.12:

curl -o kubectl.exe.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.12.10/2019-08-14/bin/windows/amd64/kubectl.exe.sha256

• Kubernetes 1.11:

curl -o kubectl.exe.sha256 bin/windows/amd64/kubectl.exe.sha256

b. Compruebe la suma SHA-256 para su binario descargado.

Get-FileHash kubectl.exe

c. Compare la suma SHA-256 generada en la salida del comando con su archivo SHA-256descargado. Los dos deben coincidir, aunque la salida de PowerShell estará en mayúsculas.

4. Copie el binario en una carpeta en PATH. Si tiene un directorio existente en su PATH que utilizapara utilidades de línea de comandos, copie el binario en ese directorio. De lo contrario, lleve acabo todos los pasos que figuran a continuación.

a. Cree un nuevo directorio para sus binarios de línea de comandos, como C:\bin.b. Copie el binario kubectl.exe en el nuevo directorio.c. Edite la variable de entorno PATH del usuario o sistema para añadir el nuevo directorio a su

PATH.

192

Page 200: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación de aws-iam-authenticator

d. Cierre el terminal de PowerShell y abra uno nuevo para obtener la nueva variable PATH.5. Una vez instalado kubectl, puede comprobar la versión con el comando siguiente:

kubectl version --short --client

Instalación de aws-iam-authenticatorAmazon EKS utiliza IAM para proporcionar autenticación al clúster de Kubernetes a través del autenticadorde AWS IAM para Kubernetes. Puede configurar el cliente kubectl para que funcione con AmazonEKS. Para ello hay que instalar el autenticador de AWS IAM para Kubernetes y modificar el archivo deconfiguración de kubectl para que lo use en la autenticación.

macOS

Para instalar aws-iam-authenticator con Homebrew

La forma más sencilla de instalar aws-iam-authenticator es con Homebrew.

1. Si Homebrew aún no está instalado en su Mac, instálelo con el siguiente comando.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. Instale el aws-iam-authenticator con el siguiente comando:

brew install aws-iam-authenticator

3. Compruebe que el binario aws-iam-authenticator funciona.

aws-iam-authenticator help

Para instalar aws-iam-authenticator en macOS

También puede instalar la versión ofrecida por AWS del aws-iam-authenticator siguiendo lospasos que se indican a continuación.

1. Descargue el binario aws-iam-authenticator ofrecido por Amazon EKS desde Amazon S3:

curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.10/2020-02-22/bin/darwin/amd64/aws-iam-authenticator

2. (Opcional) Compruebe el binario descargado con la suma SHA-256 proporcionada en el prefijodel bucket.

a. Descargue la suma SHA-256 de su sistema.

curl -o aws-iam-authenticator.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.10/2020-02-22/bin/darwin/amd64/aws-iam-authenticator.sha256

b. Compruebe la suma SHA-256 de su binario descargado.

openssl sha1 -sha256 aws-iam-authenticator

193

Page 201: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación de aws-iam-authenticator

c. Compare la suma SHA-256 generada en la salida del comando con su archivo aws-iam-authenticator.sha256 descargado. Los dos deben coincidir.

3. Ejecute permisos de ejecución al binario.

chmod +x ./aws-iam-authenticator

4. Copie el binario en una carpeta en $PATH. Le recomendamos que cree $HOME/bin/aws-iam-authenticator y se asegure de que $HOME/bin viene en primer lugar en la variable $PATH.

mkdir -p $HOME/bin && cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$PATH:$HOME/bin

5. Agregue $HOME/bin a la variable de entorno PATH.

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

6. Compruebe que el binario aws-iam-authenticator funciona.

aws-iam-authenticator help

Linux

Para instalar aws-iam-authenticator en Linux

1. Descargue el binario aws-iam-authenticator ofrecido por Amazon EKS desde Amazon S3:

curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.10/2020-02-22/bin/linux/amd64/aws-iam-authenticator

2. (Opcional) Compruebe el binario descargado con la suma SHA-256 proporcionada en el prefijodel bucket.

a. Descargue la suma SHA-256 de su sistema.

curl -o aws-iam-authenticator.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.10/2020-02-22/bin/linux/amd64/aws-iam-authenticator.sha256

b. Compruebe la suma SHA-256 de su binario descargado.

openssl sha1 -sha256 aws-iam-authenticator

c. Compare la suma SHA-256 generada en la salida del comando con su archivo aws-iam-authenticator.sha256 descargado. Los dos deben coincidir.

3. Ejecute permisos de ejecución al binario.

chmod +x ./aws-iam-authenticator

4. Copie el binario en una carpeta en $PATH. Le recomendamos que cree $HOME/bin/aws-iam-authenticator y se asegure de que $HOME/bin viene en primer lugar en la variable $PATH.

mkdir -p $HOME/bin && cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$PATH:$HOME/bin

5. Agregue $HOME/bin a la variable de entorno PATH.

194

Page 202: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación de aws-iam-authenticator

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc

6. Compruebe que el binario aws-iam-authenticator funciona.

aws-iam-authenticator help

Windows

Para instalar aws-iam-authenticator en Windows con Chocolatey

1. Si aún no tiene Chocolatey instalado en su sistema Windows, consulte la página sobre cómoinstalar Chocolatey.

2. Abra una ventana de terminal de PowerShell e instale el paquete aws-iam-authenticator conel siguiente comando:

choco install -y aws-iam-authenticator

3. Compruebe que el binario aws-iam-authenticator funciona.

aws-iam-authenticator help

Para instalar aws-iam-authenticator en Windows

1. Abra una ventana de terminal de PowerShell y descargue el binario aws-iam-authenticatorproporcionado por Amazon EKS desde Amazon S3:

curl -o aws-iam-authenticator.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.10/2020-02-22/bin/windows/amd64/aws-iam-authenticator.exe

2. (Opcional) Compruebe el binario descargado con la suma SHA-256 proporcionada en el prefijodel bucket.

a. Descargue la suma SHA-256 de su sistema.

curl -o aws-iam-authenticator.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.10/2020-02-22/bin/windows/amd64/aws-iam-authenticator.exe.sha256

b. Compruebe la suma SHA-256 de su binario descargado.

Get-FileHash aws-iam-authenticator.exe

c. Compare la suma SHA-256 generada en la salida del comando con su archivo SHA-256descargado. Los dos deben coincidir, aunque la salida de PowerShell estará en mayúsculas.

3. Copie el binario en una carpeta en PATH. Si tiene un directorio existente en su PATH que utilizapara utilidades de línea de comandos, copie el binario en ese directorio. De lo contrario, lleve acabo todos los pasos que figuran a continuación.

a. Cree un nuevo directorio para sus binarios de línea de comandos, como C:\bin.b. Copie el binario aws-iam-authenticator.exe en el nuevo directorio.c. Edite la variable de entorno PATH del usuario o sistema para añadir el nuevo directorio a su

PATH.d. Cierre el terminal de PowerShell y abra uno nuevo para obtener la nueva variable PATH.

195

Page 203: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCrear un archivo kubeconfig para Amazon EKS

4. Compruebe que el binario aws-iam-authenticator funciona.

aws-iam-authenticator help

Si tiene un clúster de Amazon EKS, cree un archivo kubeconfig para ese clúster. Para obtener másinformación, consulte Crear un archivo kubeconfig para Amazon EKS (p. 196). De lo contrario,consulte Creación de un clúster de Amazon EKS (p. 23) para crear un nuevo clúster de Amazon EKS.

Crear un archivo kubeconfig para Amazon EKSEn esta sección, creará un archivo kubeconfig para su clúster (o actualizará uno existente).

En esta sección se ofrecen dos procedimientos para crear o actualizar su kubeconfig. Puede crear oactualizar rápidamente un kubeconfig con el comando update-kubeconfig de la AWS CLI medianteel primer procedimiento. Si lo prefiere, puede crear un kubeconfig manualmente con el segundoprocedimiento.

Amazon EKS utiliza el comando aws eks get-token disponible en la versión 1.18.17 o posterior de la AWSCLI o el autenticador de AWS IAM para Kubernetes con kubectl para la autenticación del clúster. Si hainstalado la AWS CLI en su sistema, el autenticador de AWS IAM para Kubernetes utilizará de formapredeterminada las mismas credenciales que se devuelven con el siguiente comando:

aws sts get-caller-identity

Para obtener más información, consulte Configuración de la AWS CLI en la AWS Command Line InterfaceGuía del usuario.

Para crear el archivo kubeconfig con la AWS CLI

1. Asegúrese de que tiene al menos la versión 1.18.17 de la AWS CLI instalada. Para instalar oactualizar la AWS CLI, consulte Instalación de la interfaz de línea de comandos de AWS en la AWSCommand Line Interface Guía del usuario.

Note

La versión de Python de su sistema debe ser 2.7.9 o posterior. En caso contrario seproducirán errores hostname doesn't match en las llamadas de la AWS CLI a AmazonEKS. Para obtener más información, consulte What are "hostname doesn't match" errors? enlas preguntas más frecuentes de solicitudes de Python.

Puede comprobar la versión de la AWS CLI con el comando siguiente:

aws --version

Important

Los administradores de paquetes tales como yum, apt-get o Homebrew para macOS suelenestar detrás de varias versiones de la AWS CLI. Para asegurarse de que tiene la versión másreciente, consulte la sección Instalación de la interfaz de línea de comandos de AWS en laAWS Command Line Interface Guía del usuario.

2. Utilice el comando update-kubeconfig de la AWS CLI para crear o actualizar el archivo kubeconfig delclúster.

196

Page 204: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCrear un archivo kubeconfig para Amazon EKS

• De forma predeterminada, el archivo de configuración resultante se crea en la ruta de kubeconfigpredeterminada (.kube/config) en el directorio de inicio o en combinación con un archivokubeconfig existente en dicha ubicación. Puede especificar otra ruta con la opción --kubeconfig.

• Puede especificar un ARN de función de IAM con la opción --role-arn para usar esa funciónen la autenticación al emitir comandos kubectl. De lo contrario, se usará la entidad de IAM de laAWS CLI predeterminada o las credenciales del SDK. Puede ver su identidad de AWS CLI o SDKpredeterminada ejecutando el comando aws sts get-caller-identity.

• Para obtener más información, consulte la página de ayuda del comando aws eks update-kubeconfig help o consulte update-kubeconfig en la AWS CLI Command Reference.

Note

Para ejecutar el siguiente comando, la cuenta debe estar asignada al permiso de IAMeks:DescribeCluster para el nombre de clúster que especifique.

aws eks --region region update-kubeconfig --name cluster_name

3. Pruebe la configuración.

kubectl get svc

Note

Si aparece el error "aws-iam-authenticator": executable file not found in$PATH, significa que kubectl no está configurado para Amazon EKS. Para obtener másinformación, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Acceso denegado ono autorizado (kubectl) (p. 293) en la sección de solución de problemas.

Salida:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEsvc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

Para crear el archivo kubeconfig manualmente

1. Cree el directorio ~/.kube predeterminado si aún no existe.

mkdir -p ~/.kube

2. Abra el editor de texto de su elección y copie uno de los bloques de código de kubeconfig debajo,en función del método de token de cliente que prefiera.

• Para utilizar el comando aws eks get-token de la AWS CLI (requiere la última versión 1.18.17 de laAWS CLI):

apiVersion: v1clusters:- cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetescontexts:- context:

197

Page 205: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCrear un archivo kubeconfig para Amazon EKS

cluster: kubernetes user: aws name: awscurrent-context: awskind: Configpreferences: {}users:- name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws args: - "eks" - "get-token" - "--cluster-name" - "<cluster-name>" ℹ - "--role" ℹ - "<role-arn>" ℹ env: ℹ - name: AWS_PROFILE ℹ value: "<aws-profile>"

• Para utilizar el autenticador de AWS IAM para Kubernetes:

apiVersion: v1clusters:- cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetescontexts:- context: cluster: kubernetes user: aws name: awscurrent-context: awskind: Configpreferences: {}users:- name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws-iam-authenticator args: - "token" - "-i" - "<cluster-name>" ℹ - "-r" ℹ - "<role-arn>" ℹ env: ℹ - name: AWS_PROFILE ℹ value: "<aws-profile>"

3. Sustituya <endpoint-url> por la URL de punto de enlace creada para el clúster.4. Sustituya <base64-encoded-ca-cert> por el certificateAuthority.data que creó para el

clúster.5. Sustituya <cluster-name> por el nombre del clúster.6. (Opcional) Para asumir un rol de IAM para realizar operaciones del clúster en lugar de la cadena de

proveedores de credenciales de AWS predeterminada, quite el comentario de las líneas -r o --roley <role-arn>, y sustituya un ARN de rol de IAM para utilizarlo con el usuario.

198

Page 206: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCrear un archivo kubeconfig para Amazon EKS

7. (Opcional) Para utilizar siempre un perfil de credenciales de AWS específico con nombre (en lugar dela cadena de proveedores de credenciales de AWS predeterminada), quite el comentario las líneasenv y sustituya <aws-profile> por el nombre del perfil que desee utilizar.

8. Guarde el archivo en la carpeta de kubectl predeterminada con el nombre del clúster en el nombredel archivo. Por ejemplo, si el nombre del clúster es devel, guarde el archivo como ~/.kube/config-devel.

9. Añada la ruta del archivo a la variable de entorno KUBECONFIG para que kubectl sepa dóndeencontrar la configuración del clúster.

• Para los shells Bash en macOS o Linux:

export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel

• Para PowerShell en Windows:

$ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.kube\config-devel"

10. (Opcional) Añada la configuración al archivo de inicialización del shell para que se configure al abrir unshell.

• Para los shells Bash en MacOS:

echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel' >> ~/.bash_profile

• Para los shells Bash en Linux:

echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel' >> ~/.bashrc

• Para PowerShell en Windows:

[System.Environment]::SetEnvironmentVariable('KUBECONFIG', $ENV:KUBECONFIG, 'Machine')

11. Pruebe la configuración.

kubectl get svc

Note

Si aparece el error "aws-iam-authenticator": executable file not found in$PATH, significa que kubectl no está configurado para Amazon EKS. Para obtener másinformación, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Acceso denegado ono autorizado (kubectl) (p. 293) en la sección de solución de problemas.

Salida:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEsvc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

199

Page 207: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAdministración de usuarios o

funciones de IAM para su clúster

Administración de usuarios o funciones de IAM parasu clúster

Al crear un clúster de Amazon EKS, el usuario o rol o el usuario de entidad de IAM, como un usuariofederado que crea el clúster se concede automáticamente permisos system:masters en la configuraciónRBAC del clúster. Para permitir que otros roles o usuarios de AWS interactúen con el clúster, debe editar elmapa de configuración aws-auth desde Kubernetes.

Note

Para obtener más información acerca de las diferentes identidades de IAM, consulte Identidades(usuarios, grupos y roles) en la Guía del usuario de IAM. Para obtener más información sobre laconfiguración de RBAC de Kubernetes, consulte Using RBAC Authorization.

El mapa de configuración aws-auth se aplica como parte de la guía Introducción a Amazon EKS (p. 3),que proporciona un tutorial completo desde la creación de un clúster de Amazon EKS hasta laimplementación de una aplicación Kubernetes de ejemplo. Se crea inicialmente para permitir que losnodos de trabajo se unan al clúster, pero este mapa de configuración también se utiliza para añadir accesoRBAC a los usuarios y las funciones de IAM. Si no ha lanzado los nodos de trabajo y aplicado el mapa deconfiguración aws-auth, puede hacerlo con el siguiente procedimiento.

Para aplicar el mapa de configuración aws-auth a su clúster

1. Compruebe si ya ha aplicado el mapa de configuración aws-auth.

kubectl describe configmap -n kube-system aws-auth

Si recibe un error que indica "Error from server (NotFound): configmaps "aws-auth"not found", continúe con los siguientes pasos para aplicar el mapa de configuración de stock.

2. Descargue, edite y aplique el mapa de configuración del autenticador de AWS.

a. Descargue el mapa de configuración:

curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/aws-auth-cm.yaml

b. Abra el archivo con el editor de texto que prefiera. Reemplace el fragmento de <ARN del rolde instancia (no el perfil de instancia)> por el nombre de recurso de Amazon(ARN) del rol de IAM que está asociado a sus nodos de trabajo, y guarde el archivo. Puedeinspeccionar las salidas de la pila de AWS CloudFormation para sus grupos de nodos de trabajo ybuscar los siguientes valores:

• InstanceRoleARN (para grupos de nodos de trabajo que se crearon con eksctl)• NodeInstanceRole (para grupos de nodos de trabajo que se crearon con plantillas de AWS

CloudFormation incluidas en Amazon EKS en la consolaConsola de administración de AWS)

Important

No modifique ninguna otra línea de este archivo.

apiVersion: v1kind: ConfigMapmetadata: name: aws-auth namespace: kube-system

200

Page 208: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAdministración de usuarios o

funciones de IAM para su clúster

data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

c. Aplique la configuración. Este comando puede tardar varios minutos en finalizar.

kubectl apply -f aws-auth-cm.yaml

Note

Si aparece el error "aws-iam-authenticator": executable file not foundin $PATH, significa que kubectl no está configurado para Amazon EKS. Para obtenermás información, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Accesodenegado o no autorizado (kubectl) (p. 293) en la sección de solución de problemas.

3. Observe el estado de los nodos y espere a que aparezca el valor Ready.

kubectl get nodes --watch

Para añadir un usuario o función de IAM a un clúster de Amazon EKS

1. Asegúrese de que las credenciales de AWS que utiliza kubectl ya tienen autorización para el clúster.El usuario de IAM que ha creado el clúster tiene esos permisos de forma predeterminada.

2. Abra el mapa de configuración aws-auth.

kubectl edit -n kube-system configmap/aws-auth

Note

Si recibe un error que indica "Error from server (NotFound): configmaps "aws-auth" not found", use el procedimiento anterior para aplicar el mapa de configuración destock.

Ejemplo de mapa de configuración:

ℹ Please edit the object below. Lines beginning with a 'ℹ' will be ignored,ℹ and an empty file will abort the edit. If an error occurs while saving this file will beℹ reopened with the relevant failures.ℹapiVersion: v1data: mapRoles: | - rolearn: arn:aws:iam::111122223333:role/doc-test-worker-nodes-NodeInstanceRole-WDO5P42N3ETB username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodeskind: ConfigMapmetadata: annotations: kubectl.kubernetes.io/last-applied-configuration: |

201

Page 209: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAdministración de usuarios o

funciones de IAM para su clúster

{"apiVersion":"v1","data":{"mapRoles":"- rolearn: arn:aws:iam::111122223333:role/doc-test-worker-nodes-NodeInstanceRole-WDO5P42N3ETB\n username: system:node:{{EC2PrivateDNSName}}\n groups:\n - system:bootstrappers\n - system:nodes\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"aws-auth","namespace":"kube-system"}} creationTimestamp: 2018-04-04T18:49:10Z name: aws-auth namespace: kube-system resourceVersion: "780" selfLink: /api/v1/namespaces/kube-system/configmaps/aws-auth uid: dcc31de5-3838-11e8-af26-02e00430057c

3. Añada los usuarios o funciones de IAM, o las cuentas de AWS, al mapa de configuración.

• Para añadir un usuario de IAM añada los detalles del usuario a la sección mapUsers del mapade configuración, bajo data. Añada esta sección si no existe todavía en el archivo. Cada entradaadmite los parámetros siguientes:• userarn: ARN del usuario de IAM que se va a añadir.• username: nombre de usuario dentro de Kubernetes al que se asigna el usuario de IAM. De forma

predeterminada, el nombre de usuario es el ARN del usuario de IAM.• grupos: lista de los grupos de Kubernetes asignados al usuario. Para obtener más información,

consulte Default Roles and Role Bindings en la documentación de Kubernetes.• Para añadir un rol de IAM (por ejemplo para usuarios federados): añada los detalles del rol a la

sección mapRoles del mapa de configuración, bajo data. Añada esta sección si no existe todavíaen el archivo. Cada entrada admite los parámetros siguientes:• rolearn: ARN de la función de IAM que se va a añadir.• username: nombre del usuario de Kubernetes al que se asigna la función de IAM. De forma

predeterminada, el nombre de usuario es el ARN de la función de IAM.• groups: lista de los grupos de Kubernetes asignados al rol. Para obtener más información,

consulte Default Roles and Role Bindings en la documentación de Kubernetes.

Por ejemplo, el bloque siguiente contiene:

• Una sección mapRoles que añade el rol de la instancia de nodos de trabajo para que los nodos detrabajo puedan registrarse en el clúster.

• Una sección mapUsers con el usuario admin de AWS de la cuenta de AWS predeterminada y elusuario ops-user de otra cuenta de AWS. Ambos usuarios se añaden al grupo system:masters.

ℹ Please edit the object below. Lines beginning with a 'ℹ' will be ignored,ℹ and an empty file will abort the edit. If an error occurs while saving this file will beℹ reopened with the relevant failures.ℹapiVersion: v1data: mapRoles: | - rolearn: arn:aws:iam::555555555555:role/devel-worker-nodes-NodeInstanceRole-74RF4UBDUKL6 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes mapUsers: | - userarn: arn:aws:iam::555555555555:user/admin username: admin groups: - system:masters - userarn: arn:aws:iam::111122223333:user/ops-user

202

Page 210: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAdministración de usuarios o

funciones de IAM para su clúster

username: ops-user groups: - system:masters

4. Guarde el archivo y salga del editor de texto.

203

Page 211: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación o actualización de eksctl

La utilidad de línea de comandoseksctl

En este capítulo se explica eksctl, una sencilla utilidad de línea de comandos para crear y administrarclústeres en Amazon EKS. La utilidad de línea de comandos eksctl constituye la manera más rápida ysencilla de crear un nuevo clúster con nodos de trabajo para Amazon EKS.

Para obtener más información y para ver la documentación oficial, visite https://eksctl.io/.

Instalación o actualización de eksctlEsta sección le ayuda a instalar o actualizar la utilidad de línea de comandos eksctl.

Seleccione la pestaña que corresponda a la configuración de su cliente.

macOS

Para instalar o actualizar eksctl en macOS con Homebrew

La forma más sencilla de comenzar a utilizar Amazon EKS y macOS es instalando eksctl conHomebrew. La receta eksctl de Homebrew instala eksctl y todas las demás dependenciasnecesarias para Amazon EKS, como kubectl y el aws-iam-authenticator.

1. Si aún no tiene instalado Homebrew en macOS, instálelo con el siguiente comando.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. Instale Weaveworks Homebrew tap.

brew tap weaveworks/tap

3. Instale o actualice eksctl.

• Instale eksctl con el siguiente comando:

brew install weaveworks/tap/eksctl

• Si eksctl ya está instalado, ejecute el siguiente comando para actualizarlo:

brew upgrade eksctl && brew link --overwrite eksctl

4. Compruebe que la instalación se ha realizado correctamente con el siguiente comando.

eksctl version

Note

La versión de GitTag debe ser al menos 0.16.0-rc.1. En caso contrario, compruebela salida del terminal por si hay algún error de instalación o actualización.

204

Page 212: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInstalación o actualización de eksctl

Linux

Para instalar o actualizar eksctl en Linux con curl

1. Descargue y extraiga la última versión de eksctl con el siguiente comando.

curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

2. Mueva el binario extraído a /usr/local/bin.

sudo mv /tmp/eksctl /usr/local/bin

3. Compruebe que la instalación se ha realizado correctamente con el siguiente comando.

eksctl version

Note

La versión de GitTag debe ser al menos 0.16.0-rc.1. En caso contrario, compruebela salida del terminal por si hay algún error de instalación o actualización.

Windows

Para instalar o actualizar eksctl en Windows mediante Chocolatey

1. Si aún no tiene Chocolatey instalado en su sistema Windows, consulte la página sobre cómoinstalar Chocolatey.

2. Instale o actualice eksctl y aws-iam-authenticator.

• Instale los binarios con el siguiente comando:

chocolatey install -y eksctl aws-iam-authenticator

• Si ya están instalados, ejecute el siguiente comando para actualizarlos:

chocolatey upgrade -y eksctl aws-iam-authenticator

3. Compruebe que la instalación se ha realizado correctamente con el siguiente comando.

eksctl version

Note

La versión de GitTag debe ser al menos 0.16.0-rc.1. En caso contrario, compruebela salida del terminal por si hay algún error de instalación o actualización.

205

Page 213: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Lanzar una aplicación de libro deinvitados

En esta sección, creará una aplicación de ejemplo con un libro de invitados para probar el nuevo clúster deAmazon EKS.

Note

Para obtener más información sobre la preparación del ejemplo del libro de invitados, consultehttps://github.com/kubernetes/examples/blob/master/guestbook-go/README.md en ladocumentación de Kubernetes.

Para crear la aplicación de libro de invitados

1. Cree el controlador de replicación maestro Redis.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-master-controller.json

Note

Si aparece el error "aws-iam-authenticator": executable file not found in$PATH, significa que kubectl no está configurado para Amazon EKS. Para obtener másinformación, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Acceso denegado ono autorizado (kubectl) (p. 293) en la sección de solución de problemas.

Salida:

replicationcontroller "redis-master" created

2. Cree el servicio maestro Redis.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-master-service.json

Salida:

service "redis-master" created

3. Cree el controlador de replicación esclavo Redis.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-slave-controller.json

Salida:

replicationcontroller "redis-slave" created

4. Cree el servicio esclavo Redis.

206

Page 214: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-slave-service.json

Salida:

service "redis-slave" created

5. Cree el controlador de replicación de guestbook.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/guestbook-controller.json

Salida:

replicationcontroller "guestbook" created

6. Cree el servicio guestbook.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/guestbook-service.json

Salida:

service "guestbook" created

7. Consulte los servicios del clúster y espere hasta que se rellene la columna External IP (IP externa) delservicio guestbook.

Note

La dirección IP podría tardar varios minutos en estar disponible.

kubectl get services -o wide

8. Cuando la dirección IP externa esté disponible, use un navegador web con esadirección y el puerto 3000 para ver el libro de invitados. Por ejemplo, http://a7a95c2b9e69711e7b1a3022fdcfdf2e-1985673473.us-west-2.elb.amazonaws.com:3000

Note

Podrían transcurrir varios minutos hasta que el DNS se propague y que aparezca el libro deinvitados.

207

Page 215: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Important

Si no puede conectar con la dirección IP externa con el navegador, asegúrese de que elfirewall corporativo no bloque los puertos no estándar, como el 3000. Para comprobarlo,pruebe a cambiar a una red invitada.

Para limpiar la aplicación de libro de invitados

Cuando haya terminado de experimentar con la aplicación de libro de invitados, debe limpiar los recursosque ha creado para ella.

• El comando siguiente elimina todos los servicios y controladores de replicación de la aplicación delibro de invitados:

kubectl delete rc/redis-master rc/redis-slave rc/guestbook svc/redis-master svc/redis-slave svc/guestbook

Note

Si aparece el error "aws-iam-authenticator": executable file not found in$PATH, significa que kubectl no está configurado para Amazon EKS. Para obtener másinformación, consulte Instalación de aws-iam-authenticator (p. 193).Si recibe cualquier otro error de tipo de recurso o autorización, consulte Acceso denegado ono autorizado (kubectl) (p. 293) en la sección de solución de problemas.

Si ha terminado de trabajar con el clúster de Amazon EKS, debe eliminar el clúster y sus recursospara que no se generen cargos adicionales. Para obtener más información, consulte Eliminación de unclúster (p. 48).

208

Page 216: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Instalación del servidor de métricasde Kubernetes

El servidor de métricas de Kubernetes es un agregador de datos de uso de recursos en el clúster. No estáimplementado en los clústeres de Amazon EKS de forma predeterminada. El servidor de métricas suelenusarlo otros complementos de Kubernetes, como Escalador automático de pods horizontales (p. 146) oel panel de Kubernetes (p. 216). Para obtener más información, consulte Resource metrics pipeline enla documentación de Kubernetes. En este tema se explica cómo implementar el servidor de métricas deKubernetes en el clúster de Amazon EKS.

Seleccione la pestaña correspondiente al método de instalación de CoreDNS que desee:

curl and jq

Para instalar el metrics-server desde GitHub en un clúster de Amazon EKS con curl yjq

Si tiene un sistema MacOS o Linux con curl, tar, gzip y el analizador de JSON jq instalados,puede descargar, extraer e instalar la última versión con los siguientes comandos. De lo contrario,utilice el siguiente procedimiento para descargar la última versión con un navegador web.

1. Abra una ventana de terminal y vaya al directorio en el que desea descargar la última versión delmetrics-server.

2. Copie y pegue los siguientes comandos en la ventana de terminal y, a continuación, escriba Enter(Intro) para ejecutarlos. Estos comandos descargan la última versión. Extráigala y aplique losmanifiestos de versión 1.8 o superior a su clúster.

DOWNLOAD_URL=$(curl -Ls "https://api.github.com/repos/kubernetes-sigs/metrics-server/releases/latest" | jq -r .tarball_url)DOWNLOAD_VERSION=$(grep -o '[^/v]*$' <<< $DOWNLOAD_URL)curl -Ls $DOWNLOAD_URL -o metrics-server-$DOWNLOAD_VERSION.tar.gzmkdir metrics-server-$DOWNLOAD_VERSIONtar -xzf metrics-server-$DOWNLOAD_VERSION.tar.gz --directory metrics-server-$DOWNLOAD_VERSION --strip-components 1kubectl apply -f metrics-server-$DOWNLOAD_VERSION/deploy/1.8+/

3. Compruebe que la implementación de metrics-server está ejecutando la cantidad deseada depods con el siguiente comando:

kubectl get deployment metrics-server -n kube-system

Salida:

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmetrics-server 1 1 1 1 56m

Web browser

Para instalar el metrics-server desde GitHub en un clúster de Amazon EKS con unnavegador web

1. Descargue y extraiga la última versión del código del servidor de métricas de GitHub.

209

Page 217: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

a. Vaya a la página de la última versión del proyecto metrics-server en GitHub (https://github.com/kubernetes-sigs/metrics-server/releases/latest) y, a continuación, elija un archivode código fuente de la última versión para descargarlo.

Note

Si va a descargar a un servidor remoto, puede utilizar el siguiente comando wgetsustituyendo el texto de color alternativo por el número de versión másreciente.

wget -O v0.3.6.tar.gz https://codeload.github.com/kubernetes-sigs/metrics-server/tar.gz/v0.3.6

b. Vaya a su carpeta de descargas y extraiga el archivo de código fuente. Por ejemplo, sidescargó el archivo .tar.gz, utilice el siguiente comando para extraerlo (sustituyendo suversión de lanzamiento).

tar -xzf v0.3.6.tar.gz

2. Aplique todos los manifiestos YAML en el directorio de metrics-server-0.3.6/deploy/1.8+(sustituyendo su versión de lanzamiento).

kubectl apply -f metrics-server-0.3.6/deploy/1.8+/

3. Compruebe que la implementación de metrics-server está ejecutando la cantidad deseada depods con el siguiente comando:

kubectl get deployment metrics-server -n kube-system

Salida:

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmetrics-server 1 1 1 1 56m

210

Page 218: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioVisualización de métricas sin procesar

Métricas del plano de control conPrometheus

El servidor de la API de Kubernetes expone una serie de métricas que son útiles a efectos demonitorización y análisis. Estas métricas se exponen internamente a través de un punto de enlace demétricas que hace referencia a la API HTTP /metrics. Al igual que otros puntos de enlace, este puntode enlace se expone en el plano de control de Amazon EKS. En este tema se explican algunas de lasmaneras en las que puede usar este punto de enlace para ver y analizar lo que está haciendo el clúster.

Visualización de métricas sin procesarPara ver el resultado de métricas sin procesar, utilice kubectl con la marca --raw. Este comando lepermite transferir cualquier ruta HTTP y devuelve la respuesta sin procesar.

kubectl get --raw /metrics

Resultado del ejemplo:

...ℹ HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host.ℹ TYPE rest_client_requests_total counterrest_client_requests_total{code="200",host="127.0.0.1:21362",method="POST"} 4994rest_client_requests_total{code="200",host="127.0.0.1:443",method="DELETE"} 1rest_client_requests_total{code="200",host="127.0.0.1:443",method="GET"} 1.326086e+06rest_client_requests_total{code="200",host="127.0.0.1:443",method="PUT"} 862173rest_client_requests_total{code="404",host="127.0.0.1:443",method="GET"} 2rest_client_requests_total{code="409",host="127.0.0.1:443",method="POST"} 3rest_client_requests_total{code="409",host="127.0.0.1:443",method="PUT"} 8ℹ HELP ssh_tunnel_open_count Counter of ssh tunnel total open attemptsℹ TYPE ssh_tunnel_open_count counterssh_tunnel_open_count 0ℹ HELP ssh_tunnel_open_fail_count Counter of ssh tunnel failed open attemptsℹ TYPE ssh_tunnel_open_fail_count counterssh_tunnel_open_fail_count 0

Este resultado sin procesar devuelve literalmente lo que el servidor de API expone. Estas métricas estánrepresentados en un formato Prometheus. Este formato permite al servidor de la API exponer diferentesmétricas desglosada por línea. Cada línea incluye un nombre de métrica, etiquetas y un valor.

metric_name{"tag"="value"[,...]} value

Si bien este punto de enlace es útil si está buscando una métrica específica, normalmente querrá analizarestas métricas a lo largo del tiempo. Para ello, puede implementar Prometheus en su clúster. Prometeoes un sistema de monitorización y una base de datos de serie temporal que extrae puntos de enlaceexpuestos y agrega datos, lo que le permite filtrar, crear gráficos y consultar los resultados.

211

Page 219: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioImplementación de Prometheus

Implementación de PrometheusEsto le ayudará a implementar Prometheus en su clúster con Helm V3. Si ya tiene instalado Helm, puedecomprobar su versión con el comando helm version. Helm es un administrador de paquetes para losclústeres de Kubernetes. Para obtener más información sobre Helm y sobre cómo instalarlo, consulte Usode Helm con Amazon EKS (p. 215).

Después de configurar Helm para su clúster de Amazon EKS, puede utilizarlo para implementarPrometheus con los pasos que se describen a continuación.

Para implementar Prometheus con Helm

1. Cree un espacio de nombres para Prometheus.

kubectl create namespace prometheus

2. Implemente Prometheus.

helm install prometheus stable/prometheus \ --namespace prometheus \ --set alertmanager.persistentVolume.storageClass="gp2",server.persistentVolume.storageClass="gp2"

3. Compruebe que todos los pods en el espacio de nombres de prometheus se encuentran en estadoREADY.

kubectl get pods -n prometheus

Salida:

NAME READY STATUS RESTARTS AGEprometheus-alertmanager-59b4c8c744-r7bgp 1/2 Running 0 48sprometheus-kube-state-metrics-7cfd87cf99-jkz2f 1/1 Running 0 48sprometheus-node-exporter-jcjqz 1/1 Running 0 48sprometheus-node-exporter-jxv2h 1/1 Running 0 48sprometheus-node-exporter-vbdks 1/1 Running 0 48sprometheus-pushgateway-76c444b68c-82tnw 1/1 Running 0 48sprometheus-server-775957f748-mmht9 1/2 Running 0 48s

4. Use kubectl para el enrutamiento del puerto de la consola de Prometheus a su equipo local.

kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090

5. Apunte un navegador web a localhost:9090 para ver la consola de Prometheus.6. Elija una métrica del menú - insert metric at cursor (- insertar métrica en el cursor) y elija Execute

(Ejecutar). Elija la pestaña Graph (Gráfico) para mostrar la métrica con el paso del tiempo. Lasiguiente imagen muestra container_memory_usage_bytes a lo largo del tiempo.

212

Page 220: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioImplementación de Prometheus

7. En la barra de navegación superior, elija Status (Estado) y Targets (Destinos).

213

Page 221: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioImplementación de Prometheus

Se muestran todos los puntos de enlace de Kubernetes que están conectados a Prometheus mediantedetección de servicios.

214

Page 222: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Uso de Helm con Amazon EKSEl administrador de paquetes Helm para Kubernetes le ayuda a instalar y administrar aplicaciones en suclúster de Kubernetes. Para obtener más información, consulte la documentación de Helm. Esto le ayudaráa instalar y ejecutar los archivos binarios de Helm para que pueda instalar y administrar gráficos mediantela CLI de Helm en su sistema local.

Important

Antes de poder instalar gráficos de Helm en el clúster de Amazon EKS, debe configurar kubectlpara que funcione con Amazon EKS. Si todavía no ha hecho esto, consulte Instalación de aws-iam-authenticator (p. 193) y Crear un archivo kubeconfig para Amazon EKS (p. 196) antesde continuar. Si el siguiente comando se realiza correctamente para su clúster, entonces tiene laconfiguración correcta.

kubectl get svc

Para instalar los archivos binarios de Helm en su sistema local

1. Ejecute el comando apropiado para el sistema operativo del cliente.

• Si utiliza MacOS con Homebrew, instale los archivos binarios con el siguiente comando.

brew install helm

• Si utiliza Windows con Chocolatey, instale los archivos binarios con el siguiente comando.

choco install kubernetes-helm

• Si utiliza Linux, instale los archivos binarios con los siguientes comandos.

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.shchmod 700 get_helm.sh./get_helm.sh

2. Para recoger los nuevos archivos binarios en su PATH, cierre la ventana de terminal actual y abra unanueva.

3. Confirme que Helm se está ejecutando con el siguiente comando.

helm help

4. En este momento puede ejecutar cualquier comando de Helm (como helm install chart_name)para instalar, modificar, eliminar o consultar gráficos de Helm en el clúster. Si es nuevo en Helm y notiene un gráfico específico que pueda instalar, puede:

• Experimentar instalando un gráfico de muestra. Consulte Install an Example Chart (Instalar ungráfico de muestra) en la Guía de inicio rápido de Helm.

• Instalar un gráfico de Amazon EKS desde el repositorio de GitHub eks-charts o desde Helm Hub.

215

Page 223: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRequisitos previos

Tutorial: Implementación dela interfaz de usuario web deKubernetes (panel)

Este tutorial le guiará en la implementación del panel de Kubernetes en su clúster de Amazon EKS,incluidas las métricas de CPU y memoria. También le ayudará a crear un a cuenta de servicio deadministrador de Amazon EKS que podrá utilizar para conectarse de forma segura al panel a fin de ver ycontrolar el clúster.

Requisitos previosEste tutorial se basa en los siguientes supuestos:

• Ha creado un clúster de Amazon EKS siguiendo los pasos que se indican en Introducción a AmazonEKS (p. 3).

• Los grupos de seguridad de las interfaces de red elásticas y los nodos de trabajo plano de control seajustan a la configuración recomendada en Consideraciones relativas al grupo de seguridad AmazonEKS (p. 167).

• Está utilizando un cliente kubectl que está configurado para comunicarse con el clúster de AmazonEKS (p. 18).

216

Page 224: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 1: Implementar el servidor de métricas de Kubernetes

Paso 1: Implementar el servidor de métricas deKubernetes

El servidor de métricas de Kubernetes es un agregador de datos de uso de recursos en el clúster. No estáimplementado en los clústeres de Amazon EKS de forma predeterminada. El panel de Kubernetes utilizael servidor de métricas para recopilar métricas para el clúster, como el uso del CPU y de la memoria a lolargo del tiempo. Elija la pestaña correspondiente al método de implementación que desee.

curl and jq

Para instalar el metrics-server desde GitHub en un clúster de Amazon EKS con curl yjq

Si tiene un sistema MacOS o Linux con curl, tar, gzip y el analizador de JSON jq instalados,puede descargar, extraer e instalar la última versión con los siguientes comandos. De lo contrario,utilice el siguiente procedimiento para descargar la última versión con un navegador web.

1. Abra una ventana de terminal y vaya al directorio en el que desea descargar la última versión delmetrics-server.

2. Copie y pegue los siguientes comandos en la ventana de terminal y, a continuación, escriba Enter(Intro) para ejecutarlos. Estos comandos descargan la última versión. Extráigala y aplique losmanifiestos de versión 1.8 o superior a su clúster.

DOWNLOAD_URL=$(curl -Ls "https://api.github.com/repos/kubernetes-sigs/metrics-server/releases/latest" | jq -r .tarball_url)DOWNLOAD_VERSION=$(grep -o '[^/v]*$' <<< $DOWNLOAD_URL)curl -Ls $DOWNLOAD_URL -o metrics-server-$DOWNLOAD_VERSION.tar.gzmkdir metrics-server-$DOWNLOAD_VERSIONtar -xzf metrics-server-$DOWNLOAD_VERSION.tar.gz --directory metrics-server-$DOWNLOAD_VERSION --strip-components 1kubectl apply -f metrics-server-$DOWNLOAD_VERSION/deploy/1.8+/

3. Compruebe que la implementación de metrics-server está ejecutando la cantidad deseada depods con el siguiente comando:

kubectl get deployment metrics-server -n kube-system

Salida:

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmetrics-server 1 1 1 1 56m

Web browser

Para instalar el metrics-server desde GitHub en un clúster de Amazon EKS con unnavegador web

1. Descargue y extraiga la última versión del código del servidor de métricas de GitHub.

a. Vaya a la página de la última versión del proyecto metrics-server en GitHub (https://github.com/kubernetes-sigs/metrics-server/releases/latest) y, a continuación, elija un archivode código fuente de la última versión para descargarlo.

217

Page 225: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 2: Implementar el panel

Note

Si va a descargar a un servidor remoto, puede utilizar el siguiente comando wgetsustituyendo el texto de color alternativo por el número de versión másreciente.

wget -O v0.3.6.tar.gz https://codeload.github.com/kubernetes-sigs/metrics-server/tar.gz/v0.3.6

b. Vaya a su carpeta de descargas y extraiga el archivo de código fuente. Por ejemplo, sidescargó el archivo .tar.gz, utilice el siguiente comando para extraerlo (sustituyendo suversión de lanzamiento).

tar -xzf v0.3.6.tar.gz

2. Aplique todos los manifiestos YAML en el directorio de metrics-server-0.3.6/deploy/1.8+(sustituyendo su versión de lanzamiento).

kubectl apply -f metrics-server-0.3.6/deploy/1.8+/

3. Compruebe que la implementación de metrics-server está ejecutando la cantidad deseada depods con el siguiente comando:

kubectl get deployment metrics-server -n kube-system

Salida:

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEmetrics-server 1 1 1 1 56m

Paso 2: Implementar el panelUtilice el siguiente comando para implementar el panel de Kubernetes.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml

Salida:

namespace/kubernetes-dashboard createdserviceaccount/kubernetes-dashboard createdservice/kubernetes-dashboard createdsecret/kubernetes-dashboard-certs createdsecret/kubernetes-dashboard-csrf createdsecret/kubernetes-dashboard-key-holder createdconfigmap/kubernetes-dashboard-settings createdrole.rbac.authorization.k8s.io/kubernetes-dashboard createdclusterrole.rbac.authorization.k8s.io/kubernetes-dashboard createdrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard createdclusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard createddeployment.apps/kubernetes-dashboard createdservice/dashboard-metrics-scraper createddeployment.apps/dashboard-metrics-scraper created

218

Page 226: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 3: Crear una cuenta de servicio deeks-admin y un enlace de rol de clúster

Paso 3: Crear una cuenta de servicio de eks-admin y un enlace de rol de clúster

De forma predeterminada, el usuario del panel de Kubernetes tiene permisos limitados. En esta seccióncreará una cuenta de servicio eks-admin y un enlace de rol de clúster con los que poder conectarse deforma segura al panel con permisos de nivel de administrador. Para obtener más información, consulteManaging Service Accounts en la documentación de Kubernetes.

Para crear la cuenta de servicio eks-admin y el enlace de rol de clúster

Important

La cuenta de servicio de ejemplo creada con este procedimiento tiene todos los privilegios decluster-admin (superusuario) para el clúster. Para obtener más información, consulte UsingRBAC Authorization en la documentación de Kubernetes.

1. Cree un archivo llamado eks-admin-service-account.yaml con el siguiente texto. Estemanifiesto define una cuenta de servicio y un enlace de rol de clúster llamado eks-admin.

apiVersion: v1kind: ServiceAccountmetadata: name: eks-admin namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: eks-adminroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-adminsubjects:- kind: ServiceAccount name: eks-admin namespace: kube-system

2. Aplique la cuenta de servicio y el enlace de rol de clúster al clúster:

kubectl apply -f eks-admin-service-account.yaml

Salida:

serviceaccount "eks-admin" createdclusterrolebinding.rbac.authorization.k8s.io "eks-admin" created

Paso 4: Conectar con el panelAhora que el panel de Kubernetes ya está implementado en el clúster y dispone de una cuenta de servicioadministrativa que le permite ver y controlar el clúster, puede conectarse al panel utilizando esa cuenta deservicio.

219

Page 227: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 4: Conectar con el panel

Para conectarse al panel de Kubernetes

1. Obtenga un token de autenticación para la cuenta de servicio eks-admin. Copie el valor<authentication_token> del resultado. Con este token podrá conectarse al panel.

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}')

Salida:

Name: eks-admin-token-b5zv4Namespace: kube-systemLabels: <none>Annotations: kubernetes.io/service-account.name=eks-admin kubernetes.io/service-account.uid=bcfe66ac-39be-11e8-97e8-026dce96b6e8

Type: kubernetes.io/service-account-token

Data====ca.crt: 1025 bytesnamespace: 11 bytestoken: <authentication_token>

2. Inicie kubectl proxy.

kubectl proxy

3. Para obtener acceso al punto de enlace del panel, abra el enlace siguiente con un navegador web:http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login.

4. Elija Token, pegue el valor de la salida <authentication_token> del comando anterior en elcampo Token y elija SIGN IN (Iniciar sesión).

220

Page 228: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 5: Siguientes pasos

Note

Pueden pasar algunos minutos antes de que aparezcan las métricas de CPU y memoria en elpanel.

Paso 5: Siguientes pasosUna vez conectado al panel de Kubernetes para el clúster, podrá ver y controlar el clúster con sucuenta del servicio eks-admin. Para obtener más información sobre cómo usar el panel, consulte ladocumentación de proyecto en GitHub.

221

Page 229: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEscenario

Introducción a AWS App MeshEste tema le ayuda a utilizar AWS App Mesh con un servicio real que se está ejecutando en.

EscenarioPara ilustrar cómo usar App Mesh, suponga que tiene una aplicación con las siguientes características:

• Incluye dos servicios llamados serviceA y serviceB.• Ambos servicios están registrados en un espacio de nombres denominado apps.local.• ServiceA se comunica con serviceB a través de HTTP/2, puerto 80.• Ya ha implementado la versión 2 de serviceB y la ha registrado con el nombre serviceBv2 en el

espacio de nombres apps.local.

Tiene los siguientes requisitos:

• Desea enviar el 75 por ciento del tráfico de serviceA hacia serviceB y el 25 por ciento del tráficohacia serviceBv2 para asegurarse de que serviceBv2 está libre de errores antes de enviar el cienpor cien del tráfico desde serviceA hacia el mismo.

• Desea poder ajustar fácilmente la ponderación del tráfico para que el cien por cien del tráfico vaya haciaserviceBv2 una vez que se demuestre que es de confianza. Una vez que se envía todo el tráfico haciaserviceBv2, quiere dar de baja serviceB.

• No quiere tener que cambiar ningún código de aplicación existente o registro de detección de serviciospara que sus servicios reales cumplan los requisitos anteriores.

Para satisfacer sus requisitos, ha decidido crear una malla de servicio App Mesh con servicios virtuales,nodos virtuales, un router virtual y una ruta. Después de implementar la malla, actualiza los servicios realespara utilizar el proxy de Envoy. Una vez actualizados, sus servicios se comunican entre sí a través delproxy de Envoy en lugar de directamente.

Requisitos previosApp Mesh admite servicios de Linux que están registrados con DNS, AWS Cloud Map o ambos. Parautilizar esta guía de introducción, le recomendamos que tenga tres servicios existentes que esténregistrados con DNS. Puede crear una malla de servicio y sus recursos incluso si los servicios no existen,pero no puede usar la malla hasta que haya implementado servicios reales.

En los pasos restantes se presupone que los servicios reales se llaman serviceA, serviceB yserviceBv2, y que todos los servicios son detectables a través de un espacio de nombres denominadoapps.local.

Paso 1: Crear una malla y un servicio virtualUna malla de servicios es un límite lógico para el tráfico de red entre los servicios que residen dentro deella. Para obtener más información, consulte Mallas de servicios. Un servicio virtual es una abstracción deun servicio real. Para obtener más información, consulte Servicios virtuales.

222

Page 230: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 2: Crear un nodo virtual

Cree los siguientes recursos:

• Una malla denominada apps, ya que todos los servicios del escenario están registrados en el espaciode nombres apps.local.

• Un servicio virtual llamado serviceb.apps.local, ya que el servicio virtual representa un servicio quese puede detectar con ese nombre y no desea cambiar el código para hacer referencia a otro nombre.Un servicio virtual llamado servicea.apps.local se agrega en un paso posterior.

Puede utilizar la Consola de administración de AWS o la versión de la AWS CLI 1.18.16 o superior pararealizar los siguientes pasos. Si utiliza la AWS CLI, use el comando aws --version para comprobarla versión de la AWS CLI instalada. Si no tiene la versión 1.18.16 o una versión superior instalada, debeinstalar o actualizar la AWS CLI. Seleccione la pestaña de la herramienta que desea utilizar.

Consola de administración de AWS

1. Abra el asistente de primera ejecución de la consola App Mesh en https://console.aws.amazon.com/appmesh/get-started.

2. Para Mesh name (Nombre de malla), escriba apps.3. En Virtual service name (Nombre del servicio virtual), escriba serviceb.apps.local.4. Para continuar, elija Next.

AWS CLI

1. Cree una malla con el comando create-mesh.

aws appmesh create-mesh --mesh-name apps

2. Cree un servicio virtual con el comando create-virtual-service.

aws appmesh create-virtual-service --mesh-name apps --virtual-service-name serviceb.apps.local --spec {}

Paso 2: Crear un nodo virtualUn nodo virtual actúa como un puntero lógico a un servicio real. Para obtener más información, consulteNodos virtuales.

Cree un nodo virtual denominado serviceB, ya que uno de los nodos virtuales representa el servicio realdenominado serviceB. El servicio real que representa el nodo virtual es detectable a través de DNS conun nombre de host de serviceb.apps.local. También puede detectar servicios reales mediante AWSCloud Map. El nodo virtual atenderá el tráfico utilizando el protocolo HTTP/2 en el puerto 80. También seadmiten otros protocolos, así como comprobaciones de estado. Creará nodos virtuales para serviceA yserviceBv2 en un paso posterior.

Consola de administración de AWS

1. En Virtual node name (Nombre del nodo virtual), escriba serviceB.2. En Service discovery method (Método de detección de servicios), elija DNS y especifique

serviceb.apps.local para DNS hostname (Nombre de host DNS).3. En Listener, escriba 80 para Puerto y elija http2 Protocolo.4. Para continuar, elija Next.

223

Page 231: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 3: Crear un router virtual y una ruta

AWS CLI

1. Cree un archivo denominado create-virtual-node-serviceb.json con el siguientecontenido:

{ "meshName": "apps", "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http2" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceB.apps.local" } } }, "virtualNodeName": "serviceB"}

2. Cree el nodo virtual con el comando create-virtual-node utilizando el archivo JSON como entrada.

aws appmesh create-virtual-node --cli-input-json file://create-virtual-node-serviceb.json

Paso 3: Crear un router virtual y una rutaLos routers virtuales enrutan el tráfico de uno o más servicios virtuales dentro de la malla. Para obtenermás información, consulte Routers virtuales y Rutas.

Cree los siguientes recursos:

• Un router virtual llamado serviceB, ya que el servicio virtual serviceB.apps.local no inicia lacomunicación saliente con ningún otro servicio. Recuerde que el servicio virtual que creó anteriormentees una abstracción de su servicio serviceb.apps.local real. El servicio virtual envía tráfico al routervirtual. El router virtual atenderá el tráfico utilizando el protocolo HTTP/2 en el puerto 80. También seadmiten otros protocolos.

• Una ruta llamada serviceB. Se enrutará el cien por cien de su tráfico al nodo virtual serviceB.Cambiará la ponderación en un paso posterior una vez que haya añadido el nodo virtual serviceBv2.Aunque no se incluye en esta guía, puede agregar criterios de filtro adicionales para la ruta y agregaruna política de reintento para que el proxy de Envoy realice varios intentos de enviar tráfico a un nodovirtual cuando experimenta un problema de comunicación.

Consola de administración de AWS

1. En Virtual router name (Nombre del router virtual), escriba serviceB.2. En Listener (Agente de escucha), escriba 80 para Port (Puerto) y elija http2 para Protocol

(Protocolo).3. En Route name (Nombre de ruta), escriba serviceB.4. En Route type (Tipo de ruta), elija http2.

224

Page 232: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 3: Crear un router virtual y una ruta

5. En Virtual node name (Nombre del nodo virtual), seleccione serviceB y escriba 100 para Weight(Ponderación).

6. Para continuar, elija Next.

AWS CLI

1. Creación de un router virtual

a. Cree un archivo denominado create-virtual-router.json con el siguiente contenido:

{ "meshName": "apps", "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http2" } } ] }, "virtualRouterName": "serviceB"}

b. Cree el router virtual con el comando create-virtual-router utilizando el archivo JSON comoentrada.

aws appmesh create-virtual-router --cli-input-json file://create-virtual-router.json

2. Cree una ruta.

a. Cree un archivo denominado create-route.json con el siguiente contenido:

{ "meshName" : "apps", "routeName" : "serviceB", "spec" : { "httpRoute" : { "action" : { "weightedTargets" : [ { "virtualNode" : "serviceB", "weight" : 100 } ] }, "match" : { "prefix" : "/" } } }, "virtualRouterName" : "serviceB"}

b. Cree la ruta con el comando create-route utilizando el archivo JSON como entrada.

aws appmesh create-route --cli-input-json file://create-route.json

225

Page 233: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 4: Revisar y crear

Paso 4: Revisar y crearRevise la configuración comparándola con las instrucciones anteriores.

Consola de administración de AWS

Elija Edit si necesita realizar cambios en alguna de las opciones seleccionadas. Cuando estésatisfecho con los ajustes, seleccione Create mesh service.

AWS CLI

Revise la configuración de la malla que creó con el comando Describe-mesh.

aws appmesh describe-mesh --mesh-name apps

Revise la configuración del servicio virtual que creó con el comando describe-virtual-service.

aws appmesh describe-virtual-service --mesh-name apps --virtual-service-name serviceb.apps.local

Revise la configuración del nodo virtual que creó con el comando describe-virtual-node.

aws appmesh describe-virtual-node --mesh-name apps --virtual-node-name serviceB

Revise la configuración del router virtual que creó con el comando describe-virtual-router.

aws appmesh describe-virtual-router --mesh-name apps --virtual-router-name serviceB

Revise la configuración de la ruta que creó con el comando describe-route.

aws appmesh describe-route --mesh-name apps \ --virtual-router-name serviceB --route-name serviceB

Paso 5: Crear recursos adicionalesPara completar el escenario, debe:

• Crear un nodo virtual llamado serviceBv2 y otro llamado serviceA. Ambos nodos virtuales escuchanlas solicitudes a través del puerto HTTP/2 80. Para el nodo virtual serviceA, configure un backendde serviceb.apps.local, ya que todo el tráfico saliente del nodo virtual serviceA se envía alservicio virtual denominado serviceb.apps.local. Aunque no se trata en esta guía, también puedeespecificar una ruta de acceso de archivo en la que escribir registros de acceso para un nodo virtual.

• Crear un servicio virtual adicional llamado servicea.apps.local, que enviará todo el tráficodirectamente al nodo virtual serviceA.

• Actualizar la ruta de serviceB que creó en un paso anterior para enviar el 75 por ciento de su tráficoal nodo virtual serviceB y el 25 por ciento de su tráfico al nodo virtual serviceBv2. Con el tiempo,puede continuar modificando las proporciones hasta que serviceBv2 reciba el cien por cien del tráfico.Una vez que se envíe todo el tráfico hacia serviceBv2, puede retirar el nodo virtual serviceB y elservicio real. Cuando cambia las proporciones de tráfico, el código no requiere ninguna modificación,ya que los nombres virtual y real del servicio serviceb.apps.local no cambian. Recuerde queel servicio virtual serviceb.apps.local envía tráfico al router virtual, que enruta el tráfico a losnodos virtuales. Los nombres de detección de servicios para los nodos virtuales se pueden cambiar encualquier momento.

226

Page 234: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 5: Crear recursos adicionales

Consola de administración de AWS

1. En el panel de navegación izquierdo, seleccione Meshes (Mallas).2. Seleccione la malla apps que creó en un paso anterior.3. En el panel de navegación izquierdo, seleccione Virtual nodes (Nodos virtuales).4. Elija Create virtual node.5. En Virtual node name (Nombre del nodo virtual), escriba serviceBv2, para Service discovery

method (Método de detección de servicios) elija DNS y para DNS hostname (Nombre de hostDNS) escriba servicebv2.apps.local.

6. En Listener (Agente de escucha), escriba 80 para Port (Puerto) y seleccione http2 para Protocol(Protocolo).

7. Elija Create virtual node.8. Vuelva a elegir Create virtual node y escriba serviceA en Virtual node name (Nombre del nodo

virtual), para Service discovery method (Método de detección de servicios) elija DNS y para DNShostname (Nombre de host DNS) escriba servicea.apps.local.

9. Expanda Additional configuration (Configuración adicional).10. Seleccionar Add backend. Escriba serviceb.apps.local.11. Escriba 80 en Port (Puerto), elija http2 en Protocol (Protocolo) y después elija Create virtual

node.12. En el panel de navegación izquierdo, seleccione Virtual routers (Routers virtuales) y, a

continuación, seleccione el router virtual serviceB de la lista.13. En Routes (Rutas), seleccione la ruta llamada ServiceB que creó en un paso anterior y elija Edit.14. En Virtual node name (Nombre de nodo virtual), cambie el valor de Weight (Ponderación) de

serviceB a 75.15. Elija Add target, elija serviceBv2 en la lista desplegable y establezca el valor de Weight

(Ponderación) en 25.16. Elija Save.17. En el panel de navegación izquierdo, seleccione Virtual services (Servicios virtuales) y, a

continuación, elija Create virtual service.18. Escriba servicea.apps.local en Nombre del servicio virtual, seleccione Virtual node en

Proveedor, seleccione serviceA en Nodo virtual, y, a continuación, elija Create virtual service.

AWS CLI

1. Cree el nodo virtual serviceBv2.

a. Cree un archivo denominado create-virtual-node-servicebv2.json con el siguientecontenido:

{ "meshName": "apps", "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http2" } } ], "serviceDiscovery": { "dns": { "hostname": "serviceBv2.apps.local" }

227

Page 235: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 5: Crear recursos adicionales

} }, "virtualNodeName": "serviceBv2"}

b. Cree el nodo virtual.

aws appmesh create-virtual-node --cli-input-json file://create-virtual-node-servicebv2.json

2. Cree el nodo virtual serviceA.

a. Cree un archivo denominado create-virtual-node-servicea.json con el siguientecontenido:

{ "meshName" : "apps", "spec" : { "backends" : [ { "virtualService" : { "virtualServiceName" : "serviceb.apps.local" } } ], "listeners" : [ { "portMapping" : { "port" : 80, "protocol" : "http2" } } ], "serviceDiscovery" : { "dns" : { "hostname" : "servicea.apps.local" } } }, "virtualNodeName" : "serviceA"}

b. Cree el nodo virtual.

aws appmesh create-virtual-node --cli-input-json file://create-virtual-node-servicea.json

3. Actualice el servicio virtual serviceb.apps.local que creó en un paso anterior para enviar sutráfico al router virtual serviceB. Cuando el servicio virtual se creó originalmente, no envió tráficoa ninguna parte, ya que el router virtual serviceB aún no se había creado.

a. Cree un archivo denominado update-virtual-service.json con el siguiente contenido:

{ "meshName" : "apps", "spec" : { "provider" : { "virtualRouter" : { "virtualRouterName" : "serviceB" } } },

228

Page 236: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 5: Crear recursos adicionales

"virtualServiceName" : "serviceb.apps.local"}

b. Actualice el servicio virtual con el comando update-virtual-service.

aws appmesh update-virtual-service --cli-input-json file://update-virtual-service.json

4. Actualice la ruta serviceB que creó en un paso anterior.

a. Cree un archivo denominado update-route.json con el siguiente contenido:

{ "meshName" : "apps", "routeName" : "serviceB", "spec" : { "http2Route" : { "action" : { "weightedTargets" : [ { "virtualNode" : "serviceB", "weight" : 75 }, { "virtualNode" : "serviceBv2", "weight" : 25 } ] }, "match" : { "prefix" : "/" } } }, "virtualRouterName" : "serviceB"}

b. Actualice la ruta con el comando update-route.

aws appmesh update-route --cli-input-json file://update-route.json

5. Cree el servicio virtual serviceA.

a. Cree un archivo denominado create-virtual-servicea.json con el siguientecontenido:

{ "meshName" : "apps", "spec" : { "provider" : { "virtualNode" : { "virtualNodeName" : "serviceA" } } }, "virtualServiceName" : "servicea.apps.local"}

b. Cree el servicio virtual.

229

Page 237: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPaso 6: Actualizar los servicios

aws appmesh create-virtual-service --cli-input-json file://create-virtual-servicea.json

Resumen de malla

Antes de crear la malla de servicio, tenía tres servicios reales denominados servicea.apps.local,serviceb.apps.local y servicebv2.apps.local. Además de los servicios reales, ahora tiene unamalla de servicio que contiene los siguientes recursos que representan los servicios reales:

• Dos servicios virtuales. El proxy envía todo el tráfico desde el servicio virtual servicea.apps.local alservicio virtual serviceb.apps.local a través de un router virtual.

• Tres nodos virtuales denominados serviceA, serviceB y serviceBv2. El proxy de Envoy utiliza lainformación de detección de servicios configurada para los nodos virtuales para buscar las direccionesIP de los servicios reales.

• Un router virtual con una ruta que indica al proxy de Envoy que enrute el 75 por ciento del tráficoentrante al nodo virtual serviceB y el 25 por ciento del tráfico al nodo virtual serviceBv2.

Paso 6: Actualizar los serviciosDespués de crear su malla, debe realizar las siguientes tareas:

• Autorice al proxy de Envoy a que implemente con cada para leer la configuración de uno o más nodosvirtuales. Para obtener más información acerca de cómo autorizar el proxy, consulte Autorización delproxy.

• Actualice cada una de sus para que utilicen el proxy de Envoy.

230

Page 238: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPrerequisites

Tutorial: Configure App MeshIntegration with Kubernetes

When you use AWS App Mesh with Kubernetes, you manage App Mesh resources, such as virtual servicesand virtual nodes, that align to Kubernetes resources, such as services and deployments. You also add theApp Mesh sidecar container images to Kubernetes pod specifications. This tutorial guides you through theinstallation of the following open source components that automatically complete these tasks for you whenyou work with Kubernetes resources:

• App Mesh controller for Kubernetes – The controller is accompanied by the deployment of threeKubernetes custom resource definitions: mesh, virtual service, and virtual node. The controllerwatches for creation, modification, and deletion of the custom resources and makes changes to thecorresponding App Mesh mesh, virtual service (including virtual router and route), andvirtual node resources through the App Mesh API. To learn more or contribute to the controller, seethe GitHub project.

• App Mesh sidecar injector for Kubernetes – The injector installs as a webhook and injects the App Meshsidecar container images into Kubernetes pods running in specific, labeled namespaces. To learn moreor contribute, see the GitHub project.

The features discussed in this topic are available as an open-source beta. This means that these featuresare well tested. Support for the features will not be dropped, though details may change. If the schemaor schematics of a feature changes, instructions for migrating to the next version will be provided. Thismigration may require deleting, editing, and re-creating Kubernetes API objects.

PrerequisitesTo use the controller and sidecar injector, you must have the following resources:

• An existing Kubernetes cluster running version 1.12 or later. If you don't have an existing cluster, you candeploy one using the Getting Started with Amazon EKS guide.

• A kubectl client that is configured to communicate with your Kubernetes cluster. If you're using AmazonElastic Kubernetes Service, you can use the instructions for installing kubectl and configuring akubeconfig file.

• jq and Open SSL installed.

Step 1: Install the Controller and Custom ResourcesTo install the controller and Kubernetes custom resource definitions, complete the following steps.

1. The controller requires that your account and your Kubernetes worker nodes are able to work withApp Mesh resources. Attach the AWSAppMeshFullAccess policy to the role that is attached to yourKubernetes worker nodes. If you are using a pod identity solution, make sure that the controller pod isbound to the policy.

2. To create the Kubernetes custom resources and launch the controller, download the following yaml fileand apply it to your cluster with the following command.

231

Page 239: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioStep 2: Install the Sidecar Injector

curl https://raw.githubusercontent.com/aws/aws-app-mesh-controller-for-k8s/master/deploy/all.yaml | kubectl apply -f -

A Kubernetes namespace named appmesh-system is created and a container running the controlleris deployed into the namespace.

3. Confirm that the controller is running with the following command.

kubectl rollout status deployment app-mesh-controller -n appmesh-system

If the controller is running, the following output is returned.

deployment "app-mesh-controller" successfully rolled out

4. Confirm that the Kubernetes custom resources for App Mesh were created with the followingcommand.

kubectl get crd

If the custom resources were created, output similar to the following is returned.

NAME CREATED ATmeshes.appmesh.k8s.aws 2019-05-08T14:17:26Zvirtualnodes.appmesh.k8s.aws 2019-05-08T14:17:26Zvirtualservices.appmesh.k8s.aws 2019-05-08T14:17:26Z

Step 2: Install the Sidecar InjectorTo install the sidecar injector, complete the following steps. If you'd like to see the controller and injectorin action, complete the steps in this section, but replace my-mesh in the first step with color-mesh, andthen see the section called “Deploy a Mesh Connected Service” (p. 235).

1. Export the name of the mesh you want to create with the following command.

export MESH_NAME=my-mesh

2. Export the region of the mesh that you want to create with the following command. Replace regionwith the Region that your Kubernetes cluster is deployed in.

export MESH_REGION=region

3. Download and execute the sidecar injector installation script with the following command.

curl https://raw.githubusercontent.com/aws/aws-app-mesh-inject/master/scripts/install.sh | bash

A container with the sidecar injector is deployed into the Kubernetes namespace named appmesh-system. If the injector successfully installed, the last several lines of the output returned are similar tothe following text.

deployment.apps/appmesh-inject createdmutatingwebhookconfiguration.admissionregistration.k8s.io/appmesh-inject createdwaiting for aws-app-mesh-inject to start

232

Page 240: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioStep 3: Configure App Mesh

Waiting for deployment "appmesh-inject" rollout to finish: 0 of 1 updated replicas are available...deployment "appmesh-inject" successfully rolled outMesh name has been set upThe injector is ready

Step 3: Configure App MeshWhen you deploy an application in Kubernetes, you also create the Kubernetes custom resources so thatthe controller can create the corresponding App Mesh resources. Additionally, you must enable sidecarinjection so that the App Mesh sidecar container images are deployed in each Kubernetes pod.

Create Kubernetes Custom ResourcesYou can deploy mesh, virtual service, and virtual node custom resources in Kubernetes, which then triggersthe controller to create the corresponding resources in App Mesh through the App Mesh API.

Create a MeshWhen you create a mesh custom resource, you trigger the creation of an App Mesh mesh. The meshname that you specify must be the same as the mesh name you exported when you installed the sidecarinjector (p. 232). If the mesh name that you specify already exists, a new mesh is not created.

apiVersion: appmesh.k8s.aws/v1beta1kind: Meshmetadata: name: my-mesh

Create a Virtual ServiceWhen you create a virtual service custom resource, you trigger the creation of an App Mesh virtual service,virtual router, and one or more routes containing a route configuration. The virtual service allows requestsfrom one application in the mesh to be routed to a number of virtual nodes that make up a service.

apiVersion: appmesh.k8s.aws/v1beta1kind: VirtualServicemetadata: name: my-svc-a namespace: my-namespacespec: meshName: my-mesh routes: - name: route-to-svc-a http: match: prefix: / action: weightedTargets: - virtualNodeName: my-app-a weight: 1

Create a Virtual NodeWhen you create a virtual node custom resource, you trigger the creation of an App Mesh virtual node. Thevirtual node contains listener, back-end, and service discovery configuration.

233

Page 241: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioSidecar Injection

apiVersion: appmesh.k8s.aws/v1beta1kind: VirtualNodemetadata: name: my-app-a namespace: my-namespacespec: meshName: my-mesh listeners: - portMapping: port: 9000 protocol: http serviceDiscovery: dns: hostName: my-app-a.my-namespace.svc.cluster.local backends: - virtualService: virtualServiceName: my-svc-a

Sidecar InjectionYou enable sidecar injection for a Kubernetes namespace. When necessary, you can override the injector'sdefault behavior for each pod you deploy in a Kubernetes namespace that you've enabled the injector for.

Enable Sidecar Injection for a NamespaceTo enable the sidecar injector for a Kubernetes namespace, label the namespace with the followingcommand.

kubectl label namespace my-namespace appmesh.k8s.aws/sidecarInjectorWebhook=enabled

The App Mesh sidecar container images will be automatically injected into each pod that you deploy intothe namespace.

Override Sidecar Injector Default BehaviorTo override the default behavior of the injector when deploying a pod in a namespace that you've enabledthe injector for, add any of the following annotations to your pod spec.

• appmesh.k8s.aws/mesh: mesh-name – Add when you want to use a different mesh name than the onethat you specified when you installed the injector.

• appmesh.k8s.aws/ports: "ports" – Specify particular ports when you don't want all of the container portsdefined in a pod spec passed to the sidecars as application ports.

• appmesh.k8s.aws/egressIgnoredPorts: ports – Specify a comma separated list of port numbers foroutbound traffic that you want ignored. By default all outbound traffic ports will be routed, except port 22(SSH).

• appmesh.k8s.aws/virtualNode: virtual-node-name – Specify your own name if you don't want thevirtual node name passed to the sidecars to be <deployment name>--<namespace>.

• appmesh.k8s.aws/sidecarInjectorWebhook: disabled – Add when you don't want the injector enabled fora pod.

apiVersion: appmesh.k8s.aws/v1beta1kind: Deploymentspec: metadata:

234

Page 242: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioStep 4: Remove Integration Components (Optional)

annotations: appmesh.k8s.aws/mesh: my-mesh2 appmesh.k8s.aws/ports: "8079,8080" appmesh.k8s.aws/egressIgnoredPorts: "3306" appmesh.k8s.aws/virtualNode: my-app appmesh.k8s.aws/sidecarInjectorWebhook: disabled

Step 4: Remove Integration Components (Optional)If you need to remove the Kubernetes integration components, run the following commands.

kubectl delete crd meshes.appmesh.k8s.awskubectl delete crd virtualnodes.appmesh.k8s.awskubectl delete crd virtualservices.appmesh.k8s.awskubectl delete namespace appmesh-systemkubectl delete namespace appmesh-inject

Deploy a Mesh Connected ServiceIn this topic, you deploy a sample application on Kubernetes. The application deploys mesh, virtual service,and virtual node Kubernetes custom resources. Kubernetes automatically creates mesh, virtual service, andvirtual node resources in App Mesh and injects the App Mesh sidecar images into Kubernetes pods.

PrerequisitesBefore you deploy the sample application, you must meet the following prerequisites:

• Meet all of the prerequisites in Tutorial: Configure App Mesh Integration with Kubernetes (p. 231).• Have the App Mesh controller for Kubernetes and the App Mesh sidecar injector for Kubernetes installed

and configured. When you install the sidecar injector, specify color-mesh as the name of your mesh. Tolearn more about the controller and sidecar injector and how to install and configure them, see Tutorial:Configure App Mesh Integration with Kubernetes (p. 231).

Deploy a Sample ApplicationThe sample application consists of two components:

• ColorGateway – A simple http service written in Go that is exposed to external clients and that respondsto http://service-name:port/color. The gateway responds with a color retrieved from color-teller and ahistogram of colors observed at the server that responded up to the point when you made the request.

• ColorTeller – A simple http service written in Go that is configured to return a color. Multiple variants ofthe service are deployed. Each service is configured to return a specific color.

1. To deploy the color mesh sample application, download the following file and apply it to yourKubernetes cluster with the following command.

curl https://raw.githubusercontent.com/aws/aws-app-mesh-controller-for-k8s/master/examples/color.yaml | kubectl apply -f -

2. View the resources deployed by the sample application with the following command.

235

Page 243: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRun Application

kubectl -n appmesh-demo get all

In the output, you see a collection of virtual services, virtual nodes, and mesh custom resources alongwith native Kubernetes deployments, pods, and services. Your output will be similar to the followingoutput.

NAME READY STATUS RESTARTS AGEpod/colorgateway-cc6464d75-4ktj4 2/2 Running 0 37spod/colorteller-86664b5956-6h26c 2/2 Running 0 36spod/colorteller-black-6787756c7b-dw82f 2/2 Running 0 36spod/colorteller-blue-55d6f99dc6-f5wgd 2/2 Running 0 36spod/colorteller-red-578866ffb-x9m7w 2/2 Running 0 35s

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/colorgateway ClusterIP 10.100.21.147 <none> 9080/TCP 37sservice/colorteller ClusterIP 10.100.187.50 <none> 9080/TCP 37sservice/colorteller-black ClusterIP 10.100.61.36 <none> 9080/TCP 36sservice/colorteller-blue ClusterIP 10.100.254.230 <none> 9080/TCP 36sservice/colorteller-red ClusterIP 10.100.90.38 <none> 9080/TCP 36s

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEdeployment.apps/colorgateway 1 1 1 1 37sdeployment.apps/colorteller 1 1 1 1 36sdeployment.apps/colorteller-black 1 1 1 1 36sdeployment.apps/colorteller-blue 1 1 1 1 36sdeployment.apps/colorteller-red 1 1 1 1 36s

NAME DESIRED CURRENT READY AGEreplicaset.apps/colorgateway-cc6464d75 1 1 1 37sreplicaset.apps/colorteller-86664b5956 1 1 1 36sreplicaset.apps/colorteller-black-6787756c7b 1 1 1 36sreplicaset.apps/colorteller-blue-55d6f99dc6 1 1 1 36sreplicaset.apps/colorteller-red-578866ffb 1 1 1 35s

NAME AGEvirtualservice.appmesh.k8s.aws/colorgateway.appmesh-demo 37svirtualservice.appmesh.k8s.aws/colorteller.appmesh-demo 37s

NAME AGEmesh.appmesh.k8s.aws/color-mesh 38s

NAME AGEvirtualnode.appmesh.k8s.aws/colorgateway 39svirtualnode.appmesh.k8s.aws/colorteller 39svirtualnode.appmesh.k8s.aws/colorteller-black 39svirtualnode.appmesh.k8s.aws/colorteller-blue 39svirtualnode.appmesh.k8s.aws/colorteller-red 38s

You can use the AWS Management Console or AWS CLI to see the App Mesh mesh, virtualservice, virtual router, route, and virtual node resources that were automatically createdby the controller. All of the resources were deployed to the appmesh-demo namespace, which waslabelled with appmesh.k8s.aws/sidecarInjectorWebhook: enabled. Since the injector sawthis label for the namespace, it injected the App Mesh sidecar container images into each of the pods.Using kubectl describe pod <pod-name> -n appmesh-demo, you can see that the App Meshsidecar container images are included in each of the pods that were deployed.

Run ApplicationComplete the following steps to run the application.

236

Page 244: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioChange Configuration

1. In a terminal, use the following command to create a container in the appmesh-demo namespace thathas curl installed and open a shell to it. In later steps, this terminal is referred to as Terminal A.

kubectl run -n appmesh-demo -it curler --image=tutum/curl /bin/bash

2. From Terminal A, run the following command to curl the color gateway in the color mesh application100 times. The gateway routes traffic to separate virtual nodes that return either white, black, or blueas a response.

for i in {1..100}; do curl colorgateway:9080/color; echo; done

100 responses are returned. Each response looks similar to the following text:

{"color":"blue", "stats": {"black":0.36,"blue":0.32,"white":0.32}}

In this line of output, the colorgateway routed the request to the blue virtual node. The numbers foreach color denote the percentage of responses from each virtual node. The number for each color ineach response is cumulative over time. The percentage is similar for each color because, by default,the weighting defined for each virtual node is the same in the color.yaml file you used to install thesample application.

Leave Terminal A open.

Change ConfigurationChange the configuration and run the application again to see the effect of the changes.

1. In a separate terminal from Terminal A, edit the colorteller.appmesh-demo virtual service with thefollowing command.

kubectl edit VirtualService colorteller.appmesh-demo -n appmesh-demo

In the editor, you can see that the weight value of each virtualNodeName is 1. Because the weight ofeach virtual node is the same, traffic routed to each virtual node is approximately even. To route alltraffic to the black node only, change the values for colorteller.appmesh-demo and colorteller-blue to 0,as shown in the following text. Save the configuration and exit the editor.

spec: meshName: color-mesh routes: - http: action: weightedTargets: - virtualNodeName: colorteller.appmesh-demo weight: 0 - virtualNodeName: colorteller-blue weight: 0 - virtualNodeName: colorteller-black.appmesh-demo weight: 1

2. In Terminal A, run curl again with the following command.

for i in {1..100}; do curl colorgateway:9080/color; echo; done

This time, all lines of output look similar to the following text.

237

Page 245: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRemove Application

{"color":"black", "stats": {"black":0.64,"blue":0.18,"white":0.19}}

Black is the response every time because the gateway is now routing all traffic to the black virtualnode. Even though all traffic is now going to black, the white and blue virtual nodes still have responsepercentages, because the numbers are based on relative percentages over time. When you executedthe requests in a previous step, white and blue responded, which is why they still have responsepercentages. You can see that the relative percentages decrease for white and blue with eachresponse, while the percentage for black increases.

Remove ApplicationWhen you've finished with the sample application, you can remove it by completing the following steps.

1. Use the following commands to remove the sample application and the App Mesh resources that werecreated.

kubectl delete namespace appmesh-demokubectl delete mesh color-mesh

2. Optional: If you want to remove the controller and sidecar injector, see Remove integrationcomponents (p. ).

238

Page 246: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Contenedores de aprendizajeprofundo

Los contenedores de aprendizaje profundo de AWS son un conjunto de imágenes de Docker para entrenary trabajar con modelos en TensorFlow en Amazon EKS y Amazon Elastic Container Service (AmazonECS). Los contenedores de aprendizaje profundo proporcionan entornos optimizados con bibliotecas deTensorFlow, CUDA de NVIDIA (para instancias de GPU) y MKL de Intel (para instancias de CPU) y estándisponibles en Amazon ECR.

Para empezar a utilizar contenedores de aprendizaje profundo de AWS en Amazon EKS, consulteContenedores de aprendizaje profundo de AWS en Amazon EKS en la Guía para desarrolladores de AWSDeep Learning AMI.

239

Page 247: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioIdentity and Access Management

Seguridad en Amazon EKSLa seguridad en la nube de AWS es la mayor prioridad. Como cliente de AWS, se beneficiará de unaarquitectura de red y un centro de datos diseñados para satisfacer los requisitos de seguridad de lasorganizaciones más exigentes.

La seguridad es una responsabilidad compartida entre AWS y usted. El modelo de responsabilidadcompartida la describe como seguridad de la nube y seguridad en la nube:

• Seguridad en la nube: AWS es responsable de proteger la infraestructura que ejecuta los servicios deAWS en la nube de AWS. En Amazon EKS, AWS es responsable del plano de control de Kubernetes,que incluye los nodos del plano de control y la base de datos etcd. Auditores externos prueban yverifican periódicamente la eficacia de nuestra seguridad en el marco de los programas de conformidadde AWS. Para obtener más información acerca de los programas de conformidad que se aplican aAmazon EKS, consulte Servicios de AWS en el ámbito del programa de conformidad.

• Seguridad en la nube: las siguientes áreas son de su responsabilidad.• La configuración de seguridad del plano de datos, incluida la configuración de los grupos de seguridad

que permiten que el tráfico pase del plano de control de Amazon EKS a la VPC del cliente• La configuración de los nodos de trabajo y los contenedores• El sistema operativo invitado de los nodos de trabajo (incluidas las actualizaciones y los parches de

seguridad)• Otros software de aplicaciones asociado:

• Configuración y administración de controles de red, como las reglas del firewall• Administración de identidad y acceso de nivel de plataforma, con o además de IAM

• La confidencialidad de los datos, los requisitos de la empresa y la legislación y los reglamentosaplicables.

Esta documentación le ayuda a comprender cómo aplicar el modelo de responsabilidad compartida cuandose utiliza Amazon EKS. En los siguientes temas, se le mostrará cómo configurar Amazon EKS parasatisfacer sus objetivos de seguridad y conformidad. También puede aprender a utilizar otros servicios deAWS que le ayudan a supervisar y proteger sus recursos de Amazon EKS.

Temas• Identity and Access Management para Amazon EKS (p. 240)• Registro y monitorización en Amazon EKS (p. 271)• Validación de la conformidad en Amazon EKS (p. 272)• Resiliencia en Amazon EKS (p. 272)• Seguridad de la infraestructura en Amazon EKS (p. 273)• Configuración y análisis de vulnerabilidades en Amazon EKS (p. 273)• Política de seguridad del pod (p. 274)

Identity and Access Management para AmazonEKS

AWS Identity and Access Management (IAM) es un servicio de AWS que ayuda a un administrador acontrolar de forma segura el acceso a los recursos de AWS. Los administradores de IAM controlan quién

240

Page 248: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPúblico

puede ser autenticado (iniciar sesión) y estar autorizado (tener permisos) para utilizar los recursos deAmazon EKS. IAM es un servicio de AWS que se puede utilizar sin costo adicional.

Temas• Público (p. 241)• Autenticación con identidades (p. 241)• Administración de acceso mediante políticas (p. 243)• Funcionamiento de Amazon EKS con IAM (p. 245)• Ejemplos de políticas basadas en identidad de Amazon EKS (p. 248)• Uso de funciones vinculadas a servicios en Amazon EKS (p. 250)• Función del servicio de IAM en Amazon EKS (p. 252)• Rol de IAM del nodo de trabajo de Amazon EKS (p. 254)• Rol de ejecución de pods (p. 256)• Roles de IAM para cuentas de servicio (p. 258)• Solución de problemas de identidad y acceso en Amazon EKS (p. 271)

PúblicoLa forma en que utilice AWS Identity and Access Management (IAM) difiere, en función del trabajo querealice en Amazon EKS.

Usuario de servicio: si utiliza el servicio Amazon EKS para realizar su trabajo, su administrador leproporciona las credenciales y los permisos que necesita. A medida que utilice más características deAmazon EKS para realizar su trabajo, es posible que necesite permisos adicionales. Entender cómo seadministra el acceso puede ayudarle a solicitar los permisos correctos a su administrador. Si no puedeacceder a una característica en Amazon EKS, consulte Solución de problemas de identidad y acceso enAmazon EKS (p. 271).

Administrador de servicio: si está a cargo de los recursos de Amazon EKS en su empresa, probablementetenga acceso completo a Amazon EKS. Su trabajo consiste en determinar qué a características y recursosde Amazon EKS deben acceder sus empleados. A continuación, debe enviar solicitudes a su administradorde IAM para cambiar los permisos de los usuarios de su servicio. Revise la información de esta páginapara conocer los conceptos básicos de IAM. Para obtener más información sobre cómo su empresa puedeutilizar IAM con Amazon EKS, consulte Funcionamiento de Amazon EKS con IAM (p. 245).

Administrator de IAM: si es un administrador de IAM, es posible que quiera conocer información sobrecómo escribir políticas para administrar el acceso a Amazon EKS. Para ver ejemplos de políticas basadasen la identidad de Amazon EKS que puede utilizar en IAM, consulte Ejemplos de políticas basadas enidentidad de Amazon EKS (p. 248).

Autenticación con identidadesLa autenticación es la manera de iniciar sesión en AWS mediante credenciales de identidad. Para obtenermás información acerca del inicio de sesión con la Consola de administración de AWS, consulte Laconsola de IAM y la página de inicio de sesión en la Guía del usuario de IAM.

Debe estar autenticado (haber iniciado sesión en AWS) como Usuario de la cuenta raíz de AWS, usuariode IAM o asumiendo un rol de IAM. También puede utilizar la autenticación de inicio de sesión único desu empresa o incluso iniciar sesión con Google o Facebook. En estos casos, su administrador habráconfigurado previamente la federación de identidad mediante roles de IAM. Cuando obtiene acceso a AWSmediante credenciales de otra empresa, asume un rol indirectamente.

Para iniciar sesión directamente en la Consola de administración de AWS, use su contraseña con sucorreo electrónico usuario raíz o su nombre de usuario de IAM. Puede obtener acceso a AWS mediante

241

Page 249: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAutenticación con identidades

programación utilizando sus claves de acceso usuario raíz o de usuario de IAM. AWS proporciona SDK yherramientas de línea de comandos para firmar criptográficamente su solicitud con sus credenciales. Si noutiliza las herramientas de AWS, debe firmar usted mismo la solicitud. Para ello, utilice Signature Version4, un protocolo para autenticar solicitudes de API de entrada. Para obtener más información acerca de laautenticación de solicitudes, consulte Proceso de firma Signature Version 4 en la AWS General Reference.

Independientemente del método de autenticación que utilice, es posible que también deba proporcionarinformación de seguridad adicional. Por ejemplo, AWS le recomienda el uso de la autenticación multifactor(MFA) para aumentar la seguridad de su cuenta. Para obtener más información, consulte Uso de Multi-Factor Authentication (MFA) en AWS en la Guía del usuario de IAM.

Usuario raíz de la cuenta de AWSCuando se crea por primera vez una cuenta de AWS, se comienza con una única identidad de inicio desesión que tiene acceso completo a todos los servicios y recursos de AWS de la cuenta. Esta identidadrecibe el nombre de AWS de la cuenta de usuario raíz y se obtiene acceso a ella iniciando sesión con ladirección de correo electrónico y la contraseña que utilizó para crear la cuenta. Le recomendamos queno utilice usuario raíz en sus tareas cotidianas, ni siquiera en las tareas administrativas. En lugar de ello,es mejor ceñirse a la práctica recomendada de utilizar exclusivamente usuario raíz para crear el primerusuario de IAM. A continuación, guarde las credenciales de usuario raíz en un lugar seguro y utilícelasúnicamente para algunas tareas de administración de cuentas y servicios.

Usuarios y grupos de IAMUn usuario de IAM es una entidad de la cuenta de AWS que dispone de permisos específicos para unasola persona o aplicación. Un usuario de IAM puede tener credenciales a largo plazo, como un nombrede usuario y una contraseña o un conjunto de claves de acceso. Para obtener más información acerca decómo generar claves de acceso, consulte Administración de las claves de acceso de los usuarios de IAMen la Guía del usuario de IAM. Al generar claves de acceso para un usuario de IAM, asegúrese de ver yguardar de forma segura el par de claves. No puede recuperar la clave de acceso secreta en el futuro. Ensu lugar, debe generar un nuevo par de claves de acceso.

Un grupo de IAM es una identidad que especifica un conjunto de usuarios de IAM. No puede iniciar sesióncomo grupo. Puede usar los grupos para especificar permisos para varios usuarios a la vez. Los gruposfacilitan la administración de los permisos de grandes conjuntos de usuarios. Por ejemplo, podría tener ungrupo cuyo nombre fuese Administradores de IAM y conceder permisos a dicho grupo para administrar losrecursos de IAM.

Los usuarios son diferentes de los roles. Un usuario se asocia exclusivamente a una persona o aplicación,pero la intención es que cualquier usuario pueda asumir un rol que necesite. Los usuarios tienencredenciales permanentes a largo plazo y los roles proporcionan credenciales temporales. Para obtenermás información, consulte Cuándo crear un usuario de IAM (en lugar de un rol) en la Guía del usuario deIAM.

Roles de IAMUn rol de IAM es una entidad de la cuenta de AWS que dispone de permisos específicos. Es similar aun usuario de IAM, pero no está asociado a una determinada persona. Puede asumir temporalmente unrol de IAM en la Consola de administración de AWS cambiando de roles. Puede asumir un rol llamandoa una operación de la AWS CLI o de la API de AWS, o utilizando una URL personalizada. Para obtenermás información acerca de los métodos para el uso de roles, consulte Uso de roles de IAM en la Guía delusuario de IAM.

Los roles de IAM con credenciales temporales son útiles en las siguientes situaciones:

• Permisos de usuario temporales de IAM: un usuario de IAM puede asumir un rol de IAM para recibirtemporalmente permisos distintos que le permitan realizar una tarea concreta.

242

Page 250: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAdministración de acceso mediante políticas

• Acceso de usuario federado: En lugar de crear un usuario de IAM, puede utilizar identidades existentesde AWS Directory Service, del directorio de usuarios de la empresa o de un proveedor de identidadesweb. A estas identidades se les llama usuarios federados. AWS asigna una función a un usuariofederado cuando se solicita acceso a través de un proveedor de identidad. Para obtener másinformación acerca de los usuarios federados, consulte Usuarios federados y roles en la Guía delusuario de IAM.

• Acceso entre cuentas: puede utilizar un rol de IAM para permitir que alguien (una entidad principal deconfianza) de otra cuenta obtenga acceso a los recursos de su cuenta. Los roles son la forma principalde conceder acceso entre cuentas. Sin embargo, con algunos servicios de AWS, puede asociar unapolítica directamente a un recurso (en lugar de utilizar un rol como proxy). Para obtener informaciónacerca de la diferencia entre los roles y las políticas basadas en recursos para el acceso entre cuentas,consulte Cómo los roles de IAM difieren de las políticas basadas en recursos en la Guía del usuario deIAM.

• Acceso a servicios de AWS: Un rol de servicio es un rol de IAM que un servicio asume para realizaracciones en su cuenta en su nombre. Al configurar algunos de los entornos de los servicios de AWS,debe definir un rol que el servicio asumirá. Este rol de servicio debe incluir todos los permisos queson necesarios para que el servicio pueda acceder a los recursos de AWS que necesita. Los roles deservicio varían de servicio a servicio, pero muchos le permiten elegir sus permisos, siempre y cuandose cumplan los requisitos documentados para dicho servicio. Los roles de servicio ofrecen acceso solodentro de su cuenta y no se pueden utilizar para otorgar acceso a servicios en otras cuentas. Puedecrear, modificar y eliminar un rol de servicio desde IAM. Por ejemplo, puede crear un rol que permitaa Amazon Redshift tener acceso a un bucket de Amazon S3 en su nombre y, a continuación, cargarlos datos de ese bucket en un clúster de Amazon Redshift. Para obtener más información, consulteCreación de un rol para delegar permisos a un servicio de AWS en la Guía del usuario de IAM.

• Aplicaciones que se ejecutan en Amazon EC2: Puede utilizar un rol de IAM para administrarcredenciales temporales para las aplicaciones que se ejecutan en una instancia EC2 y realizansolicitudes de la AWS CLI o la API de AWS. Es preferible hacerlo de este modo a almacenar claves deacceso en la instancia EC2. Para asignar un rol de AWS a una instancia EC2 y ponerla a disposición detodas las aplicaciones, cree un perfil de instancia asociado a la misma. Un perfil de instancia contiene elrol y permite a los programas que se ejecutan en la instancia EC2 obtener credenciales temporales. Paraobtener más información, consulte Uso de un rol de IAM para conceder permisos a aplicaciones que seejecutan en instancias Amazon EC2 en la Guía del usuario de IAM.

Para obtener información acerca del uso de los roles de IAM, consulte Cuándo crear un rol de IAM (en vezde un usuario) en la Guía del usuario de IAM.

Administración de acceso mediante políticasPara controlar el acceso en AWS, se crean políticas y se asocian a identidades de IAM o recursos deAWS. Una política es un objeto de AWS que, cuando se asocia a una identidad o un recurso, definesus permisos. AWS evalúa estas políticas cuando una entidad principal (usuario raíz, usuario de IAM orol de IAM) realiza una solicitud. Los permisos en las políticas determinan si la solicitud se permite o sedeniega. Las mayoría de las políticas se almacenan en AWS como documentos JSON. Para obtenermás información acerca de la estructura y el contenido de los documentos de política JSON, consulteInformación general de las políticas de JSON en la Guía del usuario de IAM.

Un administrador de IAM puede utilizar las políticas para especificar quién tiene acceso a los recursos deAWS y qué acciones se pueden realizar en dichos recursos. Cada entidad de IAM (usuario o rol) comienzasin permisos. En otras palabras, de forma predeterminada, los usuarios no pueden hacer nada, ni siquieracambiar sus propias contraseñas. Para conceder permiso a un usuario para hacer algo, el administradordebe asociarle una política de permisos. O bien el administrador puede añadir al usuario a un grupo quetenga los permisos necesarios. Cuando el administrador concede permisos a un grupo, todos los usuariosde ese grupo obtienen los permisos.

Las políticas de IAM definen permisos para una acción independientemente del método que se utilicepara realizar la operación. Por ejemplo, suponga que dispone de una política que permite la acción

243

Page 251: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAdministración de acceso mediante políticas

iam:GetRole. Un usuario con dicha política puede obtener información del usuario de la Consola deadministración de AWS, la AWS CLI o la API de AWS.

Políticas basadas en la identidadLas políticas basadas en identidad son documentos de políticas de permisos JSON que puede asociara una identidad, como por ejemplo un usuario, un rol o un grupo de IAM. Estas políticas controlan quéacciones puede realizar dicha identidad, en qué recursos y en qué condiciones. Para obtener másinformación acerca de cómo crear una política basada en identidad, consulte Creación de políticas de IAMen la Guía del usuario de IAM.

Las políticas basadas en identidad pueden clasificarse además como políticas insertadas o políticasadministradas. Las políticas insertadas se integran directamente en un único usuario, grupo o rol. Laspolíticas administradas son políticas independientes que puede asociar a varios usuarios, grupos y rolesde su cuenta de AWS. Las políticas administradas incluyen las políticas administradas por AWS y laspolíticas administradas por el cliente. Para obtener más información acerca de cómo elegir una políticaadministrada o una política insertada, consulte Elegir entre políticas administradas y políticas insertadas enla Guía del usuario de IAM.

Políticas basadas en recursosLas políticas basadas en recursos son documentos de política JSON que puede asociar a un recursocomo, por ejemplo, un bucket de Amazon S3. Los administradores de servicios pueden utilizar estaspolíticas para definir qué acciones puede realizar un principal especificado (miembro de cuenta, usuario orol) en dicho recurso y bajo qué condiciones. Las políticas basadas en recursos son políticas insertadas.No existen políticas basadas en recursos que sean administradas.

Listas de control de acceso (ACL)Las listas de control de acceso (ACL) son un tipo de política que controlan qué entidades principales(cuentas, miembros, usuarios o roles) tienen permisos para obtener acceso a un recurso. Las ACL sonsimilares a las políticas basadas en recursos, aunque no utilizan el formato de documento de políticaJSON. Amazon S3, AWS WAF y Amazon VPC son ejemplos de servicios que admiten ACL. Para obtenermás información sobre las ACL, consulte Información general de las Access Control Lists (ACL, Listas decontrol de acceso) en la Guía para desarrolladores de Amazon Simple Storage Service.

Otros tipos de políticasAWS admite otros tipos de políticas menos frecuentes. Estos tipos de políticas pueden establecer elmáximo de permisos que los tipos de políticas más frecuentes le otorgan.

• Límites de permisos: un límite de permisos es una característica avanzada que le permite definir lospermisos máximos que una política basada en identidad puede conceder a una entidad de IAM (usuarioo rol de IAM). Puede establecer un límite de permisos para una identidad. Los permisos resultantes sonla intersección de las políticas basadas en identidades de la entidad y los límites de sus permisos. Laspolíticas basadas en recursos que especifiquen el usuario o rol en el campo Principal no estaránrestringidas por el límite de permisos. Una denegación explícita en cualquiera de estas políticas anularáel permiso. Para obtener más información acerca de los límites de permisos, consulte see Límites depermisos para las entidades de IAM en la Guía del usuario de IAM.

• Políticas de control de servicios (SCP): las SCP son políticas de JSON que especifican los permisosmáximos para una organización o unidad organizativa (OU) en AWS Organizations. AWS Organizationses un servicio que le permite agrupar y administrar de forma centralizada varias cuentas de AWSque posee su negocio. Si habilita todas las funciones en una organización, entonces podrá aplicarpolíticas de control de servicio (SCP) a una o todas sus cuentas. Una SCP limita los permisos para lasentidades de las cuentas de miembros, incluido cada Usuario de la cuenta raíz de AWS. Para obtenermás información acerca de Organizaciones y las SCP, consulte Funcionamiento de las SCP en la Guíadel usuario de AWS Organizations.

244

Page 252: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioFuncionamiento de Amazon EKS con IAM

• Políticas de sesión: las políticas de sesión son políticas avanzadas que se pasan como parámetrocuando se crea una sesión temporal mediante programación para un rol o un usuario federado. Lospermisos de la sesión resultantes son la intersección de las políticas basadas en identidades del rol y laspolíticas de la sesión. Los permisos también pueden proceder de una política basada en recursos. Unadenegación explícita en cualquiera de estas políticas anulará el permiso. Para obtener más información,consulte Políticas de sesión en la Guía del usuario de IAM.

Varios tipos de políticasCuando se aplican varios tipos de políticas a una solicitud, los permisos resultantes son más complicadosde entender. Para obtener información acerca de cómo AWS determina si permitir una solicitud cuandohay varios tipos de políticas implicados, consulte Lógica de evaluación de políticas en la Guía del usuariode IAM.

Funcionamiento de Amazon EKS con IAMAntes de utilizar IAM para administrar el acceso a Amazon EKS, debe saber qué características de IAMestán disponibles para su uso con Amazon EKS. Para obtener una perspectiva general de cómo AmazonEKS y otros servicios de AWS funcionan con IAM, consulte Servicios de AWS que funcionan con IAM en laGuía del usuario de IAM.

Temas• Políticas basadas en identidad de Amazon EKS (p. 245)• Políticas basadas en recursos de Amazon EKS (p. 247)• Autorización basada en etiquetas de Amazon EKS (p. 247)• Roles de IAM de Amazon EKS (p. 247)

Políticas basadas en identidad de Amazon EKSCon las políticas basadas en identidad de IAM, puede especificar las acciones permitidas o denegadasy los recursos además de las condiciones en las que se permiten o deniegan las acciones. Amazon EKSadmite acciones, recursos y claves de condiciones específicos. Para obtener más información acerca delos elementos que utiliza en una política de JSON, consulte Referencia de los elementos de las políticas deJSON de IAM en la Guía del usuario de IAM.

Acciones

El elemento Action de una política basada en la identidad de IAM describe la acción o las accionesespecíficas que la política permitirá o denegará. Las acciones de la política generalmente tienen el mismonombre que la operación de API de AWS asociada. La acción se utiliza en una política para otorgarpermisos para realizar la operación asociada.

Las acciones de políticas de Amazon EKS utilizan el siguiente prefijo antes de la acción: eks:. Porejemplo, para conceder a alguien permiso para conseguir información descriptiva sobre un clúster deAmazon EKS, incluya la acción DescribeCluster en su política. Las instrucciones de la política debenincluir un elemento Action o un elemento NotAction.

Para especificar varias acciones en una única instrucción, sepárelas con comas del siguiente modo:

"Action": ["eks:action1", "eks:action2"]

Puede utilizar caracteres comodín para especificar varias acciones (*). Por ejemplo, para especificar todaslas acciones que comiencen con la palabra Describe, incluya la siguiente acción:

245

Page 253: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioFuncionamiento de Amazon EKS con IAM

"Action": "eks:Describe*"

Para ver una lista de acciones de Amazon EKS, consulte Acciones definidas por Amazon ElasticKubernetes Service en la Guía del usuario de IAM.

Recursos

El elemento Resource especifica el objeto u objetos a los que se aplica la acción. Las instrucciones debencontener un elemento Resource o NotResource. Especifique un recurso con un ARN o el caráctercomodín (*) para indicar que la instrucción se aplica a todos los recursos.

El recurso del clúster de Amazon EKS tiene el siguiente ARN:

arn:${Partition}:eks:${Region}:${Account}:cluster/${ClusterName}

Para obtener más información acerca del formato de los ARN, consulte Nombres de recursos de Amazon(ARN) y espacios de nombres de servicios de AWS.

Por ejemplo, para especificar el clúster de dev en su instrucción, utilice el siguiente ARN:

"Resource": "arn:aws:eks:us-east-1:123456789012:cluster/dev"

Para especificar todos los clústeres que pertenecen a una cuenta y una región específicas, utilice elcarácter comodín (*):

"Resource": "arn:aws:eks:us-east-1:123456789012:cluster/*"

Algunas acciones de Amazon EKS, como las empleadas para la creación de recursos, no se pueden llevara cabo en un recurso específico. En dichos casos, debe utilizar el carácter comodín (*).

"Resource": "*"

Para ver una lista de los tipos de recursos de Amazon EKS y sus ARN, consulte Recursos definidos porAmazon Elastic Kubernetes Service en la Guía del usuario de IAM. Para obtener información acerca decon qué acciones puede especificar los ARN de cada recurso, consulte Acciones definidas por AmazonElastic Kubernetes Service.

Claves de condición

Amazon EKS no proporciona ninguna clave de condición específica del servicio, pero sí admite el uso dealgunas claves de condición globales. Para ver todas las claves de condición globales de AWS, consulteClaves de contexto de condición globales de AWS en la Guía del usuario de IAM.

Ejemplos

Para ver ejemplos de políticas basadas en identidad de Amazon EKS, consulte Ejemplos de políticasbasadas en identidad de Amazon EKS (p. 248).

Al crear un clúster de Amazon EKS, el usuario o rol o el usuario de entidad de IAM, como un usuariofederado que crea el clúster se concede automáticamente permisos system:masters en la configuraciónRBAC del clúster. Para permitir que otros roles o usuarios de AWS interactúen con el clúster, debe editar elmapa de configuración aws-auth desde Kubernetes.

246

Page 254: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioFuncionamiento de Amazon EKS con IAM

Para obtener más información sobre cómo trabajar con ConfigMap, consulte Administración de usuarios ofunciones de IAM para su clúster (p. 200).

Políticas basadas en recursos de Amazon EKSAmazon EKS no admite las políticas basadas en recursos.

Autorización basada en etiquetas de Amazon EKSPuede adjuntar etiquetas a los recursos de Amazon EKS o transferirlas en una solicitud a AmazonEKS. Para controlar el acceso según las etiquetas, debe proporcionar información de las etiquetas en elelemento de condición de una política mediante las claves de condición eks:ResourceTag/key-name,aws:RequestTag/key-name o aws:TagKeys. Para obtener más información acerca del etiquetado derecursos de Amazon EKS, consulte Etiquetado de los recursos de Amazon EKS (p. 279).

Roles de IAM de Amazon EKSUn rol de IAM es una entidad de la cuenta de AWS que dispone de permisos específicos.

Uso de credenciales temporales con Amazon EKS

Puede utilizar credenciales temporales para iniciar sesión con federación, asumir un rol de IAM o asumir unrol de acceso entre cuentas. Las credenciales de seguridad temporales se obtienen mediante una llamadaa operaciones de la API de AWS STS, como AssumeRole o GetFederationToken.

Amazon EKS admite el uso de credenciales temporales.

Roles vinculados a servicios

Los roles vinculados a servicios permiten a los servicios de AWS obtener acceso a los recursos de otrosservicios para completar una acción en su nombre. Los roles vinculados a servicios aparecen en la cuentade IAM y son propiedad del servicio. Un administrador de IAM puede ver, pero no editar, los permisos delos roles vinculados a servicios.

Amazon EKS admite roles vinculados a servicios. Para obtener más información acerca de cómo crear oadministrar roles vinculados a servicios de Amazon EKS, consulte Uso de funciones vinculadas a serviciosen Amazon EKS (p. 250).

Roles de servicio

Esta característica permite que un servicio asuma un rol de servicio en nombre de usted. Este rol permiteque el servicio obtenga acceso a los recursos de otros servicios para completar una acción en su nombre.Los roles de servicio aparecen en su cuenta de IAM y son propiedad de la cuenta. Esto significa que unadministrador de IAM puede cambiar los permisos de este rol. Sin embargo, hacerlo podría deteriorar lafuncionalidad del servicio.

Amazon EKS admite roles de servicio. Para obtener más información, consulte the section called “Rol delservicio de IAM” (p. 252) y the section called “Rol de IAM del nodo de trabajo” (p. 254).

Selección de un rol de IAM en Amazon EKS

Cuando se crea un recurso de clúster en Amazon EKS, debe elegir un rol para permitir a AmazonEKS acceder a otros recursos de AWS en su nombre. Si ya ha creado un rol de servicio, Amazon EKSle proporciona una lista de roles para elegir. Es importante que elija un rol que cuente con políticasadministradas de Amazon EKS asociadas a él. Para obtener más información, consulte the sectioncalled “Compruebe si hay un rol de servicio existente” (p. 252) y the section called “Comprobación de laexistencia de un rol de nodo de trabajo” (p. 255).

247

Page 255: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEjemplos de políticas basadas en identidad

Ejemplos de políticas basadas en identidad deAmazon EKSDe forma predeterminada, los usuarios y roles de IAM no tienen permiso para crear, ver ni modificarrecursos de Amazon EKS. Tampoco pueden realizar tareas mediante la Consola de administración deAWS, la AWS CLI, o la API de AWS. Un administrador de IAM debe crear políticas de IAM que concedanpermisos a los usuarios y a los roles para realizar operaciones de la API concretas en los recursosespecificados que necesiten. El administrador debe adjuntar esas políticas a los usuarios o grupos de IAMque necesiten esos permisos.

Para obtener más información acerca de cómo crear una política basada en identidad de IAM con estosdocumentos de políticas de JSON de ejemplo, consulte Creación de políticas en la pestaña JSON en laGuía del usuario de IAM.

Al crear un clúster de Amazon EKS, el usuario o rol o el usuario de entidad de IAM, como un usuariofederado que crea el clúster se concede automáticamente permisos system:masters en la configuraciónRBAC del clúster. Para permitir que otros roles o usuarios de AWS interactúen con el clúster, debe editar elmapa de configuración aws-auth desde Kubernetes.

Para obtener más información sobre cómo trabajar con ConfigMap, consulte Administración de usuarios ofunciones de IAM para su clúster (p. 200).

Temas• Prácticas recomendadas relativas a políticas (p. 248)• Uso de la consola de Amazon EKS (p. 249)• Permitir a los usuarios ver sus propios permisos (p. 249)• Actualización de un clúster de Kubernetes (p. 250)• Enumeración o descripción de todos los clústeres (p. 250)

Prácticas recomendadas relativas a políticasLas políticas basadas en identidad son muy eficaces. Determinan si alguien puede crear, acceder oeliminar los recursos de Amazon EKS de su cuenta. Estas acciones pueden generar costes adicionalespara su cuenta de AWS. Siga estas directrices y recomendaciones al crear o editar políticas basadas enidentidad:

• Introducción sobre el uso de políticas administradas de AWS: para comenzar a utilizar Amazon EKSrápidamente, utilice las políticas administradas de AWS para proporcionar a los empleados los permisosnecesarios. Estas políticas ya están disponibles en su cuenta y las mantiene y actualiza AWS. Paraobtener más información, consulte Introducción sobre el uso de permisos con políticas administradas deAWS en la Guía del usuario de IAM.

• Conceder privilegios mínimos: al crear políticas personalizadas, conceda solo los permisos necesariospara llevar a cabo una tarea. Comience con un conjunto mínimo de permisos y conceda permisosadicionales según sea necesario. Por lo general, es más seguro que comenzar con permisos que sondemasiado tolerantes e intentar hacerlos más severos más adelante. Para obtener más información,consulte Conceder privilegios mínimos en la Guía del usuario de IAM.

• Habilitar MFA para operaciones confidenciales: para mayor seguridad, obligue a los usuarios deIAM a que utilicen la autenticación multifactor (MFA) para acceder a recursos u operaciones de APIconfidenciales. Para obtener más información, consulte Uso de Multi-Factor Authentication (MFA) enAWS en la Guía del usuario de IAM.

• Utilizar condiciones de política para mayor seguridad: en la medida en que sea práctico, defina lascondiciones en las que sus políticas basadas en identidad permitan el acceso a un recurso. Por ejemplo,puede escribir condiciones para especificar un rango de direcciones IP permitidas desde el que debeproceder una solicitud. También puede escribir condiciones para permitir solicitudes solo en un intervalo

248

Page 256: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEjemplos de políticas basadas en identidad

de hora o fecha especificado o para solicitar el uso de SSL o MFA. Para obtener más información,consulte Elementos de la política de JSON de IAM: condición en la Guía del usuario de IAM.

Uso de la consola de Amazon EKSPara acceder a la consola de Amazon EKS, debe tener un conjunto mínimo de permisos. Estos permisosdeben permitirle registrar y consultar los detalles sobre los recursos de Amazon EKS en su cuentade AWS. Si crea una política basada en identidad que sea más restrictiva que el mínimo de permisosnecesarios, la consola no funcionará del modo esperado para las entidades (usuarios o roles de IAM) quetengan esa política.

Para garantizar que dichas entidades puedan seguir usando la consola de Amazon EKS, cree una políticacon su propio nombre, como AmazonEKSAdminPolicy. Asocie la política a las entidades. Para obtenermás información, consulte Adición de permisos a un usuario en la Guía del usuario de IAM:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ]}

No es necesario que conceda permisos mínimos para la consola a los usuarios que solo realizan llamadasa la AWS CLI o a la API de AWS. En su lugar, permite acceso únicamente a las acciones que coincidancon la operación de API que intenta realizar.

Permitir a los usuarios ver sus propios permisosEn este ejemplo, se muestra cómo podría crear una política que permita a los usuarios de IAM ver laspolíticas administradas e insertadas que se asocian a la identidad de sus usuarios. Esta política incluyepermisos para llevar a cabo esta acción en la consola o mediante programación con la AWS CLI o la APIde AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": [ "arn:aws:iam::*:user/${aws:username}" ] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [

249

Page 257: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioUso de funciones vinculadas a servicios

"iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Actualización de un clúster de KubernetesEste ejemplo muestra cómo puede crear una política que permita a un usuario actualizar la versión deKubernetes de cualquier clúster dev de una cuenta y en cualquier región.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "eks:UpdateClusterVersion", "Resource": "arn:aws:eks:*:111122223333:cluster/dev" } ]}

Enumeración o descripción de todos los clústeresEste ejemplo muestra cómo puede crear una política que permita a un usuario de acceso de solo lectura aenumerar o describir todos los clústeres. Una cuenta tiene que ser capaz de enumerar y describir clústerespara usar el comando update-kubeconfig AWS CLI.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListClusters" ], "Resource": "*" } ]}

Uso de funciones vinculadas a servicios en AmazonEKSAmazon Elastic Kubernetes Service usa roles vinculados a servicios de AWS Identity and AccessManagement (IAM). Un rol vinculado a un servicio es un tipo único de rol de IAM que está vinculadodirectamente a Amazon EKS. Las funciones vinculadas a servicios están predefinidas por Amazon EKS eincluyen todos los permisos que el servicio requiere para llamar a otros servicios de AWS en su nombre.

250

Page 258: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioUso de funciones vinculadas a servicios

Con una función vinculada a servicios, resulta más sencillo configurar Amazon EKS, porque no es precisoagregar los permisos necesarios manualmente. Amazon EKS define los permisos de las funcionesvinculadas con su propio servicio y, a menos que esté definido de otra manera, solo Amazon EKS puedeasumir sus funciones. Los permisos definidos incluyen las políticas de confianza y de permisos, y que lapolítica de permisos no se pueda asociar a ninguna otra entidad de IAM.

Solo puede eliminar un rol vinculado a un servicio después de eliminar sus recursos relacionados. De estaforma, se protegen los recursos de Amazon EKS, ya que se evita que se puedan eliminar accidentalmentepermisos de acceso a los recursos.

Para obtener información sobre otros servicios que admiten roles vinculados a servicios, consulte Serviciosde AWS que funcionan con IAM y busque los servicios que tienen Sí en la columna Rol vinculado aservicio. Seleccione una opción Sí con un enlace para ver la documentación acerca del rol vinculado alservicio en cuestión.

Permisos de funciones vinculadas a servicios para Amazon EKSAmazon EKS usa el rol vinculado al servicio denominadoAWSServiceRoleForAmazonEKSNodegroup:These permissions are required for managing nodegroupsin your account. These policies are related to management of the following resources: Auto Scaling groups,security groups, launch templates and IAM instance profiles.

La función vinculada al servicio AWSServiceRoleForAmazonEKSNodegroup confía en los siguientesservicios para asumir la función:

• eks-nodegroup.amazonaws.com

La siguiente política de permisos del rol permite que Amazon EKS realice las acciones de la API de AWSen los recursos especificados:

• AWSServiceRoleForamazoneksNodeGroup

Debe configurar los permisos para permitir a una entidad de IAM (como un usuario, grupo o función) crear,editar o eliminar la descripción de una función vinculada a un servicio. Para obtener más información,consulte Permisos de roles vinculados a servicios en la Guía del usuario de IAM.

Creación de un rol vinculado a servicios para Amazon EKSNo necesita crear manualmente un rol vinculado a un servicio. Cuando crea un grupo de nodosadministrados en la Consola de administración de AWS, el AWS CLI, o la API de AWS, Amazon EKS creael rol vinculado al servicio.

Si elimina este rol vinculado a servicio y necesita crearlo de nuevo, puede utilizar el mismo proceso paravolver a crear el rol en su cuenta. Cuando Amazon EKS crea otro grupo de nodos administrados, vuelve acrear el rol vinculado al servicio.

Edición de una función vinculada a un servicio para Amazon EKSAmazon EKS no le permite editar el rol vinculado al servicioAWSServiceRoleForAmazonEKSNodegroup. Después de crear un rol vinculado a un servicio, no puedecambiarle el nombre, ya que varias entidades pueden hacer referencia al mismo.

Eliminación de una función vinculada a un servicio para AmazonEKSSi ya no necesita utilizar una característica o servicio que requiere un rol vinculado a un servicio, lerecomendamos que elimine dicho rol. De esta forma no tiene una entidad no utilizada que no se monitorice

251

Page 259: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRol del servicio de IAM

ni mantenga de forma activa. Sin embargo, debe limpiar los recursos del rol vinculado al servicio antes deeliminarlo manualmente.

Note

Si el servicio Amazon EKS está utilizando el rol cuando intenta eliminar los recursos, laeliminación podría producir un error. En tal caso, espere unos minutos e intente de nuevo laoperación.

Para eliminar los recursos de Amazon EKS utilizados porAWSServiceRoleForAmazonEKSNodegroup

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Elija un clúster.3. En la página del clúster, si hay grupos de nodos administrados en la sección Grupos de nodos

seleccione cada uno individualmente y, a continuación, elija Eliminar.4. Escriba el nombre del clúster en la ventana de confirmación de eliminación y, a continuación,

seleccione Confirmar para eliminar.5. Repita este procedimiento para cualquier otro grupo de nodos del clúster y para cualquier otro clúster

de su cuenta.

Para eliminar manualmente el rol vinculado a un servicio utilizando IAM

Utilice la consola de IAM, la AWS CLI o la API de AWS para eliminar el rol vinculado al servicioAWSServiceRoleForAmazonEKSNodegroup. Para obtener más información, consulte Eliminar un rolvinculado a un servicio en la Guía del usuario de IAM.

Regiones admitidas para los roles vinculados al servicio deAmazon EKSAmazon EKS admite el uso de roles vinculados a servicios en todas las regiones en las que el servicio estádisponible. Para obtener más información, consulte Amazon EKS Regions and Endpoints.

Función del servicio de IAM en Amazon EKSAmazon EKS hace llamadas a otros servicios de AWS por usted para administrar los recursos que ustedutiliza con el servicio. Antes de crear clústeres deAmazon EKS, tiene que crear una rol de IAM con lassiguientes políticas de IAM:

• AmazonEKSServicePolicy

• AmazonEKSClusterPolicy

Compruebe si hay un rol de servicio existentePuede utilizar el procedimiento siguiente para comprobar y ver si la cuenta ya dispone de la función deservicio de Amazon EKS.

Para comprobar si eksServiceRole está en la consola de IAM

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. Seleccione Roles en el panel de navegación.

252

Page 260: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRol del servicio de IAM

3. En la lista de roles, busque eksServiceRole o AWSServiceRoleForAmazonEKS. Si un rolque incluye eksServiceRole o AWSServiceRoleForAmazonEKS no existe, entonces consulteCreación del rol de servicio de Amazon EKS (p. 253) para crear el rol. Si un rol que incluyeeksServiceRole o AWSServiceRoleForAmazonEKS existe, seleccione el rol para ver las políticasasociadas.

4. Elija Permissions.5. Asegúrese de que las políticas administradas AmazonEKSServicePolicy y AmazonEKSClusterPolicy

están asociadas al rol. Si las políticas están asociadas, entonces la función de servicio de AmazonEKS está configurada correctamente.

6. Seleccione Trust Relationships, Edit Trust Relationship.7. Compruebe que la relación de confianza contiene la siguiente política. Si la relación de confianza

coincide con la política a continuación, seleccione Cancel. Si la relación de confianza no coincide,copie la política en la ventana Policy Document y seleccione Update Trust Policy.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

Creación del rol de servicio de Amazon EKSPuede utilizar la Consola de administración de AWS o AWS CloudFormation para crear el rol de servicio sino dispone de uno para su cuenta. Seleccione el nombre de la herramienta que desea utilizar para crear elrol.

Consola de administración de AWS

Para crear una función de servicio de Amazon EKS en la consola de IAM

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. Elija Roles y, a continuación, Create role (Crear rol).3. Seleccione EKS en la lista de servicios, a continuación, EKS para su caso de uso y luego Next:

Permissions (Siguiente: Permisos).4. Elija Next: Tags (Siguiente: Etiquetas).5. De manera opcional, añada metadatos al rol asociando etiquetas como pares de clave-valor. Para

obtener más información sobre el uso de etiquetas en IAM, consulte Etiquetado de entidades deIAM en la Guía del usuario de IAM.

6. Elija Next: Review.7. En Role name (Nombre de rol), escriba un nombre único para el rol, por ejemplo

eksServiceRole y, a continuación, elija Create role (Crear rol).

AWS CloudFormation

Para crear la función de servicio de Amazon EKS con AWS CloudFormation

1. Guarde la siguiente plantilla de AWS CloudFormation en un archivo de texto en su sistema local.

253

Page 261: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRol de IAM del nodo de trabajo

---AWSTemplateFormatVersion: '2010-09-09'Description: 'Amazon EKS Service Role'

Resources:

eksServiceRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - eks.amazonaws.com Action: - sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonEKSServicePolicy - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy

Outputs:

RoleArn: Description: The role that Amazon EKS will use to create AWS resources for Kubernetes clusters Value: !GetAtt eksServiceRole.Arn Export: Name: !Sub "${AWS::StackName}-RoleArn"

2. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.3. Elija Create stack.4. Para Specify template (Especificar plantilla), seleccione Upload a template file (Actualizar un

archivo de plantilla) y, a continuación, elija Choose file (Elegir archivo).5. Elija el archivo que creó anteriormente y, a continuación, elija Next (Siguiente).6. En Stack name (Nombre de pila), escriba un nombre para la función, por ejemplo

eksServiceRole y, a continuación, elija Next (Siguiente).7. En página Configure stack options (Configurar opciones de pila), seleccione Next (Siguiente).8. En la página Review (Revisar), revise la información, confirme la advertencia de que la pila puede

crear recursos de IAM y elija Create stack (Crear pila).

Rol de IAM del nodo de trabajo de Amazon EKSEl demonio de kubelet del nodo de trabajo de Amazon EKS hace llamadas a las API de AWS en sunombre. Los nodos de trabajo reciben permisos de dichas llamadas de API a través de políticas asociadasy de un perfil de instancias de IAM. Antes de poder lanzar nodos de trabajo y registrarlos en un clúster,debe crear un rol de IAM para dichos nodos de trabajo, para utilizarlo cuando se lancen. Este requisito seaplica a nodos de trabajo lanzados con la AMI optimizada para Amazon EKS proporcionada por Amazono con cualquier otras AMI de nodo de trabajo que pretenda utilizar. Antes de crear nodos de trabajo, debecrear un rol de IAM con las siguientes políticas deIAM:

• AmazonEKSWorkerNodePolicy

• AmazonEKS_CNI_Policy

• AmazonEC2ContainerRegistryReadOnly

254

Page 262: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRol de IAM del nodo de trabajo

Comprobación de la existencia de un rol de nodo de trabajoPuede utilizar el procedimiento siguiente para comprobar y ver si la cuenta ya dispone del rol de nodo detrabajo de Amazon EKS.

Para comprobar si NodeInstanceRole está en la consola de IAM

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. Seleccione Roles en el panel de navegación.3. En la lista de roles, busque NodeInstanceRole. Si un rol que contiene NodeInstanceRole no

existe, entonces consulte Creación del rol IAM de un nodo de trabajo de Amazon EKS (p. 255) paracrear el rol. Si existe un rol que contiene NodeInstanceRole, seleccione el rol para ver las políticasasociadas.

4. Elija Permissions (Permisos).5. Asegúrese de que las políticas administradas de AmazonEKSWorkerNodePolicy,

AmazonEKS_CNI_Policy y AmazonEC2ContainerRegistryReadOnly estén asociadas al rol. Si laspolíticas están asociadas, su rol de nodo de trabajo de Amazon EKS está configurado correctamente.

6. Seleccione Trust Relationships, Edit Trust Relationship.7. Compruebe que la relación de confianza contiene la siguiente política. Si la relación de confianza

coincide con la política a continuación, seleccione Cancel. Si la relación de confianza no coincide,copie la política en la ventana Policy Document y seleccione Update Trust Policy.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

Creación del rol IAM de un nodo de trabajo de Amazon EKSSi ha creado nodos de trabajo siguiendo los pasos que se indican en los temas Introducción a la Consolade administración de AWS (p. 12) o Introducción a eksctl (p. 3), el rol del nodo de trabajo ya existey no tiene que crearlo de forma manual. Puede utilizar la Consola de administración de AWS o AWSCloudFormation para crear el rol del nodo de trabajo de Amazon EKS si no tiene uno aún para su cuenta.Seleccione el nombre de la herramienta que desea utilizar para crear el rol.

Consola de administración de AWS

Para crear su rol de nodo de trabajo de Amazon EKS en la consola de IAM

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. Elija Roles y, a continuación, Create role (Crear rol).3. Elija EC2 de la lista de servicios, a continuación, Next Permissions (Siguientes permisos).4. En el cuadro Filter policies (Políticas de filtro), escriba AmazonEKSWorkerNodePolicy. Marque

la casilla situada a la izquierda de AmazonEKSWorkerNodePolicy.5. En el cuadro Filter policies (Políticas de filtro), escriba AmazonEKS_CNI_Policy. Marque la

casilla situada a la izquierda de AmazonEKS_CNI_Policy.

255

Page 263: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRol de ejecución de pods

6. En el cuadro Filter policies (Políticas de filtro), escribaAmazonEC2ContainerRegistryReadOnly. Marque la casilla situada a la izquierda deAmazonEC2ContainerRegistryReadOnly.

7. Elija Next: Tags (Siguiente: Etiquetas).8. De manera opcional, añada metadatos al rol asociando etiquetas como pares de clave-valor. Para

obtener más información sobre el uso de etiquetas en IAM, consulte Etiquetado de entidades deIAM en la Guía del usuario de IAM.

9. Elija Next: Review.10. En Role name (Nombre de rol), escriba un nombre único para su rol, por ejemplo,

NodeInstanceRole. En Role description (Descripción del rol), sustituya el texto actual por eltexto descriptivo como Amazon EKS - Node Group Role, a continuación, elija Create role(Crear rol).

AWS CloudFormation

Para crear su rol de nodo de trabajador de Amazon EKS mediante AWS CloudFormation

1. Abra la consola de AWS CloudFormation en https://console.aws.amazon.com/cloudformation.2. Seleccione Create stack (Crear pila) y, a continuación, seleccione With new resources (standard)

(Con nuevos recursos [estándar]).3. En Specify template (Especificar plantilla), seleccione URL de Amazon S3.4. Pegue la siguiente URL en el área de texto Amazon S3 URL (URL de Amazon S3) y elija Next

(Siguiente) dos veces:

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-03-23/amazon-eks-nodegroup-role.yaml

5. En la página Specify stack details (Especificar detalles de pila), para Stack name (Nombre de pila)escriba un nombre como, por ejemplo, eks-node-group-instance-role y elija Next (Siguiente).

6. (Opcional) En la página Configure stack options (Configurar opciones de pila), tiene la opción deetiquetar sus recursos de pila. Seleccione Siguiente.

7. En la página Review (Revisar) marque la casilla de la sección Capabilities (Capacidades) y elijaCreate stack (Crear pila).

8. Una vez creada la pila, selecciónela en la consola y elija Outputs (Salidas).9. Registre el valor NodeInstanceRole para el rol de IAM que se creó. Necesita esto cuando al crear

su grupo de nodos.

Rol de ejecución de podsSe requiere el rol de ejecución de pods de Amazon EKS para ejecutar pods en la infraestructura de AWSFargate.

Cuando el clúster crea pods en la infraestructura de AWS Fargate, el pod necesita realizar llamadas a lasAPI de AWS en su nombre, por ejemplo, para extraer imágenes de contenedor de Amazon ECR. El rol deejecución de pods 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 pods para utilizarlo con los pods. Esterol se añade 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 elclúster de Amazon EKS. Esto es lo que permite que la infraestructura de Fargate aparezca en el clústercomo nodos.

Antes de crear un perfil de Fargate, debe crear un rol de IAM con la siguiente política de IAM:

256

Page 264: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRol de ejecución de pods

• AmazonEKSFargatePodExecutionRolePolicy

Compruebe si hay un rol de ejecución de pods existentePuede utilizar el siguiente procedimiento para comprobar y ver si su cuenta ya dispone del rol de ejecuciónde pods de Amazon EKS.

Para comprobar si está el AmazonEKSFargatePodExecutionRole en la consola de IAM

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. Seleccione Roles en el panel de navegación.3. En la lista de roles, busque AmazonEKSFargatePodExecutionRole. Si la función no existe, siga

los procedimientos que se indican en Creación del rol de ejecución de pods de Amazon EKS (p. 257)para crear la función. Si el rol existe, selecciónelo para ver sus políticas asociadas.

4. Elija Permissions.5. Asegúrese de que la política AmazonEKSFargatePodeExecutionRolePolicy administrada por Amazon

esté asociada al rol. Si la política está asociada, el rol de ejecución de pods de Amazon EKS estácorrectamente configurado.

6. Seleccione Trust Relationships, Edit Trust Relationship.7. Compruebe que la relación de confianza contiene la siguiente política. Si la relación de confianza

coincide con la política a continuación, seleccione Cancel. Si la relación de confianza no coincide,copie la política en la ventana Policy Document y seleccione Update Trust Policy.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

Creación del rol de ejecución de pods de Amazon EKSPuede utilizar el siguiente procedimiento para crear el rol de ejecución de pods de Amazon EKS si todavíano tiene uno en su cuenta.

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. Elija Roles y, a continuación, Create role (Crear rol).3. Seleccione EKS en la lista de servicios, EKS: pod de Fargate para su caso de uso y luego Next:

Permissions (Siguiente: Permisos.4. Elija Next: Tags (Siguiente: Etiquetas).5. De manera opcional, añada metadatos al rol asociando etiquetas como pares de clave-valor. Para

obtener más información sobre el uso de etiquetas en IAM, consulte Etiquetado de entidades de IAMen la Guía del usuario de IAM.

6. Elija Next: Review.7. En Role name (Nombre de rol), escriba un nombre exclusivo para su rol, como

AmazonEKSFargatePodExecutionRole y, a continuación, seleccione Create role (Crear rol).

257

Page 265: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

Roles de IAM para cuentas de servicioCon los roles de IAM las cuentas de servicio en clústeres de Amazon EKS, puede asociar un rol de IAMa una cuenta de servicio de Kubernetes. Esta cuenta de servicio puede proporcionar permisos AWS alos contenedores en cualquier pod que utilice esa cuenta de servicio. Con esta característica, ya no esnecesario proporcionar permisos extendidos al rol IAM del nodo de trabajo para que los pods de ese nodopuedan llamar a las API de AWS.

Las aplicaciones deben firmar sus solicitudes de API AWS con credenciales de AWS. Esta característicaproporciona una estrategia de administración de credenciales para las aplicaciones, similar a cómo losperfiles de instancia Amazon EC2 proporcionan credenciales a instancias Amazon EC2. En lugar de creary distribuir las credenciales de AWS a los contenedores o de utilizar el rol de la instancia Amazon EC2,puede asociar el rol de IAM con una cuenta de servicio Kubernetes. Las aplicaciones en los contenedoresde tarea pueden utilizar seguidamente el SDK AWS o el AWS CLI para realizar solicitudes de API a losservicios de AWS autorizados.

La característica de roles IAM para cuentas de servicio de ofrece los siguientes beneficios:

• Privilegio mínimo: al utilizar los roles de IAM para las cuentas de servicio, ya no es necesarioproporcionar permisos extendidos al rol IAM del nodo de trabajo para que los pods de ese nodo puedanllamar a las API de AWS. Puede limitar los permisos IAM a una cuenta de servicio y solo los pods queutilizan esa cuenta de servicio tienen acceso a esos permisos. Esta característica también elimina lanecesidad de soluciones de terceros como kiam o kube2iam.

• Aislamiento de credenciales: un contenedor solo puede recuperar las credenciales del rol de IAMasociado a la cuenta de servicio a la que pertenece. Un contenedor nunca tiene acceso a credencialesque están destinadas a otro contenedor que pertenece a otro pod.

• Auditabilidad: el acceso y el registro de eventos está disponible a través de CloudTrail para garantizaruna auditoría retrospectiva.

Para empezar, consulte Habilitación de roles IAM de para cuentas de servicio en su clúster (p. 263).

Para ver un tutorial integral con eksctl, consulte Explicación: Actualización de un Daemonset para usarIAM en cuentas de servicio (p. 269).

Temas• Información general técnica sobre los roles de IAM para las cuentas de servicio (p. 258)• Uso de un SDK de AWS soportado (p. 262)• Habilitación de roles IAM de para cuentas de servicio en su clúster (p. 263)• Creación de un rol y una política de IAM para su cuenta de servicio (p. 264)• Especificación de un rol de IAM para su cuenta de servicio (p. 268)• Restricción de acceso a las credenciales del perfil de instancia de Amazon EC2. (p. 269)• Explicación: Actualización de un Daemonset para usar IAM en cuentas de servicio (p. 269)

Información general técnica sobre los roles de IAM para lascuentas de servicioEn 2014, AWS Identity and Access Management añadió compatibilidad con identidades federadasmediante OpenID Connect (OIDC). Esta característica le permite autenticar llamadas a la API AWS conproveedores de identidad compatibles y recibir un token web JSON (JWT) de OIDC válido. Puede transferireste token a la operación de la API AWS STSAssumeRoleWithWebIdentity y recibir credencialestemporales del rol IAM. Puede utilizar estas credenciales para interactuar con cualquier servicio de AWS,como Amazon S3 y DynamoDB.

258

Page 266: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

Kubernetes tiene cuentas de servicio de uso largo como su propio sistema de identidad interno.Los pods pueden autenticarse con el servidor de la API de Kubernetes mediante un token montadoautomáticamente (que era un JWT no OIDC) que solo el servidor de la API de Kubernetes podíavalidar. Estos tokens de cuenta de servicio heredados no caducan y rotar la clave de firma es unproceso difícil. En la versión 1.12 de Kubernetes, se añadió compatibilidad con una nueva característicaProjectedServiceAccountToken, que es un token web JSON de OIDC que también contiene laidentidad de la cuenta de servicio y admite un público configurable.

Amazon EKS ahora aloja un punto de enlace de detección OIDC público por clúster que contiene lasclaves de firma para los tokens web JSON ProjectedServiceAccountToken para que los sistemasexternos como IAM puedan validar y aceptar los tokens OIDC emitidos por Kubernetes.

Configuración de roles IAM

En IAM, cree un rol de IAM con una relación de confianza que se asigne al proveedor OIDC del clúster,al espacio de nombres de la cuenta de servicio y (opcionalmente) el nombre de la cuenta de servicioy, a continuación, asocie la política IAM que desea asociar a la cuenta de servicio. Puede añadir variasentradas en las condiciones StringEquals y StringLike siguientes para utilizar varias cuentas deservicio o espacios de nombres con el rol.

• Para limitar un rol a una cuenta de servicio específica:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::AWS_ACCOUNT_ID:oidc-provider/OIDC_PROVIDER" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "OIDC_PROVIDER:sub": "system:serviceaccount:SERVICE_ACCOUNT_NAMESPACE:SERVICE_ACCOUNT_NAME" } } } ]}

• Para definir el ámbito de un rol a un espacio de nombres completo (para utilizar el espacio de nombrescomo límite):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::AWS_ACCOUNT_ID:oidc-provider/OIDC_PROVIDER" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "OIDC_PROVIDER:sub": "system:serviceaccount:SERVICE_ACCOUNT_NAMESPACE:*" } } } ]}

259

Page 267: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

Configuración de cuenta de servicioEn Kubernetes, se define el rol IAM que se debe asociar a una cuenta de servicio en el clúster añadiendola anotación eks.amazonaws.com/role-arn a la cuenta de servicio.

apiVersion: v1kind: ServiceAccountmetadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::AWS_ACCOUNT_ID:role/IAM_ROLE_NAME

Configuración del podEl Amazon EKS Pod Identity Webhook del clúster vigila los pods que están asociados a cuentas deservicio con esta anotación y les aplica las siguientes variables de entorno.

AWS_ROLE_ARN=arn:aws:iam::AWS_ACCOUNT_ID:role/IAM_ROLE_NAMEAWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token

Note

El clúster no necesita utilizar el enlace web de mutación para configurar las variables de entorno ylos montajes de archivos de token; puede optar por configurar pods para añadir estas variables deentorno manualmente.

Las versiones compatibles del SDK AWS (p. 262) buscan primero estas variables de entorno en elproveedor de la cadena de credenciales. Las credenciales del rol se utilizan para los pods que cumplenestos criterios.

Note

Cuando un pod utiliza credenciales de AWS de un rol de IAM asociado a una cuenta de servicio,el AWS CLI u otros SDK de los contenedores de ese pod utilizan exclusivamente las credencialesproporcionadas por dicho rol. Ya no heredan ningún permiso IAM del rol IAM del nodo de trabajo.

De forma predeterminada, solo los contenedores que se ejecutan como root tienen los permisos delsistema de archivos adecuados para leer el archivo de token de identidad web. Puede proporcionar estospermisos haciendo que sus contenedores se ejecuten como root o proporcionando el siguiente contextode seguridad para los contenedores de su manifiesto. El ID de fsGroup es arbitrario y puede elegircualquier ID de grupo válido. Para obtener más información acerca de las implicaciones de establecer uncontexto de seguridad para sus pods, consulte Configure a Security Context for a Pod or Container en ladocumentación de Kubernetes.

apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: my-appspec: template: metadata: labels: app: my-app spec: serviceAccountName: my-app containers: - name: my-app image: my-app:latest securityContext: fsGroup: 1337...

260

Page 268: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

Permisos de IAM entre cuentas

Puede configurar permisos de IAM entre cuentas mediante la creación de un proveedor de identidad apartir del clúster de otra cuenta o mediante operaciones AssumeRole encadenadas. En los siguientesejemplos, la cuenta A posee un clúster de Amazon EKS que admite roles de IAM para las cuentas deservicio. Los pods que se ejecutan en ese clúster deben asumir permisos IAM de la cuenta B.

Example : crear un proveedor de identidad a partir del clúster de otra cuenta

Example

En este ejemplo, la cuenta A proporcionaría a la cuenta B la URL del emisor OIDC de su clúster. La cuentaB sigue las instrucciones de Habilitación de roles IAM de para cuentas de servicio en su clúster (p. 263) yCreación de un rol y una política de IAM para su cuenta de servicio (p. 264) utilizando la URL del emisorOIDC del clúster de la cuenta A. A continuación, un administrador del clúster comenta la cuenta de servicioen el clúster de la cuenta A para utilizar el rol de la cuenta B.

apiVersion: v1kind: ServiceAccountmetadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::ACCOUNT_B_AWS_ACCOUNT_ID:role/IAM_ROLE_NAME

Example : Uso de operaciones AssumeRole encadenadas

Example

En este ejemplo, la cuenta B crea una política de IAM con los permisos para conceder a los pods delclúster de la cuenta A. La cuenta B asocia dicha política a un rol de IAM con una relación de confianza queconcede permisos AssumeRole a la cuenta A (111111111111), tal y como se muestra a continuación.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:root" }, "Action": "sts:AssumeRole", "Condition": {} } ]}

La cuenta A crea un rol con una política de confianza que obtiene las credenciales del proveedor deidentidad creado con la URL del emisor OIDC del clúster, tal y como se muestra a continuación.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111111111111:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/EXAMPLEC061A78C479E31025A21AC4CDE191335D05820BE5CE" }, "Action": "sts:AssumeRoleWithWebIdentity" }

261

Page 269: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

]}

La cuenta A asocia una política a ese rol con los siguientes permisos para asumir el rol que ha creado lacuenta B.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/account-b-role" } ]}

El código de aplicación para que los pods asuman el rol de la cuenta B utiliza dos perfiles:account_b_role y account_a_role. El perfil account_b_role utiliza el perfil account_a_rolecomo origen. Para el AWS CLI, el archivo ~/.aws/config tendría un aspecto similar al del siguienteejemplo.

[profile account_b_role]source_profile = account_a_rolerole_arn=arn:aws:iam::222222222222:role/account-b-role

[profile account_a_role]web_identity_token_file = /var/run/secrets/eks.amazonaws.com/serviceaccount/token role_arn=arn:aws:iam::111111111111:role/account-a-role

Para especificar perfiles encadenados para otros SDK AWS, consulte su documentación.

Uso de un SDK de AWS soportadoLos contenedores de los pods deben utilizar una versión del SDK AWS que admita la asunción de un rolde IAM a través de un archivo de token de identidad web OIDC. Los SDK de AWS que están incluidos enadministradores de paquetes de distribución de Linux podrían no estar lo suficientemente actualizadospara soportar esta característica. Asegúrese de utilizar al menos las versiones mínimas del SDK que seindican a continuación:

• Java (versión 2) — 2.10.11• Go — 1.23.13• Python (Boto3) — 1.9.220• Python (botocore) — 1.12.200• AWS CLI — 1.16.232• Nodo — 2.521.0• Ruby — 2.11.345• C++ — 1.7.174• PHP — 3.110.7

Tenga en cuenta que muchos complementos populares de Kubernetes, como Cluster Autoscaler o ALBIngress Controller no funcionarán con esta característica hasta que se hayan actualizado para utilizar unaversión compatible de sus respectivos SDK AWS. El complemento CNI Amazon VPC para Kubernetes seha actualizado con una versión compatible de AWS SDK for Go, y puede utilizar los roles de IAM para lacaracterística de cuentas de servicio para proporcionar los permisos necesarios para que CNI funcione.

262

Page 270: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

Para asegurarse de que está utilizando una SDK soportada, siga las instrucciones de instalación para suSDK preferido en Herramientas para Amazon Web Services al crear los contenedores.

Habilitación de roles IAM de para cuentas de servicio en suclústerLa característica de roles de IAM para cuentas de servicio está disponible en los nuevos clústeres deKubernetes Amazon EKS versión 1.14 y clústeres que se actualizaron a las versiones 1.14 o 1.13 a partirdel 3 de septiembre de 2019. Los clústeres existentes pueden actualizar a la versión 1.13 o 1.14 paraaprovechar esta característica. Para obtener más información, consulte Actualización de una versión deKubernetes de clúster de Amazon EKS (p. 33).

Si el clúster admite roles de IAM para cuentas de servicio, tendrá asociada una URL de emisor de OpenIDConnect. Puede ver esta URL en la consola de Amazon EKS o puede utilizar el siguiente comando AWSCLI para recuperarla.

Important

Debe usar al menos la versión 1.18.17 de la AWS CLI para recibir la salida correcta de estecomando. Para obtener más información, consulte Instalación de la AWS CLI en la AWSCommand Line Interface Guía del usuario.

aws eks describe-cluster --name cluster_name --query "cluster.identity.oidc.issuer" --output text

Salida:

https://oidc.eks.region.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E

Para utilizar roles de IAM para cuentas de servicio en su clúster, debe crear un proveedor de identidadOIDC en la consola de IAM.

eksctl

Para crear un proveedor de identidad OIDC de IAM para su clúster con eksctl

1. Consulte su versión de eksctl con el siguiente comando. En este procedimiento, se presuponeque ha instalado eksctl y que su versión de eksctl es al menos 0.16.0-rc.1.

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

2. Cree su proveedor de identidad OIDC para su clúster con el siguiente comando. Sustituyacluster_name por su propio valor.

eksctl utils associate-iam-oidc-provider --cluster cluster_name --approve

Consola de administración de AWS

Para crear un proveedor de identidad OIDC de IAM para su clúster con la Consola deadministración de AWS

1. Recupere la URL del emisor OIDC desde la descripción de la consola de Amazon EKS de suclúster o utilice el siguiente comando de AWS CLI.

263

Page 271: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

Important

Debe usar al menos la versión 1.18.17 de la AWS CLI para recibir la salida correcta deeste comando. Para obtener más información, consulte Instalación de la AWS CLI en laAWS Command Line Interface Guía del usuario.

aws eks describe-cluster --name cluster_name --query "cluster.identity.oidc.issuer" --output text

2. Abra la consola de IAM en https://console.aws.amazon.com/iam/.3. En el panel de navegación, elija Identity Providers (Proveedores de identidad) y, a continuación,

elija Create Provider (Crear proveedor).4. En Provider Type (Tipo de proveedor), elija Choose a provider type (Elegir un tipo de proveedor)

y, luego, elija OpenID Connect.5. En Provider URL (URL del proveedor), pegue la URL del emisor OIDC de su clúster.6. En Audience (Público), introduzca sts.amazonaws.com y seleccione Next Step (Paso

siguiente).7. Compruebe que la información del proveedor es correcta y, a continuación, seleccione Create

(Crear) para crear su proveedor de identidad.

Una vez que haya habilitado el proveedor de identidad OIDC de IAM para su clúster, puede crear rolesde IAM para asociarlos a una cuenta de servicio de su clúster. Para obtener más información, consulteCreación de un rol y una política de IAM para su cuenta de servicio (p. 264)

Creación de un rol y una política de IAM para su cuenta deservicioDebe crear una política de IAM que especifique los permisos que desea que tengan los contenedoresde sus pods. Dispone de varias formas para crear una nueva política de permisos de IAM. Puede copiaruna política administrada por AWS completa que ya haga en parte lo que desea y, a continuación,personalizarla según sus requisitos concretos. Para obtener más información, consulte Creación de unanueva política en la Guía del usuario de IAM

También debe crear un rol de IAM para que sus cuentas de servicio de Kubernetes lo utilicen antes de quelo asigne a una cuenta de servicio. La relación de confianza se limita al clúster y la cuenta de servicio paraque cada combinación de clúster y cuenta de servicio requiera su propio rol. A continuación, puede asociaruna política de IAM específica al rol que proporciona a los contenedores de sus pods los permisos quedesea. En los procedimientos siguientes se describe cómo hacerlo.

Crear una política de IAM

En este procedimiento, ofrecemos dos ejemplos de políticas que puede utilizar para su aplicación:

• Una política para permitir acceso de solo lectura a un bucket de Amazon S3. Puede almacenarinformación de configuración o un script de arranque en este bucket, y los contenedores del pod puedenleer el archivo del bucket y cargarlo en la aplicación.

• Una política para permitir imágenes de contenedor pagadas desde AWS Marketplace.

1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.2. En el panel de navegación, elija Policies (Políticas) y, a continuación, seleccione Create policy (Crear

política).3. Seleccione la pestaña JSON.

264

Page 272: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

4. En el campo Policy Document (Documento de política), pegue una de las siguientes políticas paraaplicarla a sus cuentas de servicio o pegue su propio documento de política en el campo. Tambiénpuede utilizar el editor visual para crear su propia política.

El siguiente ejemplo otorga un permiso para el bucket my-pod-secrets-bucketAmazon S3. Puedemodificar el documento de la política para que se adapte mejor a sus necesidades específicas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-pod-secrets-bucket/*" ] } ]}

En el siguiente ejemplo se conceden los permisos necesarios para utilizar una imagen de contenedorde pago desde AWS Marketplace.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aws-marketplace:RegisterUsage" ], "Effect": "Allow", "Resource": "*" } ]}

5. Elija Review policy (Revisar política).6. Introduzca un nombre y una descripción para su política y, a continuación, seleccione Create policy

(Crear política).7. Registre el nombre de recurso de Amazon (ARN) de la política para utilizarlo más adelante al crear el

rol.

Creación de una función de IAM

Cree un rol de IAM para sus cuentas de servicio. Seleccione la pestaña con el nombre de la herramientaque desea utilizar para crear el rol.

eksctl

Cree la cuenta de servicio y el rol de IAM con el siguiente comando. Sustituya los valores deejemplo por sus propios valores.

Note

Este comando solo funciona para los clústeres que se crearon con eksctl. Si no ha creadoel clúster con eksctl, utilice las instrucciones de las pestañas de la AWS CLI o la Consolade administración de AWS.

265

Page 273: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

eksctl create iamserviceaccount \ --name service_account_name \ --namespace service_account_namespace \ --cluster cluster_name \ --attach-policy-arn IAM_policy_ARN \ --approve \ --override-existing-serviceaccounts

Se implementó una plantilla de AWS CloudFormation que creó un rol de IAM y le asignó la política deIAM. El rol se asoció con una cuenta de servicio de Kubernetes.

Consola de administración de AWS

1. Recupere la URL del emisor OIDC desde la descripción de la consola de Amazon EKS de suclúster o utilice el siguiente comando de AWS CLI.

Important

Debe usar al menos la versión 1.18.17 de la AWS CLI para recibir la salida correcta deeste comando. Para obtener más información, consulte Instalación de la AWS CLI en laAWS Command Line Interface Guía del usuario.

aws eks describe-cluster --name cluster_name --query "cluster.identity.oidc.issuer" --output text

2. Abra la consola de IAM en https://console.aws.amazon.com/iam/.3. En el panel de navegación, elija Roles, Create role (Crear rol).4. En la sección Select type of trusted entity (Seleccionar tipo de entidad de confianza), seleccione

Web identity(Identidad web).5. En la sección Choose a web identity provider (Elegir proveedor de identidad web):

1. En Identity provider (Proveedor de identidad), elija la URL de su clúster.2. En Audience (Audiencia), elija sts.amazonaws.com.

6. Elija Next: Permissions.7. En la sección Attach Policy (Asociar política), seleccione la política que desea utilizar para su

cuenta de servicio. Elija Next: Tags (Siguiente: Etiquetas).8. En la pantalla Add tags (optional) [Agregar etiquetas (opcional)], puede añadir etiquetas para la

cuenta. Elija Next: Review (Siguiente: Revisar).9. En Role name (Nombre de rol), escriba un nombre para su rol y, a continuación, elija Create role

(Crear rol).10. Una vez creado el rol, seleccione el rol en la consola para abrirlo y editarlo.11. Elija la pestaña Trust relationships (Relaciones de confianza) y, a continuación, Edit trust

relationship (Editar relación de confianza).

1. Edite el sufijo del proveedor OIDC y cámbielo de :aud a :sub.2. Reemplace sts.amazonaws.com por su ID de cuenta de servicio.

La línea resultante debería tener este aspecto.

"oidc.eks.region.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E:sub": "system:serviceaccount:SERVICE_ACCOUNT_NAMESPACE:SERVICE_ACCOUNT_NAME"

12. Seleccione Update Trust Policy (Actualizar política de confianza) para terminar.13. Asocie el rol de IAM con una cuenta de servicio de Kubernetes. Para obtener más información,

consulte Especificación de un rol de IAM para su cuenta de servicio (p. 268).

266

Page 274: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

AWS CLI

1. Establezca su ID de cuenta de AWS en una variable de entorno con el siguiente comando.

AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text)

2. Establezca el proveedor de identidad OIDC en una variable de entorno con el siguiente comando,sustituyendo el nombre de su clúster.

Important

Debe usar al menos la versión 1.18.17 de la AWS CLI para recibir la salida correcta deeste comando. Para obtener más información, consulte Instalación de la AWS CLI en laAWS Command Line Interface Guía del usuario.

OIDC_PROVIDER=$(aws eks describe-cluster --name cluster-name --query "cluster.identity.oidc.issuer" --output text | sed -e "s/^https:\/\///")

3. Establezca el espacio de nombre de la cuenta de servicio en una variable de entorno con elsiguiente comando, sustituyendo el nombre de su espacio de nombre.

SERVICE_ACCOUNT_NAMESPACE=kube-system

4. Establezca el nombre de la cuenta de servicio en una variable de entorno con el siguientecomando, sustituyendo service-account-name por el nombre de su cuenta de servicio.

SERVICE_ACCOUNT_NAME=service-account-name

5. Copie el bloque de texto a continuación en un archivo llamado trust.json.

read -r -d '' TRUST_RELATIONSHIP <<EOF{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_PROVIDER}" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "${OIDC_PROVIDER}:sub": "system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}" } } } ]}EOFecho "${TRUST_RELATIONSHIP}" > trust.json

6. Ejecute el siguiente comando de AWS CLI para crear el rol, sustituyendo el nombre y ladescripción de su rol de IAM.

aws iam create-role --role-name IAM_ROLE_NAME --assume-role-policy-document file://trust.json --description "IAM_ROLE_DESCRIPTION"

7. Ejecute el siguiente comando para asociar su política de IAM a su rol, sustituyendo el nombre y lapolítica de su IAM rol ARN.

267

Page 275: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

aws iam attach-role-policy --role-name IAM_ROLE_NAME --policy-arn=IAM_POLICY_ARN

8. Asocie el rol de IAM con una cuenta de servicio de Kubernetes. Para obtener más información,consulte Especificación de un rol de IAM para su cuenta de servicio (p. 268).

Especificación de un rol de IAM para su cuenta de servicioEn Kubernetes, debe definir el rol de IAM que se debe asociar a una cuenta de servicio de su clústerañadiendo la siguiente anotación a la cuenta de servicio.

Note

Si creó un rol de IAM para utilizarlo con su cuenta de servicio mediante eksctl, esto ya se habráhecho automáticamente con la cuenta de servicio que especificó al crear el rol.

apiVersion: v1kind: ServiceAccountmetadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::AWS_ACCOUNT_ID:role/IAM_ROLE_NAME

Para aplicar parches a una cuenta de servicio para utilizarla con roles de IAM

1. Utilice el siguiente comando para anotar su cuenta de servicio con el ARN del rol de IAM que deseautilizar con su cuenta de servicio. Asegúrese de sustituir sus propios valores por los valores deejemplo de color alternativo para utilizarlos con sus pods.

kubectl annotate serviceaccount -n SERVICE_ACCOUNT_NAMESPACE SERVICE_ACCOUNT_NAME \eks.amazonaws.com/role-arn=arn:aws:iam::AWS_ACCOUNT_ID:role/IAM_ROLE_NAME

2. Elimine y vuelva a crear todos los pods existentes asociados a la cuenta de servicio para aplicar lasvariables de entorno de credenciales. El enlace web que muta no se aplica a los pods que ya se estánejecutando. El siguiente comando elimina los pods de DaemonSet de aws-node existentes y losimplementa con la anotación de cuenta de servicio. Puede modificar el espacio de nombre, el tipo deimplementación y la etiqueta para actualizar sus pods específicos.

kubectl delete pods -n kube-system -l k8s-app=aws-node

3. Confirme que todos los pods se reiniciaron.

kubectl get pods -n kube-system -l k8s-app=aws-node

4. Describa uno de los pods y verifique que existen las variables de entornoAWS_WEB_IDENTITY_TOKEN_FILE y AWS_ROLE_ARN.

kubectl exec -n kube-system aws-node-9rgzw env | grep AWS

Salida:

AWS_VPC_K8S_CNI_LOGLEVEL=DEBUGAWS_ROLE_ARN=arn:aws:iam::AWS_ACCOUNT_ID:role/IAM_ROLE_NAMEAWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token

El rol de IAM se creó en eksctl cuando creó la cuenta de servicio de Kubernetes en un pasoanterior.

268

Page 276: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

Restricción de acceso a las credenciales del perfil de instancia deAmazon EC2.De forma predeterminada, no se impide que los contenedores que se ejecutan en sus nodos de trabajoaccedan a las credenciales proporcionadas al perfil de instancia del nodo de trabajo a través del servidorde metadatos de instancia de Amazon EC2. Esta sección le ayuda a bloquear el acceso del pod a lascredenciales del perfil de instancia de Amazon EC2.

Para evitar que los contenedores de los pods obtengan acceso a la información de credencialesproporcionada al perfil de instancia del nodo de trabajo (a la vez que permite los permisos que proporcionala cuenta de servicio), ejecute los siguientes comandos de iptables en sus nodos de trabajo (comoroot) o inclúyalos en el script de datos de usuario de arranque de la instancia.

Important

Estos comandos impiden que TODOS los contenedores utilicen las credenciales del perfil deinstancia.

yum install -y iptables-servicesiptables --insert FORWARD 1 --in-interface eni+ --destination 169.254.169.254/32 --jump DROPiptables-save | tee /etc/sysconfig/iptables systemctl enable --now iptables

Explicación: Actualización de un Daemonset para usar IAM encuentas de servicioEl complemento CNI de Amazon VPC para Kubernetes es el complemento de red para redes depod en clústeres de Amazon EKS. El complemento CNI se encarga de asignar direcciones IP de laVPC a los nodos de Kubernetes y establecer la configuración de red necesaria para los pods de cadanodo. El complemento requiere permisos de IAM, proporcionados por la política administrada deAWS AmazonEKS_CNI_Policy, para realizar llamadas a las API de AWS en su nombre. De formapredeterminada, esta política se asocia al rol de IAM de su nodo de trabajo. Sin embargo, si se utiliza estemétodo, todos los pods de los nodos de trabajo tendrán los mismos permisos que el complemento CNI.Puede utilizar los roles de IAM para la función de cuentas de servicio para proporcionar los permisos deAmazonEKS_CNI_Policy y, a continuación, eliminar la política del rol de IAM del nodo de trabajo.

Para facilitar el uso, este tema utiliza eksctl para configurar los roles de IAM para cuentas de servicio.Sin embargo, si prefiere utilizar la Consola de administración de AWS, la AWS CLI o uno de los SDKde AWS, se aplican los mismos conceptos básicos, pero tendrá que modificar los pasos para utilizar losprocedimientos de Habilitación de roles IAM de para cuentas de servicio en su clúster (p. 263)

Para configurar el complemento CNI de modo que utilice los roles de IAM para las cuentas deservicio

1. Compruebe su versión de eksctl con el siguiente comando. En este procedimiento, se presuponeque ha instalado eksctl y que su versión de eksctl es al menos 0.16.0-rc.1.

eksctl version

Para obtener más información acerca de la instalación o la actualización de eksctl, consulteInstalación o actualización de eksctl (p. 204).

2. Compruebe la versión del complemento CNI de Amazon VPC del clúster para Kubernetes. Utilice elsiguiente comando para imprimir la versión de CNI del clúster.

269

Page 277: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRoles de IAM para cuentas de servicio

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

Salida:

amazon-k8s-cni:1.5.3

Si su versión de CNI es anterior a 1.5.5, complete los siguientes pasos para crear una cuenta deservicio y, a continuación, actualice su versión de CNI a la versión más reciente:

a. Cree un proveedor de identidad OIDC para su clúster con el siguiente comando. Sustituya elnombre del clúster por su propio valor.

eksctl utils associate-iam-oidc-provider --cluster cluster_name --approve

b. Cree una cuenta de servicio de Kubernetes con el siguiente comando. Sustituya cluster_namepor su propio valor. Este comando implementa una pila de AWS CloudFormation que crea un rolde IAM, le asigna la AmazonEKS_CNI_Policy política administrada por AWS y vincula el rol deIAM a la cuenta de servicio.

eksctl create iamserviceaccount \ --name aws-node \ --namespace kube-system \ --cluster cluster_name \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --approve \ --override-existing-serviceaccounts

c. Actualice su versión de CNI a la última versión. El manifiesto especifica la cuenta de servicio deaws-node que creó en el paso anterior.

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.5/config/v1.5/aws-k8s-cni.yaml

3. Observe la puesta en marcha y espere a que el recuento DESIRED de la implementación coincida conel recuento UP-TO-DATE. Pulse Ctrl+c para salir.

kubectl get -n kube-system daemonset.apps/aws-node --watch

4. Enumere los pods en el aws-node daemonset.

kubectl get pods -n kube-system -l k8s-app=aws-node

Salida:

NAME READY STATUS RESTARTS AGEaws-node-mp88b 1/1 Running 0 17maws-node-n4tcd 1/1 Running 0 20saws-node-qt9dl 1/1 Running 0 17m

5. Compruebe de nuevo la versión del complemento CNI de la Amazon VPC de su clúster paraKubernetes y confirme que se trata de la versión 1.5.5.

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

270

Page 278: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioSolución de problemas

Salida:

amazon-k8s-cni:1.5.5

6. Describa uno de los pods y verifique que existen las variables de entornoAWS_WEB_IDENTITY_TOKEN_FILE y AWS_ROLE_ARN.

kubectl exec -n kube-system aws-node-9rgzw env | grep AWS

Salida:

AWS_VPC_K8S_CNI_LOGLEVEL=DEBUGAWS_ROLE_ARN=arn:aws:iam::111122223333:role/eksctl-prod-addon-iamserviceaccount-kube-sys-Role1-V66K5I6JLDGKAWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token

El rol de IAM se creó en eksctl cuando creó la cuenta de servicio de Kubernetes en un pasoanterior.

7. Elimine la política AmazonEKS_CNI_Policy del rol IAM del nodo de trabajo.

a. Abra la consola de IAM en https://console.aws.amazon.com/iam/.b. En el panel de navegación izquierdo, elija Roles, y, a continuación, busque el rol de instancia de

nodo.c. Elija la pestaña Permissions (Permisos) del rol de instancia de nodo y, a continuación, elija la X

que se encuentra a la derecha de la AmazonEKS_CNI_Policy.d. Elija Detach para terminar.

Ahora los pods de complementos CNI obtienen sus permisos IAM de su propio rol y el rol de instancia yano puede proporcionar esos permisos a otros pods.

Solución de problemas de identidad y acceso enAmazon EKSDiagnostique y solucione problemas que pueden surgir al trabajar con Amazon EKS e IAM (consulteSolución de problemas de IAM (p. 296)).

Registro y monitorización en Amazon EKSEl registro de plano de control de Amazon EKS proporciona registros de auditoría y diagnósticodirectamente desde el plano de control de Amazon EKS a CloudWatch Logs en su cuenta. Estos registroshacen que le resulte más fácil asegura y ejecutar los clústeres. Puede seleccionar los tipos de registroexactos que necesita. Los registros se envían como secuencias de registro a un grupo para cada clústerde Amazon EKS en CloudWatch.Para obtener más información, consulte Registro del plano de control deAmazon EKS (p. 45).

Amazon EKS está integrado con AWS CloudTrail, un servicio que proporciona un registro de las accionesrealizadas por un usuario, una función o un servicio de AWS en Amazon EKS. CloudTrail captura todaslas llamadas a la API de Amazon EKS como eventos. Las llamadas capturadas incluyen las llamadasrealizadas desde la consola de Amazon EKS y las llamadas de código a las operaciones de la API deAmazon EKS.Para obtener más información, consulte Registrar las llamadas a la API de Amazon EKS conAWS CloudTrail (p. 283).

271

Page 279: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioValidación de la conformidad

Validación de la conformidad en Amazon EKSAuditores externos evalúan la seguridad y la conformidad de Amazon EKS como parte de variosprogramas de conformidad de AWS. Esto incluye SOC, PCI, ISO, HIPAA y otros.

Para obtener una lista de los servicios de AWS en el ámbito de programas de conformidad específicos,consulte AWSServicios de AWS en el ámbito del programa de conformidad. Para obtener informacióngeneral, consulte Programas de conformidad de AWS.

Puede descargar los informes de auditoría de terceros utilizando AWS Artifact. Para obtener másinformación, consulte la sección Descarga de informes en AWS Artifact.

Su responsabilidad de conformidad al utilizar Amazon EKS se determina en función de la sensibilidad delos datos, los objetivos de cumplimiento de su empresa y la legislación y los reglamentos correspondientes.AWS proporciona los siguientes recursos para ayudar con la conformidad:

• Guías de inicio rápido de seguridad y conformidad: estas guías de implementación tratanconsideraciones sobre arquitectura y ofrecen pasos para implementar los entornos de referenciacentrados en la seguridad y la conformidad en AWS.

• Documento técnico sobre arquitectura para seguridad y conformidad de HIPAA: este documento técnicodescribe cómo las empresas pueden utilizar AWS para crear aplicaciones conformes con HIPAA.

• Recursos de conformidad de AWS: este conjunto de manuales y guías podría aplicarse a su sector yubicación.

• AWS Config: este servicio de AWS evalúa en qué medida las configuraciones de los recursos cumplenlas prácticas internas, las directrices del sector y las normativas.

• AWS Security Hub: este servicio de AWS ofrece una vista integral de su estado de seguridad en AWSque le ayuda a comprobar la conformidad con las normas del sector de seguridad y las prácticasrecomendadas.

Resiliencia en Amazon EKSLa infraestructura global de AWS está conformada por regiones y zonas de disponibilidad de AWS. Lasregiones de AWS proporcionan varias zonas de disponibilidad físicamente independientes y aisladasque se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, ademásde baja latencia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datosque realizan una conmutación por error automática entre zonas de disponibilidad sin interrupciones. Laszonas de disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que lasinfraestructuras tradicionales de centros de datos únicos o múltiples.

Amazon EKS ejecuta instancias del plano de control de Kubernetes en varias zonas de disponibilidad paragarantizar una alta disponibilidad. Amazon EKS detecta y reemplaza automáticamente las instancias delplano de control en mal estado y proporciona actualizaciones de versiones y parches automatizados paraellas.

Este plano de control se compone de al menos dos nodos de servidor de API y tres nodos de etcd quese ejecutan en tres zonas de disponibilidad dentro de una región. Amazon EKS detecta y reemplazaautomáticamente las instancias de plano de control con un estado incorrecto y reinicia las instancias enlas zonas de disponibilidad de la región según sea necesario. Amazon EKS aprovecha la arquitectura deregiones de AWS con el fin de mantener una alta disponibilidad. Por este motivo, Amazon EKS puedeofrecer un Acuerdo de nivel de servicio de disponibilidad del punto de enlace del servidor de API.

Para obtener más información sobre zonas de disponibilidad y las regiones de AWS, consulteInfraestructura global de AWS.

272

Page 280: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioSeguridad de la infraestructura

Seguridad de la infraestructura en Amazon EKSAl tratarse de un servicio administrado, Amazon EKS está protegido por los procedimientos de seguridadde red globales de AWS que se describen en el documento técnico Amazon Web Services: Informacióngeneral sobre procesos de seguridad.

Puede utilizar llamadas a la API publicadas en AWS para obtener acceso a Amazon EKS a través de lared. Los clientes deben ser compatibles con Transport Layer Security (TLS) 1.0 o una versión posterior.Le recomendamos TLS 1.2 o una versión posterior. Los clientes también deben ser compatibles conconjuntos de cifrado con confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE)o Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). La mayoría de los sistemas modernos como Java 7 yposteriores son compatibles con estos modos.

Además, las solicitudes deben estar firmadas mediante un ID de clave de acceso y una clave de accesosecreta que esté asociada a una entidad principal de IAM. También puede utilizar AWS Security TokenService (AWS STS) para generar credenciales de seguridad temporales para firmar solicitudes.

Cuando se crea un clúster de Amazon EKS, se especifican las subredes de la VPC que el clúster va ausar. Amazon EKS requiere subredes en al menos dos Zona de disponibilidad. Recomendamos una VPCcon subredes públicas y privadas para que Kubernetes pueda crear balanceadores de carga públicosen las subredes públicas que equilibren la carga de tráfico con los pods que se ejecutan en los nodos detrabajo de las subredes privadas.

Para obtener información acerca de las consideraciones de VPC, consulte Consideraciones sobre la VPCdel clúster (p. 164).

Si crea la VPC y los grupos de nodos de trabajo con las plantillas de AWS CloudFormation incluidas en eltutorial Introducción a Amazon EKS (p. 3), los grupos de seguridad del plano de control y de los nodos detrabajo se configurarán con las opciones recomendadas.

Para obtener más información acerca de las consideraciones del grupo de seguridad, consulteConsideraciones relativas al grupo de seguridad Amazon EKS (p. 167).

Cuando se crea un clúster nuevo, Amazon EKS crea un punto de enlace para el servidor de la APIde Kubernetes administrado que utiliza para comunicarse con su clúster (mediante herramientas deadministración de Kubernetes como, por ejemplo, kubectl). De forma predeterminada, este puntode enlace del servidor de la API es público en Internet y el acceso al servidor de la API está protegidomediante una combinación de AWS Identity and Access Management (IAM) y Control de acceso basadoen rol (RBAC) nativo de Kubernetes.

Puede habilitar el acceso privado al servidor de la API de Kubernetes para que toda la comunicación entrelos nodos de trabajo y el servidor de la API permanezcan dentro de su VPC. Puede limitar las direccionesIP a las que el servidor API puede tener acceso desde Internet o deshabilitar por completo el acceso aInternet por parte del servidor API.

Para obtener más información acerca de la modificación del acceso al punto de enlace del clúster, consulteModificar el acceso al punto de enlace del clúster (p. 40).

Puede implementar las políticas de red con herramientas como Project Calico (p. 182). Project Calico es unproyecto abierto de terceros. Para obtener más información, consulte la documentación de Project Calico.

Configuración y análisis de vulnerabilidades enAmazon EKS

Las versiones de la plataforma de Amazon EKS representan las funciones del plano de control delclúster, incluyen qué marcas de servidor de la API de Kubernetes están habilitadas y la versión de parche

273

Page 281: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPolítica de seguridad del pod

de Kubernetes actual. Los nuevos clústeres están implementados con la versión más reciente de laplataforma. Para obtener más información, consulte Versiones de la plataforma (p. 53).

Puede actualizar un clúster de Amazon EKS (p. 33) con las versiones más recientes de Kubernetes.Cuando haya nuevas versiones de Kubernetes disponibles en Amazon EKS, le recomendamos queactualice proactivamente los clústeres para que utilicen la versión más reciente disponible. Para obtenermás información sobre las versiones de Kubernetes en EKS, consulte Versiones de Kubernetes enAmazon EKS (p. 50).

Realice un seguimiento de los eventos de seguridad o privacidad de Amazon Linux 2 en el Centro deseguridad de Amazon Linux o suscríbase a la fuente RSS asociada. Los eventos de seguridad y privacidadincluyen una descripción general del problema, los paquetes afectados e instrucciones para actualizar lasinstancias y corregir el problema.

Puede utiliza Amazon Inspector para comprobar la accesibilidad de la red no deseada de sus nodos detrabajo y para buscar vulnerabilidades en dichas instancias de Amazon EC2.

Política de seguridad del podEl controlador de admisión de la política de seguridad del pod de Kubernetes valida la creación del pod yactualiza las solicitudes utilizando un conjunto de reglas. Los clústeres de Amazon EKS se envían con unpolítica de seguridad totalmente permisiva y sin restricciones de forma predeterminada. Para obtener másinformación, consulte Políticas de seguridad del pod en la documentación de Kubernetes.

Note

El controlador de admisión de la política de seguridad del pod solo está habilitado en clústeresde Amazon EKS que ejecuten Kubernetes versión 1.13 o posterior. Debe actualizar la versiónde Kubernetes de su clúster al menos a 1.13 para usar las políticas de seguridad de pod. Paraobtener más información, consulte Actualización de una versión de Kubernetes de clúster deAmazon EKS (p. 33).

Política de seguridad predeterminada del pod deAmazon EKSLos clústeres de Amazon EKS con Kubernetes versión 1.13 y superior tienen una política de seguridadde pod predeterminado llamada eks.privileged. Esta política no presenta restricciones en cuanto altipo de pod que se puede aceptar en el sistema, lo que equivale a ejecutar Kubernetes con el controladorPodSecurityPolicy deshabilitado.

Note

Esta política se creó mantener la compatibilidad con los clústeres que no tenía el controladorPodSecurityPolicy habilitado. Puede crear políticas más restrictivas para su clúster y paralos espacios de nombres individuales y cuentas de servicio y, a continuación, eliminar la políticapredeterminada para habilitar políticas más restrictivas.

Puede consultar la política predeterminada con el siguiente comando.

kubectl get psp eks.privileged

Salida:

274

Page 282: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPolítica de seguridad predeterminada

del pod de Amazon EKS

NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMESeks.privileged true * RunAsAny RunAsAny RunAsAny RunAsAny false *

Para obtener más información, puede describir la política con el siguiente comando.

kubectl describe psp eks.privileged

Salida:

Name: eks.privileged

Settings: Allow Privileged: true Allow Privilege Escalation: 0xc0004ce5f8 Default Add Capabilities: <none> Required Drop Capabilities: <none> Allowed Capabilities: * Allowed Volume Types: * Allow Host Network: true Allow Host Ports: 0-65535 Allow Host PID: true Allow Host IPC: true Read Only Root Filesystem: false SELinux Context Strategy: RunAsAny User: <none> Role: <none> Type: <none> Level: <none> Run As User Strategy: RunAsAny Ranges: <none> FSGroup Strategy: RunAsAny Ranges: <none> Supplemental Groups Strategy: RunAsAny Ranges: <none>

El siguiente ejemplo muestra el archivo YALM completo de la política de seguridad del podeks.privileged, el rol de clúster y la vinculación del rol de clúster.

---apiVersion: policy/v1beta1kind: PodSecurityPolicymetadata: name: eks.privileged annotations: kubernetes.io/description: 'privileged allows full unrestricted access to pod features, as if the PodSecurityPolicy controller was not enabled.' seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyspec: privileged: true allowPrivilegeEscalation: true allowedCapabilities: - '*' volumes: - '*' hostNetwork: true hostPorts: - min: 0

275

Page 283: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPolítica de seguridad predeterminada

del pod de Amazon EKS

max: 65535 hostIPC: true hostPID: true runAsUser: rule: 'RunAsAny' seLinux: rule: 'RunAsAny' supplementalGroups: rule: 'RunAsAny' fsGroup: rule: 'RunAsAny' readOnlyRootFilesystem: false

---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: eks:podsecuritypolicy:privileged labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyrules:- apiGroups: - policy resourceNames: - eks.privileged resources: - podsecuritypolicies verbs: - use

---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: eks:podsecuritypolicy:authenticated annotations: kubernetes.io/description: 'Allow all authenticated users to create privileged pods.' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:podsecuritypolicy:privilegedsubjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated

Para eliminar la política de seguridad de pod predeterminada

Después de crear las políticas de seguridad del pod personalizadas para su clúster, puede eliminar lapolítica de seguridad del pod eks.privileged de Amazon EKS predeterminada para habilitar suspolíticas personalizadas.

1. Cree un archivo llamado privileged-podsecuritypolicy.yaml y pegue en él el contenidocompleto del archivo YAML eks.privileged del ejemplo anterior (de este modo, puede eliminar lapolítica de seguridad del pod, el ClusterRole y el ClusterRoleBinding asociado con él).

2. Elimine el archivo YAML con el siguiente comando.

kubectl delete -f privileged-podsecuritypolicy.yaml

276

Page 284: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPolítica de seguridad predeterminada

del pod de Amazon EKS

Para instalar o restaurar la política de seguridad del pod predeterminada

Si actualiza desde una versión anterior de Kubernetes o ha modificado o eliminado la política de seguridaddel pod eks.privileged de Amazon EKS, puede restaurarla siguiendo los pasos que se describen acontinuación.

1. Cree un archivo denominado privileged-podsecuritypolicy.yaml y pegue en él el contenidodel archivo YAML siguiente.

---apiVersion: policy/v1beta1kind: PodSecurityPolicymetadata: name: eks.privileged annotations: kubernetes.io/description: 'privileged allows full unrestricted access to pod features, as if the PodSecurityPolicy controller was not enabled.' seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyspec: privileged: true allowPrivilegeEscalation: true allowedCapabilities: - '*' volumes: - '*' hostNetwork: true hostPorts: - min: 0 max: 65535 hostIPC: true hostPID: true runAsUser: rule: 'RunAsAny' seLinux: rule: 'RunAsAny' supplementalGroups: rule: 'RunAsAny' fsGroup: rule: 'RunAsAny' readOnlyRootFilesystem: false

---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: eks:podsecuritypolicy:privileged labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyrules:- apiGroups: - policy resourceNames: - eks.privileged resources: - podsecuritypolicies verbs: - use

---apiVersion: rbac.authorization.k8s.io/v1

277

Page 285: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioPolítica de seguridad predeterminada

del pod de Amazon EKS

kind: ClusterRoleBindingmetadata: name: eks:podsecuritypolicy:authenticated annotations: kubernetes.io/description: 'Allow all authenticated users to create privileged pods.' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:podsecuritypolicy:privilegedsubjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated

2. Aplique el archivo YAML con el siguiente comando.

kubectl apply -f privileged-podsecuritypolicy.yaml

278

Page 286: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioConceptos básicos de etiquetas

Etiquetado de los recursos deAmazon EKS

Para ayudarle a administrar sus recursos de Amazon EKS, puede asignar sus propios metadatos a cadarecurso en forma de etiquetas. En este tema se describe qué son las etiquetas y cómo crearlas.

Contenido• Conceptos básicos de etiquetas (p. 279)• Etiquetado de los recursos (p. 279)• Restricciones de las etiquetas (p. 280)• Uso de etiquetas mediante la consola (p. 281)• Uso de etiquetas mediante la CLI o la API (p. 281)

Conceptos básicos de etiquetasUna etiqueta es una marca que se asigna a un recurso de AWS. Cada etiqueta está formada por una clavey un valor opcional, ambos definidos por el usuario.

Las etiquetas le permiten clasificar los recursos de AWS según, por ejemplo, su finalidad, propietarioo entorno. Cuando tenga muchos recursos del mismo tipo, puede identificar rápidamente un recursoespecífico en función de las etiquetas que le haya asignado. Por ejemplo, puede definir un conjunto deetiquetas para los clústeres de Amazon EKS para ayudarle a realizar un seguimiento del propietario y delnivel de pila de cada clúster. Le recomendamos que diseñe un conjunto coherente de claves de etiquetapara cada tipo de recurso. Puede buscar y filtrar los recursos en función de las etiquetas que añada.

Además, las etiquetas no se asignan a los recursos automáticamente. Después de añadir una etiqueta,puede editar las claves y los valores de las etiquetas o eliminar etiquetas de un recurso en cualquiermomento. Si elimina un recurso, también se eliminará cualquier etiqueta asignada a dicho recurso.

Las etiquetas no tienen ningún significado semántico para Amazon EKS, por lo que se interpretanestrictamente como cadenas de caracteres. Puede establecer el valor de una etiqueta como una cadenavacía, pero no puede asignarle un valor nulo. Si añade una etiqueta con la misma clave que una etiquetaexistente en ese recurso, el nuevo valor sobrescribirá al antiguo.

Puede trabajar con etiquetas utilizando la Consola de administración de AWS, la AWS CLI y la API deAmazon EKS.

Note

Actualmente, las etiquetas de Amazon EKS no son compatibles con eksctl.

Si utiliza AWS Identity and Access Management (IAM), puede controlar qué usuarios de su cuenta de AWStienen permiso para crear, editar o eliminar etiquetas.

Etiquetado de los recursosPuede etiquetar clústeres Amazon EKS nuevos o existentes y grupos de nodos administrados.

279

Page 287: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRestricciones de las etiquetas

Si utiliza la consola de Amazon EKS, puede aplicar etiquetas a los recursos de nueva creación o a losrecursos existentes cuando lo desee mediante la pestaña Tags (Etiquetas) en la página de recursos encuestión.

Si utiliza la API de Amazon EKS, la AWS CLI o un SDK de AWS, puede aplicar etiquetas a los recursosnuevos mediante el parámetro de tags en la acción de la API pertinente o utilizar la acción de la API deTagResource para aplicar etiquetas a los recursos existentes. Para obtener más información, consulteTagResource.

Además, algunas acciones de creación de recursos le permiten especificar etiquetas para un recursoal crearlo. Si no se pueden aplicar etiquetas durante la creación del recurso, el proceso de creación derecursos falla. Esto garantiza que los recursos que pretendía etiquetar en el momento de su creaciónse creen con etiquetas específicas o no se creen en absoluto. Si etiqueta recursos en el momento desu creación, no es necesario ejecutar scripts de etiquetado personalizados después de la creación delrecurso.

En la tabla siguiente se describen los recursos de Amazon EKS que se pueden etiquetar y aquellos que sepueden etiquetar en el momento de su creación.

Compatibilidad de etiquetado para recursos de Amazon EKS

Recurso Admite etiquetas Admite la propagaciónde etiquetas

Admite etiquetadodurante la creación (APIde Amazon EKS, AWSCLI y SDK de AWS)

Clústeres de AmazonEKS

Sí No. Las etiquetas delclúster no se propagana ningún otro recursoasociado al clúster.

Grupos de nodosadministrados AmazonEKS

Sí No. Las etiquetasde grupo de nodosadministrados no sepropagan a ningún otrorecurso asociado algrupo de nodos.

Restricciones de las etiquetasSe aplican las siguientes restricciones básicas a las etiquetas:

• Cantidad máxima de etiquetas por recurso: 50.• Para cada recurso, cada clave de etiqueta debe ser única y solo puede tener un valor.• Longitud máxima de la clave: 128 caracteres Unicode en UTF-8• Longitud máxima del valor: 256 caracteres Unicode en UTF-8• Si se utiliza su esquema de etiquetado en múltiples servicios y recursos de AWS, recuerde que

otros servicios pueden tener restricciones sobre caracteres permitidos. Los caracteres permitidosgeneralmente son: letras, números y espacios representables en UTF-8, además de los siguientescaracteres: + - = . _ : / @.

• Las claves y los valores de las etiquetas distinguen entre mayúsculas y minúsculas.• No utilice aws:, AWS: ni ninguna combinación de mayúsculas o minúsculas del mismo como prefijo

para claves o valores, ya que está reservado para uso de AWS. Las claves y valores de etiquetas quetienen este prefijo no se pueden editar. Las etiquetas que tengan este prefijo no cuentan para el límite deetiquetas por recurso.

280

Page 288: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioUso de etiquetas mediante la consola

Uso de etiquetas mediante la consolaCon la consola de Amazon EKS puede administrar las etiquetas asociadas a los clústeres nuevos oexistentes y a grupos de nodos administrados.

Al seleccionar una página específica de recursos en la consola de Amazon EKS, se muestra una lista dedichos recursos. Por ejemplo, si selecciona Clusters (Clústeres) en el panel de navegación, la consolamuestra una lista de los clústeres de Amazon EKS. Al seleccionar un recurso de una de estas listas (porejemplo, un clúster concreto), si el recurso admite etiquetas, puede ver y administrar sus etiquetas en lapestaña Tags (Etiquetas).

Adición de etiquetas a un recurso individual durante sucreaciónPuede agregar etiquetas a clústeres Amazon EKS y grupos de nodos administrados al crearlas. Paraobtener más información, consulte Creación de un clúster de Amazon EKS (p. 23)

Añadido y eliminación de etiquetas en un recursoindividualAmazon EKS le permite añadir o eliminar etiquetas asociadas a sus clústeres directamente desde lapágina del recurso.

Para añadir o eliminar una etiqueta en un recurso individual

1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.2. En la barra de navegación, seleccione la región a utilizar.3. En el panel de navegación, elija Clusters (Clústeres).4. Seleccione un clúster específico y, a continuación, desplácese hacia abajo y seleccione Manage tags

(Administrar etiquetas).5. En la página Update tags (Actualizar etiquetas), añada o elimine las etiquetas según sea necesario.

• Para añadir una etiqueta, — seleccione Add Tag (Añadir etiqueta) y, a continuación, especifique laclave y el valor de cada etiqueta.

• Para quitar una etiqueta, — seleccione Remove tag (Eliminar etiqueta).6. Repita este proceso para cada etiqueta que desee añadir o eliminar y, a continuación, seleccione

Update (Actualizar) para finalizar.

Uso de etiquetas mediante la CLI o la APIUtilice los siguientes comandos de AWS CLI u operaciones de la API de Amazon EKS para añadir,actualizar, enumerar y eliminar las etiquetas de sus recursos.

Compatibilidad de etiquetado para recursos de Amazon EKS

Tarea AWS CLI Acción API

Añadir o sobrescribir una o variasetiquetas.

tag-resource TagResource

281

Page 289: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioUso de etiquetas mediante la CLI o la API

Tarea AWS CLI Acción API

Eliminar una o varias etiquetas. untag-resource UntagResource

Los siguientes ejemplos muestran cómo añadir o quitar etiquetar a los recursos mediante la AWS CLI.

Ejemplo 1: Etiquetar un clúster existente

El siguiente comando etiqueta un clúster existente.

aws eks tag-resource --resource-arn resource_ARN --tags team=devs

Ejemplo 2: Quitar la etiqueta de un clúster existente

El siguiente comando elimina una etiqueta de un clúster existente.

aws eks untag-resource --resource-arn resource_ARN --tag-keys tag_key

Ejemplo 3: Enumerar etiquetas de un recurso

El siguiente comando enumera las etiquetas asociadas a un recurso existente.

aws eks list-tags-for-resource --resource-arn resource_ARN

Algunas acciones de creación de recursos le permiten especificar etiquetas al crear el recurso. Lassiguientes acciones admiten etiquetado durante la creación.

Tarea AWS CLI Herramientas de AWSpara Windows PowerShell

Acción API

Crear un clúster create-cluster New-EKSCluster CreateCluster

Crear un grupo de nodosadministrados

create-nodegroup

New-EKSNodegroup CreateNodegroup

282

Page 290: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioInformación de Amazon EKS en CloudTrail

Registro de llamadas a la API deAmazon EKS con AWS CloudTrail

Amazon EKS está integrado con AWS CloudTrail, un servicio que proporciona un registro de las accionesrealizadas por un usuario, una función o un servicio de AWS en Amazon EKS. CloudTrail captura todaslas llamadas a la API de Amazon EKS como eventos. Las llamadas capturadas incluyen las llamadasrealizadas desde la consola de Amazon EKS y las llamadas de código a las operaciones de la API deAmazon EKS.

Si crea un registro de seguimiento, puede habilitar la entrega continua de eventos de CloudTrail a unbucket de Amazon S3, incluidos los eventos de Amazon EKS. Si no configura un registro de seguimiento,puede ver los eventos más recientes en la consola de CloudTrail en el Event history (Historial de eventos).Mediante la información que recopila CloudTrail, se puede determinar la solicitud que se envió a AmazonEKS, la dirección IP desde la que se realizó la solicitud, quién la realizó, cuándo la realizó y los detallesadicionales.

Para obtener más información sobre CloudTrail, consulte la AWS CloudTrail User Guide.

Información de Amazon EKS en CloudTrailCloudTrail se habilita en una cuenta de AWS al crearla. Cuando se produce una actividad en AmazonEKS, dicha actividad se registra en un evento de CloudTrail junto con los eventos de los demás serviciosde AWS en el Event history (Historial de eventos). Puede ver, buscar y descargar los últimos eventos dela cuenta de AWS. Para obtener más información, consulte Visualización de eventos con el historial deeventos de CloudTrail.

Para mantener un registro continuo de los eventos de la cuenta de AWS, incluidos los eventos de AmazonEKS, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar archivos deregistro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro de seguimientoen la consola, este se aplica a todas las regiones de AWS. El registro de seguimiento registra los eventosde todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon S3especificado. También puede configurar otros servicios de AWS para analizar y actuar en función de losdatos de eventos recopilados en los registros de CloudTrail. Para obtener más información, consulte lossiguientes temas:

• Introducción a la creación de registros de seguimiento• Servicios e integraciones compatibles con CloudTrail• Configuración de notificaciones de Amazon SNS para CloudTrail• Recibir archivos de registro de CloudTrail de varias regiones y Recepción de archivos de registro de

CloudTrail de varias cuentas

Todas las acciones de Amazon EKS las registra CloudTrail y están documentadas en la AmazonEKS API Reference. Por ejemplo, las llamadas a las secciones CreateCluster, ListClusters yDeleteCluster generan entradas en los archivos de registro de CloudTrail.

Cada entrada de registro o evento contiene información acerca de quién generó la solicitud. La informaciónde identidad del usuario le ayuda a determinar lo siguiente:

• Si la solicitud se realizó con credenciales de usuario raíz o de AWS Identity and Access Management(IAM).

283

Page 291: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioDescripción de las entradas de

archivos de registro de Amazon EKS

• Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.• Si la solicitud la realizó otro servicio de AWS.

Para obtener más información, consulte el elemento userIdentity de CloudTrail.

Descripción de las entradas de archivos de registrode Amazon EKS

Un registro de seguimiento es una configuración que permite la entrega de eventos como archivos deregistro al bucket de Amazon S3 que se especifique. Los archivos de registro de CloudTrail contienenuna o varias entradas de registro. Un evento representa una única solicitud de cualquier origen e incluyeinformación sobre la acción solicitada, la fecha y la hora de la acción, los parámetros de la solicitud,etcétera. Los archivos de registro de CloudTrail no son un registro de seguimiento de la pila ordenada delas llamadas a la API públicas, por lo que no aparecen en ningún orden específico.

En el ejemplo siguiente, se muestra una entrada de registro de CloudTrail que ilustra la acciónCreateCluster.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/ericn", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "ericn" }, "eventTime": "2018-05-28T19:16:43Z", "eventSource": "eks.amazonaws.com", "eventName": "CreateCluster", "awsRegion": "us-west-2", "sourceIPAddress": "205.251.233.178", "userAgent": "PostmanRuntime/6.4.0", "requestParameters": { "resourcesVpcConfig": { "subnetIds": [ "subnet-a670c2df", "subnet-4f8c5004" ] }, "roleArn": "arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonEKS-CAC1G1VH3ZKZ", "clusterName": "test" }, "responseElements": { "cluster": { "clusterName": "test", "status": "CREATING", "createdAt": 1527535003.208, "certificateAuthority": {}, "arn": "arn:aws:eks:us-west-2:111122223333:cluster/test", "roleArn": "arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonEKS-CAC1G1VH3ZKZ", "version": "1.10", "resourcesVpcConfig": { "securityGroupIds": [], "vpcId": "vpc-21277358", "subnetIds": [ "subnet-a670c2df",

284

Page 292: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioDescripción de las entradas de

archivos de registro de Amazon EKS

"subnet-4f8c5004" ] } } }, "requestID": "a7a0735d-62ab-11e8-9f79-81ce5b2b7d37", "eventID": "eab22523-174a-499c-9dd6-91e7be3ff8e3", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

285

Page 293: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioRequisitos previos

Amazon EKS en AWS OutpostsA partir de Kubernetes versión 1.14.8 con la plataforma de Amazon EKS versión eks.5 y Kubernetesversión 1.13.12 con la plataforma de Amazon EKS versión eks.6, puede crear y ejecutar nodos deAmazon EKS en AWS Outposts. AWS Outposts permite utilizar servicios de AWS, infraestructura ymodelos operativos en las instalaciones locales. En entornos de AWS Outposts, puede utilizar las mismasAPI, herramientas e infraestructura de AWS que utiliza en la nube de AWS. Los nodos de trabajo deAmazon EKS en AWS Outposts son ideales para cargas de trabajo de baja latencia que deben ejecutarsecerca de los datos y las aplicaciones locales. Para obtener más información acerca de AWS Outposts,consulte la Guía del usuario de AWS Outposts.

Requisitos previosEstos son los requisitos previos para utilizar nodos de trabajo de Amazon EKS en AWS Outposts:

• Debe haber instalado y configurado un Outpost en su centro de datos local.• Debe contar con una conexión de red de confianza entre su Outpost y la región de AWS.• La región de AWS para el Outpost debe ser compatible con Amazon EKS. Para ver una lista de

las regiones admitidas, consulte Puntos de enlace de servicio de Amazon EKS en la AWS GeneralReference.

LimitacionesEstas son las limitaciones para usar Amazon EKS en Outposts:

• AWS Identity and Access Management, Balanceador de carga de aplicaciones, Balanceador de carga dered, Classic Load Balancer y Amazon Route 53 se ejecutan en la región de AWS, no en Outposts. Estoaumentará las latencias entre los servicios y los contenedores.

• AWS Fargate no está disponible en AWS Outposts.

Consideraciones sobre la conectividad de redA continuación, se incluyen algunas consideraciones de conectividad de red para Amazon EKS AWSOutposts:

• Si se pierde la conectividad de red entre su Outpost y su región de AWS, sus nodos se seguiránejecutando. Sin embargo, no puede crear nuevos nodos ni realizar nuevas acciones en lasimplementaciones existentes hasta que se restaure la conectividad. En caso de errores en la instancia,la instancia no se reemplazará automáticamente. El nodo maestro de Kubernetes funciona en laregión, y la falta de latidos causados por incidencias como la pérdida de conectividad con la zonade disponibilidad podría provocar errores. Los latidos fallidos harán que los pods en los Outposts semarquen como en mal estado, y al final se agotará el tiempo de espera del estado del nodo y los pods semarcarán para su expulsión. Para obtener más información, consulte Controlador de nodos.

• Le recomendamos que proporcione una conexión de confianza, de alta disponibilidad y de baja latenciaentre su Outpost y su región de AWS.

286

Page 294: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de nodos de Amazon EKS en un Outpost

Creación de nodos de Amazon EKS en un OutpostCrear nodos de Amazon EKS en un Outpost es similar a crear nodos de Amazon EKS en la nube de AWS.Al crear un nodo de Amazon EKS en un Outpost, debe especificar una subred asociada al Outpost.

Un Outpost es una extensión de una región de AWS, y puede ampliar una VPC en una cuenta para queabarque varias zonas de disponibilidad y todas las ubicaciones de Outpost asociadas. Al configurar suOutpost, le asocia un grupo de subredes para ampliar su entorno de VPC regional a sus instalaciones. Lasinstancias de un Outpost aparecen como parte de su VPC regional, similar a una zona de disponibilidadcon subredes asociadas.

Para crear nodos de Amazon EKS en un Outpost con la AWS CLI, especifique un grupo de seguridad yuna subred asociada a su Outpost.

Para crear un grupo de nodos de Amazon EKS en un Outpost

1. Cree subredes de Outpost. El parámetro --outpost-arn debe especificarse para la subred que seva a crear para el Outpost. (Este paso es diferente para AWS Outposts).

aws ec2 create-subnet --vpc-id vpc-xxxxxxxx --cidr-block 10.0.3.0/24 \ –-outpost-arn arn:aws:outposts:us-west-2:123456789012:outpost/op-xxxxxxxxxxxxxxxx

2. Cree una VPC.

aws ec2 create-vpc --cidr-block 10.0.0.0/16

3. Cree un clúster, especificando las subredes del Outpost. (Este paso es diferente para AWS Outposts).

aws eks --region region create-cluster --name eks-outpost --role-arn \

287

Page 295: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCreación de nodos de Amazon EKS en un Outpost

arn:aws:iam::123456789012:role/eks-service-role-AWSServiceRoleForAmazonEKS-OUTPOST \ --resources-vpc-config subnetIds=subnet-xxxxxxxx,subnet-yyyyyyyy,securityGroupIds=sg-xxxxxxxx

4. Cree el grupo de nodos. Especifique un tipo de instancia que esté disponible en su Outpost. (Estepaso es diferente para AWS Outposts).

eksctl create nodegroup --cluster eks-outpost \ --version auto \ --name outpost-workers \ --node-type c5.large \ --node-ami auto \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4

5. Implemente aplicaciones y servicios.

kubectl apply -f kubernetes/deployment.yaml

288

Page 296: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioHerramientas de administración

Proyectos relacionadosEstos proyectos de código abierto extienden la funcionalidad de los clústeres de Kubernetes que seejecutan en AWS, incluidos los clústeres administradas por Amazon EKS.

Herramientas de administraciónHerramientas de administración relacionadas para clústeres de Kubernetes y Amazon EKS.

eksctleksctl es una herramienta de CLI sencilla para crear clústeres de Amazon EKS.

• URL del proyecto: https://eksctl.io/• Documentación del proyecto: https://eksctl.io/• Blog de código abierto de AWS: eksctl: Amazon EKS Cluster with One Command

AWS Service OperatorAWS Service Operator le permite crear recursos de AWS mediante kubectl.

• URL del proyecto: https://github.com/aws/aws-service-operator-k8s• Documentación del proyecto: https://github.com/aws/aws-service-operator-k8s/blob/master/README.md• Blog de código abierto de AWS: AWS Service Operator for Kubernetes Now Available

RedesProyectos de redes relacionados para clústeres de Kubernetes y Amazon EKS.

Complemento CNI de Amazon VPC para KubernetesAmazon EKS admite redes VPC nativas gracias al complemento CNI de Amazon VPC para Kubernetes.Con el complemento CNI, los pods de Kubernetes pueden tener dentro del pod la misma dirección IP queen la red VPC. Para obtener más información, consulte Conexión de pods en red (CNI) (p. 170) y Variablesde configuración de CNI (p. 171).

• URL del proyecto: https://github.com/aws/amazon-vpc-cni-k8s• Documentación del proyecto: https://github.com/aws/amazon-vpc-cni-k8s/blob/master/README.md

Controlador de entrada de AWS Balanceador de cargade aplicaciones (ALB) para KubernetesEl controlador de entrada de AWS ALB satisface los recursos de entrada de Kubernetes mediante elaprovisionamiento de Balanceador de carga de aplicaciones.

289

Page 297: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioExternalDNS

• URL del proyecto: https://github.com/kubernetes-sigs/aws-alb-ingress-controller• Documentación del proyecto: https://github.com/kubernetes-sigs/aws-alb-ingress-controller/tree/master/

docs• Blog de código abierto de AWS: Kubernetes Ingress with AWS ALB Ingress Controller

ExternalDNSExternalDNS sincroniza las entradas y los servicios de Kubernetes expuestos con proveedores de DNScomo Amazon Route 53 y detección de servicios de AWS.

• URL del proyecto: https://github.com/kubernetes-incubator/external-dns• Documentación del proyecto: https://github.com/kubernetes-incubator/external-dns/blob/master/docs/

tutorials/aws.md

SeguridadProyectos de seguridad relacionados para clústeres de Kubernetes y Amazon EKS.

Autenticador de AWS IAMUna herramienta para utilizar credenciales de AWS IAM para autenticar a un clúster de Kubernetes. Paraobtener más información, consulte Instalación de aws-iam-authenticator (p. 193).

• URL del proyecto: https://github.com/kubernetes-sigs/aws-iam-authenticator• Documentación del proyecto: https://github.com/kubernetes-sigs/aws-iam-authenticator/blob/master/

README.md• Blog de código abierto de AWS: Deploying the AWS IAM Authenticator to kops

Aprendizaje automático (AA)Proyectos de aprendizaje automático relacionados para clústeres de Kubernetes y Amazon EKS.

KubeflowUn conjunto de herramientas de aprendizaje automático para Kubernetes.

• URL del proyecto: https://www.kubeflow.org/• Documentación del proyecto: https://www.kubeflow.org/docs/• Blog de código abierto de AWS: Kubeflow on Amazon EKS

Auto ScalingProyectos de escalado automático relacionados para clústeres de Kubernetes y Amazon EKS.

Escalador automático del clústerEs una herramienta que ajusta automáticamente el tamaño del clúster de Kubernetes en función de lapresión de memoria y CPU.

290

Page 298: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioEscalador

• URL del proyecto: https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler• Documentación del proyecto: https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/

cloudprovider/aws/README.md• Taller de Amazon EKS: https://eksworkshop.com/scaling/deploy_ca/

EscaladorEs un escalador automático horizontal optimizado de trabajo o lote para Kubernetes.

• URL del proyecto: https://github.com/atlassian/escalator• Documentación del proyecto: https://github.com/atlassian/escalator/blob/master/docs/README.md

MonitorizaciónProyectos de monitorización relacionados para clústeres de Kubernetes y Amazon EKS.

PrometheusPrometheus es un conjunto de herramientas de alerta y monitorización de sistemas de código abierto.

• URL del proyecto: https://prometheus.io/• Documentación del proyecto: https://prometheus.io/docs/introduction/overview/• Taller de Amazon EKS: https://eksworkshop.com/intermediate/240_monitoring/

Integración continua/implementación continuaProyectos de integración continua/implementación continua relacionados para clústeres de Kubernetes yAmazon EKS.

Jenkins XSolución de integración continua/implementación continua para aplicaciones en la nube modernas enclústeres de Kubernetes y Amazon EKS.

• URL del proyecto: https://jenkins-x.io/• Documentación del proyecto: https://jenkins-x.io/documentation/• Blog de código abierto de AWS: Continuous Delivery with Amazon EKS and Jenkins X

291

Page 299: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioCapacidad insuficiente

Solución de problemas de AmazonEKS

En este capítulo se tratan algunos errores habituales que pueden aparecer al utilizar Amazon EKS y cómosolucionarlos.

Capacidad insuficienteSi aparece el error siguiente al intentar crear un clúster de Amazon EKS, significa que una de las zonas dedisponibilidad que ha especificado no tiene capacidad suficiente para admitir un clúster.

Cannot create cluster 'example-cluster' because us-east-1d, the targetedavailability zone, does not currently have sufficient capacity to supportthe cluster. Retry and choose from these availability zones: us-east-1a, us-east-1b, us-east-1c

Intente crear de nuevo el clúster con subredes de la VPC de clúster alojadas en las zonas de disponibilidadindicadas en el mensaje de error.

aws-iam-authenticator Not FoundSi aparece el error "aws-iam-authenticator": executable file not found in $PATH,significa que kubectl no está configurado para Amazon EKS. Para obtener más información, consulteInstalación de aws-iam-authenticator (p. 193).

Los nodos de trabajo no pueden unirse al clústerHay algunos motivos que suelen impedir que los nodos de trabajo se unan al clúster:

• El archivo aws-auth-cm.yaml no tiene el ARN de función de IAM correcto para los nodos de trabajo.Asegúrese de que en el archivo aws-auth-cm.yaml se especifica el ARN de la función de IAMcorrespondiente al nodo de trabajo (y no el ARN del perfil de instancia). Para obtener más información,consulte Lanzamiento de nodos de trabajo de Linux de Amazon EKS (p. 93).

• El valor de Cluster Name (Nombre de clúster) en la plantilla de AWS CloudFormation del nodo de trabajono coincide exactamente con el nombre del clúster al que desea que se unan los nodos. Si se especificaun valor incorrecto en este campo, la configuración del archivo /var/lib/kubelet/kubeconfig delnodo de trabajo no será correcta y los nodos no podrán unirse al clúster.

• El nodo de trabajo no está etiquetado como propiedad del clúster. Los nodos de trabajo deben tener lasiguiente etiqueta aplicada a ellos, donde <cluster_name> se reemplaza con el nombre del clúster.

Clave Valor

kubernetes.io/cluster/<cluster-name> owned

292

Page 300: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioAcceso denegado o no autorizado (kubectl)

Acceso denegado o no autorizado (kubectl)Si aparece uno de los errores siguientes al ejecutar comandos de kubectl, kubectl no está configuradocorrectamente para Amazon EKS o las credenciales de rol o usuario de IAM que utiliza no están asignadasa un usuario de RBAC de Kubernetes con suficientes permisos en su clúster de Amazon EKS.

• could not get token: AccessDenied: Access denied

• error: You must be logged in to the server (Unauthorized)

• error: the server doesn't have a resource type "svc"

Esto podría deberse a que el clúster se creó con un conjunto de credenciales de AWS (de un usuario o rolde IAM), mientras que kubectl utiliza un conjunto diferente de credenciales.

Cuando se crea un clúster de Amazon EKS, la entidad (el usuario o el rol) de IAM que crea el clústerse añade a la tabla de autorización de RBAC de Kubernetes como administrador (con permisos desystem:master). Inicialmente, solo ese usuario de IAM puede realizar llamadas al servidor de la API deKubernetes con kubectl. Para obtener más información, consulte Administración de usuarios o funcionesde IAM para su clúster (p. 200). Además, el autenticador de AWS IAM para Kubernetes utiliza AWSSDK for Go para autenticarse en el clúster de Amazon EKS. Si usa la consola para crear el clúster,debe asegurarse de que las mismas credenciales de usuario de IAM se encuentren en la cadena decredenciales del SDK de AWS al ejecutar comandos kubectl en el clúster.

Si instala y configura la AWS CLI, puede configurar las credenciales de IAM del usuario. Si la AWS CLIestá configurada correctamente para el usuario, el autenticador de AWS IAM para Kubernetes tambiénpodrá encontrar esas credenciales. Para obtener más información, consulte Configuración de la AWS CLIen la AWS Command Line Interface Guía del usuario.

Si asumió un rol para crear el clúster de Amazon EKS, debe asegurase de que kubectl esté configuradopara asumir el mismo rol. Utilice el comando siguiente para actualizar el archivo kubeconfig de forma queutilice un rol de IAM. Para obtener más información, consulte Crear un archivo kubeconfig para AmazonEKS (p. 196).

aws --region region eks update-kubeconfig --name cluster_name --role-arn arn:aws:iam::aws_account_id:role/role_name

Para asignar un usuario de IAM a un usuario de RBAC de Kubernetes, consulte Administración de usuarioso funciones de IAM para su clúster (p. 200).

hostname doesn't matchLa versión de Python de su sistema debe ser 2.7.9 o posterior. En caso contrario se producirán erroreshostname doesn't match en las llamadas de la AWS CLI a Amazon EKS. Para obtener másinformación, consulte What are "hostname doesn't match" errors? en las preguntas más frecuentes desolicitudes de Python.

getsockopt: no route to hostDocker se ejecuta en el intervalo de CIDR 172.17.0.0/16 en los clústeres de Amazon EKS. Lerecomendamos que la subredes de la VPC de su clúster no se superpongan. De lo contrario, recibirá elsiguiente error:

293

Page 301: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioErrores de grupo de nodos administrados

Error: : error upgrading connection: error dialing backend: dial tcp 172.17.nn.nn:10250: getsockopt: no route to host

Errores de grupo de nodos administradosSi aparece el error «Las instancias no pudieron unirse al clúster de kubernetes» en la Consola deadministración de AWS, asegúrese de que esté habilitado el acceso privado al punto de enlace del clústero de que haya configurado correctamente los bloques de CIDR para el acceso público al punto de enlace.Para obtener más información, consulte Control de acceso al punto de enlace del clúster de AmazonEKS (p. 39).

Si el grupo de nodos administrados encuentra un problema de mantenimiento, Amazon EKS devuelveun mensaje de error para ayudarle a diagnosticar el problema. A continuación se muestran los siguientesmensajes de error y sus descripciones asociadas.

• AutoScalingGroupNotFound: No se pudo encontrar el grupo de Auto Scaling asociado con el grupode nodos administrados. Es posible que pueda volver a crear un grupo de Auto Scaling con la mismaconfiguración para recuperarlo.

• EC2SecurityGroupNotFound: No se pudo encontrar el grupo de seguridad del clúster para el clúster.Debe volver a crear el clúster.

• EC2SecurityGroupDeletionFailure: No hemos podido eliminar el grupo de seguridad de acceso remotopara el grupo de nodos administrados. Elimine cualquier dependencia del grupo de seguridad.

• EC2LaunchTemplateNotFound: No hemos podido encontrar la plantilla de inicio de Amazon EC2 parael grupo de nodos gestionados. Es posible que pueda volver a crear una plantilla de inicio con la mismaconfiguración para recuperarla.

• EC2LaunchTemplateVersionMismatch: la versión de la plantilla de inicio de Amazon EC2 para el grupode nodos administrados no coincide con la versión creada por Amazon EKS. Es posible que puedavolver a la versión que creó Amazon EKS para recuperarla.

• IAMInstanceProfileNotFound: No hemos podido encontrar el perfil de la instancia IAM de su grupode nodos gestionados. Es posible que pueda volver a crear un perfil de instancia con la mismaconfiguración para recuperarlo.

• IamNodeRoleNotFound: No hemos podido encontrar el rol de IAM para su grupo de nodos gestionados.Es posible que pueda volver a crear un rol de IAM con la misma configuración para recuperarlo.

• AsgInstanceLaunchFailures: Su grupo de Auto Scaling está experimentando errores al intentar lanzarinstancias.

• NodeCreationFailure: las instancias lanzadas no pueden registrarse en el clúster de Amazon EKS. Lascausas comunes de este error son permisos del rol de IAM del nodo de trabajo (p. 254) insuficientes ofalta de acceso a Internet saliente para los nodos.

• InstanceLimitExceeded: Su cuenta de AWS no puede iniciar más instancias del tipo de instanciaespecificado. Es posible que pueda solicitar un aumento del límite de instancia Amazon EC2 pararecuperarlas.

• InsufficientFreeAddresses: Una o varias de las subredes asociadas al grupo de nodos administrados notienen suficientes direcciones IP disponibles para nuevos nodos.

• AccessDenied: Amazon EKS o uno o varios de los nodos administrados no pueden comunicarse con elservidor API del clúster.

• InternalFailure: estos errores suelen ser causados por un problema del lado del servidor Amazon EKS.

294

Page 302: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioHerramienta de recopilación de registros de CNI

Herramienta de recopilación de registros de CNIEl complemento CNI para Kubernetes de Amazon VPC tiene su propio script de solución de problemas(disponible en los nodos de trabajo en /opt/cni/bin/aws-cni-support.sh), que puede utilizar pararecopilar registros de diagnóstico de casos de soporte y solución de problemas generales.

El script recopila la siguiente información de diagnóstico:

• Datos de introspección de L-IPAMD• Métricas• Datos de introspección de Kubelet• Salida de ifconfig• Salida de ip rule show• Salida de iptables-save• Salida de iptables -nvL• Salida de iptables -nvL -t nat• Un volcado de la configuración de CNI• Registros de Kubelet• /var/log/messages almacenado• Información de la tabla de ruteo del nodo de trabajo (a través de ip route)• La salida sysctls de /proc/sys/net/ipv4/conf/{all,default,eth0}/rp_filter

Utilice el siguiente comando para ejecutar el script en su nodo de trabajo:

sudo bash /opt/cni/bin/aws-cni-support.sh

Note

Si el script no está presente en esa ubicación, el contenedor de CNI no podrá ejecutarse. Puededescargar y ejecutar manualmente el script con el siguiente comando:

curl https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/scripts/aws-cni-support.sh | sudo bash

La información de diagnóstico se recopila y se almacena en /var/log/aws-routed-eni/aws-cni-support.tar.gz.

La red de tiempo de ejecución del contenedor noestá lista

Puede recibir un error Container runtime network not ready y errores de autorización similares alos siguientes:

4191 kubelet.go:2130] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized4191 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized

295

Page 303: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioTiempo de espera de protocolo de enlace TLS

4191 kubelet_node_status.go:106] Unable to register node "ip-10-40-175-122.ec2.internal" with API server: Unauthorized4191 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized

Es probable que los errores estén relacionados con que el mapa de configuración del autenticador de IAMde AWS no se ha aplicado a los nodos de trabajo. El mapa de configuración proporciona los permisosRBAC de Kubernetes system:bootstrappers y system:nodes para que los nodos de trabajo seregistren en el clúster. Para obtener más información, consulte Para permitir a los nodos unirse al clústeren la pestaña Unmanaged nodes (Nodos sin administrar) de Lanzamiento de nodos de trabajo de Linux deAmazon EKS (p. 93). Asegúrese de especificar el Role ARN (ARN de rol) del rol de instancia en el mapade configuración, no el Instance Profile ARN (ARN del perfil de instancia).

El autenticador no reconoce un Role ARN (ARN de rol) si incluye una ruta distinta de /, como el siguienteejemplo:

arn:aws:iam::111122223333:role/development/apps/prod-iam-role-NodeInstanceRole-621LVEXAMPLE

Al especificar un Role ARN (ARN de rol) en el mapa de configuración que incluya una ruta distinta de /,debe eliminar la ruta. El ARN anterior se especificaría de la siguiente manera:

arn:aws:iam::111122223333:role/prod-iam-role-NodeInstanceRole-621LVEXAMPLE

Tiempo de espera de protocolo de enlace TLSCuando un nodo de trabajo no puede establecer una conexión con el punto de enlace del servidor de APIpúblico, podría recibir un error similar al siguiente.

server.go:233] failed to run Kubelet: could not init cloud provider "aws": error finding instance i-1111f2222f333e44c: "error listing AWS instances: \"RequestError: send request failed\\ncaused by: Post net/http: TLS handshake timeout\""

El proceso kubelet reaparecerá continuamente y probará el punto de enlace del servidor de API. El errortambién puede producirse temporalmente durante cualquier procedimiento que realice una actualizaciónsucesiva del clúster en el plano de control, como un cambio de configuración o una actualización deversión.

Para resolver el problema, compruebe la tabla de enrutamiento y los grupos de seguridad para asegurarsede que el tráfico de los nodos de trabajo puede llegar al punto de enlace público.

Solución de problemas de IAMEn este tema se tratan algunos errores habituales que pueden aparecer al utilizar Amazon EKS con IAM ycómo solucionarlos.

AccessDeniedExceptionSi recibe una AccessDeniedException al llamar a una operación de API de AWS, las credenciales derol o usuario de AWS Identity and Access Management (IAM) que utiliza no tienen los permisos necesariospara hacer esa llamada.

An error occurred (AccessDeniedException) when calling the DescribeCluster operation:

296

Page 304: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioNo tengo autorización para

realizar la operación iam:PassRole

User: arn:aws:iam::111122223333:user/user_name is not authorized to perform: eks:DescribeCluster on resource: arn:aws:eks:us-west-2:111122223333:cluster/cluster_name

En el mensaje de ejemplo anterior, el usuario no tiene permisos para llamar a la operación de APIDescribeCluster de Amazon EKS. Para proporcionar permisos de administrador de Amazon EKS a unusuario, consulte Ejemplos de políticas basadas en identidad de Amazon EKS (p. 248).

Para obtener información general acerca de IAM, consulte Control del acceso mediante políticas en la Guíadel usuario de IAM.

No tengo autorización para realizar la operacióniam:PassRoleSi recibe un error que indica que no está autorizado para llevar a cabo la acción iam:PassRole, debeponerse en contacto con su administrador para recibir ayuda. Su administrador es la persona que le facilitósu nombre de usuario y contraseña. Pida a la persona que actualice sus políticas de forma que puedatransferir un rol a Amazon EKS.

Algunos servicios de AWS le permiten transferir un rol existente a dicho servicio en lugar de crear un nuevorol de servicio o uno vinculado al servicio. Para ello, debe tener permisos para transferir el rol al servicio.

En el siguiente ejemplo, el error se produce cuando un usuario de IAM denominado marymajor intentautilizar la consola para realizar una acción en Amazon EKS. Sin embargo, la acción requiere que el serviciocuente con permisos otorgados por un rol de servicio. Mary no tiene permisos para transferir el rol alservicio.

User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole

En este caso, Mary pide a su administrador que actualice sus políticas para que pueda realizar la accióniam:PassRole.

Quiero ver mis claves de accesoDespués de crear sus claves de acceso de usuario de IAM, puede ver su ID de clave de acceso encualquier momento. Sin embargo, no puede volver a ver su clave de acceso secreta. Si pierde la clave deacceso secreta, debe crear un nuevo par de claves de acceso.

Las claves de acceso se componen de dos partes: un ID de clave de acceso (por ejemplo,AKIAIOSFODNN7EXAMPLE) y una clave de acceso secreta (por ejemplo, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY). El ID de clave de acceso y la clave de acceso secreta se utilizan juntos, como unnombre de usuario y contraseña, para autenticar sus solicitudes. Administre sus claves de acceso con elmismo nivel de seguridad que para el nombre de usuario y la contraseña.

Important

No proporcione las claves de acceso a terceras personas, ni siquiera para que le ayuden a buscarel ID de usuario canónico. Si lo hace, podría conceder a otra persona acceso permanente a sucuenta.

Cuando cree un par de claves de acceso, se le pide que guarde el ID de clave de acceso y la clave deacceso secreta en un lugar seguro. La clave de acceso secreta solo está disponible en el momento de sucreación. Si pierde la clave de acceso secreta, debe añadir nuevas claves de acceso a su usuario de IAM.Puede tener un máximo de dos claves de acceso. Si ya cuenta con dos, debe eliminar un par de clavesantes de crear uno nuevo. Para ver las instrucciones, consulte Administración de las claves de acceso enla Guía del usuario de IAM.

297

Page 305: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuarioSoy administrador y deseo permitir queotros obtengan acceso a Amazon EKS

Soy administrador y deseo permitir que otros obtenganacceso a Amazon EKSPara permitir que otros obtengan acceso a Amazon EKS, debe crear una entidad de IAM (usuario o rol)para la persona o aplicación que necesita acceso. Esta persona utilizará las credenciales de la entidadpara obtener acceso a AWS. A continuación, debe asociar una política a la entidad que le conceda lospermisos correctos en Amazon EKS.

Para comenzar de inmediato, consulte Creación del primer grupo y usuario delegado de IAM en la Guía delusuario de IAM.

Quiero permitir a personas externas a mi cuenta deAWS el acceso a mis recursos de Amazon EKSPuede crear un rol que los usuarios de otras cuentas o las personas externas a la organización puedanutilizar para acceder a sus recursos. Puede especificar una persona de confianza para que asuma el rol.En el caso de los servicios que admitan las políticas basadas en recursos o las listas de control de acceso(ACL), puede utilizar dichas políticas para conceder a las personas acceso a sus recursos.

Para obtener más información, consulte lo siguiente:

• Para obtener información acerca de si Amazon EKS admite estas características, consulteFuncionamiento de Amazon EKS con IAM (p. 245).

• Para aprender cómo proporcionar acceso a sus recursos en cuentas de AWS de su propiedad, consulteProporcionar acceso a un usuario de IAM a otra cuenta de AWS de la que es propietario en la Guía delusuario de IAM.

• Para obtener información acerca de cómo ofrecer acceso a sus recursos a cuentas de AWS de terceros,consulte Proporcionar acceso a las cuentas de AWS propiedad de terceros en la Guía del usuario deIAM.

• Para obtener información acerca de cómo ofrecer acceso a la identidad federada, consulte Proporcionaracceso a usuarios autenticados externamente (identidad federada) en la Guía del usuario de IAM.

• Para obtener información acerca de la diferencia entre utilizar los roles y las políticas basadas enrecursos para el acceso entre cuentas, consulte Cómo los roles de IAM difieren de las políticas basadasen recursos en la Guía del usuario de IAM.

298

Page 306: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Cuotas de servicio de Amazon EKSLa tabla siguiente indica las cuotas predeterminadas de Amazon EKS para una cuenta de AWS que sepueden modificar. Para obtener más información, consulte Cuotas de servicio de AWS en la Referenciageneral de Amazon Web Services.

Recurso Cuota predeterminada

Número máximo de clústeres de Amazon EKS (porregión y cuenta)

100

Número máximo de grupos de nodosadministrados por clúster

10

Número máximo de nodos por grupo de nodosadministrados

100

Número máximo de perfiles de Fargate por clúster 10

Número máximo de selectores por perfil de Fargate 5

Número máximo de pares de etiquetas por selectorde perfiles de Fargate

100

Número máximo de pods de Fargate simultáneos(por región y cuenta)

100

Número máximo de lanzamientos de pods deFargate por segundo (por región y cuenta)

1, con un aumento temporal de hasta 10

La siguiente tabla proporciona las cuotas de Amazon EKS que no pueden modificarse.

Recurso Cuota predeterminada

Número máximo de grupos de seguridad del planode control por clúster (se especifican al crear elclúster)

4

Número máximo de rangos de CIDR de accesopúblico al punto de enlace por clúster

40

299

Page 307: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Historial de revisión de Amazon EKSEn la siguiente tabla se describen las principales actualizaciones y nuevas características de la Guíadel usuario de Amazon EKS. Actualizamos la documentación con frecuencia para dar cuenta de loscomentarios que nos envía.

update-history-change update-history-description update-history-date

Controlador de CSI de AmazonFSx for Lustre

Se ha añadido el tema parainstalar el controlador CSIAmazon FSx for Lustre enclústeres Amazon EKS deKubernetes 1.14.

December 23, 2019

Restringir el acceso a la redal punto de enlace de accesopúblico de un clúster

Amazon EKS le permite ahorarestringir los rangos de CIDRque pueden comunicarse conel punto de enlace de accesopúblico del servidor de API deKubernetes.

December 20, 2019

Resolver la dirección de punto deenlace de acceso privado paraun clúster desde fuera de unaVPC

Amazon EKS le permite ahoraresolver el punto de enlace deacceso privado del servidor deAPI de Kubernetes desde fuerade una VPC.

December 13, 2019

(Beta) Nodos de trabajo deinstancias Amazon EC2 A1

Lance nodos de trabajo deinstancias Amazon EC2 A1 quese registren con su clúster deAmazon EKS.

December 4, 2019

Creación de un clúster enOutposts de AWS

Amazon EKS ahora admite lacreación de clústeres en unOutpost de AWS.

December 3, 2019

AWS Fargate en Amazon EKS Los clústeres de Kubernetes deAmazon EKS ahora admiten laejecución de pods en Fargate.

December 3, 2019

Ampliación de las regiones deAmazon EKS (p. 300)

Amazon EKS ya está disponibleen la región Canadá (Central)(ca-central-1).

November 21, 2019

Grupos de nodos administrados Los grupos de nodosadministrados de Amazon EKSautomatizan el aprovisionamientoy la administración del ciclode vida de nodos (instanciasAmazon EC2) para clústeres deKubernetes de Amazon EKS.

November 18, 2019

Actualización de la versión de laplataforma de Amazon EKS

Nuevas versiones de laplataforma para como respuestaa CVE-2019-11253.

November 6, 2019

300

Page 308: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Kubernetes 1.11 es obsoleto enAmazon EKS

La versión 1.11 de Kubernetesya no se admite en Amazon EKS.Actualice todos los clústeres 1.11a la versión 1.12 o posterior paraevitar la interrupción del servicio.

November 4, 2019

Ampliación de las regiones deAmazon EKS (p. 300)

Amazon EKS ya está disponibleen la región América del Sur (SãoPaulo) (sa-east-1).

October 16, 2019

Compatibilidad con Windows Los clústeres de Amazon EKSque ejecutan Kubernetes versión1.14 ya admiten las cargas detrabajo de Windows.

October 7, 2019

Autoescalado Se ha añadido un capítulo paracubrir algunos de los diferentestipos de escalado automático deKubernetes compatibles con losclústeres de Amazon EKS.

September 30, 2019

Actualización del panel deKubernetes

Tema actualizado para instalar elpanel de Kubernetes en clústeresAmazon EKS para utilizar laversión beta 2.0.

September 28, 2019

Controlador de CSI de AmazonEFS

Se ha añadido el tema parainstalar el controlador CSIAmazon EFS en clústeresAmazon EKS de Kubernetes1.14.

September 19, 2019

Amazon EC2 Systems ManagerParámetro para el ID de AMIoptimizada para Amazon EKS

Se ha añadido un temapara recuperar el ID de AMIoptimizada para Amazon EKSmediante un parámetro AmazonEC2 Systems Manager. Elparámetro elimina la necesidadde buscar los ID de AMI.

September 18, 2019

Etiquetado de recursos AmazonEKS

Administre el etiquetado de losclústeres de Amazon EKS.

September 16, 2019

Controlador de CSI de AmazonEBS

Se ha añadido el tema parainstalar el controlador CSIAmazon EBS en clústeresAmazon EKS de Kubernetes1.14.

September 9, 2019

Nueva AMI optimizada paraAmazon EKS con parchespara CVE-2019-9512 yCVE-2019-9514

Amazon EKS ha actualizadola AMI optimizada paraAmazon EKS paraabordar CVE-2019-9512 yCVE-2019-9514.

September 6, 2019

301

Page 309: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Anuncio de retirada deKubernetes 1.11 en Amazon EKS

Amazon EKS retirará la versión1.11 de Kubernetes el 4 deNoviembre de 2019. A partir deesa fecha, no se podrán crearclústeres nuevos de la versión1.11 y todos los clústeres deAmazon EKS que ejecutan laversión 1.11. de Kubernetesse actualizarán a la versiónmás reciente disponible de laplataforma de Kubernetes versión1.12.

September 4, 2019

Roles IAM para cuentas deservicio

Con los roles de IAM de lascuentas de servicio en clústeresde Amazon EKS, puede asociarun rol de IAM a una cuenta deservicio de Kubernetes. Conesta característica, ya no esnecesario proporcionar permisosextendidos al rol IAM del nodo detrabajo para que los pods de esenodo puedan llamar a las API deAWS.

September 3, 2019

Kubernetes versión 1.14 Se ha añadido compatibilidadcon la versión de Kubernetes1.14 para nuevas actualizacionesde versión y clústeres.

September 3, 2019

Ampliación de las regiones deAmazon EKS (p. 300)

Amazon EKS ya está disponibleen la región Medio Oriente(Baréin) (me-south-1).

August 29, 2019

Actualización de la versión de laplataforma de Amazon EKS

Nuevas versiones de laplataforma como respuestaa CVE-2019-9512 yCVE-2019-9514.

August 28, 2019

Actualización de la versión de laplataforma de Amazon EKS

Nuevas versiones de laplataforma para comorespuesta a CVE-2019-11247 yCVE-2019-11249.

August 5, 2019

Ampliación de las regiones deAmazon EKS (p. 300)

Amazon EKS ahora estádisponible en la región AsiaPacífico (Hong Kong) (ap-east-1).

July 31, 2019

Kubernetes 1.10 es obsoleto enAmazon EKS

La versión 1.10 de Kubernetesya no se admite en Amazon EKS.Actualice cualquier clúster 1.10a la versión 1.11 o superior paraevitar la interrupción del servicio.

July 30, 2019

302

Page 310: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Se ha añadido un tema en elcontrolador de entrada de ALB

El controlador de entrada deAWS ALB para Kubernetes esun desencadena que activa lacreación de un Balanceador decarga de aplicaciones cuando secrean los recursos de entrada.

July 11, 2019

Nueva AMI optimizada paraAmazon EKS

Eliminación de kubectl binariosde las AMI.

July 3, 2019

Kubernetes versión 1.13 Se ha añadido compatibilidadcon la versión de Kubernetes1.13 para nuevas actualizacionesde versión y clústeres.

June 18, 2019

Nueva AMI optimizada paraAmazon EKS con parches paraAWS-2019-005

Amazon EKS ha actualizado laAMI optimizada para AmazonEKS para resolver los problemasde vulnerabilidad descritos enAWS-2019-005.

June 17, 2019

Anuncio de retirada deKubernetes 1.10 en Amazon EKS

Amazon EKS retirará la versión1.10 de Kubernetes el 22 de juliode 2019. A partir de ese día, nopodrá crear nuevos clústeres1.10 y todos los clústeres deAmazon EKS que ejecutan laversión 1.10 de Kubernetes seactualizarán a la última versiónde la plataforma disponible deKubernetes versión 1.11.

May 21, 2019

Actualización de la versión de laplataforma de Amazon EKS

Nueva versión de la plataformapara los clústeres de Kubernetes1.11 y 1.10 para admitir nombresde DNS personalizados en elcertificado de Kubelet y mejorarel rendimiento de etcd.

May 21, 2019

Introducción a eksctl Esta guía de introducción leayuda a instalar todos losrecursos necesarios paracomenzar a utilizar Amazon EKSmediante eksctl, una utilidadde línea de comandos sencillapara crear y administrar clústeresde Kubernetes en Amazon EKS.

May 10, 2019

303

Page 311: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Comando get-token de la AWSCLI (p. 300)

Se ha añadido el comando awseks get-token a la AWS CLI, porlo que ya no necesita instalar elautenticador de AWS IAM paraKubernetes para crear tokensde seguridad del cliente parala comunicación del servidorde API del clúster. Actualicela instalación de la AWS CLIa la versión más recientepara aprovechar esta nuevafuncionalidad. Para obtener másinformación, consulte Instalaciónde la AWS Command LineInterface en la AWS CommandLine Interface Guía del usuario.

May 10, 2019

Actualización de la versión de laplataforma de Amazon EKS

Nueva versión de la plataformapara los clústeres de Kubernetes1.12 para admitir nombresde DNS personalizados en elcertificado de Kubelet y mejorarel rendimiento de etcd. Estocorrige un error que provocabaque los daemons de Kubelet denodos de trabajo solicitaran uncertificado nuevo cada pocossegundos.

May 8, 2019

Tutorial de Prometheus Se ha añadido un tema paraimplementar Prometheus en suclúster de Amazon EKS.

April 5, 2019

Registro de plano de control deAmazon EKS

El registro de plano de control deAmazon EKS facilita la tarea deproteger y ejecutar los clústerespues proporciona registrosde auditoría y diagnósticodirectamente desde el planode control de Amazon EKS aCloudWatch Logs en su cuenta.

April 4, 2019

Versión de Kubernetes1.12 (p. 300)

Se ha añadido compatibilidadcon la versión de Kubernetes1.12 para nuevas actualizacionesde versión y clústeres.

March 28, 2019

Se ha añadido la Guía deintroducción a App Mesh

Se ha añadido documentaciónde introducción a App Mesh yKubernetes.

March 27, 2019

Acceso privado al punto deenlace del servidor de la API deAmazon EKS

Se ha añadido documentaciónpara deshabilitar el accesopúblico al punto de enlace delservidor de la API de Kubernetesdel clúster de Amazon EKS.

March 19, 2019

304

Page 312: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Se ha añadido un tema parainstalar el servidor de métricas deKubernetes

El servidor de métricas deKubernetes es un agregador dedatos de uso de recursos en elclúster.

March 18, 2019

Se ha añadido la lista deproyectos de código abiertorelacionados

Estos proyectos de códigoabierto extienden la funcionalidadde los clústeres de Kubernetesque se ejecutan en AWS,incluidos los clústeresadministradas por Amazon EKS.

March 15, 2019

Se ha añadido un tema parainstalar Helm localmente

El administrador de paqueteshelm para Kubernetes le ayuda ainstalar y administrar aplicacionesen su clúster de Kubernetes.Este tema le ayuda a instalary ejecutar los binarios helm ytiller localmente de modoque puede instalar y administrargráficos mediante la CLI de helmen su sistema local.

March 11, 2019

Actualización de la versión de laplataforma de Amazon EKS

Nueva versión de la plataformaque actualiza los clústeres deKubernetes 1.11 de Amazon EKScon el nivel de parche 1.11.8para solucionar el problemaCVE-2019-1002100.

March 8, 2019

Se ha aumentado el límite delclúster

Amazon EKS ha aumentado elnúmero de clústeres que puedecrear en una región de 3 a 50.

February 13, 2019

Ampliación de las regiones deAmazon EKS (p. 300)

Amazon EKS ya está disponibleen la Europa (Londres) (eu-west-2), Europa (París)(eu-west-3) y las regionesAsia Pacífico (Mumbai) (ap-south-1).

February 13, 2019

Nueva AMI optimizada paraAmazon EKS con parches paraALAS-2019-1156

Amazon EKS ha actualizado laAMI optimizada para AmazonEKS para resolver los problemasde vulnerabilidad descritos enALAS-2019-1156.

February 11, 2019

Nueva AMI optimizada paraAmazon EKS con parches paraALAS2-2019-1141

Amazon EKS ha actualizado laAMI optimizada para AmazonEKS para abordar las CVE alas que se hace referencia enALAS2-2019-1141.

January 9, 2019

Ampliación de las regiones deAmazon EKS (p. 300)

Amazon EKS ya está disponibleen la región Asia Pacífico (Seúl)(ap-northeast-2).

January 9, 2019

305

Page 313: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Ampliación de las regiones deAmazon EKS (p. 300)

Amazon EKS ya está disponibleen las siguientes regionalesadicionales: Europa (Fráncfort)(eu-central-1), Asia Pacífico(Tokio) (ap-northeast-1),Asia Pacífico (Singapur) (ap-southeast-1) y Asia Pacífico(Sídney) (ap-southeast-2).

December 19, 2018

Actualizaciones del clúster deAmazon EKS

Se ha añadido documentaciónpara las actualizacionesde versiones del clúster deKubernetes y para la sustituciónde nodos de trabajo de AmazonEKS.

December 12, 2018

Ampliación de las regiones deAmazon EKS (p. 300)

Amazon EKS ya está disponibleen la región Europa (Estocolmo)(eu-north-1).

December 11, 2018

Actualización de la versión de laplataforma de Amazon EKS

Nueva actualización de la versiónde la plataforma de Kubernetesal nivel de parche 1.10.11para solucionar el problemaCVE-2018-1002105.

December 4, 2018

Se ha agregado compatibilidadcon la versión 1.0.0 delcontrolador de entrada deBalanceador de carga deaplicaciones.

El controlador de entradade Balanceador de carga deaplicaciones publica la versión1.0.0 con compatibilidad formalde AWS.

November 20, 2018

Se ha agregado compatibilidadcon la configuración de red deCNI

La versión 1.2.1 del complementoCNI de Amazon VPC paraKubernetes es compatible ahoracon la configuración de redpersonalizada para las interfacesde red de pod secundarias.

October 16, 2018

Se ha añadido compatibilidadcon MutatingAdmissionWebhooky ValidatingAdmissionWebhook.

Versión de la plataformade Amazon EKS 1.10-eks.2 ahora admite loscontroladores de admisiónMutatingAdmissionWebhookyValidatingAdmissionWebhook.

October 10, 2018

Se ha añadido información de lasAMI de socios

Canonical se ha asociado conAmazon EKS para crear AMIde nodo de trabajo que puedeutilizar en sus clústeres.

October 3, 2018

Se han añadido instruccionespara el comando update-kubeconfig de la CLI de AWS

Amazon EKS ha añadidoupdate-kubeconfig a la AWSCLI para simplificar el procesode creación de un archivokubeconfig para obteneracceso al clúster.

September 21, 2018

306

Page 314: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

Nuevas AMI optimizadas paraAmazon EKS

Amazon EKS ha actualizado lasAMI optimizadas para AmazonEKS (con y sin compatibilidadcon GPU) para proporcionarvarias correcciones de seguridady optimizaciones de las AMI.

September 13, 2018

Ampliación de las regiones deAmazon EKS (p. 300)

Amazon EKS ahora estádisponible en la región UE(Irlanda) (eu-west-1).

September 5, 2018

Actualización de la versión de laplataforma de Amazon EKS

Nueva versión de la plataformacompatible con la capa deagregación y Horizontal PodAutoscaler (HPA) de Kubernetes.

August 31, 2018

Nuevas AMI optimizadas paraAmazon EKS y compatibilidadcon GPU

Amazon EKS ha actualizado laAMI optimizada para AmazonEKS para utilizar una nuevaplantilla de nodo de trabajo yel script de arranque de AWSCloudFormation. Además,hay disponible una nueva AMIoptimizada para Amazon EKScompatible con GPU.

August 22, 2018

Nueva AMI optimizada paraAmazon EKS con parches paraALAS2-2018-1058

Amazon EKS ha actualizado laAMI optimizada para AmazonEKS para abordar las CVE alas que se hace referencia enALAS2-2018-1058.

August 14, 2018

Scripts de compilación de la AMIoptimizada para Amazon EKS

Amazon EKS ha establecidoen código abierto los scriptsde compilación que se utilizanpara crear la AMI optimizadapara Amazon EKS. Estos scriptsde compilación están ahoradisponibles en GitHub.

July 10, 2018

Versión inicial de AmazonEKS (p. 300)

Documentación inicial para ellanzamiento del servicio

June 5, 2018

307

Page 315: Amazon EKS - Guía del usuario · Amazon EKS Guía del usuario Arquitectura de plano de control de Amazon EKS ¿Qué es Amazon EKS? Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guía del usuario

AWS GlossaryFor the latest AWS terminology, see the AWS Glossary in the AWS General Reference.

308