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.
Las clases de nodos de Amazon EKS ofrecen un control detallado de la configuración de los nodos administrados del modo automático de EKS. Una clase de nodos define los ajustes a nivel de infraestructura que se aplican a los grupos de nodos del clúster de EKS, incluida la configuración de la red, los ajustes de almacenamiento y el etiquetado de los recursos. En este tema se explica cómo crear y configurar una clase de nodos para cumplir con requisitos operativos específicos.
Si necesita personalizar la forma en que el modo automático de EKS aprovisiona y configura las instancias de EC2 más allá de los ajustes predeterminados, la creación de una clase de nodos permite controlar con precisión los parámetros críticos de la infraestructura. Por ejemplo, puede especificar la ubicación de la subred privada para mejorar la seguridad, configurar el almacenamiento efímero de las instancias para cargas de trabajo sensibles al rendimiento o aplicar un etiquetado personalizado para asignar los costos.
Cómo crear una clase de nodos
Para crear una clase de nodos, siga estos pasos:
-
Cree un archivo YAML (por ejemplo,
nodeclass.yaml
) con la configuración de la clase de nodo -
Aplique la configuración al clúster mediante
kubectl
-
Haga referencia a la clase de nodos en la configuración del grupo de nodos. Para obtener más información, consulte Creación de un grupo de nodos para el modo automático de EKS.
Debe tener kubectl
instalado y configurado. Para obtener más información, consulte Configuración para usar Amazon EKS.
Ejemplo de clase de nodos básica
A continuación, se muestra un ejemplo de clase de nodos:
apiVersion: eks.amazonaws.com/v1
kind: NodeClass
metadata:
name: private-compute
spec:
ephemeralStorage:
size: "160Gi"
Esta NodeClass aumenta la cantidad de almacenamiento efímero en el nodo.
Aplique esta configuración mediante:
kubectl apply -f nodeclass.yaml
A continuación, haga referencia a la clase de nodos en la configuración del grupo de nodos. Para obtener más información, consulte Creación de un grupo de nodos para el modo automático de EKS.
Creación de una entrada de acceso a una clase de nodos
Si crea una clase de nodos personalizada, debe crear una entrada de acceso de EKS para permitir que los nodos se unan al clúster. EKS crea entradas de acceso automáticamente cuando se utilizan la clase de nodos y los grupos de nodos integrados.
Para obtener información sobre cómo funcionan las entradas de acceso, consulte Concesión de acceso para los usuarios de IAM a las entradas de acceso de Kubernetes con EKS.
Al crear entradas de acceso para las clases de nodos del modo automático de EKS, debe utilizar el tipo de entrada de acceso EC2
.
Creación de una entrada de acceso con la CLI
Para crear una entrada de acceso para los nodos de EC2 y asociar la política de nodos automáticos de EKS:
Actualice los siguientes comandos de la CLI con el nombre del clúster y el ARN del rol del nodo. El ARN del rol del nodo se especifica en la clase de nodo YAML.
# Create the access entry for EC2 nodes
aws eks create-access-entry \
--cluster-name <cluster-name> \
--principal-arn <node-role-arn> \
--type EC2
# Associate the auto node policy
aws eks associate-access-policy \
--cluster-name <cluster-name> \
--principal-arn <node-role-arn> \
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAutoNodePolicy \
--access-scope type=cluster
Creación de una entrada de acceso con CloudFormation
Para crear una entrada de acceso para los nodos de EC2 y asociar la política de nodos automáticos de EKS:
Actualice el siguiente ejemplo de CloudFormation con el nombre de su clúster y el ARN del rol del nodo. El ARN del rol del nodo se especifica en la clase de nodo YAML.
EKSAutoNodeRoleAccessEntry:
Type: AWS::EKS::AccessEntry
Properties:
ClusterName: <cluster-name>
PrincipalArn: <node-role-arn>
Type: "EC2"
AccessPolicies:
- AccessScope:
Type: cluster
PolicyArn: arn:aws:eks::aws:cluster-access-policy/AmazonEKSAutoNodePolicy
DependsOn: [ <cluster-name> ] # previously defined in CloudFormation
Para obtener información sobre la implementación de pilas de CloudFormation, consulte Introducción a CloudFormation.
Especificación de clase de nodos
apiVersion: eks.amazonaws.com/v1
kind: NodeClass
metadata:
name: default
spec:
# Required: Name of IAM Role for Nodes
role: "MyNodeRole"
# Required: Subnet selection for node placement
subnetSelectorTerms:
- tags:
Name: "<tag-name>"
kubernetes.io/role/internal-elb: "1"
# Alternative using direct subnet ID
# - id: "subnet-0123456789abcdef0"
# Required: Security group selection for nodes
securityGroupSelectorTerms:
- tags:
Name: "eks-cluster-node-sg"
# Alternative approaches:
# - id: "sg-0123456789abcdef0"
# - name: "eks-cluster-node-security-group"
# Optional: Configure SNAT policy (defaults to Random)
snatPolicy: Random # or Disabled
# Optional: Network policy configuration (defaults to DefaultAllow)
networkPolicy: DefaultAllow # or DefaultDeny
# Optional: Network policy event logging (defaults to Disabled)
networkPolicyEventLogs: Disabled # or Enabled
# Optional: Configure ephemeral storage (shown with default values)
ephemeralStorage:
size: "80Gi" # Range: 1-59000Gi or 1-64000G or 1-58Ti or 1-64T
iops: 3000 # Range: 3000-16000
throughput: 125 # Range: 125-1000
# IAM role to use for EC2 instance role
# If unspecified, EKS will create a role
# If specified, role requires access entry described above
role: arn:aws:iam::123456789012:role/MyNodeRole
# Optional: Additional EC2 tags
tags:
Environment: "production"
Team: "platform"
Consideraciones:
-
Si cambia el rol de IAM del nodo asociado a una NodeClass, tendrá que crear una nueva entrada de acceso. EKS crea automáticamente una entrada de acceso para el rol de IAM del nodo durante la creación del clúster. El rol de IAM del nodo requiere la política de acceso de EKS
AmazonEKSAutoNodePolicy
. Para obtener más información, consulte Concesión de acceso para los usuarios de IAM a las entradas de acceso de Kubernetes con EKS. -
EKS limita la cantidad máxima de pods en un nodo a 110. Este límite se aplica después del cálculo de la cantidad máxima de pods existente. Para obtener más información, consulte Elección de un tipo de instancia de nodo de Amazon EC2 óptimo.
-
Si desea propagar etiquetas de Kubernetes a EC2, debe configurar permisos de IAM adicionales. Para obtener más información, consulte Más información sobre las identidades y el acceso en el modo automático de EKS.