Quiero usar la AMI de Bottlerocket para crear un grupo de nodos administrado en Amazon Elastic Kubernetes Service (Amazon EKS).
Resolución
Puedes usar eksctl con un archivo de configuración para crear un grupo de nodos administrado por Bottlerocket.
Requisitos previos
- Versión 0.124.0 o posterior de eksctl
- Un clúster de Amazon EKS existente
- Si deseas acceder mediante SSH a los nodos, necesitarás un par de claves SSH de Amazon Elastic Compute Cloud (Amazon EC2)
Para usar la AMI de Bottlerocket para crear un grupo de nodos administrado, sigue estos pasos:
Verificación de la versión de eksctl
Para verificar la versión de eksctl, ejecuta el siguiente comando:
eksctl version
Si necesitas instalar o actualizar eksctl, consulta Opciones de instalación para Eksctl.
Creación del archivo de configuración
Importante: Bottlerocket admite tipos de instancias de uso general, optimizadas para computación, optimizadas para memoria y optimizadas para almacenamiento. Bottlerocket no admite instancias de computación acelerada.
Crea un archivo llamado bottlerocket.yaml con la siguiente configuración:
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: mybottlerocket-cluster
region: your-region
version: '1.31'
iam:
withOIDC: true
nodeGroups:
- name: ng-bottlerocket
instanceType: m5.large
desiredCapacity: 3
amiFamily: Bottlerocket
ami: auto-ssm
iam:
attachPolicyARNs:
- arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
- arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
- arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
- arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
ssh:
allow: true
publicKeyName: your-ec2-keypair-name
Nota: Sustituye mybottlerocket-cluster por el nombre de tu clúster. Sustituye your-region por tu región de AWS. Sustituye your-ec2-keypair-name por el nombre del par de claves SSH de Amazon EC2. Si no tienes un par de claves de Amazon EC2, consulta Creación de un par de claves para la instancia de Amazon EC2.
Creación del grupo de nodos administrado
Para crear el grupo de nodos administrado, ejecuta el siguiente comando:
eksctl create nodegroup --config-file=bottlerocket.yaml
El comando crea el grupo de nodos y registra los nodos con tu clúster. Este proceso tarda varios minutos en completarse.
Verificación de los nodos
Para comprobar que los nodos se están ejecutando, ejecuta el siguiente comando:
kubectl get nodes -o wide
El resultado muestra los nodos de Bottlerocket con su estado, la versión de Kubernetes y la información del sistema operativo.
Resultado de ejemplo:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ip-[IP_ADDRESS].us-west-2.compute.internal Ready <none> 5m v1.31.0 [IP_ADDRESS] <none> Bottlerocket OS 1.20.0 (aws-k8s-1.31) 5.15.0 containerd://1.7.11
Conexión a los nodos de Bottlerocket
Los nodos de Bottlerocket no incluyen un shell o servidor SSH de forma predeterminada. Para conectarte a los nodos de Bottlerocket para solucionar problemas, utiliza AWS Systems Manager Session Manager.
Para conectarte a un nodo de Bottlerocket, sigue estos pasos:
-
Recupera el ID de instancia de tu nodo de Bottlerocket desde la consola de Amazon EC2 o ejecuta el siguiente comando:
kubectl get nodes -o wide
-
Usa el ID de instancia para iniciar una sesión de Session Manager. Para obtener más información sobre cómo iniciar una sesión, consulta Inicio de una sesión (consola de Systems Manager).
Nota: La política de IAM AmazonSSMManagedInstanceCore de la configuración del grupo de nodos permite que Session Manager acceda a tus nodos de Bottlerocket.
Información relacionada
Creación de nodos de Bottlerocket autoadministrados
Simplificación del ciclo de vida de los nodos con grupos de nodos administrados
Using a Bottlerocket AMI with Amazon EKS (Uso de una AMI de Bottlerocket con Amazon EKS) en el sitio web de github