Saltar al contenido

¿Cómo utilizo los datos de usuario personalizados con los nodos de Amazon EKS de AL2023?

3 minutos de lectura
0

Utilizo scripts personalizados, nodos autoadministrados o plantillas de inicio personalizadas en las imágenes de máquina de Amazon (AMI) de Amazon Linux 2023 (AL2023) en Amazon Elastic Kubernetes Service (Amazon EKS). Quiero proporcionar datos de usuario personalizados.

Descripción corta

AL2023 usa el proceso de inicialización del nodo nodeadm que utiliza un esquema de configuración YAML. Para los grupos de nodos autoadministrados o los grupos de nodos administrados con una plantilla de inicio personalizada, debes proporcionar metadatos de clúster adicionales al crear un nuevo grupo de nodos. Los requisitos mínimos de metadatos que debes incluir en el esquema de configuración de YAML son el nombre del clúster, el punto de enlace del servidor de API, la autoridad de certificación y el CIDR del servicio.

Ejemplo de configuración con los parámetros mínimos requeridos:

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    name: EKS-CLUSTER-NAME
    apiServerEndpoint: API-SERVER-ENDPOINT
    certificateAuthority: CERTIFICATE-AUTHORITY
    cidr: SERVICE-IPv4-RANGE

Para obtener más información, consulta la sección Antes de actualizar a AL2023 de las AMI de Amazon Linux 2023 optimizadas para Amazon EKS que ya están disponibles

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Debes usar una AMI de Amazon EKS que se ejecute en AL2023. Para ver el ID de la AMI, ejecuta el siguiente comando get-parameter de la AWS CLI:

aws ssm get-parameter --name /aws/service/eks/optimized-ami/kubernetes-version/ami-type/recommended/image_id \
    --region region-code --query "Parameter.Value" --output text

Nota: Sustituye kubernetes-version por una versión de Amazon EKS compatible y region-code por tu región de AWS. Además, sustituye ami-type por amazon-linux-2023/x86_64/standard para las instancias basadas en x86 o amazon-linux-2023/arm64/standard para las instancias de ARM.

Agrega los parámetros mínimos requeridos a los datos del usuario en el siguiente formato:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: application/node.eks.aws

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec: ...

--BOUNDARY--

Nota: También puedes insertar los parámetros en un documento MIME de varias partes. Para obtener más información, consulta Archivo MIME de varias partes en el sitio web de cloud-init.

Usa la API DescribeCluster para buscar los ClusterDetails y ver los parámetros mínimos requeridos. Por ejemplo, cuando usas NodeConfigSpec, puedes pasar las opciones de configuración e indicador de kubelet a kubelet. Para obtener más información, consulta CredentialProviderConfig y kubelet en el sitio web de Kubernetes.

Ejemplo de configuración de datos de usuario:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="BOUNDARY"

--BOUNDARY
Content-Type: application/node.eks.aws

---
apiVersion: node.eks.aws/v1alpha1
kind: NodeConfig
spec:
  cluster:
    apiServerEndpoint: API_SERVER_ENDPOINT
    certificateAuthority: CERTIFICATE
    cidr: SERVICE_IPv4_RANGE
    name: CLUSTER_NAME
  kubelet:
    config:
      maxPods: 17
    flags:
    - "--node-labels=key=value"

--BOUNDARY
Content-Type: text/x-shellscript;

#!/bin/bash
  set -o xtrace
  yum install htop -y

--BOUNDARY--

Nota: Al introducir datos de usuario en la plantilla de inicio, asegúrate de no incluir espacios ni indentaciones adicionales en el código. Los nodos no pueden unirse al clúster cuando hay un problema de espaciado porque nodeadm no se inicia.