Quero usar a AMI Bottlerocket para criar um grupo de nós gerenciados no Amazon Elastic Kubernetes Service (Amazon EKS).
Resolução
É possível usar eksctl com um arquivo de configuração para criar um grupo de nós gerenciados do Bottlerocket.
Pré-requisitos
- Use eksctl versão 0.124.0 ou posterior
- Um cluster existente do Amazon EKS
- Se você quiser acesso SSH aos nós, precisa de um par de chaves SSH do Amazon Elastic Compute Cloud (Amazon EC2)
Para usar a AMI Bottlerocket para criar um grupo de nós gerenciados, conclua as seguintes etapas:
Verifique a versão do eksctl
Para verificar sua versão do eksctl, execute o seguinte comando:
eksctl version
Se você precisar instalar ou fazer upgrade do eksctl, consulte Opções de instalação para Eksctl.
Crie o arquivo de configuração
Importante: o Bottlerocket oferece suporte a tipos de instância de uso geral, otimizadas para computador, para memória e para armazenamento. O Bottlerocket não oferece suporte a instâncias com computação acelerada.
Crie um arquivo chamado bottlerocket.yaml com a seguinte configuração:
---
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
Observação: substitua mybottlerocket-cluster pelo nome do seu cluster. Substitua your-region pela sua região da AWS. Substitua your-ec2-keypair-name pelo nome do seu par de chaves SSH do Amazon EC2. Se você não tiver um par de chaves do Amazon EC2, consulte Criar um par de chaves para sua instância do Amazon EC2.
Crie o grupo de nós gerenciados
Para criar o grupo de nós gerenciados, execute o seguinte comando:
eksctl create nodegroup --config-file=bottlerocket.yaml
O comando cria o grupo de nós e registra os nós em seu cluster. Esse processo leva vários minutos para ser concluído.
Verifique os nós
Para verificar se os nós estão em execução, execute o seguinte comando:
kubectl get nodes -o wide
A saída mostra seus nós do Bottlerocket com seus status, versão do Kubernetes e informações do sistema operacional.
Exemplo de saída:
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
Conecte-se aos nós do Bottlerocket
Os nós do Bottlerocket não incluem um servidor SSH ou shell por padrão. Para se conectar aos nós do Bottlerocket para solucionar problemas, use o Gerenciador de sessões do AWS Systems Manager.
Para se conectar a um nó do Bottlerocket, conclua as seguintes etapas:
-
Recupere o ID da instância do seu nó do Bottlerocket no console do Amazon EC2 ou executando o seguinte comando:
kubectl get nodes -o wide
-
Use o ID da instância para iniciar uma sessão do Gerenciador de sessões. Para obter mais informações sobre como iniciar uma sessão, consulte Iniciar uma sessão (console do Systems Manager).
Observação: a política do IAM AmazonSSMManagedInstanceCore na configuração do grupo de nós permite que o Gerenciador de sessões acesse seus nós do Bottlerocket.
Informações relacionadas
Criar nós Bottlerocket autogerenciados do Bottlerocket
Simplificar o ciclo de vida dos nós com grupos de nós gerenciados
Using a Bottlerocket AMI with Amazon EKS (Usando uma AMI Bottlerocket no Amazon EKS) no site do github