Crear un grupo de nodos

Para crear un grupo de nodos en GKE en AWS, debes proporcionar los siguientes recursos:

  • El nombre de un clúster de AWS existente para crear el grupo de nodos en él
  • Un perfil de instancia de IAM para las VM del grupo de nodos
  • Una subred en la que se ejecutarán las VM del grupo de nodos

Si deseas tener acceso SSH a tus nodos, puedes crear un par de claves de EC2.

Crea un grupo de nodos estándar

Una vez que estos recursos estén disponibles, puedes crear un grupo de nodos con este comando:

gcloud container aws node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --instance-type INSTANCE_TYPE \
    --root-volume-size ROOT_VOLUME_SIZE \
    --iam-instance-profile NODEPOOL_PROFILE \
    --node-version NODE_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --max-pods-per-node MAX_PODS_PER_NODE \
    --location GOOGLE_CLOUD_LOCATION \
    --subnet-id NODEPOOL_SUBNET \
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
    --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"

Reemplaza lo siguiente:

  • NODE_POOL_NAME: un nombre que eliges para el grupo de nodos.
  • CLUSTER_NAME: el nombre del clúster al que se conectará el grupo de nodos
  • INSTANCE_TYPE: el tipo de instancia de máquina de AWS deseado para este grupo de nodos, por ejemplo, m5.large
  • ROOT_VOLUME_SIZE: el tamaño deseado para el volumen raíz de cada nodo, en Gb.
  • NODEPOOL_PROFILE: el perfil de la instancia de IAM para las VM del grupo de nodos. Para obtener detalles sobre cómo actualizar un perfil de instancia de IAM, consulta Actualiza el perfil de instancia de IAM de AWS.
  • NODE_VERSION: la versión de Kubernetes que se instalará en cada nodo en el grupo de nodos (p. ej., "1.29.3-gke.600")
  • MIN_NODES: la cantidad mínima de nodos que puede contener el grupo de nodos
  • MAX_NODES: la cantidad máxima de nodos que puede contener el grupo de nodos
  • MAX_PODS_PER_NODE: la cantidad máxima de Pods que se pueden crear en cualquier nodo único del grupo.
  • GOOGLE_CLOUD_LOCATION: el nombre de la ubicación de Google Cloud desde la que se administrará este grupo de nodos
  • NODEPOOL_SUBNET: el ID de la subred en la que se ejecutará el grupo de nodos.
    • No debe haber superposición entre los rangos de IP del Pod/Service del clúster y la red de la subred del grupo de nodos. Si deseas obtener más información sobre cómo seleccionar los rangos de IP de Pods y Services para tu clúster, consulta Selecciona rangos CIDR para tu clúster
    • Si esta subred está fuera del bloque CIDR principal de VPC, se necesitan algunos pasos adicionales. Para obtener más información, consulta los grupos de seguridad.
  • SSH_KEY_PAIR_NAME: el nombre del par de claves SSH de AWS creado para el acceso SSH (opcional)
  • CONFIG_KMS_KEY_ARN: el nombre del recurso de Amazon (ARN) de la clave de KMS de AWS que encripta los datos del usuario

Si está presente, el parámetro --tags aplica la etiqueta determinada a todos los nodos de tu grupo de nodos. En este ejemplo, se etiquetan todos los nodos del grupo con los nombres del clúster y el grupo de nodos al que pertenece el nodo.

Grupos de nodos de instancias Spot

GKE en AWS admite grupos de nodos de instancias Spot de AWS como una función de versión preliminar. Los grupos de nodos de instancias Spot son grupos de instancias Spot de Amazon EC2 que están disponibles en AWS a un costo más bajo.

Las instancias Spot pueden proporcionar ahorros de costos para aplicaciones sin estado, tolerantes a errores y flexibles. Sin embargo, no son adecuadas para cargas de trabajo que son inflexibles, con estado, tolerantes a errores o estrechamente vinculadas entre nodos de instancias. Amazon EC2 puede interrumpir las instancias Spot cuando EC2 necesita la capacidad otra vez, por lo que están sujetas a las fluctuaciones del mercado de Spot. Si tus cargas de trabajo requieren una capacidad garantizada y no pueden tolerar períodos ocasionales de falta de disponibilidad, elige un grupo de nodos estándar en lugar de un grupo de nodos de instancia Spot.

La estrategia de asignación empleada en GKE en AWS se enfoca en seleccionar grupos de instancias Spot con la mayor disponibilidad de capacidad, lo que minimiza el riesgo de interrupciones. Este enfoque es particularmente beneficioso para las cargas de trabajo con un mayor costo de interrupción, como la renderización de imágenes y contenido multimedia o el aprendizaje profundo. En particular, se implementó la estrategia de asignación capacityOptimized, como se describe en Estrategias de asignación para instancias Spot.

Crear un grupo de nodos Spot

Para crear un grupo de nodos de instancia Spot, ejecuta el siguiente comando:

gcloud container aws node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --spot-instance-types INSTANCE_TYPE_LIST \
    --root-volume-size ROOT_VOLUME_SIZE \
    --iam-instance-profile NODEPOOL_PROFILE \
    --node-version NODE_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --max-pods-per-node MAX_PODS_PER_NODE \
    --location GOOGLE_CLOUD_LOCATION \
    --subnet-id NODEPOOL_SUBNET \
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
    --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"

Reemplaza lo siguiente:

  • NODE_POOL_NAME: el nombre que deseas asignar a este grupo de nodos.
  • CLUSTER_NAME: el nombre del clúster al que deseas conectar este grupo de nodos.
  • INSTANCE_TYPE_LIST: una lista separada por comas de tipos de instancias de AWS EC2. El grupo de nodos aprovisiona instancias Spot con estos tipos de instancias. Los tipos de instancias deben tener la misma arquitectura de la CPU, la misma cantidad de CPU y la misma cantidad de memoria. Por ejemplo: "c6g.large,c6gd.large,c6gn.large,c7g.large,t4g.medium". Puedes usar la herramienta Selector de instancias de Amazon EC2 para encontrar los tipos de instancias con configuraciones de CPU y memoria idénticas.
  • ROOT_VOLUME_SIZE: el tamaño deseado para el volumen raíz de cada nodo, en Gb.
  • NODEPOOL_PROFILE: es el perfil de la instancia de IAM para las VM del grupo de nodos
  • NODE_VERSION: la versión de Kubernetes que se instalará en cada nodo en el grupo de nodos (p. ej., "1.29.3-gke.600")
  • MIN_NODES: la cantidad mínima de nodos que puede contener el grupo de nodos
  • MAX_NODES: la cantidad máxima de nodos que puede contener el grupo de nodos
  • MAX_PODS_PER_NODE: la cantidad máxima de Pods que se pueden crear en cualquier nodo único del grupo.
  • GOOGLE_CLOUD_LOCATION: el nombre de la ubicación de Google Cloud desde la que se administrará este grupo de nodos
  • NODEPOOL_SUBNET: el ID de la subred en la que se ejecutará el grupo de nodos.
    • No debe haber superposición entre los rangos de IP del Pod/Service del clúster y la red de la subred del grupo de nodos. Si deseas obtener más información sobre cómo seleccionar los rangos de IP de Pods y Services para tu clúster, consulta Selecciona rangos CIDR para tu clúster
    • Si esta subred está fuera del bloque CIDR principal de VPC, se necesitan algunos pasos adicionales. Para obtener más información, consulta los grupos de seguridad.
  • SSH_KEY_PAIR_NAME: el nombre del par de claves SSH de AWS creado para el acceso SSH (opcional)
  • CONFIG_KMS_KEY_ARN: el nombre del recurso de Amazon (ARN) de la clave de KMS de AWS que encripta los datos del usuario

La práctica recomendada es enumerar varios tipos de instancias en el campo INSTANCE_TYPE_LIST. Esta práctica recomendada es importante, ya que si un grupo de nodos se configura con solo un tipo de instancia y ese tipo de instancia no está disponible en ninguna de las Zonas de disponibilidad, el grupo de nodos no puede aprovisionar nodos nuevos. Esto puede afectar la disponibilidad de tus aplicaciones y causar interrupciones del servicio.

Ten en cuenta que el campo spot-instance-types es exclusivo de forma mutua con el campo instance-type. Esto significa que puedes proporcionar solo uno de estos campos y no ambos.