View a markdown version of this page

Configuración de parámetros avanzados del plano de control de Kubernetes - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Configuración de parámetros avanzados del plano de control de Kubernetes

En esta guía, se explica cómo configurar y ver los parámetros avanzados del plano de control de Kubernetes mediante la AWS CLI y la Consola de administración de AWS. Para obtener una explicación de cada parámetro y su efecto en el clúster, consulte Configuración avanzada del plano de control de Kubernetes.

Requisitos previos

Antes de empezar, asegúrese de que:

  • Un clúster de Amazon EKS que ejecute la versión 1.31 o posterior de Kubernetes: la configuración avanzada del plano de control de Kubernetes se admite en los clústeres nuevos y existentes que ejecutan la versión 1.31 o posterior de Kubernetes. Todos los parámetros de este tema comparten esta versión mínima.

  • AWS CLI: una herramienta de línea de comandos para trabajar con servicios de AWS, incluido Amazon EKS. Para obtener más información, consulte Instalación en la Guía del usuario de la Interfaz de la línea de comandos de AWS. Después de instalar la AWS CLI, recomendamos que también la configure. Para obtener más información, consulte Configuración rápida con aws configure en la Guía del usuario de la Interfaz de la línea de comandos de AWS.

  • Permisos de IAM obligatorios: la entidad principal de IAM que utiliza debe contar con permisos para describir y actualizar los clústeres de Amazon EKS. Ejecute el siguiente comando para comprobar la entidad principal actual:

    aws sts get-caller-identity
nota

Le recomendamos que siga los pasos de este tema en un intérprete de comandos Bash. Si no está utilizando un intérprete de comandos Bash, algunos comandos de script, como los caracteres de continuación de línea y la forma en que se establecen y utilizan las variables, requieren ajustes para su intérprete de comandos. Además, las reglas de entrecomillado y escape de su intérprete de comandos pueden ser diferentes. Para obtener más información, consulte Uso de entrecomillado de cadenas en la AWS CLI en la Guía del usuario de la Interfaz de la línea de comandos de AWS.

Establezca el nombre y la región preferidos del clúster antes de ejecutar los comandos de este tema:

export CLUSTER=my-eks-cluster export AWS_REGION=us-west-2

Valores admitidos

Amazon EKS valida cada parámetro con respecto a los siguientes intervalos y rechaza una solicitud fuera de ellos.

Parámetro del componente Valores admitidos Predeterminado

kubeSchedulerConfig.nodeResourcesFit.scoringStrategy.type

LeastAllocated, MostAllocated

LeastAllocated

kubeSchedulerConfig.nodeResourcesFit.scoringStrategy.resources[].weight

1 De a 100

cpu: 1, memory: 1

kubeControllerManagerConfig.horizontalPodAutoscalerControllerConfig.horizontalPodAutoscalerSyncPeriod

10s De a 15s

15s

kubeControllerManagerConfig.podGcControllerConfig.terminatedPodGcThreshold

10000 De a 12500

12500

kubeApiServerConfig.eventTtl

10m De a 60m

60m

kubeApiServerConfig.serviceNodePortRange.minPort

10260 De a 32767

30000

kubeApiServerConfig.serviceNodePortRange.maxPort

10260 De a 32767

32767

Estos valores se aplican a las versiones de Kubernetes disponibles en el momento de la publicación y pueden cambiar en versiones posteriores. Para recuperar los valores actuales de una versión específica, consulte la siguiente sección.

Cómo encontrar los valores predeterminados y admitidos para una versión de Kubernetes

La operación DescribeClusterVersions informa del valor predeterminado y los valores admitidos para cada parámetro del plano de control, para cada versión de Kubernetes. Lea los valores de esta operación en lugar de codificarlos de forma rígida, especialmente si automatiza la configuración de clústeres o administra clústeres en varias versiones de Kubernetes.

aws eks describe-cluster-versions --cluster-versions 1.35

La respuesta incluye un objeto controlPlaneComponentConfig, organizado por componente del plano de control. Cada parámetro informa sobre un objeto defaultValue y constraints:

{ "clusterVersions": [ { "clusterVersion": "1.35", "clusterType": "eks", "defaultVersion": false, "releaseDate": "2026-01-23T00:00:00+00:00", "endOfStandardSupportDate": "2027-03-23T00:00:00+00:00", "endOfExtendedSupportDate": "2028-03-23T00:00:00+00:00", "status": "STANDARD_SUPPORT", "controlPlaneScalingTiers": [ { "tierName": "tier-xl", "apiRequestConcurrency": 2000, "podSchedulingRatePerSecond": 167, "clusterDatabaseSizeGb": 16 }, { "tierName": "tier-2xl", "apiRequestConcurrency": 4000, "podSchedulingRatePerSecond": 283, "clusterDatabaseSizeGb": 16 }, { "tierName": "tier-4xl", "apiRequestConcurrency": 8000, "podSchedulingRatePerSecond": 400, "clusterDatabaseSizeGb": 16 }, { "tierName": "tier-8xl", "apiRequestConcurrency": 16000, "podSchedulingRatePerSecond": 400, "clusterDatabaseSizeGb": 16 } ], "controlPlaneComponentConfig": { "kubeApiServerConfig": { "eventTtl": { "defaultValue": "60m", "constraints": { "min": "10m", "max": "60m" } }, "serviceNodePortRange": { "defaultValue": { "minPort": 30000, "maxPort": 32767 }, "constraints": { "minPort": {"min": 10260, "max": 32767}, "maxPort": {"min": 10260, "max": 32767} } } }, "kubeSchedulerConfig": { "nodeResourcesFit": { "scoringStrategy": { "defaultValue": { "type": "LeastAllocated", "resources": [ {"name": "cpu", "weight": 1}, {"name": "memory", "weight": 1} ] }, "constraints": { "scoringStrategy": { "allowedValues": ["LeastAllocated", "MostAllocated"] }, "resources": { "name": { "allowedValues": [ "cpu", "memory", "nvidia.com/gpu", "aws.amazon.com/neuron", "aws.amazon.com/neuroncore" ] }, "weight": {"min": 1, "max": 100} } } } } }, "kubeControllerManagerConfig": { "horizontalPodAutoscalerControllerConfig": { "horizontalPodAutoscalerSyncPeriod": { "defaultValue": "15s", "constraints": { "min": "10s", "max": "15s" } } }, "podGcControllerConfig": { "terminatedPodGcThreshold": { "defaultValue": 12500, "constraints": { "min": 10000, "max": 12500 } } } } } } ] }

La respuesta anterior muestra las fechas de soporte de las versiones, los niveles de escalado del plano de control aprovisionado y los campos de configuración del plano de control. Para obtener más información, consulte DescribeClusterVersions en la Referencia de la API de Amazon EKS

Para devolver solo los campos de configuración, use la opción --query:

aws eks describe-cluster-versions --cluster-versions 1.35 \ --query 'clusterVersions[0].controlPlaneComponentConfig'

Configuración del plano de control: AWS CLI

Cada componente del plano de control tiene su propio parámetro: --kube-scheduler-config, --kube-controller-manager-config y --kube-api-server-config. Solo debe especificar los componentes que quiera personalizar. Cada parámetro acepta JSON en línea.

Creación de un clúster con parámetros del plano de control

El siguiente comando crea un clúster que retiene los nuevos eventos de Kubernetes durante 10 minutos en lugar de los 60 minutos predeterminados. Los parámetros que no especifique utilizan sus valores predeterminados.

aws eks create-cluster \ --name "$CLUSTER" \ --kubernetes-version 1.35 \ --role-arn arn:aws:iam::111122223333:role/eks-service-role \ --resources-vpc-config subnetIds=subnet-abc123,subnet-def456,securityGroupIds=sg-xyz789 \ --kube-api-server-config '{ "eventTtl": "10m" }'

Respuesta:

{ "cluster": { "name": "my-eks-cluster", "arn": "arn:aws:eks:us-west-2:111122223333:cluster/my-eks-cluster", "createdAt": 1709640000.0, "version": "1.35", "roleArn": "arn:aws:iam::111122223333:role/eks-service-role", "status": "CREATING", "kubeSchedulerConfig": { "nodeResourcesFit": { "scoringStrategy": { "type": "LeastAllocated" } } }, "kubeControllerManagerConfig": { "horizontalPodAutoscalerControllerConfig": { "horizontalPodAutoscalerSyncPeriod": "15s" } }, "kubeApiServerConfig": { "eventTtl": "10m", "serviceNodePortRange": { "minPort": 30000, "maxPort": 32767 } } } }

Visualización de la configuración del plano de control de un clúster

aws eks describe-cluster --name "$CLUSTER"

La respuesta incluye kubeSchedulerConfig, kubeControllerManagerConfig y kubeApiServerConfig como campos superiores. Estos campos están siempre presentes y muestran la configuración completa que se ejecuta en el plano de control, incluidos los parámetros que no ha personalizado y sus valores predeterminados.

Para devolver la configuración de un solo componente, use la opción --query:

aws eks describe-cluster --name "$CLUSTER" \ --query 'cluster.kubeSchedulerConfig'

Respuesta:

{ "nodeResourcesFit": { "scoringStrategy": { "type": "LeastAllocated" } } }

Configuración de la estrategia de puntuación del planificador

De forma predeterminada, el planificador usa la estrategia LeastAllocated, que distribuye los pods entre los nodos. El siguiente comando lo cambia a MostAllocated, que prefiere los nodos que ya tienen una mayor asignación de recursos y agrupa los pods en menos nodos.

aws eks update-cluster-config \ --name "$CLUSTER" \ --kube-scheduler-config '{ "nodeResourcesFit": { "scoringStrategy": { "type": "MostAllocated" } } }'

Respuesta:

{ "update": { "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "status": "InProgress", "type": "ControlPlaneComponentConfigUpdate", "params": [ { "type": "kubeSchedulerConfig", "value": "{\"nodeResourcesFit\":{\"scoringStrategy\":{\"type\":\"MostAllocated\"}}}" } ], "createdAt": 1709643600.0, "errors": [] } }

También puede especificar una matriz resources para ponderar los recursos individuales en el cálculo de la puntuación, lo que resulta útil cuando un recurso específico es la restricción del clúster. Para obtener más información, consulte Configuración avanzada del plano de control de Kubernetes.

Los demás parámetros del plano de control siguen el mismo patrón, cada uno con su propio indicador de componentes: --kube-api-server-config para eventTtl y serviceNodePortRange, y --kube-controller-manager-config para el periodo de sincronización del Escalador automático de pods horizontales. Para saber qué hace cada parámetro y qué hay que tener en cuenta antes de cambiarlo, consulte Configuración avanzada del plano de control de Kubernetes.

Actualización de más de un componente a la vez

Puede especificar varios parámetros de componentes en una sola llamada:

aws eks update-cluster-config \ --name "$CLUSTER" \ --kube-scheduler-config '{"nodeResourcesFit":{"scoringStrategy":{"type":"MostAllocated"}}}' \ --kube-api-server-config '{"eventTtl":"30m"}'

Las actualizaciones se combinan con la configuración existente. Solo cambiarán los campos que especifique, mientras que los campos que omita conservarán sus valores actuales. El comando anterior no modifica la configuración del administrador de controladores.

Supervisión de una actualización de la configuración del plano de control

Un cambio de configuración no se aplica cuando vuelve update-cluster-config. Amazon EKS aplica la nueva configuración mediante una actualización progresiva del plano de control, que tarda varios minutos. Para bloquear hasta que se complete el cambio:

aws eks wait cluster-active --name "$CLUSTER"

Este comando vuelve cuando el clúster alcanza el estado ACTIVE, normalmente en cuestión de minutos.

Para enumerar las actualizaciones del clúster:

aws eks list-updates --name "$CLUSTER"

Respuesta:

{ "updateIds": [ "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" ] }

Para ver el estado de una actualización específica:

aws eks describe-update --name "$CLUSTER" \ --update-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

El estado cambia de InProgress a Successful al finalizar la actualización o a Failed si se produce un error. El campo errors indica el motivo del error.

Configuración del plano de control: Consola de administración de AWS

Para configurar los parámetros avanzados del plano de control de Kubernetes al crear un clúster:

  1. Abra la consola de Amazon EKS.

  2. Elija Create cluster.

  3. En Opciones de configuración, seleccione Configuración personalizada.

  4. Desplácese hacia abajo hasta Configuración del plano de control.

  5. Seleccione Habilitar la configuración del plano de control.

  6. Establezca los parámetros que quiera configurar. Los parámetros que deje sin cambios utilizan los valores predeterminados.

  7. Seleccione otras opciones de configuración del clúster según sea necesario. En el último paso, elija Crear clúster. La creación del clúster puede tardar varios minutos en completarse.

Para configurar los parámetros avanzados del plano de control de Kubernetes en un clúster existente:

  1. Abra la consola de Amazon EKS.

  2. Elija el clúster que quiera actualizar.

  3. Elija la pestaña Información general y, a continuación, desplácese hacia abajo hasta Configuración del plano de control.

  4. Elija Administrar y, a continuación, seleccione Habilitar la configuración del plano de control para establecer los parámetros que quiera cambiar. A continuación, elija Guardar cambios.