Como faço para criar um grupo de nós gerenciados usando o Bottlerocket AMI no Amazon EKS?
Quero usar o eksctl para lançar o Bottlerocket Amazon Machine Image (Bottlerocket AMI) para criar um grupo de nós gerenciados no Amazon Elastic Kubernetes Service (Amazon EKS).
Resolução
Pré-requisito
1. Certifique-se de que você tenha o eksctl versão 0.124.0 ou posterior.
2. Execute o comando a seguir para verificar sua versão:
$ eksctl version
Crie um arquivo bottlerocket.yaml
1. Abra o terminal em que você instalou o eksctl. Em seguida, conclua as etapas a seguir para criar um novo arquivo.
2. Substitua mybottlerocket-cluster pelo nome do seu cluster. O nome pode conter somente caracteres alfanuméricos (com distinção entre maiúsculas e minúsculas) e hifens. Ele deve começar com um caractere alfabético e não pode ter mais de 100 caracteres.
3. Substitua bottlerocket-nodegroup por um nome para seu grupo de nós. O nome pode conter somente caracteres alfanuméricos (com distinção entre maiúsculas e minúsculas) e hifens. Ele deve começar com um caractere alfabético e não pode ter mais de 100 caracteres.
4. Especifique o tipo de instância. Por exemplo, para implantar em uma instância ARM, substitua m5.xlarge por um tipo de instância ARM.
5. Substitua eks_bottlerocket pelo nome de um par de chaves SSH do Amazon Elastic Compute Cloud (Amazon EC2). Depois de iniciado, use o SSH para se conectar aos nós.
Observação: se você não tiver um par de chaves SSH do Amazon EC2, crie um no Console de Gerenciamento da AWS. Para obter mais informações, consulte Pares de chaves do Amazon EC2 e instâncias do Linux.
6. Substitua todos os valores restantes no exemplo por seus próprios valores. Depois de fazer as substituições, salve o arquivo bottlerocket.yaml.
--- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: mybottlerocket-cluster region: us-west-2 version: '1.23' managedNodeGroups: - name: bottlerocket-nodegroup instanceType: m5.xlarge minSize: 2 maxSize: 4 desiredCapacity: 3 amiFamily: Bottlerocket labels: { role: br-worker } tags: nodegroup-type: Bottlerocket ssh: allow: true publicKeyName: eks_bottlerocket
Observação: você pode criar grupos de nós gerenciados pelo BottleRocket para todos os tipos de instância padrão. Eles são os tipos de instância de escalonamento estático (série T), de uso geral (série M), otimizado para computação (série C), otimizado para memória (série R) e os tipos de instância baseados em Graviton2 ARM. O Bottlerocket AMI não oferece suporte a tipos de instância com computação acelerada (P, G, Inf1).
Para obter mais informações sobre o Bottlerocket AMI, consulte Bottlerocket AMIs otimizadas para o Amazon EKS.
Crie o grupo de nós e liste seus nós no cluster EKS
1. Execute o seguinte comando eksctl para criar um grupo de nós:
$ eksctl create nodegroup -f bottlerocket.yaml [✔] created 1 nodegroup(s) in cluster "mybottlerocket-cluster"
2. Liste os nós no cluster EKS junto com seus atributos:
$ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystem NODE ARCH OS-Image OS ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux
Conecte-se aos nós do Bottlerocket AMI (opcional)
Conecte-se aos novos nós do Bottlerocket por meio de uma sessão do AWS Systems Manager (AWS SSM). O agente do AWS SSM está sendo executado no nó porque você já ativou a permissão do AWS SSM para a função de instância do nó. Para obter mais informações sobre o AWS SSM, consulte O que é o AWS Systems Manager?
1. Execute o comando a seguir para encontrar os IDs da instância:
$ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystem,InstanceId:.spec.providerID NODE ARCH OS-Image OS InstanceId ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux aws:///us-west-2b/i-0cf32f13f60c2f501 ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux aws:///us-west-2b/i-0f31328a5d21cb092 ip-192-168-xx-xx.us-west-2.compute.internal amd64 Bottlerocket OS 1.11.1 (aws-k8s-1.23) linux aws:///us-west-2b/i-08c218b729ecf9b5d
Iniciar uma sessão de SSM
Por padrão, o Bottlerocket tem um contêiner de controle que é executado em outra instância de containerd. Esse contêiner executa o agente AWS SSM e permite que você execute comandos ou inicie sessões interativas de shell nos nós do Bottlerocket.
1. Escolha uma das instâncias que você identificou anteriormente e inicie uma sessão de SSM. O exemplo a seguir mostra um comando de sessão SSM para a instância i-0cf32f13f60c2f501:
$ aws ssm start-session --target i-0cf32f13f60c2f501 --region us-west-2 Starting session with SessionId: EKS-Test-User-0077e4c89ad2bc888 Welcome to Bottlerocket's control container!
Informações relacionadas
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- Como inicio e soluciono problemas de instâncias spot usando grupos de nós gerenciados do Amazon EKS?AWS OFICIALAtualizada há um ano