349
Amazon EKS Guia do usuário

Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKSGuia do usuário

Page 2: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Page 3: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Amazon EKS: Guia do usuárioCopyright © 2020 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

Page 4: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Table of ContentsO que é o Amazon EKS? .................................................................................................................... 1

Arquitetura do plano de controle do Amazon EKS ........................................................................... 1Como funciona o Amazon EKS? ................................................................................................... 2

Conceitos básicos de Amazon EKS ...................................................................................................... 3Conceitos básicos de eksctl ...................................................................................................... 3

Prerequisites ...................................................................................................................... 3Instalar e configurar kubectl ................................................................................................. 6Crie o seu Amazon EKS cluster e calcular ............................................................................. 9Próximas etapas ............................................................................................................... 13

Conceitos básicos do console ..................................................................................................... 13Prerequisites .................................................................................................................... 13Etapa 1 Crie o seu Amazon EKS cluster .............................................................................. 22Etapa 2. Crie um arquivo kubeconfig. ............................................................................... 24Etapa 3 Criar cálculo ......................................................................................................... 25

Clusters ........................................................................................................................................... 30Criar um cluster. ....................................................................................................................... 30Atualizar a versão do Kubernetes ................................................................................................ 37

Atualizar um cluster existente ............................................................................................. 38Pré-requisitos da atualização do Kubernetes 1.16 .................................................................. 44

Excluir um cluster ..................................................................................................................... 46Acesso ao endpoint do cluster .................................................................................................... 49

Modificar o acesso ao endpoint do cluster ............................................................................ 49Acessar um servidor de API somente privado ....................................................................... 53

Autoscaler do cluster ................................................................................................................. 54Criar um cluster do Amazon EKS ........................................................................................ 54Considerações sobre o grupo de nós do Cluster Autoscaler .................................................... 55Implantar o Cluster Autoscaler ............................................................................................ 56Visualizar os logs do Cluster Autoscaler ............................................................................... 57

Registro em log do plano de controle .......................................................................................... 58Habilitar e desabilitar os logs do plano de controle ................................................................. 59Visualizar os logs do plano de controle do cluster .................................................................. 60

Versões do Kubernetes ............................................................................................................. 61Versões disponíveis do Kubernetes do Amazon EKS ............................................................. 61Kubernetes 1.17 ............................................................................................................... 61Kubernetes 1.16 ............................................................................................................... 62Kubernetes 1.15: .............................................................................................................. 63Kubernetes 1.14 ............................................................................................................... 64Suspensão da versão do Amazon EKS ................................................................................ 64

Versões da plataforma ............................................................................................................... 65Versão Kubernetes 1.17 .................................................................................................... 65Versão Kubernetes 1.16 .................................................................................................... 66Versão Kubernetes 1.15 .................................................................................................... 66Versão Kubernetes 1.14 .................................................................................................... 67

Suporte ao Windows ................................................................................................................. 70Considerations .................................................................................................................. 70Habilitar o suporte do Windows .......................................................................................... 70Implantar um aplicativo de exemplo do Windows ................................................................... 74

Suporte ao ARM ....................................................................................................................... 75Considerations .................................................................................................................. 76Prerequisites .................................................................................................................... 76Criar um cluster ................................................................................................................ 76Habilitar o suporte ao ARM ................................................................................................ 77Lançar nós ....................................................................................................................... 77Juntar nós a um grupo ...................................................................................................... 79

iv

Page 5: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

(Opcional) Implantar um aplicativo ....................................................................................... 79Suporte do Inferentia ................................................................................................................. 80

Considerations .................................................................................................................. 80Prerequisites .................................................................................................................... 80Criar um cluster ................................................................................................................ 80(Opcional) Criar uma imagem do aplicativo Neuron TensorFlow Serving .................................... 81(Opcional) Implante uma imagem de aplicativo do TensorFlow Serving ...................................... 82(Opcional) Faça previsões em relação ao serviço do TensorFlow Serving .................................. 85

Visualizar sinalizadores do servidor de API ................................................................................... 86Clusters privados ...................................................................................................................... 86

Requirements ................................................................................................................... 86Considerations .................................................................................................................. 87Criar cópias locais das imagens do contêiner ........................................................................ 88VPC endpoints para clusters privados .................................................................................. 88

Computação ..................................................................................................................................... 89Grupos de nós gerenciados ....................................................................................................... 92

Conceitos dos grupos de nós gerenciados ............................................................................ 93Criar um grupo de nós gerenciados ..................................................................................... 94Atualizar um grupo de nós gerenciados ............................................................................... 97Excluir um grupo de nós gerenciados ................................................................................ 100

Nós autogerido ....................................................................................................................... 100Iniciar auto-gestão Amazon Linux 2 nós ............................................................................. 101Iniciar os nós do Windows auto-geridos .............................................................................. 106Atualizações de nós auto-geridas ...................................................................................... 110

AWS Fargate .......................................................................................................................... 118Considerações sobre o Fargate ......................................................................................... 119Conceitos básicos do Fargate ........................................................................................... 120Perfil do Fargate ............................................................................................................. 124Configuração do pod do Fargate ....................................................................................... 127Métricas de utilização ...................................................................................................... 129

Amazon EKS-amis otimizado .................................................................................................... 130Amazon Linux 2 .............................................................................................................. 130Ubuntu . ......................................................................................................................... 143(Windows) ...................................................................................................................... 143

Armazenamento .............................................................................................................................. 151Classes de armazenamento ...................................................................................................... 151Driver da CSI do Amazon EBS ................................................................................................. 152Driver da CSI do Amazon EFS ................................................................................................. 156Driver da CSI do Amazon FSx for Lustre .................................................................................... 160

Redes ............................................................................................................................................ 167Como criar uma VPC para o Amazon EKS ................................................................................. 168

Como criar uma VPC para o Amazon EKS ......................................................................... 170Próximas etapas ............................................................................................................. 173

Considerações sobre a VPC do cluster ...................................................................................... 173Endereçamento IP da VPC ............................................................................................... 173Requisito de marcação de VPC ........................................................................................ 174Requisito de marcação de sub-rede ................................................................................... 175

Considerações sobre os grupos de segurança do Amazon EKS ..................................................... 175Grupo de segurança do cluster (disponível a partir dos clusters do Amazon EKS que executam oKubernetes 1.14 e a versão eks.3 da plataforma) ............................................................... 176Controlar grupos de segurança do plano e do nó (para Amazon EKS mais antes do queKubernetes versão 1.14 e versão da plataforma eks.3) ....................................................... 177

Redes de pods (CNI) ............................................................................................................... 179Variáveis de configuração do CNI ...................................................................................... 180SNAT externa ................................................................................................................. 186Rede personalizada do CNI .............................................................................................. 188Assistente de métricas da CNI .......................................................................................... 191

v

Page 6: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Atualizações do CNI ........................................................................................................ 194Plug-ins CNI compatíveis alternativos ................................................................................. 195

Instalar ou atualizar o CoreDNS ................................................................................................ 195Atualizar o CoreDNS ....................................................................................................... 197

Instalação do Calico no Amazon EKS ........................................................................................ 198Demonstração de Stars Policy .......................................................................................... 199

Applications .................................................................................................................................... 204Expansão da amostra .............................................................................................................. 204Vertical Pod Autoscaler ............................................................................................................ 207

Instalar o servidor de métricas .......................................................................................... 207Implantar o Vertical Pod Autoscaler ................................................................................... 208Testar a instalação do Vertical Pod Autoscaler .................................................................... 209

Horizontal Pod Autoscaler ........................................................................................................ 212Instalar o servidor de métricas .......................................................................................... 212Executar um aplicativo de teste do Horizontal Pod Autoscaler ................................................ 213

Balanceamento de carga .......................................................................................................... 215Marcação de sub-redes para load balancers ....................................................................... 216

Controlador de entrada do ALB no Amazon EKS ......................................................................... 216Autenticação de cluster .................................................................................................................... 222

Instalar aws-iam-authenticator ........................................................................................... 222Criar um kubeconfig para o Amazon EKS ............................................................................... 226

Criar kubeconfig automaticamente .................................................................................. 226Criar kubeconfig manualmente ....................................................................................... 227

Gerenciar usuários ou funções do IAM para o cluster ................................................................... 229Gerenciamento de clusters ............................................................................................................... 233

Instalar kubectl .................................................................................................................... 233eksctl ................................................................................................................................. 238

Instalar ou atualizar o eksctl .......................................................................................... 238Tutorial Implementar dashboard de Kubernetes ........................................................................... 240

Prerequisites .................................................................................................................. 240Etapa 1 Implementar o servidor de métricas Kubernetes ....................................................... 240Etapa 2. Implementar o dashboard .................................................................................... 241Etapa 3 Criar um eks-admin ligação da conta de serviço e de cluster .................................... 241Etapa 4. Ligar ao dashboard ............................................................................................. 242Etapa 5. Próximas etapas ................................................................................................ 243

Servidor de métricas ................................................................................................................ 243Métricas do Prometeu .............................................................................................................. 244

Visualizar as métricas brutas ............................................................................................ 244Implantar o Prometeu ...................................................................................................... 245

Usar o Helm ........................................................................................................................... 247Marcar os recursos do ............................................................................................................. 248

Conceitos básicos de tags ................................................................................................ 248Marcar os recursos do ..................................................................................................... 249Restrições de tags .......................................................................................................... 250Trabalhar com tags usando o console ................................................................................ 250Trabalhar com etiquetas utilizando o CLI, API ou eksctl ..................................................... 251

Cotas de serviço ..................................................................................................................... 252.................................................................................................................................... 252

Segurança ...................................................................................................................................... 255Identity and Access Management .............................................................................................. 255

Audience ........................................................................................................................ 256Autenticar com identidades ............................................................................................... 256Gerenciamento do acesso usando políticas ......................................................................... 258Como o Amazon EKS funciona com o IAM ......................................................................... 260Exemplos de políticas baseadas em identidade ................................................................... 262Usar funções vinculadas a serviço ..................................................................................... 265Função do IAM do cluster ................................................................................................ 269

vi

Page 7: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Nó IAM função ............................................................................................................... 271Função de execução de pod ............................................................................................ 273Funções do IAM para contas de serviço ............................................................................. 275Solução de problemas ..................................................................................................... 289

Registrar e monitorar ............................................................................................................... 289Validação de conformidade ....................................................................................................... 289Resiliência .............................................................................................................................. 290Segurança da infraestrutura ...................................................................................................... 290Análise de configuração e vulnerabilidade ................................................................................... 291Política de segurança de pods .................................................................................................. 292

Política de segurança de pods padrão do Amazon EKS ........................................................ 292Trabalhar com outros serviços .......................................................................................................... 297

Criar recursos no Amazon EKS com AWS CloudFormation ........................................................... 297Modelos do Amazon EKS e AWS CloudFormation ............................................................... 297Saiba mais sobre o AWS CloudFormation .......................................................................... 297

Registrar em log chamadas de API do Amazon EKS com o AWS CloudTrail .................................... 298Informações do Amazon EKS no CloudTrail ........................................................................ 298Noções básicas sobre entradas de arquivos de log do Amazon EKS ....................................... 299

Amazon EKS no AWS Outposts ................................................................................................ 301Prerequisites .................................................................................................................. 301Limitations ...................................................................................................................... 301Considerações sobre a conectividade de rede ..................................................................... 301Criar nós do Amazon EKS em um Outpost ......................................................................... 301

Contêineres do Deep Learning .................................................................................................. 303Tutorial Configurar App Mesh integração com Kubernetes ............................................................. 303

Prerequisites .................................................................................................................. 304Etapa 1 Instalar os componentes de integração ................................................................... 304Etapa 2. Implementar App Mesh recursos ........................................................................... 306Etapa 3 Criar ou atualizar serviços .................................................................................... 315Etapa 4. Limpar .............................................................................................................. 320

Solução de problemas ..................................................................................................................... 321Insufficient capacity (Capacidade insuficiente) ............................................................................. 321Os nós não conseguem aderir ao grupo ..................................................................................... 321Unauthorized or access denied (kubectl) (Não autorizado ou acesso negado (kubectl)) ................. 322aws-iam-authenticator Not found (aws-iam-authenticator não encontrado) ........................ 322hostname doesn't match ................................................................................................... 323getsockopt: no route to host ....................................................................................... 323Managed node group errors (Erros de grupo de nós gerenciados) .................................................. 323Ferramenta de coleta de logs da CNI ......................................................................................... 324A rede de tempo de execução do contêiner não está pronta .......................................................... 325Tempo limite de handshake TLS ............................................................................................... 325IAM ....................................................................................................................................... 326

AccessDeniedException ................................................................................................... 326O aws-auth ConfigMap não concede acesso ao cluster ......................................................... 326Não estou autorizado a executar iam:PassRole ................................................................... 326Quero visualizar minhas chaves de acesso ......................................................................... 327Sou administrador e desejo conceder acesso ao Amazon EKS a outros usuários ....................... 327Desejo permitir que pessoas fora da minha conta da AWS acessem meus recursos do AmazonEKS .............................................................................................................................. 327

Projetos relacionados ....................................................................................................................... 329Ferramentas de gerenciamento ................................................................................................. 329

eksctl ............................................................................................................................. 329Operador de serviço da AWS ........................................................................................... 329

Redes .................................................................................................................................... 329Plug-in CNI da Amazon VPC para Kubernetes .................................................................... 329Controlador de entrada do AWS Balanceador de carga de aplicações (ALB) para Kubernetes ...... 329ExternalDNS ................................................................................................................... 330

vii

Page 8: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Segurança .............................................................................................................................. 330Autenticador do AWS IAM ................................................................................................ 330

Machine learning ..................................................................................................................... 330Kubeflow ........................................................................................................................ 330

Auto Scaling ........................................................................................................................... 330Cluster autoscaler ........................................................................................................... 330Escalator ........................................................................................................................ 331

Monitoramento ........................................................................................................................ 331Prometheus .................................................................................................................... 331

Integração contínua/implantação contínua ................................................................................... 331Jenkins X ....................................................................................................................... 331

Histórico do documento .................................................................................................................... 332.................................................................................................................................................. cccxli

viii

Page 9: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioArquitetura do plano de controle do Amazon EKS

O que é o Amazon EKS?Amazon EKS é um serviço gerido que facilita a execução de Kubernetes AWS sem necessidade deinstalar, operar e manter o seu próprio plano de controlo Kubernetes ou nós. O Kubernetes é um sistemade código aberto para automatizar a implantação, a escalabilidade e o gerenciamento de aplicativos emcontêineres.

O Amazon EKS executa instâncias de plano de controle do Kubernetes em várias Zona dedisponibilidades, para garantir alta disponibilidade. O Amazon EKS detecta e substitui automaticamenteinstâncias de plano de controle com problemas de integridade e fornece patches e atualizações de versõesautomatizados para elas.

Amazon EKS está integrado com muitos AWS serviços para fornecer escalabilidade e segurança às suasaplicações, incluindo o seguinte:

• Amazon ECR para imagens do contêiner• O Elastic Load Balancing para distribuição de carga• O IAM para autenticação• A Amazon VPC para isolamento

Amazon EKS executa versões actualizadas do software de cadeia aberta Kubernetes, para que possautilizar todos os plug-ins existentes e ferramentas da comunidade Kubernetes. Os aplicativos executadosno Amazon EKS são totalmente compatíveis com os aplicativos executados em qualquer ambienteKubernetes padrão, sejam eles executados em datacenters locais ou em nuvens públicas. Isso significaque você pode migrar facilmente qualquer aplicativo Kubernetes padrão para o Amazon EKS semnecessidade de modificar código.

Arquitetura do plano de controle do Amazon EKSO Amazon EKS executa um plano de controle do Kubernetes de locação única para cada cluster, e ainfraestrutura do plano de controle não é compartilhada em todos os clusters ou contas da AWS.

Esse plano de controle consiste em pelo menos dois nós de servidor de API e três nós etcd quesão executados em três Zona de disponibilidades em uma região. O Amazon EKS detecta e substituiautomaticamente instâncias não íntegras do plano de controle, reiniciando-as nas Zona de disponibilidadesda região, conforme necessário. O Amazon EKS utiliza a arquitetura de regiões da AWS para manter a altadisponibilidade. Por isso, o Amazon EKS é capaz de oferecer um SLA para disponibilidade do endpoint doservidor de API.

O Amazon EKS usa políticas de rede da Amazon VPC para restringir o tráfego entre os componentes doplano de controle a um único cluster. Os componentes do plano de controle para um cluster não podemvisualizar ou receber comunicações de outros clusters ou contas da AWS, exceto conforme autorizado porpolíticas de RBAC do Kubernetes.

Essa configuração segura e altamente disponível torna o Amazon EKS confiável e recomendado paracargas de trabalho de produção.

1

Page 10: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioComo funciona o Amazon EKS?

Como funciona o Amazon EKS?

É fácil começar a usar o Amazon EKS:

1. Criar um Amazon EKS aglomerado no Console de gerenciamento da AWS ou com o AWS CLI ou umdos AWS ks.

2. Iniciar os nós geridos ou auto-geridos que se registem com o Amazon EKS grupo. Fornecemos ummodelo do AWS CloudFormation que configura automaticamente seus nós. Também pode implementaraplicações para AWS Fargate se não precisar de gerir nós.

3. Quando o cluster estiver pronto, você pode configurar suas ferramentas favoritas do Kubernetes (comokubectl) para se comunicar com o cluster.

4. Implante e gerencie aplicativos no cluster do Amazon EKS da mesma forma como o faz com qualqueroutro ambiente Kubernetes.

Para criar o seu primeiro grupo e os seus recursos associados, consulte Conceitos básicos de AmazonEKS (p. 3).

2

Page 11: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConceitos básicos de eksctl

Conceitos básicos de Amazon EKSExistem dois guias de iniciação disponíveis para criar um novo grupo de Kubernetes com nós em AmazonEKS:

• Conceitos básicos de eksctl (p. 3) – este guia de conceitos básicos ajuda você a instalar todosos recursos necessários para começar a usar o Amazon EKS com eksctl, um utilitário de linha decomando simples para criar e gerenciar clusters de Kubernetes no Amazon EKS. No final do tutorial, teráuma execução Amazon EKS grupo que pode implementar aplicações para. Essa é a forma mais rápida esimples para começar a usar o Amazon EKS.

• Conceitos básicos do Console de gerenciamento da AWS (p. 13) – Este guia de iniciação ajuda-o a criar todos os recursos necessários para começar com Amazon EKS usando o Console degerenciamento da AWS. No final do tutorial, terá uma execução Amazon EKS grupo que podeimplementar aplicações para. Neste guia, você criará manualmente cada recurso nos consoles doAmazon EKS ou do AWS CloudFormation. Os procedimentos fornecem visibilidade completa sobrecomo cada recurso é criado e como eles interagem uns com os outros.

Conceitos básicos de eksctlEste guia de iniciação ajuda-o a criar todos os recursos necessários para começar com Amazon EKSutilizar eksctl, uma linha de comandos simples para criar e gerir clusters Kubernetes em Amazon EKS.No final deste tutorial, terá uma corrida Amazon EKS grupo que pode implementar aplicações para.

Os procedimentos deste guia criam vários recursos automaticamente, que tem de criar manualmentequando criar o seu grupo utilizando o Console de gerenciamento da AWS. Se preferir criar manualmentea maioria dos recursos para melhor compreender como interagem uns com os outros, utilize o Console degerenciamento da AWS para criar o seu grupo e calcular. Para obter mais informações, consulte Conceitosbásicos do Console de gerenciamento da AWS (p. 13).

PrerequisitesEsta seção ajuda você a instalar e configurar as ferramentas e os recursos necessários para criar egerenciar um cluster do Amazon EKS.

Instalar o AWS CLIPara instalar a versão mais recente da AWS CLI, escolha a guia com o nome do sistema operacional emque você deseja instalar a AWS CLI.

macOS

Se a AWS CLI estiver instalada, determine qual versão você instalou.

aws --version

Se você não tiver a versão 1.18.110 ou posterior, ou a versão 2.0.36 ou posterior instalada, instalea AWS CLI versão 2. Para obter outras opções de instalação, ou para atualizar a versão 2 instaladaatualmente, consulte Atualizar a CLI da AWS versão 2 no macOS.

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"sudo installer -pkg AWSCLIV2.pkg -target /

3

Page 12: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

Se não conseguir usar a AWS CLI versão 2, verifique se você tem a versão mais recente da AWS CLIversão 1 instalada usando o comando a seguir.

pip3 install awscli --upgrade --user

Linux

Se a AWS CLI estiver instalada, determine qual versão você instalou.

aws --version

Se você não tiver a versão 1.18.110 ou posterior, ou a versão 2.0.36 ou posterior instalada, instalea AWS CLI versão 2. Para obter outras opções de instalação, ou para atualizar a versão 2 instaladaatualmente, consulte Atualizar a CLI da AWS versão 2 no Linux.

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipsudo ./aws/install

Se não conseguir usar a AWS CLI versão 2, verifique se você tem a versão mais recente da AWS CLIversão 1 instalada usando o comando a seguir.

pip3 install --upgrade --user awscli

Windows

Se a AWS CLI estiver instalada, determine qual versão você instalou.

aws --version

Como instalar a AWS CLI versão 2

Se você não tiver a versão 1.18.110 ou posterior ou a versão 2.0.36 ou posterior instalada, instalea AWS CLI versão 2 usando as etapas a seguir. Para obter outras opções de instalação, ou paraatualizar a versão 2 instalada atualmente, consulte Atualizar a CLI da AWS versão 2 no Windows.

1. Faça o download do instalador MSI da CLI da AWS para Windows (64 bits) em https://awscli.amazonaws.com/AWSCLIV2.msi

2. Execute o instalador MSI obtido por download e siga as instruções na tela. Por padrão, a AWSCLI é instalada em C:\Program Files\Amazon\AWSCLIV2.

Se não conseguir usar a AWS CLI versão 2, verifique se você tem a versão mais recente da AWS CLIversão 1 instalada usando o comando a seguir.

pip3 install --user --upgrade awscli

Configurar as credenciais da AWS CLIOeksctl e a AWS CLI exigem que você tenha credenciais da AWS configuradas no seu ambiente. Ocomando aws configure é a maneira mais rápida de configurar sua instalação da AWS CLI para uso geral.

$ aws configureAWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE

4

Page 13: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYDefault region name [None]: region-codeDefault output format [None]: json

Quando escrever este comando, o AWS CLI pede-lhe quatro informações: access key, secretaccess key, AWS Region, e output format. Esta informação é guardada num perfil (uma coleção dedefinições) nomeada default. Este perfil é utilizado quando executa comandos, a menos que especifiqueoutro.

Para obter mais informações, consulte Configurar a AWS CLI no Guia do usuário do AWS Command LineInterface.

Instalar eksctlPara instalar a versão 0.25.0 ou posterior do utilitário de linha de comando eksctl, escolha a guia com onome do sistema operacional em que você deseja instalar eksctl. Para obter mais informações, consultehttps://eksctl.io/.

macOS

Para instalar ou atualizar o eksctl no MacOS usando o Homebrew

A maneira mais fácil de começar a usar o Amazon EKS no MacOS é instalando o eksctl como Homebrew. A receita do Homebrew para o eksctl instala o eksctl e quaisquer outrasdependências necessárias para o Amazon EKS, como o kubectl. A receita também instala o aws-iam-authenticator (p. 222), que será necessário se você não tiver a AWS CLI versão 1.16.156ou posterior instalada.

1. Se você ainda não tiver instalado o Homebrew no MacOS, instale-o com o seguinte comando.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

2. Instale a aba Weaveworks do Homebrew.

brew tap weaveworks/tap

3. Instale ou atualize o eksctl.

• Instale o eksctl com o seguinte comando:

brew install weaveworks/tap/eksctl

• Se o eksctl já estiver instalado, execute o comando a seguir para atualizá-lo:

brew upgrade eksctl && brew link --overwrite eksctl

4. Verifique se a instalação foi bem-sucedida com o comando a seguir.

eksctl version

Note

A versão da GitTag deve ser pelo menos a 0.25.0. Caso contrário, verifique sehá erros de instalação ou de atualização na saída do terminal ou faça downloadmanualmente de um arquivo da versão em https://github.com/weaveworks/eksctl/releases/download/0.25.0/eksctl_Darwin_amd64.tar.gz, extraia o eksctl e execute-o.

5

Page 14: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar e configurar kubectl

Linux

Para instalar ou atualizar o eksctl no Linux usando o curl

1. Faça download e extraia a última versão do eksctl com o comando a seguir.

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

2. Mova o binário extraído para /usr/local/bin.

sudo mv /tmp/eksctl /usr/local/bin

3. Verifique se a instalação foi bem-sucedida com o comando a seguir.

eksctl version

Note

A versão da GitTag deve ser pelo menos a 0.25.0. Caso contrário, verifique se háerros de instalação ou atualização na saída do terminal ou substitua o endereço na etapa1 por https://github.com/weaveworks/eksctl/releases/download/0.25.0/eksctl_Linux_amd64.tar.gz e conclua as etapas 1 a 3 novamente.

Windows

Para instalar ou atualizar o eksctl no Windows usando o Chocolatey

1. Se você ainda não tiver o Chocolatey instalado no seu sistema Windows, consulte Instalar oChocolatey.

2. Instale ou atualize o eksctl .

• Instale os binários com o seguinte comando:

chocolatey install -y eksctl

• Se eles já estiverem instalados, execute o seguinte comando para atualizá-los:

chocolatey upgrade -y eksctl

3. Verifique se a instalação foi bem-sucedida com o comando a seguir.

eksctl version

Note

A versão da GitTag deve ser pelo menos a 0.25.0. Caso contrário, verifique sehá erros de instalação ou de atualização na saída do terminal ou faça downloadmanualmente de um arquivo da versão em https://github.com/weaveworks/eksctl/releases/download/0.25.0/eksctl_Windows_amd64.zip, extraia o eksctl e execute-o.

Instalar e configurar kubectlO Kubernetes usa um utilitário de linha de comando chamado kubectl para se comunicar com o servidor daAPI do cluster.

6

Page 15: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar e configurar kubectl

Note

Se você usou as instruções anteriores do Homebrew para instalar o eksctl no macOS, okubectl já está instalado no sistema. Você pode seguir para Crie o seu Amazon EKS cluster ecalcular (p. 9).

Para instalar a versão 1.17 do utilitário de linha de comando kubectl, escolha a guia com o nome dosistema operacional em que você deseja instalar kubectl. Se você precisar instalar uma versão diferentepara usar com uma versão de cluster diferente, consulte ??? (p. 233).

macOS

Para instalar o kubectl no MacOS

1. Faça o download do binário kubectl fornecido pelo Amazon EKS.

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/darwin/amd64/kubectl

2. (Opcional) Verifique o binário baixado com a soma SHA-256.

a. Faça o download da soma SHA-256.

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/darwin/amd64/kubectl.sha256

b. Verifique a soma SHA-256.

openssl sha1 -sha256 kubectl

c. Compare a soma de SHA-256 gerada na saída do comando com o seu arquivo SHA-256baixado. Os dois devem corresponder.

3. Aplique permissões de execução ao binário.

chmod +x ./kubectl

4. Mover kubectl para uma pasta que está no seu caminho.

• Se ainda não tiver uma versão de kubectl instalado e, em seguida, mova o binário para umapasta que já está na sua PATH.

sudo mv ./kubectl /usr/local/bin

• Se já tiver uma versão de kubectl instalado, recomendamos que crie uma $HOME/bin/kubectl , mover o binário para essa pasta e garantir que $HOME/bin vem primeiro no seu$PATH.

mkdir -p $HOME/bin && mv ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

(Opcional) Adicione o caminho $HOME/bin ao arquivo de inicialização do shell para que eleesteja configurado quando você abrir um shell.

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

5. Após instalar o kubectl, você pode verificar a versão com o seguinte comando:

7

Page 16: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar e configurar kubectl

kubectl version --short --client

Linux

Para instalar o kubectl no Linux

1. Faça o download do binário kubectl fornecido pelo Amazon EKS.

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/kubectl

2. (Opcional) Verifique o binário baixado com a soma SHA-256.

a. Faça o download da soma SHA-256.

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/kubectl.sha256

b. Verifique a soma SHA-256.

openssl sha1 -sha256 kubectl

c. Compare a soma de SHA-256 gerada na saída do comando com o seu arquivo SHA-256baixado. Os dois devem corresponder.

3. Aplique permissões de execução ao binário.

chmod +x ./kubectl

4. Mover kubectl para uma pasta que está no seu caminho.

• Se ainda não tiver uma versão de kubectl instalado e, em seguida, mova o binário para umapasta no seu PATH.

sudo mv ./kubectl /usr/local/bin

• Se já tiver uma versão de kubectl instalado, recomendamos que crie uma $HOME/bin/kubectl , mover o binário para essa pasta e garantir que $HOME/bin vem primeiro no seu$PATH.

mkdir -p $HOME/bin && mv ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

(Opcional) Adicione o caminho $HOME/bin ao arquivo de inicialização do shell para que eleesteja configurado quando você abrir um shell.

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

Note

Essa etapa pressupõe que você esteja usando o shell Bash. Se você estiver usandooutro shell, altere o comando para usar o arquivo de inicialização do shell.

5. Após instalar o kubectl, você pode verificar a versão com o seguinte comando:

8

Page 17: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCrie o seu Amazon EKS cluster e calcular

kubectl version --short --client

Windows

Para instalar o kubectl no Windows

1. Abra um terminal do PowerShell.2. Faça o download do binário kubectl fornecido pelo Amazon EKS.

curl -o kubectl.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/windows/amd64/kubectl.exe

3. (Opcional) Verifique o binário baixado com a soma SHA-256.

a. Faça o download da soma SHA-256.

curl -o kubectl.exe.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/windows/amd64/kubectl.exe.sha256

b. Verifique a soma SHA-256.

Get-FileHash kubectl.exe

c. Compare a soma de SHA-256 gerada na saída do comando com o seu arquivo SHA-256baixado. Os dois devem corresponder, embora a saída do PowerShell tenha letrasmaiúsculas.

4. Copie o binário para uma pasta no seu PATH. Se tiver um directório existente no seu PATH queutiliza para utilitários de linha de comandos, copie o binário para esse directório. Caso contrário,execute as etapas a seguir.

a. Crie um novo diretório para os binários de linha de comando, como C:\bin.b. Copie o binário kubectl.exe no seu novo diretório.c. Edite a variável de ambiente PATH do sistema ou usuário para adicionar o novo diretório ao

PATH.d. Feche o terminal do PowerShell e abra um novo para escolher a nova variável PATH.

5. Após instalar o kubectl, você pode verificar a versão com o seguinte comando:

kubectl version --short --client

Crie o seu Amazon EKS cluster e calcularEsta secção ajuda-o a criar uma Amazon EKS cluster com uma opção de cálculo para executar as suasaplicações. A versão mais recente do Kubernetes disponível no Amazon EKS é instalada para que vocêpossa aproveitar os recursos mais recentes do Amazon EKS e do Kubernetes. Alguns recursos não estãodisponíveis nas versões antigas do Kubernetes.

Important

Certifique-se de que o endpoint do AWS Security Token Service (STS) da região em que ocluster está localizado esteja habilitado para sua conta. Se o parâmetro de avaliação nãoestiver activado, os nós irão não aderir ao grupo durante a criação do cluster. Para obter maisinformações, consulte Ativar e desativar o AWS STS em uma região da AWS.

9

Page 18: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCrie o seu Amazon EKS cluster e calcular

Como criar o cluster com o eksctl

1. Escolha um separador abaixo que corresponda melhor aos seus requisitos de cálculo. Emborao procedimento seguinte crie um grupo com uma opção de cálculo, pode adicionar qualqueroutra opção depois de o seu cluster ser criado. Para saber mais sobre cada opção, consulteComputação (p. 89). Se quiser criar um grupo que só executa aplicações Linux em AWS Fargate,depois escolha AWS Fargate – Linux. Se pretender executar aplicações Linux em Amazon EC2 e, emseguida, escolha Nós geridos – Linux. Se quiser executar aplicações Windows em Amazon EC2 e, emseguida, escolha Nós autogerido – Janelas.

AWS Fargate – Linux

Note

Só pode utilizar AWS Fargate com Amazon EKS em algumas regiões. Antes deutilizar Fargate com Amazon EKS, certifique-se de que a região que pretende utilizar ésuportada. Para obter mais informações, consulte the section called “Conceitos básicosdo Fargate” (p. 120).

Crie o cluster do Amazon EKS compatível com o Fargate usando o comando a seguir. Podesubstituir prod com o seu próprio valor e pode substituir us-west-2 com qualquer Amazon EKSFargate Região suportada (p. 118).

Recomendamos que você implante a versão . 1.17. Se tiver de implementar uma versão anterior,só pode substituí-la com a versão 1.16 ou 1.15. Se mudar 1.17, depois leia o importanteAmazon EKS notas de lançamento (p. 61) para a versão e instalar a versão correspondente dekubectl (p. 233).

eksctl create cluster \--name prod \--version 1.17 \--region us-west-2 \--fargate

O seu novo Amazon EKS o cluster é criado sem um grupo de nó. Eksctl cria uma função deexecução do grupo, uma Fargate perfil (p. 124) para o default e kube-system namescules,e o coredns para que possa ser executado Fargate. Para obter mais informações, consulte AWSFargate (p. 118).

Managed nodes – Linux

Crie o seu Amazon EKS cluster e os nós Linux com o seguinte comando. Substitua o exemplovalues com os seus próprios valores. Pode substituir , us-west-2 com qualquer Amazon EKSRegião suportada.

Important

Os nós do Amazon EKS são instâncias padrão do Amazon EC2, e você é cobrado poreles com base nos preços normais de instâncias do Amazon EC2. Para obter maisinformações, consulte Definição de preço do Amazon EC2.

Recomendamos que você implante a versão . 1.17. Se tiver de implementar uma versão anterior,só pode substituí-la com a versão 1.16 ou 1.15. Se mudar 1.17, depois leia o importanteAmazon EKS notas de lançamento (p. 61) para a versão e instalar a versão correspondente dekubectl (p. 233).

Embora --ssh-public-key seja opcional, é altamente recomendável que você o especifiqueao criar seu grupo de nós com um cluster. Essa opção habilita o acesso SSH aos nós no grupo denós gerenciados. Habilitar o acesso SSH permite que você se conecte às suas instâncias e reúnainformações de diagnóstico quando houver problemas. Não é possível ativá-lo depois que o grupo

10

Page 19: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCrie o seu Amazon EKS cluster e calcular

estiver criado. Se não tiver uma chave pública, pode criar um par de teclas para Amazon EC2 edepois recuperar a chave pública para o par de chaves especificar para --ssh-public-key.Certifique-se de que cria a chave na mesma região em que cria o grupo em.

eksctl create cluster \--name prod \--version 1.17 \--region us-west-2 \--nodegroup-name linux-nodes \--node-type t3.medium \--nodes 3 \--nodes-min 1 \--nodes-max 4 \--ssh-access \--ssh-public-key my-public-key.pub \--managed

Resultado

Verá várias linhas de saída à medida que o cluster e os nós são criados. A última linha de saída ésemelhante ao exemplo de linha a seguir.

[✓] EKS cluster "prod" in "us-west-2" region is ready

Note

Se os nós não conseguirem juntar-se ao cluster, consulte ??? (p. 321) no guia deSolução de problemas.

Self-managed nodes – Windows

Familiarize-se com as considerações (p. 70) de suporte do Windows, que incluem valoressuportados para instanceType no texto de exemplo abaixo. Substitua o exemplo values comos seus próprios valores.

Recomendamos que você implante a versão . 1.17. Se tiver de implementar uma versão anterior,só pode substituí-la com a versão 1.16 ou 1.15. Se mudar 1.17, depois leia o importanteAmazon EKS notas de lançamento (p. 61) para a versão e instalar a versão correspondente dekubectl (p. 233).

Important

Os nós do Amazon EKS são instâncias padrão do Amazon EC2, e você é cobrado poreles com base nos preços normais de instâncias do Amazon EC2. Para obter maisinformações, consulte Definição de preço do Amazon EC2.

Guarde o texto abaixo para um ficheiro nomeado cluster-spec.yaml. O ficheiro deconfiguração é utilizado para criar um grupo com um grupo de nó Windows auto-gerido e umgrupo de nó Linux gerido. Mesmo que apenas queira executar aplicações Windows no seu grupo,todos Amazon EKS os clusters devem conter pelo menos um nó Linux, embora recomendamosque crie pelo menos dois nós Linux para fins de disponibilidade.

---apiVersion: eksctl.io/v1alpha5kind: ClusterConfig

metadata: name: windows-prod region: us-west-2 version: '1.17'

11

Page 20: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCrie o seu Amazon EKS cluster e calcular

managedNodeGroups: - name: linux-ng instanceType: t2.large minSize: 2

nodeGroups: - name: windows-ng instanceType: m5.large minSize: 2 volumeSize: 100 amiFamily: WindowsServer2019FullContainer

Crie o seu Amazon EKS cluster e os nós Windows e Linux com o seguinte comando.

eksctl create cluster -f cluster-spec.yaml --install-vpc-controllers

Note

Para mais informações sobre as opções disponíveis para eksctl create cluster, consulte oprojeto LEIAME em github ou consulte a página de ajuda com o comando seguinte.

eksctl create cluster --help

Resultado

Verá várias linhas de saída à medida que o cluster e os nós são criados. A última linha de saída ésemelhante ao exemplo de linha a seguir.

[✓] EKS cluster "windows-prod" in "region-code" region is ready

Note

Se os nós não conseguirem juntar-se ao cluster, consulte ??? (p. 321) no guia deSolução de problemas.

2. O provisionamento do cluster normalmente leva entre 10 e 15 minutos. Quando o cluster estiverpronto, teste para ver se a sua configuração do kubectl está correta.

kubectl get svc

Note

Se você receber qualquer erro de autorização ou de tipo de recurso, consulte Unauthorizedor access denied (kubectl) (Não autorizado ou acesso negado (kubectl)) (p. 322) naseção de solução de problemas.

Resultado

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEsvc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

3. (Apenas os nódulos do AMI com aceleração de Linux) Se escolheu um tipo de instância de AMIacelerado e o Amazon EKS-EITH acelerada, então tem de aplicar o Plug-in do dispositivo NVIDIA paraKubernetes como um conjunto de diapositivos no seu grupo com o seguinte comando.

12

Page 21: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPróximas etapas

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.6.0/nvidia-device-plugin.yml

Próximas etapasAgora que tem um trabalho Amazon EKS cluster com nós, está pronto para começar a instalaros suplementos Kubernetes e a implementar aplicações no seu grupo. Os seguintes tópicos dedocumentação ajudam a estender a funcionalidade do seu cluster.

• the section called “Autoscaler do cluster” (p. 54) – Configure o Zoom Automático do Kubernetes paraajustar automaticamente o número de nós nos seus grupos de nó.

• the section called “Expansão da amostra” (p. 204) – Expanda uma aplicação de amostras para testar oseu cluster e os nós Linux.

• Implantar um aplicativo de exemplo do Windows (p. 74) – Expanda uma aplicação de amostras paratestar o seu cluster e nós Windows.

• Gerenciamento de clusters (p. 233) – Saiba como utilizar ferramentas importantes para gerir o seugrupo.

Conceitos básicos do Console de gerenciamento daAWS

Este guia de conceitos básicos ajuda a criar todos os recursos necessários para começar a usar o AmazonEKS no Console de gerenciamento da AWS. Neste guia, você criará manualmente cada recurso nosconsoles do Amazon EKS ou do AWS CloudFormation. No final deste tutorial, terá uma corrida AmazonEKS grupo que pode implementar aplicações para.

Os procedimentos deste guia fornecem visibilidade completa sobre como cada recurso é criado e comoos recursos interagem entre si. Se preferir ter a maioria dos recursos criados automaticamente, utilize oeksctl CLI para criar o seu cluster e nós. Para obter mais informações, consulte Conceitos básicos deeksctl (p. 3).

PrerequisitesEsta seção ajuda você a instalar e configurar as ferramentas e os recursos necessários para criar egerenciar um cluster do Amazon EKS.

Instalar o AWS CLIPara instalar a versão mais recente da AWS CLI, escolha a guia com o nome do sistema operacional emque você deseja instalar a AWS CLI.

macOS

Se a AWS CLI estiver instalada, determine qual versão você instalou.

aws --version

Se você não tiver a versão 1.18.110 ou posterior, ou a versão 2.0.36 ou posterior instalada, instalea AWS CLI versão 2. Para obter outras opções de instalação, ou para atualizar a versão 2 instaladaatualmente, consulte Atualizar a CLI da AWS versão 2 no macOS.

13

Page 22: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"sudo installer -pkg AWSCLIV2.pkg -target /

Se não conseguir usar a AWS CLI versão 2, verifique se você tem a versão mais recente da AWS CLIversão 1 instalada usando o comando a seguir.

pip3 install awscli --upgrade --user

Linux

Se a AWS CLI estiver instalada, determine qual versão você instalou.

aws --version

Se você não tiver a versão 1.18.110 ou posterior, ou a versão 2.0.36 ou posterior instalada, instalea AWS CLI versão 2. Para obter outras opções de instalação, ou para atualizar a versão 2 instaladaatualmente, consulte Atualizar a CLI da AWS versão 2 no Linux.

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipsudo ./aws/install

Se não conseguir usar a AWS CLI versão 2, verifique se você tem a versão mais recente da AWS CLIversão 1 instalada usando o comando a seguir.

pip3 install --upgrade --user awscli

Windows

Se a AWS CLI estiver instalada, determine qual versão você instalou.

aws --version

Como instalar a AWS CLI versão 2

Se você não tiver a versão 1.18.110 ou posterior ou a versão 2.0.36 ou posterior instalada, instalea AWS CLI versão 2 usando as etapas a seguir. Para obter outras opções de instalação, ou paraatualizar a versão 2 instalada atualmente, consulte Atualizar a CLI da AWS versão 2 no Windows.

1. Faça o download do instalador MSI da CLI da AWS para Windows (64 bits) em https://awscli.amazonaws.com/AWSCLIV2.msi

2. Execute o instalador MSI obtido por download e siga as instruções na tela. Por padrão, a AWSCLI é instalada em C:\Program Files\Amazon\AWSCLIV2.

Se não conseguir usar a AWS CLI versão 2, verifique se você tem a versão mais recente da AWS CLIversão 1 instalada usando o comando a seguir.

pip3 install --user --upgrade awscli

Configurar as credenciais da AWS CLIA AWS CLI requer que você tenha credenciais da AWS configuradas no seu ambiente. O comando awsconfigure é a maneira mais rápida de configurar sua instalação da AWS CLI para uso geral.

14

Page 23: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

$ aws configureAWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLEAWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYDefault region name [None]: region-codeDefault output format [None]: json

Quando escrever este comando, o AWS CLI pede-lhe quatro informações: access key, secretaccess key, AWS Region, e output format. Esta informação é guardada num perfil (uma coleção dedefinições) nomeada default. Este perfil é utilizado quando executa comandos, a menos que especifiqueoutro.

Para obter mais informações, consulte Configurar a AWS CLI no Guia do usuário do AWS Command LineInterface.

Instalar e configurar kubectlO Kubernetes usa um utilitário de linha de comando chamado kubectl para se comunicar com o servidorda API do cluster.

Para instalar a versão 1.17 do utilitário de linha de comando kubectl, escolha a guia com o nome dosistema operacional em que você deseja instalar kubectl. Se você precisar instalar uma versão diferentepara usar com uma versão de cluster diferente, consulte ??? (p. 233).

macOS

Para instalar o kubectl no MacOS

1. Faça o download do binário kubectl fornecido pelo Amazon EKS.

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/darwin/amd64/kubectl

2. (Opcional) Verifique o binário baixado com a soma SHA-256.

a. Faça o download da soma SHA-256.

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/darwin/amd64/kubectl.sha256

b. Verifique a soma SHA-256.

openssl sha1 -sha256 kubectl

c. Compare a soma de SHA-256 gerada na saída do comando com o seu arquivo SHA-256baixado. Os dois devem corresponder.

3. Aplique permissões de execução ao binário.

chmod +x ./kubectl

4. Mover kubectl para uma pasta que está no seu caminho.

• Se ainda não tiver uma versão de kubectl instalado e, em seguida, mova o binário para umapasta que já está na sua PATH.

sudo mv ./kubectl /usr/local/bin

15

Page 24: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

• Se já tiver uma versão de kubectl instalado, recomendamos que crie uma $HOME/bin/kubectl , mover o binário para essa pasta e garantir que $HOME/bin vem primeiro no seu$PATH.

mkdir -p $HOME/bin && mv ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

(Opcional) Adicione o caminho $HOME/bin ao arquivo de inicialização do shell para que eleesteja configurado quando você abrir um shell.

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

5. Após instalar o kubectl, você pode verificar a versão com o seguinte comando:

kubectl version --short --client

Linux

Para instalar o kubectl no Linux

1. Faça o download do binário kubectl fornecido pelo Amazon EKS.

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/kubectl

2. (Opcional) Verifique o binário baixado com a soma SHA-256.

a. Faça o download da soma SHA-256.

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/kubectl.sha256

b. Verifique a soma SHA-256.

openssl sha1 -sha256 kubectl

c. Compare a soma de SHA-256 gerada na saída do comando com o seu arquivo SHA-256baixado. Os dois devem corresponder.

3. Aplique permissões de execução ao binário.

chmod +x ./kubectl

4. Mover kubectl para uma pasta que está no seu caminho.

• Se ainda não tiver uma versão de kubectl instalado e, em seguida, mova o binário para umapasta no seu PATH.

sudo mv ./kubectl /usr/local/bin

• Se já tiver uma versão de kubectl instalado, recomendamos que crie uma $HOME/bin/kubectl , mover o binário para essa pasta e garantir que $HOME/bin vem primeiro no seu$PATH.

mkdir -p $HOME/bin && mv ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

16

Page 25: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

(Opcional) Adicione o caminho $HOME/bin ao arquivo de inicialização do shell para que eleesteja configurado quando você abrir um shell.

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

Note

Essa etapa pressupõe que você esteja usando o shell Bash. Se você estiver usandooutro shell, altere o comando para usar o arquivo de inicialização do shell.

5. Após instalar o kubectl, você pode verificar a versão com o seguinte comando:

kubectl version --short --client

Windows

Para instalar o kubectl no Windows

1. Abra um terminal do PowerShell.2. Faça o download do binário kubectl fornecido pelo Amazon EKS.

curl -o kubectl.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/windows/amd64/kubectl.exe

3. (Opcional) Verifique o binário baixado com a soma SHA-256.

a. Faça o download da soma SHA-256.

curl -o kubectl.exe.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/windows/amd64/kubectl.exe.sha256

b. Verifique a soma SHA-256.

Get-FileHash kubectl.exe

c. Compare a soma de SHA-256 gerada na saída do comando com o seu arquivo SHA-256baixado. Os dois devem corresponder, embora a saída do PowerShell tenha letrasmaiúsculas.

4. Copie o binário para uma pasta no seu PATH. Se tiver um directório existente no seu PATH queutiliza para utilitários de linha de comandos, copie o binário para esse directório. Caso contrário,execute as etapas a seguir.

a. Crie um novo diretório para os binários de linha de comando, como C:\bin.b. Copie o binário kubectl.exe no seu novo diretório.c. Edite a variável de ambiente PATH do sistema ou usuário para adicionar o novo diretório ao

PATH.d. Feche o terminal do PowerShell e abra um novo para escolher a nova variável PATH.

5. Após instalar o kubectl, você pode verificar a versão com o seguinte comando:

kubectl version --short --client

17

Page 26: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

Criar a função do IAM do cluster do Amazon EKSVocê pode criar a função usando o Console de gerenciamento da AWS ou o AWS CloudFormation.Selecione a guia com o nome da ferramenta que gostaria de usar para criar a função.

Console de gerenciamento da AWS

Como criar a função do cluster do Amazon EKS no console do IAM

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. Escolha Roles (Funções) e, em seguida, Create Role (Criar função).3. Escolha EKS na lista de serviços e, depois, EKS - Cluster para o caso de uso, e escolha Next:

Permissions (Próximo: Permissões).4. Escolha Next: Tags (Próximo: tags).5. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter

mais informações sobre como usar tags no IAM, consulte Marcar entidades do IAM no Guia dousuário do IAM.

6. Selecione Next: Review.7. Em Role name (Nome da função), insira um nome exclusivo para a função, como

eksClusterRole, e selecione Create role (Criar função).

AWS CloudFormation

Como criar a função do cluster do Amazon EKS com o AWS CloudFormation

1. Salve o modelo do AWS CloudFormation a seguir em um arquivo de texto no sistema local.

---AWSTemplateFormatVersion: '2010-09-09'Description: 'Amazon EKS Cluster Role'

Resources:

eksClusterRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - eks.amazonaws.com Action: - sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy

Outputs:

RoleArn: Description: The role that Amazon EKS will use to create AWS resources for Kubernetes clusters Value: !GetAtt eksClusterRole.Arn Export: Name: !Sub "${AWS::StackName}-RoleArn"

18

Page 27: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

Note

Antes de 16 de abril de 2020, ManagedPolicyArns tinha uma entrada paraarn:aws:iam::aws:policy/AmazonEKSServicePolicy. Com a função vinculadaao serviço AWSServiceRoleForAmazonEKS, essa política não é mais necessária.

2. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.3. Selecione Create stack.4. Para Specify template (Especificar modelo), selecione Upload a template file (Fazer upload de um

arquivo de modelo) e depois Choose file (Escolher arquivo).5. Selecione o arquivo que você criou anteriormente e, em seguida, selecione Next (Próximo).6. Em Stack name (Nome da pilha), insira um nome para a função, como eksClusterRole, e

selecione Next (Próximo).7. Na página Configure stack options (Configurar opções de pilha), selecione Next (Próximo).8. Na página Review (Revisão), revise as informações, confirme se a pilha pode criar recursos do

IAM e selecione Create stack (Criar pilha).

Criar a VPC do cluster do Amazon EKSEsta seção oferece orientação para a criação de uma VPC com duas sub-redes públicas e duas sub-redesprivadas ou uma VPC com três sub-redes públicas.

Ao criar um cluster do Amazon EKS, especifique as sub-redes da VPC que o cluster deve usar. O AmazonEKS exige sub-redes em pelo menos duas Zona de disponibilidades. Recomendamos uma VPC com sub-redes públicas e privadas a fim de que o Kubernetes possa criar load balancers públicos nas sub-redespúblicas que fazem o balanceamento de carga do tráfego para pods em execução em nós em sub-redesprivadas.

Para obter mais informações sobre ambos os tipos de VPC, consulte ??? (p. 168).

Escolha a guia abaixo que representa sua configuração de VPC desejada.

Public and private subnets

Como criar sua VPC de cluster com sub-redes públicas e privadas

1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.2. Na barra de navegação, selecione uma região que seja compatível com o Amazon EKS.3. Selecione Create stack.4. Em Choose a template (Escolher um modelo), selecione Specify an Amazon S3 template URL

(Especificar o URL de um modelo do Amazon S3).5. Cole a seguinte URL na área de texto e selecione Next (Próximo):

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-vpc-private-subnets.yaml

6. Na página Specify Details (Especificar detalhes), preencha os parâmetros conforme necessário e,em seguida, escolha Next (Próximo).

• Nome da stack Escolha um nome de pilha para o seu AWS CloudFormation pilha. Por exemplo,você pode chamá-la de eks-vpc.

• vpcblock: Escolha uma gama CIDR para o seu VPC. Cada nó de operador, pod e loadbalancer implantado recebe um endereço IP desse bloco. O valor padrão fornece endereçosIP suficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-

19

Page 28: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

lo. Para obter mais informações, consulte Dimensionamento da VPC e da sub-rede no Guia dousuário da Amazon VPC. Você também pode adicionar blocos CIDR extras à VPC depois queela for criada.

• sub-rede01Bloco: Especifique um bloco CIDR para sub-rede pública 1. O valor padrão forneceendereços IP suficientes para a maioria das implementações, mas, se não fornecer, vocêpoderá alterá-lo

• subnet02Bloco: Especifique um bloco CIDR para sub-rede pública 2. O valor padrão forneceendereços IP suficientes para a maioria das implementações, mas, se não fornecer, vocêpoderá alterá-lo

• sub-rede privatesub01Bloco: Especifique um bloco CIDR para sub-rede privada 1. O valorpadrão fornece endereços IP suficientes para a maioria das implementações, mas, se nãofornecer, você poderá alterá-lo

• sub-rede privatesubnet02Bloco: Especifique um bloco CIDR para subnet privado 2. O valorpadrão fornece endereços IP suficientes para a maioria das implementações, mas, se nãofornecer, você poderá alterá-lo

7. (Opcional) Na página Options (Opções), marque os recursos da pilha. Selecione Next (Próximo).8. Na página Revisão, selecione Criar.9. Quando a pilha estiver criada, selecione-a no console e escolha Outputs (Saídas).10. Registre o valor de SecurityGroups para o security group criado. Quando adiciona nós ao seu

grupo, tem de especificar a ID do grupo de segurança. O grupo de segurança é aplicado àsinterfaces de rede elástica de conta cruzada que são criadas nas suas sub-redes que permitemao Amazon EKS plano de controlo para comunicar com os seus nós.

11. Registre o VpcId para a VPC que foi criada. Precisa disto quando iniciar o seu modelo de grupode nó.

12. Registre os SubnetIds para as sub-redes que foram criadas e se você as criou como sub-redespúblicas ou privadas. Quando adiciona nós ao seu cluster, tem de especificar as identificaçõesdas subredes que pretende lançar os nós para.

Only public subnets

Para criar sua VPC do cluster apenas com sub-redes públicas

1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.2. Na barra de navegação, selecione uma região que seja compatível com o Amazon EKS.3. Selecione Create stack.4. Em Choose a template (Escolher um modelo), selecione Specify an Amazon S3 template URL

(Especificar o URL de um modelo do Amazon S3).5. Cole a seguinte URL na área de texto e selecione Next (Próximo):

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-vpc-sample.yaml

6. Na página Specify Details (Especificar detalhes), preencha os parâmetros conforme necessário e,em seguida, escolha Next (Próximo).

• Nome da stack Escolha um nome de pilha para o seu AWS CloudFormation pilha. Por exemplo,você pode chamá-la de eks-vpc.

• vpcblock: Escolha um bloco CIDR para o seu VPC. Cada nó de operador, pod e load balancerimplantado recebe um endereço IP desse bloco. O valor padrão fornece endereços IPsuficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo.Para obter mais informações, consulte Dimensionamento da VPC e da sub-rede no Guia dousuário da Amazon VPC. Você também pode adicionar blocos CIDR extras à VPC depois queela for criada.

20

Page 29: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

• Subnet01Bloco: Especifique um bloco CIDR para sub-rede 1. O valor padrão fornece endereçosIP suficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo

• Subnet02Bloco: Especifique um bloco CIDR para subrede 2. O valor padrão fornece endereçosIP suficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo

• Subnet03Bloco: Especifique um bloco CIDR para subnet 3. O valor padrão fornece endereçosIP suficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo

7. (Opcional) Na página Options (Opções), marque os recursos da pilha. Selecione Next (Próximo).8. Na página Revisão, selecione Criar.9. Quando a pilha estiver criada, selecione-a no console e escolha Outputs (Saídas).10. Registre o valor de SecurityGroups para o security group criado. Quando adiciona nós ao seu

grupo, tem de especificar a ID do grupo de segurança. O grupo de segurança é aplicado àsinterfaces de rede elástica de conta cruzada que são criadas nas suas sub-redes que permitemao Amazon EKS plano de controlo para comunicar com os seus nós.

11. Registre o VpcId para a VPC que foi criada. Precisa disto quando iniciar o seu modelo de grupode nó.

12. Registre os SubnetIds para as sub-redes que foram criadas. Quando adiciona nós ao seu cluster,tem de especificar as identificações das subredes que pretende lançar os nós para.

Only private subnets

Como criar sua VPC do cluster apenas com sub-redes privadas

1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.2. Na barra de navegação, selecione uma região que seja compatível com o Amazon EKS.3. Selecione Create stack.4. Em Choose a template (Escolher um modelo), selecione Specify an Amazon S3 template URL

(Especificar o URL de um modelo do Amazon S3).5. Cole a seguinte URL na área de texto e selecione Next (Próximo):

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-fully-private-vpc.yaml

6. Na página Specify Details (Especificar detalhes), preencha os parâmetros conforme necessário e,em seguida, escolha Next (Próximo).

• Nome da stack Escolha um nome de pilha para o seu AWS CloudFormation pilha. Por exemplo,você pode chamá-la de eks-vpc.

• vpcblock: Escolha um bloco CIDR para o seu VPC. Cada nó de operador, pod e load balancerimplantado recebe um endereço IP desse bloco. O valor padrão fornece endereços IPsuficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo.Para obter mais informações, consulte Dimensionamento da VPC e da sub-rede no Guia dousuário da Amazon VPC. Você também pode adicionar blocos CIDR extras à VPC depois queela for criada.

• sub-rede privatesub01Bloco: Especifique um bloco CIDR para sub-rede 1. O valor padrãofornece endereços IP suficientes para a maioria das implementações, mas, se não fornecer,você poderá alterá-lo

• sub-rede privatesubnet02Bloco: Especifique um bloco CIDR para subrede 2. O valor padrãofornece endereços IP suficientes para a maioria das implementações, mas, se não fornecer,você poderá alterá-lo

• privatóriosubnet03Bloco: Especifique um bloco CIDR para subnet 3. O valor padrão forneceendereços IP suficientes para a maioria das implementações, mas, se não fornecer, vocêpoderá alterá-lo

21

Page 30: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 1 Crie o seu Amazon EKS cluster

7. (Opcional) Na página Options (Opções), marque os recursos da pilha. Selecione Next (Próximo).8. Na página Revisão, selecione Criar.9. Quando a pilha estiver criada, selecione-a no console e escolha Outputs (Saídas).10. Registre o valor de SecurityGroups para o security group criado. Quando adiciona nós ao seu

grupo, tem de especificar a ID do grupo de segurança. O grupo de segurança é aplicado àsinterfaces de rede elástica de conta cruzada que são criadas nas suas sub-redes que permitemao Amazon EKS plano de controlo para comunicar com os seus nós.

11. Registre o VpcId para a VPC que foi criada. Precisa disto quando iniciar o seu modelo de grupode nó.

12. Registre os SubnetIds para as sub-redes que foram criadas. Quando adiciona nós ao seu cluster,tem de especificar as identificações das subredes que pretende lançar os nós para.

Etapa 1 Crie o seu Amazon EKS clusterEsta seção ajuda você a criar um cluster do Amazon EKS. A versão mais recente do Kubernetesdisponível no Amazon EKS é instalada para que você possa aproveitar os recursos mais recentes doAmazon EKS e do Kubernetes. Alguns recursos não estão disponíveis nas versões antigas do Kubernetes.

Important

Quando um cluster do Amazon EKS é criado, a entidade (usuário ou função) do IAM que cria ocluster é adicionada à tabela de autorização de RBAC do Kubernetes como o administrador (compermissões system:masters). Inicialmente, somente o usuário do IAM pode fazer chamadaspara o servidor da API do Kubernetes usando kubectl. Para obter mais informações, consulteGerenciar usuários ou funções do IAM para o cluster (p. 229). Se usar o console para criar ocluster, você deverá verificar se as mesmas credenciais de usuário do IAM estão na cadeia decredenciais do SDK da AWS ao executar os comandos kubectl no cluster.Se instalar e configurar a AWS CLI, você poderá configurar as credenciais do IAM para o usuário.Se a AWS CLI versão 1.16.156 ou posterior estiver configurada corretamente para o usuário,eksctl poderá encontrar essas credenciais. Para obter mais informações, consulte Configurar aAWS CLI no Guia do usuário do AWS Command Line Interface. Se você não conseguir instalar aAWS CLI versão 1.16.156 ou posterior, instale a aws-iam-authenticator.

Para criar seu cluster com o console

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Escolha Create cluster.

Note

Se o usuário do IAM não tiver privilégios administrativos, você deverá adicionar permissõesexplicitamente para que esse usuário chame as operações de API do Amazon EKS. Paraobter mais informações, consulte Exemplos de políticas baseadas em identidade do AmazonEKS (p. 262).

3. Na página Configure cluster (Configurar cluster), preencha os seguintes campos:

• Name (Nome) – um nome exclusivo para o cluster.• Kubernetes version (Versão do Kubernetes) – a versão do Kubernetes a ser usada para o cluster.• Cluster service role (Função de serviço do cluster) – selecione a função do IAM criada com Criar a

função do IAM do cluster do Amazon EKS (p. 18).• Secrets encryption (Criptografia de segredos) – (Opcional) Escolha habilitar a criptografia de

envelope dos segredos do Kubernetes usando o AWS Key Management Service (AWS KMS). Sevocê habilitar a criptografia de envelope, os segredos do Kubernetes serão criptografados usandoa chave mestra do cliente (CMK) selecionada. A CMK deve ser simétrica, criada na mesma região

22

Page 31: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 1 Crie o seu Amazon EKS cluster

que o cluster, se a CMK foi criada em uma conta diferente, o usuário deverá ter acesso à CMK.Para obter mais informações, consulte Permitir que usuários de outras contas usem uma CMK noGuia do desenvolvedor do AWS Key Management Service.

A criptografia de segredos do Kubernetes com uma CMK do AWS KMS requer o Kubernetes versão1.13 ou posterior. Se nenhuma chave estiver listada, primeiro você deve criar uma. Para obter maisinformações, consulte Criação de chaves.

• Tags – (opcional) adicione todas as tags ao cluster. Para obter mais informações, consulte Marcaros recursos do Amazon EKS (p. 248).

4. Selecione Next (Próximo).5. Na página Specify networking (Especificar rede), selecione valores para os seguintes campos:

• VPC – a VPC criada anteriormente em the section called “Criar a VPC do cluster do AmazonEKS” (p. 19). Você pode encontrar o nome da VPC na lista suspensa.

• Subnets (Sub-redes) – por padrão, as sub-redes disponíveis na VPC especificada no campo anteriorsão pré-selecionadas. Selecione uma sub-rede na qual você não deseje hospedar recursos decluster, como nós de operador ou load balancers.

• Security Groups (Grupos de segurança) – o valor de SecurityGroups na saída do AWSCloudFormation que você gerou com Criar a VPC do cluster do Amazon EKS (p. 19). Esse grupode segurança tem ControlPlaneSecurityGroup no nome da lista suspensa.

Important

O modelo de nó do AWS CloudFormation modifica o grupo de segurança especificadopor você aqui. Por isso, o Amazon EKS recomenda que você use um grupo de segurançadedicado para cada plano de controle de cluster (um por cluster). Se esse grupo desegurança for compartilhado com outros recursos, você poderá bloquear ou interromper asconexões a esses recursos.

• Em Cluster endpoint access (Acesso ao endpoint do cluster) – escolha uma das seguintes opções:• Public (Público) – permite apenas o acesso público ao endpoint do cluster de servidor da API

do Kubernetes. As solicitações de API do Kubernetes originadas de fora da VPC do clusterusarão o endpoint público. Por padrão, o acesso é permitido a partir de qualquer endereço IP deorigem. Opcionalmente, é possível restringir o acesso a um ou mais intervalos de CIDR, como192.168.0.0/16, por exemplo, selecionando Advanced settings (Configurações avançadas) e Addsource (Adicionar origem).

• Private (Privado) – permite apenas o acesso privado ao endpoint do cluster de servidor da API doKubernetes. As solicitações de API do Kubernetes originadas de dentro da VPC do cluster usarãoo VPC endpoint privado.

Important

If you created a VPC without outbound internet access, then you must enable privateaccess.

• Public and private (Público e privado) – permite acesso público e privado.

Para obter mais informações sobre as opções anteriores, consulte ??? (p. 49).6. Selecione Next (Próximo).7. Na página Configure logging (Configurar registro em log), também é possível escolher quais tipos de

log você deseja habilitar. Por padrão, cada tipo de log está Disabled (Desabilitado). Para obter maisinformações, consulte Registro em log do plano de controle do Amazon EKS (p. 58).

8. Selecione Next (Próximo).9. Na página Review and create (Revisar e criar), revise as informações que você inseriu ou selecionou

nas páginas anteriores. Selecione Edit (Editar) se precisar fazer alterações em uma das suasseleções. Quando estiver satisfeito com suas configurações, selecione Create (Criar). O campo Statusmostra CREATING (CRIANDO) até que o processo de provisionamento do cluster esteja concluído.

23

Page 32: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Crie um arquivo kubeconfig.

Note

Talvez você receba um erro porque uma das Zona de disponibilidades em sua solicitação nãotem capacidade suficiente para criar um cluster do Amazon EKS. Se isso acontecer, a saídado erro conterá as Zona de disponibilidades que são compatíveis com o novo cluster. Tentecriar novamente o cluster com pelo menos duas sub-redes que estejam localizadas nas Zonade disponibilidades compatíveis com a sua conta. Para obter mais informações, consulteInsufficient capacity (Capacidade insuficiente) (p. 321).

Quando o provisionamento do cluster for concluído (normalmente entre 10 e 15 minutos), anote osvalores de API server endpoint (Endpoint do servidor de API) e de Certificate authority (Autoridade decertificação). Esses valores são usados na configuração do kubectl.

Etapa 2. Crie um arquivo kubeconfig.Nesta seção, você cria um arquivo kubeconfig para o cluster com o comando update-kubeconfig daAWS CLI.

Para criar o arquivo kubeconfig com a AWS CLI

1. Use o comando update-kubeconfig da AWS CLI para criar ou atualizar um kubeconfig para ocluster.

• Por padrão, o arquivo de configuração resultante é criado no caminho kubeconfig padrão (.kube/config) em seu diretório inicial ou mesclado com um kubeconfig existente nesse local. Você podeespecificar outro caminho com a opção --kubeconfig.

• Você pode especificar um ARN de função do IAM com a opção --role-arn para uso paraautenticação quando você emitir comandos kubectl. Caso contrário, a entidade do IAM na AWS CLIou na cadeia de credenciais padrão do SDK é usada. Você pode visualizar sua identidade padrãoda AWS CLI ou do SDK executando o comando aws sts get-caller-identity.

• Para obter mais informações, consulte a página de ajuda com o comando aws eks update-kubeconfig help ou consulte update-kubeconfig no AWS CLI Command Reference.

Note

Para executar o comando a seguir, você deve ter permissão para usar a ação da APIeks:DescribeCluster com o cluster especificado. Para obter mais informações, consulteExemplos de políticas baseadas em identidade do Amazon EKS (p. 262).

aws eks --region us-west-2 update-kubeconfig --name cluster_name

2. Teste a configuração.

kubectl get svc

Note

Se você receber qualquer erro de autorização ou de tipo de recurso, consulte Unauthorizedor access denied (kubectl) (Não autorizado ou acesso negado (kubectl)) (p. 322) naseção de solução de problemas.

Resultado

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

24

Page 33: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 3 Criar cálculo

svc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

Etapa 3 Criar cálculoEscolha um separador abaixo que corresponda melhor aos seus requisitos de cálculo. Embora oprocedimento seguinte crie um grupo com uma opção de cálculo, pode adicionar qualquer outra opçãodepois de o seu cluster ser criado. Para saber mais sobre cada opção, consulte Computação (p. 89).Se quiser criar um grupo que só executa aplicações Linux em AWS Fargate, depois escolha AWS Fargate– Linux. Se pretender executar aplicações Linux em Amazon EC2 e, em seguida, escolha Nós geridos –Linux. Se quiser executar aplicações Windows em Amazon EC2 e, em seguida, escolha Nós geridos –Linux, conclua o procedimento e adicione suporte Windows no final do procedimento.

AWS Fargate – Linux

Note

Só pode utilizar AWS Fargate com Amazon EKS em algumas regiões. Antes deutilizar Fargate com Amazon EKS, certifique-se de que a região que pretende utilizar ésuportada. Para obter mais informações, consulte the section called “Conceitos básicos doFargate” (p. 120).

Antes de criar um AWS Fargate perfil, tem de criar uma Fargate função de execução de uso parautilizar o seu perfil.

Para criar um AWS Fargate função de execução com o Console de gerenciamento da AWS

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. Escolha Roles (Funções) e, em seguida, Create Role (Criar função).3. Escolher EKS da lista de serviços, EKS - Fargate cobertura para o seu caso de utilização, e

depois Seguinte: Permissões4. Selecione Next (Próximo). Tags5. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter

mais informações sobre como usar tags no IAM, consulte Marcar entidades do IAM no Guia dousuário do IAM.

6. Selecione Next (Próximo). Review (Revisar)7. Em Role name (Nome da função), insira um nome exclusivo para a função, como

AmazonEKSFargatePodExecutionRole, e selecione Create role (Criar função).

Pode agora criar o Fargate perfil, especificando o IAM função criada.

Como criar um perfil do Fargate para um cluster com o Console de gerenciamento da AWS

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Escolha o cluster para o qual deve ser criado um perfil do Fargate.3. Em Fargate profiles (Perfis do Fargate), selecione Add Fargate profile (Adicionar perfil do

Fargate).4. Na página Configure Fargate profile (Configurar perfil do Fargate), insira as informações a seguir

e selecione Next (Próximo).

a. Em Name (Nome), insira um nome exclusivo para o perfil do Fargate.b. Em Pod execution role (Função de execução de pod), escolha a função de execução de

pod que deve ser usada com o perfil do Fargate. Somente funções do IAM com o principalde serviço eks-fargate-pods.amazonaws.com são mostradas. Se nenhuma função for

25

Page 34: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 3 Criar cálculo

listada aqui, será necessário criar uma. Para obter mais informações, consulte Função deexecução de pod (p. 273).

c. Em Subnets (Sub-redes), escolha as sub-redes que devem ser usadas para os pods.Por padrão, todas as sub-redes na VPC do cluster são selecionadas. Somente sub-redesprivadas são compatíveis com pods em execução no Fargate. É necessário desmarcar todasas sub-redes públicas.

d. Em Tags, é possível marcar o perfil do Fargate. Essas tags não são propagadas para outrosrecursos associados ao perfil, como seus pods.

5. Na página Configure pods selection (Configurar a seleção de pods), insira as informações aseguir e selecione Next (Próximo).

a. Em Namespace, insira um namespace para corresponder aos pods, como kube-system oudefault.

b. (Opcional) Adicione rótulos do Kubernetes ao seletor que os pods no namespaceespecificado devem ter para corresponder ao seletor. Por exemplo, você pode adicionaro rótulo infrastructure: fargate ao seletor para que somente pods no namespaceespecificado que também tenham o rótulo infrastructure: fargate do Kubernetescorrespondam ao seletor.

6. Na página Review and create (Revisar e criar), revise as informações do perfil do Fargate eselecione Create (Criar).

Managed nodes – Linux

O Amazon EKS nó kubelet o daemon faz chamadas para AWS em seu nome. Os nós recebempermissões para estas chamadas API através de um IAM perfil de instância e políticas associadas.Tem de criar um IAM antes de poder iniciar os nós. Para obter mais informações, consulte AmazonEKS nó IAM função (p. 271). Você pode criar a função usando o Console de gerenciamento da AWSou o AWS CloudFormation. Selecione a guia com o nome da ferramenta que gostaria de usar paracriar a função.

Note

Recomendamos que crie um novo nó IAM para cada grupo. Caso contrário, um nó de umcluster poderá autenticar com outro cluster ao qual ele não pertence.

Para criar o seu Amazon EKS função do nó no IAM consola

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. Escolha Roles (Funções) e, em seguida, Create Role (Criar função).3. Escolher EC2 da lista de Casos de utilização comuns abaixo Escolha um caso de utilização,

depois escolha Seguinte: Permissões4. No Filtrar políticas , introduza AmazonEKSWorkerNodePolicy. Assinale a caixa à esquerda de

amazoneksworkernodepolicy.5. No Filtrar políticas , introduza AmazonEKS_CNI_Policy. Assinale a caixa à esquerda de

amazoneks_CNI_Política.6. No Filtrar políticas , introduza AmazonEC2ContainerRegistryReadOnly. Assinale a caixa à

esquerda de novozonec2recipierregiãoapenas.7. Selecione Next (Próximo). Tags8. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter

mais informações sobre como usar tags no IAM, consulte Marcar entidades do IAM no Guia dousuário do IAM.

9. Selecione Next (Próximo). Review (Revisar)10. Para Nome da função, introduza um nome exclusivo para a sua função, como

NodeInstanceRole. Para Descrição da função, substitua o texto atual com texto descritivo,como Amazon EKS - Node Group Role, depois escolha Criar função.

26

Page 35: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 3 Criar cálculo

Agora pode criar um grupo de nó gerido.

Important

Os nós do Amazon EKS são instâncias padrão do Amazon EC2, e você é cobrado por elescom base nos preços normais de instâncias do Amazon EC2. Para obter mais informações,consulte Definição de preço do Amazon EC2.

Para iniciar o seu grupo de nó gerido utilizando o Console de gerenciamento da AWS

1. Aguarde pelo estado do seu cluster para mostrar como ACTIVE. Não pode criar um grupo de nógerido para um grupo que ainda não esteja ACTIVE.

2. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.3. Escolha o nome do cluster em que você deseja criar seu grupo de nós gerenciados.4. Na página do cluster, selecione a guia Computação e escolha Adicionar grupo de nós.5. Na página Configure node group (Configurar o grupo de nós) preencha os parâmetros

adequadamente e escolha Next (Próximo).

• Nome – insira um nome exclusivo para o grupo de nós gerenciados.• Nome da função do IAM do nó – escolha a função da instância do nó a ser usada com o grupo

de nós. Para obter mais informações, consulte Amazon EKS nó IAM função (p. 271).

Important

Recomendamos usar uma função que não esteja atualmente em uso por um grupode nós autogerenciados ou que você queira usar com um novo grupo de nósautogerenciados. Para obter mais informações, consulte ??? (p. 100).

• Sub-redes – escolha as sub-redes para iniciar seus nós gerenciados.

Important

Se você está executando um aplicativo stateful em várias Zona de disponibilidadesbaseadas em volumes do Amazon EBS e usando o Kubernetes Autoscaler docluster (p. 54), deverá configurar vários grupos de nós, cada um delimitado a umaúnica Zona de disponibilidade. Além disso, você deverá ativar o recurso --balance-similar-node-groups.

Important

Se você escolher uma sub-rede pública, ela deverá ter MapPublicIpOnLaunchdefinido como true para que as instâncias possam ingressar com êxito em um cluster.Se a sub-rede foi criada usando eksctl ou os modelos do AWS CloudFormationfornecidos pelo Amazon EKS (p. 168) em ou após 03/26/2020, essa configuraçãojá está definida como true. Se as sub-redes foram criadas com eksctl ou com osmodelos do AWS CloudFormation antes de 03/26/2020, então é necessário alterar aconfiguração manualmente. Para obter mais informações, consulte Modificar o atributode endereçamento IPv4 público para a sub-rede.

• Acesso remoto – (opcional) você pode habilitar o acesso SSH aos nós no seu grupo denós gerenciados. Habilitar o SSH permite que você se conecte às suas instâncias e reúnainformações de diagnóstico quando houver problemas. Siga as instruções abaixo para habilitaro acesso remoto.

Note

É altamente recomendado habilitar o acesso remoto ao criar seu grupo de nós. Não épossível ativá-lo depois que o grupo estiver criado.

1. Marque a caixa de seleção Allow remote access to nodes (Permitir acesso remoto aos nós).27

Page 36: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 3 Criar cálculo

2. Em SSH key pair (Par de chaves SSH), escolha uma chave SSH do Amazon EC2 para usar.Para obter mais informações, consulte Pares de chaves do Amazon EC2 no Guia do usuáriodo Amazon EC2 para instâncias do Linux.

3. Em Allow remote access from (Permitir acesso remoto de), escolha All (Todos) para permitiracesso SSH de qualquer endereço da Internet (0.0.0.0/0), ou selecione um grupo desegurança para permitir o acesso SSH de instâncias que pertençam a ele.

• Tags – (opcional) você pode optar por aplicar tags ao seu grupo de nós gerenciados peloAmazon EKS. Essas tags não se propagam para os outros recursos no grupo de nós, comoinstâncias ou grupos do Auto Scaling. Para obter mais informações, consulte Marcar osrecursos do Amazon EKS (p. 248).

• Rótulos do Kubernetes – (opcional) você pode optar por aplicar rótulos do Kubernetes aos nósno grupo de nós gerenciados.

6. Na página Definir configuração de computação (Set compute configuration), preencha osparâmetros adequadamente e escolha Next (Próximo).

• Tipo de AMI – escolha Amazon Linux 2 (AL2_x86_64) para instâncias que não forem de GPU,ou Amazon Linux 2 GPU Enabled (AL2_x86_64_GPU) para instâncias de GPU.

• Tipo de instância – Escolha o tipo de instância a utilizar no seu grupo de nó gerido. Cada tipode instância do Amazon EC2 oferece suporte a um número máximo de interfaces de redeelásticas (ENIs) e cada ENI oferece suporte a um número máximo de endereços IP. Comocada nó de operador e pod recebe seu próprio endereço IP, é importante escolher um tipo deinstância que ofereça suporte ao número máximo de pods que você deseja executar em cadanó de operador. Para obter uma lista do número de ENIs e endereços IP com suporte, por tipode instância, consulte Endereços IP por interface de rede por tipo de instância. Por exemplo,o tipo de instância t3.medium oferece suporte a um máximo de 18 endereços IP para o nóde operador e os pods. Alguns tipos de instância podem não estar disponíveis em todas asregiões.

• Tamanho do disco – Introduza o tamanho do disco (na gib) para utilizar para o volume de raizdo seu nó.

7. Na página Setup scaling policies (Configurar políticas de escalabilidade) preencha os parâmetrosadequadamente e escolha Next (Próximo).

Note

O Amazon EKS não expande ou diminui automaticamente o grupo de nós. No entanto,você pode configurar o Kubernetes Autoscaler do cluster (p. 54) para fazer isso porvocê.

• Tamanho mínimo – Especifique o número mínimo de nós que o grupo de nó gerido podeescalar para.

• Tamanho máximo – Especifique o número máximo de nós que o grupo de nó gerido podeescalar para.

• Tamanho desejado – Especifique o número atual de nós que o grupo de nó gerido deve manterno lançamento.

8. Na página Review and create (Revisar e criar), reveja a configuração do grupo de nósgerenciados e escolha Create (Criar).

Note

Se os nós não conseguirem juntar-se ao cluster, consulte ??? (p. 321) no guia deSolução de problemas.

9. Observe o status de seus nós e aguarde até que eles atinjam o status Ready.

kubectl get nodes --watch

28

Page 37: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 3 Criar cálculo

10. (Apenas nós GPU) Se escolher um tipo de instância GPU e o Amazon EKS-o AMI aceleradootimizado, então tem de aplicar o Plug-in do dispositivo NVIDIA para Kubernetes como umconjunto de diapositivos no seu grupo com o seguinte comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.6.0/nvidia-device-plugin.yml

11. (Opcional) Implementar uma aplicação Linux de amostras (p. 204) – Expanda uma aplicação deamostras para testar o seu cluster e os nós Linux.

(Opcional) Para iniciar os nós do Windows

Adicione suporte Windows ao seu cluster e inicie os nós do Windows. Para obter mais informações,consulte Suporte ao Windows (p. 70). Todos Amazon EKS os conjuntos têm de conter pelo menos umnó Linux, mesmo que apenas pretenda executar volumes de trabalho Windows no seu grupo.

Próximas etapasAgora que tem um trabalho Amazon EKS cluster com nós, está pronto para começar a instalaros suplementos Kubernetes e a implementar aplicações no seu grupo. Os seguintes tópicos dedocumentação ajudam a estender a funcionalidade do seu cluster.

• the section called “Autoscaler do cluster” (p. 54) – Configure o Zoom Automático do Kubernetes paraajustar automaticamente o número de nós nos seus grupos de nó.

• the section called “Expansão da amostra” (p. 204) – Expanda uma aplicação de amostras para testar oseu cluster e os nós Linux.

• Implantar um aplicativo de exemplo do Windows (p. 74) – Expanda uma aplicação de amostras paratestar o seu cluster e nós Windows.

• Gerenciamento de clusters (p. 233) – Saiba como utilizar ferramentas importantes para gerir o seugrupo.

29

Page 38: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um cluster.

Clusters do Amazon EKSUm cluster do Amazon EKS consiste em dois componentes principais:

• O plano de controle do Amazon EKS• Amazon EKS pares registados no plano de controlo

O plano de controle do Amazon EKS consiste em nós de plano de controle que executam o softwareKubernetes, como etcd e o servidor da API do Kubernetes. O plano de controle é executado em umaconta gerenciada pela AWS, e a API do Kubernetes é exposta por meio do endpoint do Amazon EKSassociado ao cluster. Cada plano de controle de cluster do Amazon EKS é um locatário único e exclusivo eé executado em seu próprio conjunto de instâncias do Amazon EC2.

Todos os dados guardados pelo etcd e associados Amazon EBS os volumes são encriptados utilizandoAWS KMS. O plano de controlo do grupo é provisionado por vários Zona de disponibilidadee frontadopor um Elastic Load Balancing Load balancer de rede. Amazon EKS também aborda interfaces de redeelástica nas suas subredes VPC para fornecer conectividade a partir das instâncias do plano de controlopara os nós (por exemplo, para suportar kubectl exec, logs, e proxy fluxos de dados).

Amazon EKS os nós funcionam no seu AWS e ligue-se ao plano de controlo do seu grupo através doponto final do servidor API e um ficheiro certificado criado para o seu grupo.

Criar um cluster do Amazon EKSEste tópico descreve como criar um cluster do Amazon EKS. Se esta for a primeira vez em que vocêcria um cluster do Amazon EKS, é recomendável seguir nossos guias Conceitos básicos de AmazonEKS (p. 3). Fornecem demonstrações completas para criar uma Amazon EKS cluster com nós.

Important

Quando um cluster do Amazon EKS é criado, a entidade (usuário ou função) do IAM que cria ocluster é adicionada à tabela de autorização de RBAC do Kubernetes como o administrador (compermissões system:masters). Inicialmente, somente o usuário do IAM pode fazer chamadaspara o servidor da API do Kubernetes usando kubectl. Para obter mais informações, consulteGerenciar usuários ou funções do IAM para o cluster (p. 229). Se usar o console para criar ocluster, você deverá verificar se as mesmas credenciais de usuário do IAM estão na cadeia decredenciais do SDK da AWS ao executar os comandos kubectl no cluster.Se instalar e configurar a AWS CLI, você poderá configurar as credenciais do IAM para o usuário.Se a AWS CLI versão 1.16.156 ou posterior estiver configurada corretamente para o usuário,eksctl poderá encontrar essas credenciais. Para obter mais informações, consulte Configurar aAWS CLI no Guia do usuário do AWS Command Line Interface. Se você não conseguir instalar aAWS CLI versão 1.16.156 ou posterior, instale a aws-iam-authenticator.

Prerequisites

Você deve ter a AWS CLI versão 1.16.156 ou posterior ou o aws-iam-authenticator instalado. Paraobter mais informações, consulte ??? (p. 13) ou ??? (p. 222).

Escolha a guia abaixo que corresponde ao método de criação de cluster desejado.

30

Page 39: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um cluster.

eksctl

Como criar o cluster com o eksctl

Este procedimento exige a versão eksctl 0.25.0 ou posterior. Você pode verificar a versão com oseguinte comando:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ou atualizaro eksctl (p. 238).

1. Crie um cluster com a versão do Kubernetes mais recente do Amazon EKS na sua região padrão.Substituir my-cluster com o seu próprio valor.

eksctl create cluster \ --name my-cluster \ --version 1.17 \ --without-nodegroup

Note

Para ver a maioria das opções que podem ser especificadas ao criar um cluster comeksctl, use o comando eksctl create cluster --help. Para ver todas asopções, você pode usar um arquivo de configuração. Para obter mais informações,consulte Uso dos arquivos de configuração e o esquema de arquivo de configuração nadocumentação do eksctl. Você pode encontrar exemplos de arquivos de configuraçãono GitHub.

Warning

Se você criar um cluster usando um arquivo de configuração com a opçãosecretsEncryption, que requer uma chave existente do AWS Key ManagementService, e se algum dia a chave usada for excluída, não haverá caminho para arecuperação do cluster. Se você habilitar a criptografia de envelope, os segredos doKubernetes serão criptografados usando a chave mestra do cliente (CMK) selecionada.A CMK deve ser simétrica, criada na mesma região que o cluster, se a CMK foicriada em uma conta diferente, o usuário deverá ter acesso à CMK. Para obter maisinformações, consulte Permitir que usuários de outras contas usem uma CMK no Guiado desenvolvedor do AWS Key Management Service. A criptografia de segredos doKubernetes com uma CMK do AWS KMS requer o Kubernetes versão 1.13 ou posterior.Por padrão, o comando create-key cria uma chave simétrica com uma política dechave que dá acesso ao administrador do usuário raiz da conta a ações e recursos doAWS KMS. Para obter mais informações, consulte Criação de chaves. Se pretenderescovar as permissões, certifique-se de que kms:DescribeKey e kms:CreateGrantsão permitidas acções sobre a política-chave para o responsável principal que irá ligarpara o create-cluster API. Amazon EKS não suporta a condição principal da políticakms:GrantIsForAWSResource. Criar um grupo não irá funcionar se esta ação estiverna declaração de política principal.

O provisionamento de cluster leva alguns minutos. Durante a criação do cluster, você verá váriaslinhas de saída. A última linha de saída é semelhante ao exemplo de linha a seguir.

[✓] EKS cluster "my-cluster" in "region-code" region is ready

2. Quando o cluster estiver pronto, teste para ver se a sua configuração do kubectl está correta.

31

Page 40: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um cluster.

kubectl get svc

Note

Se você receber qualquer erro de autorização ou de tipo de recurso, consulteUnauthorized or access denied (kubectl) (Não autorizado ou acesso negado(kubectl)) (p. 322) na seção de solução de problemas.

Resultado

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEsvc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

3. (Opcional) Se você quiser executar pods no AWS Fargate em seu cluster, será necessário??? (p. 121) e ??? (p. 122).

4. Siga os procedimentos em Iniciar auto-gestão Amazon Linux 2 nós (p. 101) para adicionar nósLinux ao seu grupo para suportar as suas cargas de trabalho.

5. (Opcional) Depois de adicionar nós Linux ao seu cluster, siga os procedimentos em Suporte aoWindows (p. 70) para adicionar suporte Windows ao seu cluster e adicionar nós Windows.Todos Amazon EKS os conjuntos têm de conter pelo menos um nó Linux, mesmo que apenaspretenda executar volumes de trabalho Windows no seu grupo.

Console de gerenciamento da AWS

Este procedimento tem os seguintes pré-requisitos:

• Você criou uma VPC e um grupo de segurança dedicado que atendem aos requisitos de umcluster do Amazon EKS. Para obter mais informações, consulte Considerações sobre a VPC docluster (p. 173) e Considerações sobre os grupos de segurança do Amazon EKS (p. 175). Oguia Conceitos básicos do Console de gerenciamento da AWS (p. 13) cria uma VPC que atende aosrequisitos, ou você também pode seguir Criar uma VPC para o cluster do Amazon EKS (p. 168)para criar uma.

• Você criou uma função do IAM do cluster do Amazon EKS para aplicar ao cluster. O guia Conceitosbásicos de Amazon EKS (p. 3) cria uma função de serviço para você, ou você pode seguir Funçõesdo IAM do Amazon EKS (p. 262) para criar uma manualmente.

Para criar seu cluster com o console

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Escolha Create cluster.

Note

Se o usuário do IAM não tiver privilégios administrativos, você deverá adicionarpermissões explicitamente para que esse usuário chame as operações de API doAmazon EKS. Para obter mais informações, consulte Exemplos de políticas baseadasem identidade do Amazon EKS (p. 262).

3. Na página Configure cluster (Configurar cluster), preencha os seguintes campos:

• Name (Nome) – um nome exclusivo para o cluster.• Kubernetes version (Versão do Kubernetes) – a versão do Kubernetes a ser usada para o

cluster.

32

Page 41: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um cluster.

• Cluster service role – Choose the Amazon EKS cluster role to allow the Kubernetes controlplane to manage AWS resources on your behalf. For more information, see Função do IAM docluster do Amazon EKS (p. 269).

• Secrets encryption (Criptografia de segredos) – (Opcional) Escolha habilitar a criptografia deenvelope dos segredos do Kubernetes usando o AWS Key Management Service (AWS KMS).Se você habilitar a criptografia de envelope, os segredos do Kubernetes serão criptografadosusando a chave mestra do cliente (CMK) selecionada. A CMK deve ser simétrica, criada namesma região que o cluster, se a CMK foi criada em uma conta diferente, o usuário deverá teracesso à CMK. Para obter mais informações, consulte Permitir que usuários de outras contasusem uma CMK no Guia do desenvolvedor do AWS Key Management Service.

A criptografia de segredos do Kubernetes com uma CMK do AWS KMS requer o Kubernetesversão 1.13 ou posterior. Se nenhuma chave estiver listada, primeiro você deve criar uma. Paraobter mais informações, consulte Criação de chaves.

Note

By default, the create-key command creates a symmetric key with a key policy thatgives the account's root user admin access on AWS KMS actions and resources. Ifyou want to scope down the permissions, make sure that the kms:DescribeKey andkms:CreateGrant actions are permitted on the key policy for the principal that will becalling the create-cluster API.Amazon EKS does not support the key policy conditionkms:GrantIsForAWSResource. Creating a cluster will not work if this action is in thekey policy statement.

Warning

Deletion of the CMK will permanently put the cluster in a degraded state. If any CMKsused for cluster creation are scheduled for deletion, verify that this is the intendedaction before deletion. Once the key is deleted, there is no path to recovery for thecluster.

• Tags – (opcional) adicione todas as tags ao cluster. Para obter mais informações, consulteMarcar os recursos do Amazon EKS (p. 248).

4. Selecione Next (Próximo).5. Na página Specify networking (Especificar rede), selecione valores para os seguintes campos:

• VPC – Select an existing VPC to use for your cluster. If none are listed, then you need to createone first. For more information, see ??? (p. 168).

• Subnets – By default, the available subnets in the VPC specified in the previous field arepreselected. Select any subnet that you don't want to host cluster resources, such as workernodes or load balancers. The subnets must meet the requirements for an Amazon EKS cluster.For more information, see Considerações sobre a VPC do cluster (p. 173).

Important

If you select subnets that were created before 03/26/2020 using one of the AmazonEKS AWS CloudFormation VPC templates, be aware of a default setting change thatwas introduced on 03/26/2020. For more information, see ??? (p. 168).

• Security Groups (Grupos de segurança) – o valor de SecurityGroups na saída do AWSCloudFormation que você gerou com Criar a VPC do cluster do Amazon EKS (p. 19). Essegrupo de segurança tem ControlPlaneSecurityGroup no nome da lista suspensa.

Important

O modelo de nó do AWS CloudFormation modifica o grupo de segurança especificadopor você aqui. Por isso, o Amazon EKS recomenda que você use um grupo desegurança dedicado para cada plano de controle de cluster (um por cluster). Se esse33

Page 42: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um cluster.

grupo de segurança for compartilhado com outros recursos, você poderá bloquear ouinterromper as conexões a esses recursos.

• Em Cluster endpoint access (Acesso ao endpoint do cluster) – escolha uma das seguintesopções:• Public (Público) – permite apenas o acesso público ao endpoint do cluster de servidor da API

do Kubernetes. As solicitações de API do Kubernetes originadas de fora da VPC do clusterusarão o endpoint público. Por padrão, o acesso é permitido a partir de qualquer endereçoIP de origem. Opcionalmente, é possível restringir o acesso a um ou mais intervalos deCIDR, como 192.168.0.0/16, por exemplo, selecionando Advanced settings (Configuraçõesavançadas) e Add source (Adicionar origem).

• Private (Privado) – permite apenas o acesso privado ao endpoint do cluster de servidor daAPI do Kubernetes. As solicitações de API do Kubernetes originadas de dentro da VPC docluster usarão o VPC endpoint privado.

Important

If you created a VPC without outbound internet access, then you must enable privateaccess.

• Public and private (Público e privado) – permite acesso público e privado.

Para obter mais informações sobre as opções anteriores, consulte ??? (p. 49).6. Selecione Next (Próximo).7. Na página Configure logging (Configurar registro em log), também é possível escolher quais tipos

de log você deseja habilitar. Por padrão, cada tipo de log está Disabled (Desabilitado). Para obtermais informações, consulte Registro em log do plano de controle do Amazon EKS (p. 58).

8. Selecione Next (Próximo).9. Na página Review and create (Revisar e criar), revise as informações que você inseriu ou

selecionou nas páginas anteriores. Selecione Edit (Editar) se precisar fazer alterações em umadas suas seleções. Quando estiver satisfeito com suas configurações, selecione Create (Criar). Ocampo Status mostra CREATING (CRIANDO) até que o processo de provisionamento do clusteresteja concluído.

Note

Talvez você receba um erro porque uma das Zona de disponibilidades em sua solicitaçãonão tem capacidade suficiente para criar um cluster do Amazon EKS. Se isso acontecer,a saída do erro conterá as Zona de disponibilidades que são compatíveis com o novocluster. Tente criar novamente o cluster com pelo menos duas sub-redes que estejamlocalizadas nas Zona de disponibilidades compatíveis com a sua conta. Para obter maisinformações, consulte Insufficient capacity (Capacidade insuficiente) (p. 321).

Cluster provisioning usually takes between 10 and 15 minutes.10. Now that you have created your cluster, follow the procedures in Instalar aws-iam-

authenticator (p. 222) and Criar um kubeconfig para o Amazon EKS (p. 226) to enablecommunication with your new cluster.

11. (Optional) If you want to run pods on AWS Fargate in your cluster, see Conceitos básicos do AWSFargate com o Amazon EKS (p. 120).

12. After you enable communication, follow the procedures in Iniciar auto-gestão Amazon Linux 2nós (p. 101) to add Linux worker nodes to your cluster to support your workloads.

13. (Optional) After you add Linux worker nodes to your cluster, follow the procedures in Suporte aoWindows (p. 70) to add Windows support to your cluster and to add Windows worker nodes. AllAmazon EKS clusters must contain at least one Linux worker node, even if you only want to runWindows workloads in your cluster.

34

Page 43: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um cluster.

AWS CLI

Para criar o cluster com a AWS CLI

Este procedimento tem os seguintes pré-requisitos:

• Você criou uma VPC e um security group dedicado que atende aos requisitos de um clusterdo Amazon EKS. Para obter mais informações, consulte Considerações sobre a VPC docluster (p. 173) e Considerações sobre os grupos de segurança do Amazon EKS (p. 175). Oguia Conceitos básicos do Console de gerenciamento da AWS (p. 13) cria uma VPC que atende aosrequisitos, ou você também pode seguir Criar uma VPC para o cluster do Amazon EKS (p. 168)para criar uma.

• Você criou uma função do IAM do cluster do Amazon EKS para aplicar ao cluster. O guia Conceitosbásicos de Amazon EKS (p. 3) cria uma função de serviço para você, ou você pode seguir Funçõesdo IAM do Amazon EKS (p. 262) para criar uma manualmente.

1. Crie o cluster usando o comando a seguir. Substitua o nome do cluster, o Amazon ResourceName (ARN) da função do IAM do cluster do Amazon EKS que você criou em Criar a função doIAM do cluster do Amazon EKS (p. 18) e os IDs da sub-rede e do grupo de segurança pela VPCcriada em Criar a VPC do cluster do Amazon EKS (p. 19).

aws eks create-cluster \ --region region-code \ --name devel \ --kubernetes-version 1.17 \ --role-arn arn:aws:iam::111122223333:role/eks-service-role-AWSServiceRoleForAmazonEKS-EXAMPLEBKZRQR \ --resources-vpc-config subnetIds=subnet-a9189fe2,subnet-50432629,securityGroupIds=sg-f5c54184

Note

Se o usuário do IAM não tiver privilégios administrativos, você deverá adicionarpermissões explicitamente para que esse usuário chame as operações de API doAmazon EKS. Para obter mais informações, consulte Exemplos de políticas baseadasem identidade do Amazon EKS (p. 262).

Resultado

{ "cluster": { "name": "devel", "arn": "arn:aws:eks:region-code:111122223333:cluster/devel", "createdAt": 1527785885.159, "version": "1.17", "roleArn": "arn:aws:iam::111122223333:role/eks-service-role-AWSServiceRoleForAmazonEKS-AFNL4H8HB71F", "resourcesVpcConfig": { "subnetIds": [ "subnet-a9189fe2", "subnet-50432629" ], "securityGroupIds": [ "sg-f5c54184" ], "vpcId": "vpc-a54041dc", "endpointPublicAccess": true, "endpointPrivateAccess": false }, "status": "CREATING",

35

Page 44: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um cluster.

"certificateAuthority": {} }}

Note

Talvez você receba um erro porque uma das Zona de disponibilidades em sua solicitaçãonão tem capacidade suficiente para criar um cluster do Amazon EKS. Se isso acontecer,a saída do erro conterá as Zona de disponibilidades que são compatíveis com o novocluster. Tente criar novamente o cluster com pelo menos duas sub-redes que estejamlocalizadas nas Zona de disponibilidades compatíveis com a sua conta. Para obter maisinformações, consulte Insufficient capacity (Capacidade insuficiente) (p. 321).

Para criptografar os segredos do Kubernetes com uma chave mestra do cliente (CMK) do AWSKey Management Service (AWS KMS), primeiro crie uma CMK usando a operação create-key.

MY_KEY_ARN=$(aws kms create-key --query KeyMetadata.Arn —-output text)

Note

Por padrão, o comando create-key cria uma chave simétrica com uma política dechave que dá acesso ao administrador do usuário raiz da conta a ações e recursos doAWS KMS. Se você quiser reduzir o escopo das permissões, certifique-se de que asações kms:DescribeKey e kms:CreateGrant são permitidas na política de chavepara o principal que chamará a API create-cluster.Amazon EKS não suporta a condição principal da políticakms:GrantIsForAWSResource. Criar um grupo não irá funcionar se esta ação estiverna declaração de política principal.

Adicione o parâmetro --encryption-config ao comando aws eks create-cluster. Acriptografia de segredos do Kubernetes só pode ser habilitada quando o cluster é criado.

--encryption-config '[{"resources":["secrets"],"provider":{"keyArn":"$MY_KEY_ARN"}}]'

O membro keyArn pode conter o alias ou o ARN da CMK. A CMK deve ser simétrica, criadana mesma região que o cluster e, se a CMK tiver sido criada em uma conta diferente, o usuáriodeverá ter acesso à CMK. Para obter mais informações, consulte Permitir que usuários deoutras contas usem uma CMK no Guia do desenvolvedor do AWS Key Management Service. Acriptografia secreta do Kubernetes com uma CMK do AWS KMS requer o Kubernetes versão 1.13ou posterior.

Warning

A exclusão da CMK colocará o cluster em um estado degradado permanentemente. Sealguma CMK usada para a criação de cluster estiver programada para exclusão, verifiquese esta é a ação pretendida antes da exclusão. Uma vez que a chave é excluída, não hácaminho para recuperação do cluster.

2. O provisionamento do cluster normalmente leva entre 10 e 15 minutos. Você pode consultar ostatus do cluster com o comando a seguir. Quando o status do cluster for ACTIVE, você poderácontinuar.

aws eks --region region-code describe-cluster --name devel --query "cluster.status"

3. Quando o provisionamento do cluster for concluído, recupere os valores de endpoint ecertificateAuthority.data com os seguintes comandos. É necessário adicionar essesvalores à configuração do kubectl para que você possa se comunicar com o cluster.

36

Page 45: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar a versão do Kubernetes

a. Recupere o endpoint.

aws eks --region region-code describe-cluster --name devel --query "cluster.endpoint" --output text

b. Recupere o certificateAuthority.data.

aws eks --region region-code describe-cluster --name devel --query "cluster.certificateAuthority.data" --output text

4. Agora que você criou o cluster, siga os procedimentos em Criar um kubeconfig para o AmazonEKS (p. 226) para habilitar a comunicação com o novo cluster.

5. (Opcional) Se quiser executar pods no AWS Fargate no cluster, consulte Conceitos básicos doAWS Fargate com o Amazon EKS (p. 120).

6. Depois de ativar a comunicação, siga os procedimentos em Iniciar auto-gestão Amazon Linux 2nós (p. 101) para adicionar nós ao seu grupo para suportar as suas cargas de trabalho.

7. (Opcional) Depois de adicionar nós Linux ao seu cluster, siga os procedimentos em Suporte aoWindows (p. 70) para adicionar suporte Windows ao seu cluster e adicionar nós Windows.Todos Amazon EKS os conjuntos têm de conter pelo menos um nó Linux, mesmo que apenaspretenda executar volumes de trabalho Windows no seu grupo.

Atualizar uma versão do Kubernetes do cluster doAmazon EKS

Quando uma nova versão do Kubernetes estiver disponível no Amazon EKS, você poderá atualizar seucluster para a versão mais recente.

Important

Antes de atualizar para uma nova versão do Kubernetes, recomendamos analisar as informaçõesem ??? (p. 61) e nas etapas de atualização neste tópico.

Novas versões do Kubernetes apresentam alterações significativas, assim, recomendamos que você testeo comportamento dos aplicativos com relação a uma nova versão do Kubernetes antes de executar aatualização nos clusters de produção. Você pode fazer isso, criando um fluxo de trabalho de integraçãocontínua para testar o comportamento do aplicativo de ponta a ponta antes de passar para uma novaversão do Kubernetes.

O processo de atualização consiste na inicialização pelo Amazon EKS de novos nós do servidor daAPI com a versão do Kubernetes atualizada para substituir as existentes. O Amazon EKS executaverificações de integridade de prontidão e infraestrutura padrão para o tráfego de rede nesses novosnós para verificar se eles estão funcionando conforme o esperado. Se qualquer uma dessas verificaçõesfalhar, o Amazon EKS reverterá a implantação de infraestrutura e seu cluster permanecerá na versão doKubernetes anterior. A execução de aplicativos não será afetada, e seu cluster nunca será deixado emum estado irrecuperável ou não determinista. O Amazon EKS faz backup constantemente de todos osclusters gerenciados, além de haver mecanismos para recuperar clusters, se necessário. Estamos sempreavaliando e melhorando nossos processos de gerenciamento de infraestrutura do Kubernetes.

Para atualizar o cluster, o Amazon EKS requer de 2 a 3 endereços IP livres das sub-redes que foramfornecidas na criação do cluster. Se essas sub-redes não tiverem endereços IP disponíveis, a atualizaçãopoderá falhar. Além disso, se houver exclusão de qualquer uma das sub-redes ou grupos de segurançafornecidos durante a criação do cluster, o processo de atualização do cluster poderá falhar.

37

Page 46: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar um cluster existente

Note

Embora o Amazon EKS execute um plano de controle de alta disponibilidade, é possível terinterrupções de serviço secundárias durante uma atualização. Por exemplo, se você tentarse conectar a um servidor de API logo antes ou após ele ser encerrado e substituído por umnovo servidor de API que executa a nova versão do Kubernetes, talvez enfrente problemas deconectividade ou erros nas chamadas de API. Se isso acontecer, tente novamente executar suasoperações de API até que elas sejam bem-sucedidas.

O Amazon EKS não modifica nenhum de seus complementos Kubernetes ao atualizar um cluster. Depoisde atualizar o cluster, recomendamos que você atualize os complementos das versões listadas na tabelaa seguir para a nova versão do Kubernetes que você está atualizando. As etapas para fazer isso estãoincluídas nos procedimentos de atualização.

Versão do Kubernetes 1.17 1.16 1.15 1.14

Plug-in CNI da Amazon VPC 1.6.3 1.6.3 1.6.3 1.6.3

DNS (CoreDNS) 1.6.6 1.6.6 1.6.6 1.6.6

KubeProxy 1.17.7 1.16.12 1.15.11 1.14.9

Se você estiver usando complementos adicionais para o cluster que não estão listados na tabela anterior,atualize-os para as versões mais recentes compatíveis após a atualização do cluster.

Atualizar um cluster existenteAtualize os suplementos do grupo e Kubnernetes.

Como atualizar um cluster existente

1. Compare a versão do Kubernetes do seu plano de controle do cluster com a versão do Kubernetesdos nós.

• Obtenha a versão do Kubernetes do seu plano de controle do cluster com o comando a seguir.

kubectl version --short

• Obtenha a versão do Kubernetes dos nós com o comando a seguir.

kubectl get nodes

Se o Kubernetes dos nós for de uma versão secundária mais antiga do que a do seu plano decontrole, você deverá atualizar os nós para uma versão secundária mais nova do Kubernetes antesde atualizar a versão do Kubernetes do cluster. Para obter mais informações, consulte a Política desuporte da distorção da versão e da versão do Kubernetes na documentação do Kubernetes.

Recomendamos que você atualize os nós para a versão secundária pré-atualizada atual doKubernetes do cluster antes de atualizar o cluster. Os nós não devem executar uma versão maisnova do Kubernetes do que a do plano de controle. Por exemplo, se seu plano de controle executara versão 1.16 e os nós executarem a versão 1.14, atualize os nós para a versão 1.15 ou 1.16(recomendado) antes de atualizar a versão do Kubernetes do cluster para a 1.17. Para obter maisinformações, consulte Atualizações de nós auto-geridas (p. 110).

2. O controlador de admissão da política de segurança de pods é habilitado em clusters do Amazon EKScom o Kubernetes versão 1.13 ou posterior. Se você estiver atualizando seu cluster para o Kubernetes

38

Page 47: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar um cluster existente

versão 1.13 ou posterior, certifique-se de que as políticas de segurança de pods adequadas estejamimplementadas antes da atualização para evitar problemas. Você pode verificar a política padrão como comando a seguir.

kubectl get psp eks.privileged

Se receber o seguinte erro, consulte Como instalar ou restaurar a política de segurança de podspadrão (p. 294) antes de prosseguir.

Error from server (NotFound): podsecuritypolicies.extensions "eks.privileged" not found

3. Atualize seu cluster. Para obter instruções, selecione a guia com o nome da ferramenta que vocêdeseja usar para atualizar o cluster.

eksctl

Este procedimento exige a versão eksctl 0.25.0 ou posterior. Você pode verificar a versãocom o seguinte comando:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ouatualizar o eksctl (p. 238).

Note

Este procedimento funciona apenas para clusters que foram criados com o eksctl.

Atualize o seu Amazon EKS cluster Kubernetes versão uma versão menor posterior à versãoatual com o seguinte comando, substituir dev com o nome do seu grupo. Como o AmazonEKS executa um plano de controle de alta disponibilidade, você pode atualizar apenas umaversão secundária por vez. Consulte a Política de suporte da distorção da versão e da versão doKubernetes para compreender a lógica por trás dela.

Important

Talvez seja necessário atualizar alguns dos recursos implantados antes de atualizar paraa versão 1.16. Para obter mais informações, consulte the section called “Pré-requisitosda atualização do Kubernetes 1.16” (p. 44). Actualizar um grupo de 1,16 para 1,17 iráfalhar se algum dos AWS Fargate têm uma versão mais pequena de kubelet anterior a1,16. Antes de atualizar o seu grupo de 1,16 para 1,17, tem de reciclar as suas cápsulasFargate para que o seu kubelet seja 1,16 antes de tentar actualizar o grupo para 1,17.

eksctl upgrade cluster --name dev --approve

Esse processo leva vários minutos para ser concluído.Console de gerenciamento da AWS

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Escolha o nome do cluster a ser atualizado e selecione Update cluster version (Atualizar versão

do cluster).3. Para Kubernetes version (Versão do Kubernetes), selecione a versão para a qual atualizar seu

cluster e selecione Update (Atualizar).

39

Page 48: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar um cluster existente

Important

• Actualizar um grupo de 1,16 para 1,17 irá falhar se algum dos AWS Fargate têm umkubelet versão menor anterior a 1,16. Antes de atualizar o seu grupo de 1.16 para1.17, precisa de reciclar o seu Fargate de forma a que kubelet é 1,16 antes detentar actualizar o grupo para 1,17.

• Talvez seja necessário atualizar alguns dos recursos implantados antes de atualizarpara a versão 1.16. Para obter mais informações, consulte the section called “Pré-requisitos da atualização do Kubernetes 1.16” (p. 44).

Important

Como o Amazon EKS executa um plano de controle de alta disponibilidade, vocêpode atualizar apenas uma versão secundária por vez. Consulte a Política de suporteda distorção da versão e da versão do Kubernetes para compreender a lógica portrás dela. Portanto, se a versão atual for 1.15 e você deseja atualizar para 1.17,será necessário primeiro atualizar o cluster para 1.16 e, então, atualizá-lo de 1.16para 1.17. Se você tentar atualizar diretamente de 1.15 para 1.17, o comando deatualização da versão apresentará um erro.

4. Em Cluster name (Nome do cluster), digite o nome do seu cluster e selecione Confirm(Confirmar).

Note

A atualização do cluster deve ser finalizada em alguns minutos.

AWS CLI

1. Atualize o cluster com o seguinte comando da AWS CLI. Substitua o nome do cluster e aversão secundária desejada do Kubernetes.

Important

Talvez seja necessário atualizar alguns dos recursos implantados antes de atualizarpara a versão 1.16. Para obter mais informações, consulte the section called “Pré-requisitos da atualização do Kubernetes 1.16” (p. 44). Actualizar um grupo de1,16 para 1,17 irá falhar se algum dos AWS Fargate têm uma versão mais pequenade kubelet anterior a 1,16. Antes de atualizar o seu grupo de 1,16 para 1,17, tem dereciclar as suas cápsulas Fargate para que o seu kubelet seja 1,16 antes de tentaractualizar o grupo para 1,17.

Important

Como o Amazon EKS executa um plano de controle de alta disponibilidade, vocêpode atualizar apenas uma versão secundária por vez. Consulte a Política de suporteda distorção da versão e da versão do Kubernetes para compreender a lógica portrás dela. Portanto, se a versão atual for 1.15 e você deseja atualizar para 1.17,será necessário primeiro atualizar o cluster para 1.16 e, então, atualizá-lo de 1.16para 1.17. Se você tentar atualizar diretamente de 1.15 para 1.17, o comando deatualização da versão apresentará um erro.

aws eks --region region-code update-cluster-version --name prod --kubernetes-version 1.17

Resultado

{40

Page 49: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar um cluster existente

"update": { "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", "status": "InProgress", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.17" }, { "type": "PlatformVersion", "value": "eks.1" } ],... "errors": [] }}

2. Monitore o status da atualização do cluster com o comando a seguir, usando o nome do clustere o ID da atualização que o comando anterior retornou. Sua atualização estará concluídaquando o status aparecer como Successful.

Note

A atualização do cluster deve ser finalizada em alguns minutos.

aws eks --region region-code describe-update --name prod --update-id b5f0ba18-9a87-4450-b5a0-825e6e84496f

Resultado

{ "update": { "id": "b5f0ba18-9a87-4450-b5a0-825e6e84496f", "status": "Successful", "type": "VersionUpdate", "params": [ { "type": "Version", "value": "1.17" }, { "type": "PlatformVersion", "value": "eks.1" } ],... "errors": [] }}

4. Aplique o patch ao daemonset kube-proxy para usar a imagem que corresponde à região do clustere à versão atual do Kubernetes (neste exemplo, 1.17.7).

Versão do Kubernetes 1.17 1.16 1.15 1.14

KubeProxy 1.17.7 1.16.12 1.15.11 1.14.9

Primeiro, recupere a imagem kube-proxy atual:

41

Page 50: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar um cluster existente

kubectl get daemonset kube-proxy --namespace kube-system -o=jsonpath='{$.spec.template.spec.containers[:1].image}'

Atualize kube-proxy para a versão recomendada, obtendo a saída da etapa anterior e substituindo atag de versão pela versão kube-proxy recomendada do cluster:

kubectl set image daemonset.apps/kube-proxy \ -n kube-system \ kube-proxy=602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/kube-proxy:v1.17.7

O ID da sua conta e a região podem diferir do exemplo acima.5. Verifique o provedor de DNS do cluster. Clusters que foram criados com a versão 1.10 do Kubernetes

enviados com o kube-dns como o provedor de descoberta de serviço e DNS padrão. Se você tiveratualizado um cluster 1.10 para uma versão mais recente e desejar usar o CoreDNS para DNS edescoberta de serviço, deverá instalar o CoreDNS e remover o kube-dns.

Para verificar se o cluster já está executando o CoreDNS, use o comando a seguir.

kubectl get pod -n kube-system -l k8s-app=kube-dns

Se a saída mostra coredns nos nomes do pod, o CoreDNS já está sendo executado no cluster. Casocontrário, consulte Instalar ou atualizar o CoreDNS (p. 195) para instalar o CoreDNS em seu cluster,atualize-o para a versão recomendada, volte aqui e vá para as etapas 6 a 8.

6. Verifique a versão atual da implantação de coredns do cluster.

kubectl describe deployment coredns --namespace kube-system | grep Image | cut -d "/" -f 3

Resultado:

coredns:v1.1.3

As versões de coredns recomendadas para as versões correspondentes do Kubernetes são asseguintes:

Versão do Kubernetes 1.17 1.16 1.15 1.14

CoreDNS 1.6.6 1.6.6 1.6.6 1.6.6

7. Se a sua versão de coredns atual for 1.5.0 ou posterior, mas anterior à versão recomendada, puleesta etapa. Se a sua versão atual for anterior à 1.5.0, será necessário modificador o configmap paraque coredns use o plug-in forward, em vez do plug-in proxy.

a. Abra o configmap com o seguinte comando.

kubectl edit configmap coredns -n kube-system

b. Substitua proxy na linha a seguir por forward. Salve o arquivo e saia do editor.

proxy . /etc/resolv.conf

8. Recupere a imagem coredns atual:

42

Page 51: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar um cluster existente

kubectl get deployment coredns --namespace kube-system -o=jsonpath='{$.spec.template.spec.containers[:1].image}'

9. Atualize coredns para a versão recomendada, obtendo a saída da etapa anterior e substituindo a tagde versão pela versão coredns recomendada do cluster:

kubectl set image --namespace kube-system deployment.apps/coredns \ coredns=602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/coredns:v1.6.6

10. Verifique a versão do plug-in CNI da Amazon VPC do cluster para o Kubernetes. Use o comando aseguir para imprimir a versão do CNI de seu cluster:

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

Resultado

amazon-k8s-cni:1.6.2

Se a versão do CNI for anterior à 1.6.3, use o comando apropriado abaixo para atualizar a versão doCNI para a versão recomendada mais recente:

• Oeste dos EUA (Oregon) (us-west-2)

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni.yaml

• China (Pequim) (cn-north-1) ou China (Ningxia) (cn-northwest-1)

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni-cn.yaml

• AWS GovCloud (Leste dos EUA) (us-gov-east-1)

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni-us-gov-east-1.yaml

• AWS GovCloud (US-West) (us-gov-west-1)

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni-us-gov-west-1.yaml

• Para todas as outras regiões• Baixe o arquivo de manifesto.

curl -o aws-k8s-cni.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni.yaml

• Substitua region-code no comando a seguir pela região em que seu cluster está e execute ocomando modificado para substituir o código da região no arquivo (atualmente us-west-2).

sed -i -e 's/us-west-2/region-code/' aws-k8s-cni.yaml

• Aplique o arquivo de manifesto modificado ao cluster.

43

Page 52: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPré-requisitos da atualização do Kubernetes 1.16

kubectl apply -f aws-k8s-cni.yaml

11. (Opcional) Se você implantou o Cluster Autoscaler do Kubernetes no cluster antes de atualizá-lo, atualize o Cluster Autoscaler para a versão mais recente que corresponde à versão principal esecundária do Kubernetes para a qual você atualizou.

a. Abra a página releases do Cluster Autoscaler em um navegador da web e encontre a versão maisrecente do Cluster Autoscaler que corresponde às versões principal e secundária do Kubernetesde seu cluster. Por exemplo, se a versão do Kubernetes do cluster for 1.17, localize a versão maisrecente do Cluster Autoscaler que começa com 1.17. Registe o número da versão semântica(1.17.n) para essa versão para utilizar no próximo passo.

b. Defina a tag de imagem do Cluster Autoscaler como a versão que você registrou na etapa anteriorcom o comando a seguir. Substituir 1.17.n com o seu próprio valor. É possível substituir us porasia ou por eu.

kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=us.gcr.io/k8s-artifacts-prod/autoscaling/cluster-autoscaler:v1.17.n

Note

Dependendo da versão da qual você precisa, talvez seja necessário alterar o endereçoanterior para gcr.io/google-containers/cluster-autoscaler:v1.n.n. Oendereço da imagem está listado na página de versões.

12. (Grupos com nós GPU apenas) Se o seu grupo tiver grupos de nós com suporte GPU (por exemplo,p3.2xlarge), tem de atualizar o Plug-in do dispositivo NVIDIA para Kubernetes conjunto no seugrupo com o seguinte comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.6.0/nvidia-device-plugin.yml

13. Depois de concluída a atualização do seu grupo, atualize os seus nós para a mesma versãoKubernetes do seu grupo actualizado. Para obter mais informações, consulte Atualizações de nósauto-geridas (p. 110) ou Atualizar um grupo de nós gerenciados (p. 97). Quaisquer novos podsexecutados em Fargate terão uma versão kubelet que corresponde à versão do cluster. Os podsFargate existentes não serão alterados.

Pré-requisitos da atualização do Kubernetes 1.16Conforme indicado no Kubernetes 1,15 changelog, e Apis preteridas removidas em 1.16: Aqui o queprecisa de saber documentos, se tiver um grupo existente, são necessárias alterações à API para osrecursos implementados seguintes antes de actualizar um grupo para 1.16.

Warning

Se você não alterar essas APIs antes de atualizar para 1.16, as cargas de trabalho falharãodepois que atualização for concluída.

• Os recursos de NetworkPolicy não serão mais fornecidos de extensions/v1beta1 na v1.16. Migre ouso para a API networking.k8s.io/v1, disponível desde a v1.8. Os dados persistentes existentespodem ser recuperados pela API networking.k8s.io/v1.

• Os recursos de PodSecurityPolicy não serão mais fornecidos de extensions/v1beta1 na v1.16.Migre para a API policy/v1beta1, disponível desde a v1.10. Os dados persistentes existentes podemser recuperados pela API policy/v1beta1.

• Os recursos DaemonSet, Deployment, StatefulSet e ReplicaSet não serão mais fornecidos deextensions/v1beta1, apps/v1beta1 ou apps/v1beta2 na v1.16. Migre para a API apps/v1,

44

Page 53: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPré-requisitos da atualização do Kubernetes 1.16

disponível desde a v1.9. Os dados persistentes existentes podem ser recuperados pela API apps/v1.Por exemplo, para converter um recurso Deployment que, no momento, usa apps/v1beta1, insira ocomando a seguir.

kubectl convert -f ./my-deployment.yaml --output-version apps/v1

Note

O comando anterior pode usar valores padrão diferentes do que está definido no arquivo demanifesto atual. Para saber mais sobre um recurso específico, consulte a referência de API doKubernetes.

Se originalmente você criou um cluster do Amazon EKS com o Kubernetes versão 1.11 ou anterior e nãoremoveu o sinalizador --resource-container do DaemonSet kube-proxy, a atualização para oKubernetes 1.16 causará falhas no kube-proxy. Este sinalizador está defasado no Kubernetes 1.16. Paraobter mais informações, consulte kube-proxy no Defasagens e remoções do Kubernetes 1.16. Vocêdeve remover este sinalizador antes de atualizar para o Kubernetes 1.16.

O que você precisa fazer antes de atualizar para a versão 1.16

• Altere os arquivos YAML para fazer referência às novas APIs.• Atualize integrações e controladores personalizados para chamar as novas APIs.• Use uma versão atualizada de qualquer ferramenta de terceiros, como controladores de entrada,

sistemas de entrega contínua e outros, que chamam as novas APIs.

Para verificar facilmente o uso de API defasada no cluster, verifique se o log do plano decontrole (p. 58) audit está habilitado e especifique v1beta como um filtro para os eventos. Todasas APIs de substituição estão em versões do Kubernetes posteriores à 1.10. Os aplicativos em qualquerversão compatível do Amazon EKS podem começar a usar as APIs atualizadas agora.

• Remover o --resource-container="" bandeira do seu kube-proxy o monmonset, se o seu clusterfoi originalmente implementado com Kubernetes 1.11 ou anterior ou utilize um ficheiro de configuraçãokube-proxy (recomendado). Para determinar se a sua versão atual de kube-proxy tem o sinalizador,introduza o seguinte comando.

kubectl get daemonset kube-proxy --namespace kube-system -o yaml | grep 'resource-container='

Se não receber qualquer resultado, não precisa de remover nada. Se receber saída semelhante a --resource-container="", então tem de remover o sinalizador. Introduza o seguinte comando paraeditar a sua atual kube-proxy config.

kubectl edit daemonset kube-proxy --namespace kube-system

Com o editor aberto, remova o --resource-container="" e guarde o ficheiro. Recomendamos que,em vez disso, comece a utilizar um ficheiro de configuração kube-proxy. Para fazê-lo, descarregue oseguinte mantifest.

curl -o kube-proxy-daemonset.yaml https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2020-06-10/kube-proxy-daemonset.yaml

Determine o parâmetro de avaliação do seu grupo com o seguinte comando.

aws eks describe-cluster \ --name cluster-name \

45

Page 54: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExcluir um cluster

--region region-code \ --query 'cluster.endpoint' \ --output text

Resultado

https://A89DBB2140C8AC0C2F920A36CCC6E18C.sk1.region-code.eks.amazonaws.com

Editar kube-proxy-daemonset.yaml ficheiro que descarregou. No seu editor, substituaMASTER_ENDPOINT com a saída do comando anterior. Substituir REGION com a região do seu grupo.Na mesma linha, substitua a versão com a versão do seu grupo, se necessário. Aplique o ficheiro com ocomando seguinte.

kubectl apply -f kube-proxy-daemonset.yaml

Excluir um clusterQuando terminar de usar um cluster do Amazon EKS, você deverá excluir os recursos associados a elepara não incorrer em custos desnecessários.

Important

Se tiver serviços ativos no cluster associados a um load balancer, você deve excluir essesserviços antes de excluir o cluster para que os load balancers sejam excluídos corretamente.Caso contrário, você poderá ter recursos órfãos na VPC que impedirão que você exclua a VPC.

Escolha a guia abaixo que corresponde ao seu método preferido de exclusão do cluster.

eksctl

Para eliminar um Amazon EKS cluster e nós com eksctl

Este procedimento exige a versão eksctl 0.25.0 ou posterior. Você pode verificar a versão com oseguinte comando:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ou atualizaro eksctl (p. 238).

Note

Este procedimento funciona apenas para clusters que foram criados com o eksctl.

1. Liste todos os serviços em execução no cluster.

kubectl get svc --all-namespaces

2. Exclua todos os serviços que têm um valor EXTERNAL-IP associado. Esses serviços sãoliderados por um load balancer do Elastic Load Balancing, e você deve excluí-los no Kubernetespara permitir que o load balancer e os recursos associados sejam liberados corretamente.

kubectl delete svc service-name

3. Eliminar o cluster e os seus nós associados com o seguinte comando, substituir prod com onome do seu grupo.

46

Page 55: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExcluir um cluster

eksctl delete cluster --name prod

Resultado

[✓] using region region-code[✓] deleting EKS cluster "prod"[✓] will delete stack "eksctl-prod-nodegroup-standard-nodes"[✓] waiting for stack "eksctl-prod-nodegroup-standard-nodes" to get deleted[✓] will delete stack "eksctl-prod-cluster"[✓] the following EKS cluster resource(s) for "prod" will be deleted: cluster. If in doubt, check CloudFormation console

Console de gerenciamento da AWS

Para excluir um cluster do Amazon EKS com a Console de gerenciamento da AWS

1. Liste todos os serviços em execução no cluster.

kubectl get svc --all-namespaces

2. Exclua todos os serviços que têm um valor EXTERNAL-IP associado. Esses serviços sãoliderados por um load balancer do Elastic Load Balancing, e você deve excluí-los no Kubernetespara permitir que o load balancer e os recursos associados sejam liberados corretamente.

kubectl delete svc service-name

3. Eliminar todos os grupos de nós e Fargate perfis.

a. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.b. Na navegação esquerda, selecione Clusters, e depois na lista de separadores de conjuntos,

seleccione o nome do grupo que pretende eliminar.c. Selecione o Calcular , seleccione um grupo de nó a eliminar, seleccione Eliminar, introduza o

nome do grupo de nó e seleccione Eliminar. Eliminar todos os grupos de nó no grupo.

Note

Os grupos de nós listados são grupos de nós geridos (p. 92) apenas.d. Selecione um Fargate Perfil para eliminar, selecione Eliminar, introduza o nome do perfil e

seleccione Eliminar. Eliminar tudo Fargate perfis no grupo.4. Eliminar todo o nó auto-gerido AWS CloudFormation pilhas.

a. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.b. Seleccione a pilha de caracteres a eliminar e escolha Ações, Eliminar pilha.c. Na tela de confirmação de Delete Stack (Excluir pilha), selecione Yes, Delete (Sim, excluir).

Elimine todas as pilhas de nó auto-geridas no grupo.5. Exclua o cluster do :

a. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.b. Selecione o cluster a ser excluído e selecione Delete (Excluir).c. Na tela de confirmação de excluir cluster, selecione Delete (Excluir).

6. (Opcional) Exclua a pilha do AWS CloudFormation da VPC.

a. Selecione a pilha da VPC a ser excluída e selecione Actions (Ações) e Delete Stack (Excluirpilha).

47

Page 56: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExcluir um cluster

b. Na tela de confirmação de Delete Stack (Excluir pilha), selecione Yes, Delete (Sim, excluir).

AWS CLI

Para excluir um cluster do Amazon EKS com a AWS CLI

1. Liste todos os serviços em execução no cluster.

kubectl get svc --all-namespaces

2. Exclua todos os serviços que têm um valor EXTERNAL-IP associado. Esses serviços sãoliderados por um load balancer do Elastic Load Balancing, e você deve excluí-los no Kubernetespara permitir que o load balancer e os recursos associados sejam liberados corretamente.

kubectl delete svc service-name

3. Eliminar todos os grupos de nós e Fargate perfis.

a. Liste os grupos de nó no seu grupo com o seguinte comando.

aws eks list-nodegroups --cluster-name my-cluster

Note

Os grupos de nós listados são grupos de nós geridos (p. 92) apenas.b. Elimine cada grupo de nó com o seguinte comando. Eliminar todos os grupos de nó no grupo.

aws eks delete-nodegroup --nodegroup-name my-nodegroup --cluster-name my-cluster

c. Listar o Fargate perfis no seu grupo com o seguinte comando.

aws eks list-fargate-profiles --cluster-name my-cluster

d. Eliminar cada Fargate com o seguinte comando. Eliminar tudo Fargate perfis no grupo.

aws eks delete-fargate-profile --fargate-profile-name my-fargate-profile --cluster-name my-cluster

4. Eliminar todo o nó auto-gerido AWS CloudFormation pilhas.

a. Liste suas pilhas do AWS CloudFormation disponíveis com o comando a seguir. Encontre onome do modelo do nó na saída resultante.

aws cloudformation list-stacks --query "StackSummaries[].StackName"

b. Elimine cada pilha de nó com o comando seguinte, substituindo node-stack com o seunome de pilha de nó. Elimine todas as pilhas de nó auto-geridas no grupo.

aws cloudformation delete-stack --stack-name node-stack

5. Elimine o grupo com o comando seguinte, substituindo my-cluster com o nome do seu grupo.

aws eks delete-cluster --name my-cluster

6. (Opcional) Exclua a pilha do AWS CloudFormation da VPC.

48

Page 57: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAcesso ao endpoint do cluster

a. Liste suas pilhas do AWS CloudFormation disponíveis com o comando a seguir. Encontre onome do modelo da VPC na saída resultante.

aws cloudformation list-stacks --query "StackSummaries[].StackName"

b. Elimine a pilha VPC com o comando seguinte, substituindo my-vpc-stack com o seu nomede pilha VPC.

aws cloudformation delete-stack --stack-name my-vpc-stack

Controle de acesso ao endpoint do cluster doAmazon EKS

Este tópico ajuda a habilitar o acesso privado ao endpoint do servidor de API do Kubernetes do cluster doAmazon EKS e limitar ou desabilitar completamente o acesso público pela Internet.

Quando você cria um cluster, o Amazon EKS cria um endpoint para o servidor gerenciado de API doKubernetes usado para se comunicar com o cluster (usando as ferramentas de gerenciamento doKubernetes, como kubectl). Por padrão, esse endpoint do servidor de API é público para a internet e oacesso ao servidor de API é protegido por uma combinação do AWS Identity and Access Management(IAM) e Controle de acesso com base em função (RBAC) nativo do Kubernetes.

Você pode habilitar o acesso privado ao servidor de API do Kubernetes para que todas as comunicaçõesentre os nós e o servidor de API fiquem na VPC. É possível limitar os endereços IP que podem acessarseu servidor de API pela Internet, ou desabilitar completamente o acesso pela Internet ao servidor de API.

Note

Como esse endpoint é para o servidor de API do Kubernetes e não um endpoint tradicional doAWS PrivateLink para se comunicar com uma API da AWS, ele não aparece como um endpointno console da Amazon VPC.

Ao habilitar o acesso privado ao endpoint para o cluster, o Amazon EKS cria uma zona hospedadaprivada do Route 53 em seu nome e a associa à VPC do cluster. Essa zona hospedada privada égerenciada pelo Amazon EKS e não aparece nos recursos da conta do Route 53 da sua conta. Para quea zona hospedada privada roteie o tráfego adequadamente para o seu servidor da API, a VPC deve terenableDnsHostnames e enableDnsSupport definidos como true, e o conjunto de opções DHCP parasua VPC deve incluir AmazonProvidedDNS na lista de servidores de nome de domínio. Para obter maisinformações, consulte Atualizar o suporte DNS para a VPC no Guia do usuário da Amazon VPC.

Note

Além das permissões padrão do Amazon EKS, seu usuário ou função do IAM precisa terpermissões do route53:AssociateVPCWithHostedZone para habilitar o acesso privado doendpoint do cluster.

É possível definir os requisitos de acesso ao endpoint do servidor de API ao criar um cluster, e você podeatualizar o acesso ao endpoint do servidor de API para um cluster a qualquer momento.

Modificar o acesso ao endpoint do clusterUse os procedimentos desta seção para modificar o acesso ao endpoint para um cluster existente. Atabela a seguir mostra as combinações compatíveis de acesso ao endpoint do servidor de API e seuscomportamentos associados.

49

Page 58: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioModificar o acesso ao endpoint do cluster

Opções de acesso ao endpoint do servidor de API

Acesso público ao endpoint Acesso privado ao endpoint Comportamento

Habilitado Desabilitado • Esse é o comportamentopadrão para novos clusters doAmazon EKS.

• Os pedidos de API Kubernetesoriginados no VPC do seucluster (como o nó paracontrolar a comunicação doplano) deixam o VPC mas nãoa rede da Amazon.

• O servidor de API do clusteré acessível pela internet.Também é possível limitaros blocos CIDR que podemacessar o endpoint público. Selimitar o acesso a blocos CIDRespecíficos, recomenda-seque também ative o parâmetrode avaliação privado, oucertifique-se de que os blocosCIDR que especificar incluemos endereços que os nós eas cápsulas Fargate (se asutilizar) acedam ao parâmetrode avaliação público de.

Habilitado Habilitado • Os pedidos de API Kubernetesdentro do VPC do seu grupo(como o nó para controlara comunicação do plano)utilizam o parâmetro deavaliação VPC privado.

• O servidor de API do clusteré acessível pela internet.Também é possível limitaros blocos CIDR que podemacessar o endpoint público.

Desabilitado Habilitado • Todo o tráfego para o servidorde API do cluster deve vir daVPC do cluster ou de uma redeconectada.

• Não há acesso públicoao servidor de API pelainternet. Todos os comandoskubectl devem vir da VPCou de uma rede conectada.Para ver as opções deconectividade, consulteAcessar um servidor de APIsomente privado (p. 53).

• O endpoint do servidor deAPI do cluster é resolvido por

50

Page 59: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioModificar o acesso ao endpoint do cluster

Acesso público ao endpoint Acesso privado ao endpoint Comportamentoservidores DNS públicos paraum endereço IP privado daVPC. No passado, o endpointsó podia ser resolvido a partirda VPC.

Se o endpoint não for resolvidopara um endereço IP privadona VPC para um clusterexistente, será possível:• Ativar o acesso público e

desativá-lo novamente.Só é necessário fazer issouma vez para um cluster eo endpoint será resolvidopara um endereço IP privadodesse ponto em diante.

• Atualizar (p. 37) o cluster.

É possível modificar o acesso ao endpoint do servidor de API de cluster usando o Console degerenciamento da AWS ou a AWS CLI. Para obter instruções, selecione a guia da ferramenta que vocêdeseja usar.

Console de gerenciamento da AWS

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Selecione o nome do cluster para exibir as informações dele.3. Em Networking (Redes), selecione Update (Atualizar).4. Private access (Acesso privado): escolha se deseja habilitar ou desabilitar o acesso privado para

o endpoint do servidor de API do Kubernetes do cluster. Se você habilitar o acesso privado, assolicitações de API do Kubernetes originadas de dentro da VPC do cluster usarão o VPC endpointprivado. É necessário habilitar o acesso privado para desabilitar o acesso público.

5. Public access (Acesso público): escolha se deseja habilitar ou desabilitar o acesso público parao endpoint do servidor de API do Kubernetes do cluster. Se você desabilitar o acesso público, oservidor de API do Kubernetes do cluster somente poderá receber solicitações de dentro da VPCdo cluster.

6. (Opcional) Se você habilitou o Public access (Acesso público), poderá especificar quaisendereços da Internet podem se comunicar com o endpoint público. Selecione Advanced Settings(Configurações avançadas). Introduza um bloco CIDR, como 203.0.113.5/32O bloco nãopode incluir endereços reservados. É possível inserir blocos adicionais selecionando Add Source(Adicionar origem). Há um número máximo de blocos CIDR que você pode especificar. Paraobter mais informações, consulte Cotas de serviço do Amazon EKS (p. 252). Se você nãoespecificar nenhum bloco, o endpoint do servidor de API público receberá solicitações de todos osendereços IP (0.0.0.0/0). Se restringir o acesso ao seu parâmetro de avaliação público utilizandoblocos CIDR, recomenda-se que também active acesso de ponto final privado para que os nóse as cápsulas Fargate (se as utilizar) possam comunicar com o grupo. Sem o endpoint privadohabilitado, suas origens CIDR de endpoint de acesso público devem incluir as origens de saídade sua VPC. Por exemplo, se tiver um nó numa subrede privada que comunica para a Internetatravés de um NAT Gateway, terá de adicionar o endereço IP de saída do gateway NAT comoparte de um bloco CIDR autorizado no seu parâmetro de avaliação público.

7. Selecione Update (Atualizar) para concluir.

51

Page 60: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioModificar o acesso ao endpoint do cluster

AWS CLI

Conclua as etapas a seguir usando a AWS CLI versão 1.18.110 ou posterior. Pode verificar a suaversão atual com aws --version. Para instalar ou actualizar o AWS CLI, consulte Instalar o AWSCLI.

1. Atualize o acesso ao endpoint do servidor de API do cluster com o comando da AWS CLI aseguir. Substitua o nome do cluster e os valores desejados de acesso ao endpoint. Se definirendpointPublicAccess=true, então pode (opcionalmente) introduzir um bloco CIDR únicoou uma lista de blocos CIDR separados por vírgulas para publicAccessCidrs. Os blocos nãopodem incluir endereços reservados. Se você especificar blocos CIDR, o endpoint do servidorde API público só receberá solicitações dos blocos listados. Há um número máximo de blocosCIDR que você pode especificar. Para obter mais informações, consulte Cotas de serviço doAmazon EKS (p. 252). Se restringir o acesso ao seu parâmetro de avaliação público utilizandoblocos CIDR, recomenda-se que também active acesso de ponto final privado para que osnós e as cápsulas Fargate (se as utilizar) possam comunicar com o grupo. Sem o endpointprivado habilitado, suas origens CIDR de endpoint de acesso público devem incluir as origensde saída de sua VPC. Por exemplo, se tiver um nó numa subrede privada que comunica para aInternet através de um NAT Gateway, terá de adicionar o endereço IP de saída do gateway NATcomo parte de um bloco CIDR autorizado no seu parâmetro de avaliação público. Se você nãoespecificar nenhum bloco CIDR, o endpoint do servidor de API público receberá solicitações detodos os endereços IP (0.0.0.0/0).

Note

O comando a seguir permite acesso privado e acesso público a partir de um únicoendereço IP para o endpoint do servidor de API. Substituir 203.0.113.5/32 com umbloco CIDR único ou uma lista de blocos CIDR separados por vírgulas que pretenderestringir o acesso à rede a.

aws eks update-cluster-config \ --region region-code \ --name dev \ --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true

Resultado

{ "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "InProgress", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] }

52

Page 61: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAcessar um servidor de API somente privado

}

2. Monitore o status da atualização do acesso ao endpoint com o comando a seguir, usando onome do cluster e o ID da atualização retornado pelo comando anterior. Sua atualização estaráconcluída quando o status for exibido como Successful.

aws eks describe-update \ --region region-code \ --name dev \ --update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000

Resultado

{ "update": { "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000", "status": "Successful", "type": "EndpointAccessUpdate", "params": [ { "type": "EndpointPublicAccess", "value": "true" }, { "type": "EndpointPrivateAccess", "value": "true" }, { "type": "publicAccessCidrs", "value": "[\203.0.113.5/32\"]" } ], "createdAt": 1576874258.137, "errors": [] }}

Acessar um servidor de API somente privadoSe tiver desabilitado o acesso público ao endpoint do servidor de API do Kubernetes do cluster, você sópoderá acessar o servidor de API pela VPC ou por uma rede conectada. Veja a seguir algumas maneiraspossíveis de acessar o endpoint do servidor de API do Kubernetes:

• Rede conectada – Conecte a rede à VPC com um gateway de trânsito da AWS ou outra opção deconectividade e, depois, use um computador na rede conectada. É necessário garantir que o grupo desegurança do plano de controle do Amazon EKS tenha regras para permitir o tráfego de entrada na porta443 da rede conectada.

• Amazon EC2 bastion host (Bastion host do Amazon EC2) – é possível executar uma instância doAmazon EC2 em uma sub-rede pública na VPC do cluster e fazer login por SSH nessa instância paraexecutar comandos kubectl. Para obter mais informações, consulte Bastion hosts do Linux na AWS. Énecessário garantir que o grupo de segurança do plano de controle do Amazon EKS tenha regras parapermitir o tráfego de entrada na porta 443 do seu bastion host. Para obter mais informações, consulteConsiderações sobre os grupos de segurança do Amazon EKS (p. 175).

Quando você configurar kubectl para o bastion host, use credenciais da AWS que já estejammapeadas para a configuração do RBAC do cluster ou adicione o usuário ou a função do IAM queo bastion usará para a configuração do RBAC antes de remover o acesso público ao endpoint. Para

53

Page 62: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAutoscaler do cluster

obter mais informações, consulte Gerenciar usuários ou funções do IAM para o cluster (p. 229) eUnauthorized or access denied (kubectl) (Não autorizado ou acesso negado (kubectl)) (p. 322).

• AWS Cloud9 IDE (IDE do AWS Cloud9) – o AWS Cloud9 é um ambiente de desenvolvimento integrado(IDE) baseado na nuvem que permite gravar, executar e depurar seu código usando apenas umnavegador. Você pode criar um IDE do AWS Cloud9 na VPC do cluster e usar o IDE para se comunicarcom o cluster. Para obter mais informações, consulte Criar um ambiente no AWS Cloud9. É necessáriogarantir que o grupo de segurança do plano de controle do Amazon EKS contenha regras para permitir otráfego de entrada na porta 443 do seu grupo de segurança IDE. Para obter mais informações, consulteConsiderações sobre os grupos de segurança do Amazon EKS (p. 175).

Ao configurar kubectl para o IDE do AWS Cloud9, use credenciais da AWS que já estejam mapeadaspara a configuração do RBAC do cluster ou adicione o usuário ou a função do IAM que o IDE usará paraa configuração do RBAC antes de remover o acesso público ao endpoint. Para obter mais informações,consulte Gerenciar usuários ou funções do IAM para o cluster (p. 229) e Unauthorized or accessdenied (kubectl) (Não autorizado ou acesso negado (kubectl)) (p. 322).

Autoscaler do clusterO Cluster Autoscaler do Kubernetes ajusta automaticamente o número de nós no cluster quando os podsnão são iniciados devido à falta de recursos ou quando os nós no cluster são subutilizados, e seus podspodem ser reprogramados para outros nós no cluster.

Este tópico mostra como implantar o Cluster Autoscaler no cluster do Amazon EKS e como configurá-lo para modificar os grupos de Auto Scaling do Amazon EC2. O Autoscaler de Cluster modifica os seusgrupos de nós para que estes se destaquem quando precisar de mais recursos e escala quando tiverrecursos subutilizados.

Criar um cluster do Amazon EKSEsta seção ajuda a criar um cluster e um grupo ou grupos de nós. Se você já tem um cluster, siga paraConsiderações sobre o grupo de nós do Cluster Autoscaler (p. 55).

Se você está executando um aplicativo stateful em várias zonas de disponibilidade baseadas em volumesdo Amazon EBS e usando o Kubernetes Autoscaler do cluster (p. 54), deverá configurar vários gruposde nós, cada um delimitado a uma única zona de disponibilidade. Além disso, você deverá ativar orecurso --balance-similar-node-groups. Caso contrário, você poderá criar um único grupo de nósabrangendo várias zonas de disponibilidade.

Escolha um dos procedimentos de criação de cluster abaixo que atende aos seus requisitos.

Para criar um grupo com um grupo gerido único que abrange vários Zona de disponibilidades

• Crie um cluster do Amazon EKS com um único grupo de nós gerenciados com o seguinte comando daeksctl. Para obter mais informações, consulte Criar um cluster do Amazon EKS (p. 30). Substituiro variable text com os seus próprios valores.

eksctl create cluster --name my-cluster --version 1.17 --managed --asg-access

Partes da saída que mostram as Zona de disponibilidades:

...[✓] using region region-code[✓] setting availability zones to [region-codea region-codeb region-codec][✓] subnets for region-codea - public:192.168.0.0/19 private:192.168.96.0/19[✓] subnets for region-codeb - public:192.168.32.0/19 private:192.168.128.0/19[✓] subnets for region-codec - public:192.168.64.0/19 private:192.168.160.0/19

54

Page 63: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConsiderações sobre o grupo de nós do Cluster Autoscaler

...[✓] nodegroup "ng-6bcca56a" has 2 node(s)[✓] node "ip-192-168-28-68.region-code.compute.internal" is ready[✓] node "ip-192-168-61-153.region-code.compute.internal" is ready[✓] waiting for at least 2 node(s) to become ready in "ng-6bcca56a"[✓] nodegroup "ng-6bcca56a" has 2 node(s)[✓] node "ip-192-168-28-68.region-code.compute.internal" is ready[✓] node "ip-192-168-61-153.region-code.compute.internal" is ready...[✓] EKS cluster "my-cluster" in "region-code" region-code is ready

Como criar um cluster com um grupo de nós gerenciados dedicado para cada Zona dedisponibilidade

1. Crie um cluster do Amazon EKS sem grupos de nós com o seguinte comando eksctl. Para obtermais informações, consulte Criar um cluster do Amazon EKS (p. 30). Observe as zonas dedisponibilidade nas quais o cluster é criado. Você usará essas zonas de disponibilidade ao criar seusgrupos de nós. Substitua o texto variável em vermelho por seus próprios valores.

eksctl create cluster --name my-cluster --version 1.17 --without-nodegroup

Partes da saída que mostram as Zona de disponibilidades:

...[✓] using region region-code[✓] setting availability zones to [region-codea region-codec region-codeb][✓] subnets for region-codea - public:192.168.0.0/19 private:192.168.96.0/19[✓] subnets for region-codec - public:192.168.32.0/19 private:192.168.128.0/19[✓] subnets for region-codeb - public:192.168.64.0/19 private:192.168.160.0/19...[✓] EKS cluster "my-cluster" in "region-code" region is ready

Este grupo foi criado nos seguintes Zona de disponibilidades: region-codea. region-codec, eregion-code\b

2. Para cada zona de disponibilidade no cluster, use o seguinte comando eksctl para criar um grupode nós. Substituir o variable text com os seus próprios valores. Esse comando cria um grupo deAuto Scaling com uma contagem mínima de um e uma contagem máxima de dez.

eksctl create nodegroup --cluster my-cluster --node-zones region-codea --name region-codea --asg-access --nodes-min 1 --nodes 5 --nodes-max 10 --managed

Considerações sobre o grupo de nós do ClusterAutoscalerO Autoscaler do cluster requer considerações adicionais do IAM e de adição de tags a recursos,explicadas nesta seção.

Política do IAM para grupo de nósO Cluster Autoscaler requer as seguintes permissões do IAM para fazer chamadas às APIs da AWS emseu nome.

Se utilizou o anterior eksctl comandos para criar os grupos de nós, estas permissões sãoautomaticamente fornecidas e anexadas ao seu nó IAM funções. Se não utilizou eksctl, tem de criar um

55

Page 64: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioImplantar o Cluster Autoscaler

IAM política com o seguinte documento e anexe-o ao seu nó IAM funções. Para obter mais informações,consulte Modificar uma função no Guia do usuário do IAM.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeLaunchConfigurations", "autoscaling:DescribeTags", "autoscaling:SetDesiredCapacity", "autoscaling:TerminateInstanceInAutoScalingGroup", "ec2:DescribeLaunchTemplateVersions" ], "Resource": "*", "Effect": "Allow" } ]}

Tags do grupo de Auto ScalingO Cluster Autoscaler requer as seguintes tags em seus grupos de nós do Auto Scaling para que elespossam ser detectados automaticamente.

Se você tiver usado os comandos anteriores da eksctl para criar os grupos de nós, essas tags serãoaplicadas automaticamente. Caso contrário, você deverá marcar manualmente os grupos de Auto Scalingcom as seguintes tags. Para obter mais informações, consulte Marcar seus recursos do Amazon EC2 noGuia do usuário do Amazon EC2 para instâncias do Linux.

Chave Valor

k8s.io/cluster-autoscaler/<cluster-name>

owned

k8s.io/cluster-autoscaler/enabled true

Implantar o Cluster AutoscalerPara implantar o Cluster Autoscaler

1. Implante o Cluster Autoscaler no cluster com o seguinte comando.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml

2. Adicione a anotação cluster-autoscaler.kubernetes.io/safe-to-evict à implantação como seguinte comando.

kubectl -n kube-system annotate deployment.apps/cluster-autoscaler cluster-autoscaler.kubernetes.io/safe-to-evict="false"

3. Edite a implantação do Cluster Autoscaler com o seguinte comando.

kubectl -n kube-system edit deployment.apps/cluster-autoscaler

56

Page 65: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVisualizar os logs do Cluster Autoscaler

Edite o comando de contêiner cluster-autoscaler para substituir <YOUR CLUSTER NAME> pelonome do cluster e adicione as seguintes opções.

• --balance-similar-node-groups

• --skip-nodes-with-system-pods=false

spec: containers: - command: - ./cluster-autoscaler - --v=4 - --stderrthreshold=info - --cloud-provider=aws - --skip-nodes-with-local-storage=false - --expander=least-waste - --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/<YOUR CLUSTER NAME> - --balance-similar-node-groups - --skip-nodes-with-system-pods=false

Salve e feche o arquivo para aplicar as alterações.4. Abra a página releases do Cluster Autoscaler em um navegador da web e encontre a versão mais

recente do Cluster Autoscaler que corresponde às versões principal e secundária do Kubernetesde seu cluster. Por exemplo, se a versão do Kubernetes do cluster for 1.17, localize a versão maisrecente do Cluster Autoscaler que começa com 1.17. Registe o número da versão semântica (1.17.n)para essa versão para utilizar no próximo passo.

5. Defina a tag de imagem do Cluster Autoscaler como a versão que você registrou na etapa anteriorcom o comando a seguir. Substituir 1.15.n com o seu próprio valor. É possível substituir us por asiaou por eu.

kubectl -n kube-system set image deployment.apps/cluster-autoscaler cluster-autoscaler=us.gcr.io/k8s-artifacts-prod/autoscaling/cluster-autoscaler:v1.15.n

Note

Dependendo da versão da qual você precisa, talvez seja necessário alterar o endereçoanterior para gcr.io/google-containers/cluster-autoscaler:v1.n.n. O endereçoda imagem está listado na página de versões.

Visualizar os logs do Cluster AutoscalerDepois de implantar o Cluster Autoscaler, você pode visualizar os logs e verificar se ele está monitorando acarga do cluster.

Visualize os logs do Cluster Autoscaler com o seguinte comando.

kubectl -n kube-system logs -f deployment.apps/cluster-autoscaler

Resultado

I0926 23:15:55.165842 1 static_autoscaler.go:138] Starting main loopI0926 23:15:55.166279 1 utils.go:595] No pod using affinity / antiaffinity found in cluster, disabling affinity predicate for this loop

57

Page 66: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioRegistro em log do plano de controle

I0926 23:15:55.166293 1 static_autoscaler.go:294] Filtering out schedulablesI0926 23:15:55.166330 1 static_autoscaler.go:311] No schedulable podsI0926 23:15:55.166338 1 static_autoscaler.go:319] No unschedulable podsI0926 23:15:55.166345 1 static_autoscaler.go:366] Calculating unneeded nodesI0926 23:15:55.166357 1 utils.go:552] Skipping ip-192-168-3-111.region-code.compute.internal - node group min size reachedI0926 23:15:55.166365 1 utils.go:552] Skipping ip-192-168-71-83.region-code.compute.internal - node group min size reachedI0926 23:15:55.166373 1 utils.go:552] Skipping ip-192-168-60-191.region-code.compute.internal - node group min size reachedI0926 23:15:55.166435 1 static_autoscaler.go:393] Scale down status: unneededOnly=false lastScaleUpTime=2019-09-26 21:42:40.908059094 ...I0926 23:15:55.166458 1 static_autoscaler.go:403] Starting scale downI0926 23:15:55.166488 1 scale_down.go:706] No candidates for scale down

Registro em log do plano de controle do AmazonEKS

O registro em log do plano de controle do Amazon EKS fornece logs de auditoria e diagnóstico diretamentedo plano de controle do Amazon EKS para o CloudWatch Logs em sua conta. Esses logs facilitam aproteção e a execução dos clusters. Você pode selecionar os tipos exatos de logs necessários, e os logsserão enviados como fluxos de log para cada cluster do Amazon EKS no CloudWatch.

Você pode começar a usar o registro em log do plano de controle do Amazon EKS escolhendo os tipos delogs que você deseja habilitar para cada cluster novo ou existente do Amazon EKS. É possível habilitar oudesabilitar cada tipo de log por cluster usando o Console de gerenciamento da AWS, a AWS CLI (versão1.16.139 ou posterior) ou por meio da API do Amazon EKS. Quando habilitados, os logs são enviadosautomaticamente do cluster do Amazon EKS para o CloudWatch Logs na mesma conta.

Ao usar o registro em log do plano de controle do Amazon EKS, você será cobrado pela definição de preçopadrão do Amazon EKS para cada cluster executado. Você será cobrado pela ingestão de dados padrãodo CloudWatch Logs e pelos custos de armazenamento de qualquer log enviado ao CloudWatch Logs apartir dos seus clusters. Você também será cobrado por qualquer recurso da AWS, como instâncias doAmazon EC2 ou volumes do Amazon EBS, que forem provisionados como parte do seu cluster.

Os seguintes tipos de log do plano de controle do cluster estão disponíveis. Cada tipo de log correspondea um componente do plano de controle do Kubernetes. Para saber mais sobre esses componentes,consulte Componentes do Kubernetes na documentação do Kubernetes.

• Logs do componente do servidor de API do Kubernetes (api) – o servidor da API do cluster é ocomponente do plano de controle que expõe a API do Kubernetes. Para obter mais informações,consulte kube-apiserver na documentação do Kubernetes.

• Auditoria (audit) – os logs de auditoria do Kubernetes fornecem um registro dos usuários individuais,administradores ou componentes do sistema que afetaram o cluster. Para obter mais informações,consulte Auditorias na documentação do Kubernetes.

• Autenticador (authenticator) – os logs do autenticador são exclusivos do Amazon EKS. Esseslogs representam o componente do plano de controle que o Amazon EKS usa para a autenticação doControle de acesso com base em função (RBAC – Role Based Access Control) usando credenciais doIAM. Para obter mais informações, consulte Autenticação de cluster (p. 222).

• Gerenciador do controlador (controllerManager) – o gerenciador do controlador gerencia osprincipais loops de controle que são enviados com o Kubernetes. Para obter mais informações, consultekube-controller-manager na documentação do Kubernetes.

• Programador (scheduler) – o componente programador gerencia quando e onde executar pods nocluster. Para obter mais informações, consulte kube-scheduler na documentação do Kubernetes.

58

Page 67: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioHabilitar e desabilitar os logs do plano de controle

Habilitar e desabilitar os logs do plano de controlePor padrão, os logs do plano de controle do cluster não são enviados ao CloudWatch Logs. É necessáriohabilitar cada tipo de log individualmente para enviar logs ao cluster. As taxas de verificação de dados,armazenamento de arquivos e ingestão do CloudWatch Logs se aplicam a logs habilitados do plano decontrole. Para obter mais informações, consulte Definição de preço do CloudWatch.

Quando você habilita um tipo de log, os logs são enviados com um nível de verbosidade de log de 2.

Para habilitar ou desabilitar os logs do plano de controle com o console

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Selecione o nome do cluster para exibir as informações dele.3. Em Logging (Registro em log), selecione Update (Atualizar).4. Para cada tipo de log individual, escolha se o tipo de log deve ser Enabled (Habilitado) ou Disabled

(Desabilitado). Por padrão, cada tipo de log está Disabled (Desabilitado).5. Selecione Update (Atualizar) para concluir.

Para habilitar ou desabilitar os logs do plano de controle com a AWS CLI

1. Verifique a versão da AWS CLI com o comando a seguir.

aws --version

Se a versão da AWS CLI for anterior à versão 1.16.139, primeiro será necessário atualizar para aversão mais recente. Para instalar ou atualizar a AWS CLI, consulte Instalar a interface da linha decomando da AWS no Guia do usuário do AWS Command Line Interface.

2. Atualize a configuração de exportação do log do plano de controle do cluster com o seguinte comandoda AWS CLI. Substitua o nome do cluster e os valores desejados de acesso ao endpoint.

Note

O comando a seguir envia todos os tipos de log disponíveis ao CloudWatch Logs.

aws eks --region region-code update-cluster-config --name prod \--logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'

Resultado:

{ "update": { "id": "883405c8-65c6-4758-8cee-2a7c1340a6d9", "status": "InProgress", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": 1553271814.684, "errors": [] }}

59

Page 68: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVisualizar os logs do plano de controle do cluster

3. Monitore o status da atualização da configuração do log com o comando a seguir, usando o nomedo cluster e o ID da atualização que foram retornados pelo comando anterior. Sua atualização estaráconcluída quando o status aparecer como Successful.

aws eks --region region-code describe-update --name prod --update-id 883405c8-65c6-4758-8cee-2a7c1340a6d9

Resultado:

{ "update": { "id": "883405c8-65c6-4758-8cee-2a7c1340a6d9", "status": "Successful", "type": "LoggingUpdate", "params": [ { "type": "ClusterLogging", "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}" } ], "createdAt": 1553271814.684, "errors": [] }}

Visualizar os logs do plano de controle do clusterDepois que tiver habilitado qualquer um dos tipos de log do plano de controle para o cluster do AmazonEKS, você poderá visualizá-los no console do CloudWatch.

Para saber mais sobre como visualizar, analisar e gerenciar logs no CloudWatch, consulte o AmazonCloudWatch Logs User Guide.

Para visualizar os logs do plano de controle do cluster no console do CloudWatch

1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/home#logs:prefix=/aws/eks. Esse URL exibe os grupos de log disponíveis no momento e os filtra com o prefixo /aws/eks.

2. Escolha o cluster para o qual deseja visualizar os logs. O formato do nome do grupo de logs é /aws/eks/cluster-name/cluster.

3. Escolha o fluxo de logs que deseja visualizar. A lista a seguir descreve o formato do nome do fluxo delogs para cada tipo de log.

Note

À medida que os dados do fluxo de logs aumentam, os nomes dos fluxos de log sãoalternados. Quando existem vários fluxos de logs para determinado tipo de log, você podevisualizar o fluxo de logs mais recente procurando o nome do fluxo de logs com a Last EventTime (Hora do último evento) mais recente.

• Kubernetes API server component logs (api) (Logs do componente do servidor de API doKubernetes) – kube-apiserver-nnn...

• Audit (audit) (Auditoria) – kube-apiserver-audit-nnn...• Authenticator (authenticator) (Autenticador) – authenticator-nnn...• Controller manager (controllerManager) (Gerenciador do controlador) – kube-controller-manager-nnn...

60

Page 69: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVersões do Kubernetes

• Scheduler (scheduler) (Programador) – kube-scheduler-nnn...

Versões do Amazon EKS KubernetesO projeto do Kubernetes está evoluindo rapidamente com novos recursos, atualizações de design ecorreções de erros. A comunidade lança novas versões secundárias do Kubernetes, como 1.17, quesão disponibilizadas de maneira geral aproximadamente a cada três meses, e cada versão secundária écompatível por aproximadamente nove meses após seu lançamento.

Versões disponíveis do Kubernetes do Amazon EKSAs seguintes versões do Kubernetes estão disponíveis no momento para novos clusters no Amazon EKS:

• 1.17(6)• 1.16.8• 1.15.11• 1.14.9 (Não pode ser implementado utilizando o Console de gerenciamento da AWS, mas pode ser

implementado utilizando a API ou ferramentas como AWS CLI, eksctl, e AWS CloudFormation.

A menos que o aplicativo exija uma versão específica do Kubernetes, recomendamos que você escolhaa versão do Kubernetes mais recente disponível compatível com o Amazon EKS para seus clusters.Conforme novas versões do Kubernetes são disponibilizadas no Amazon EKS, recomendamos que vocêatualize proativamente seus clusters para usarem a versão mais recente disponível. Para obter maisinformações, consulte Atualizar uma versão do Kubernetes do cluster do Amazon EKS (p. 37).

Kubernetes 1.17O Kubernetes 1.17 agora está disponível no Amazon EKS. Para obter mais informações sobre oKubernetes 1.17, consulte o anúncio do lançamento oficial.

Important

• O EKS não activou o CSIMigrationAWS sinalizador de funcionalidades. Isto será activadonuma futura versão, juntamente com instruções detalhadas de migração. Para maisinformações sobre a migração CSI, consulte o Blogue Kubernetes.

• Actualizar um grupo de 1,16 para 1,17 irá falhar se algum dos AWS Fargate têm um kubeletversão menor anterior a 1,16. Antes de atualizar o seu grupo de 1.16 para 1.17, precisa dereciclar o seu Fargate de forma a que kubelet é 1,16 antes de tentar actualizar o grupo para1,17. Para reciclar uma implementação de Kubernetes num grupo de 1.15 ou posterior, utilize ocomando seguinte.

kubectl rollout restart deployment deployment-name

As seguintes características de Kubernetes são agora apoiadas em Kubernetes 1,17 grupos Amazon EKS:

• Etiquetas de fornecedor de cloud atingiu a disponibilidade geral. Se estiver a utilizar as etiquetas betanas suas especificações do grupo para funcionalidades como a afinidade do nó ou em quaisquercontroladores personalizados, recomendamos que comece a migrar-los para as novas etiquetas GA.Para obter informações sobre as novas etiquetas, consulte a seguinte documentação de Kubernetes:• node.kubernetes.io/instância-tipo

61

Page 70: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioKubernetes 1.16

• topologia.kubernetes.io/region• topologia.kubernetes.io/zone

• O capacitores a função tem graduado para geralmente disponível. Esta função permite-lhe limitar onúmero de recursos que uma quota suporta apenas aqueles que pertencem ao âmbito.

• O taintnodesbycondição a função tem graduado para geralmente disponível. Esta função permite-lhealcançar nós que tenham condições como o disco alto ou a pressão de memória.

• O Topologia CSI a função tem graduado para geralmente disponível e é totalmente apoiada peloControlador CSI EBS. Pode utilizar topologia para restringir o Zona de disponibilidade onde um volume éprovisionado.

• Proteção finalizador para serviços de tipo LoadBalancer tem graduado para geralmente disponível.Esta função assegura que um recurso de serviço não é totalmente eliminado até o balanceador de cargacorrelacionado ser também eliminado.

• Recursos personalizados agora suportam valores predefinidos. Especifique valores num esquema devalidação openapi v3.

• O Recipientes do Windows runasusername está agora em beta, permitindo-lhe executar aplicaçõesWindows num contentor como um nome de utilizador diferente do predefinido.

Para ver o changelog completo do Kubernetes 1.17, consulte https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.17.md.

Kubernetes 1.16O Kubernetes 1.16 agora está disponível no Amazon EKS. Para obter mais informações sobre oKubernetes 1.16, consulte o anúncio do lançamento oficial.

Important

• O Kubernetes 1.16 remove várias APIs defasadas. Podem ser exigidas alterações nosaplicativos antes de atualizar o cluster para a versão 1.16. Siga atentamente os pré-requisitosde atualização (p. 44) para a versão 1.16 antes de implantá-la.

• Da versão 1.16 em diante, a autoridade de certificação do Amazon EKS respeitará assolicitações de assinatura de certificado com extensões SAN X.509, o que resolve a solicitaçãode recurso EKS CA should honor SAN x509 extension do GitHub.

Os seguintes recursos do Kubernetes agora são compatíveis nos clusters do Amazon EKS no Kubernetes1.16:

• A expansão de volume na especificação da CSI foi movida para beta, o que permite que qualquer plug-inde volume de especificação da CSI seja redimensionável. Para obter mais informações, consulte VolumeExpansion na documentação da CSI do Kubernetes. A versão mais recente do driver da CSI do EBSoferece suporte à expansão de volume quando executada em um cluster do Amazon EKS 1.16.

• O suporte ao GMSA do Windows foi graduado de alfa para beta e, atualmente, é compatível com oAmazon EKS. Para obter mais informações, consulte Configure GMSA for Windows Pods and containersna documentação do Kubernetes.

• Uma nova anotação: service.beta.kubernetes.io/aws-load-balancer-eip-allocationsestá disponível no tipo de serviço LoadBalancer para atribuir um endereço IP elástico a Network LoadBalancers. Para obter mais informações, consulte o problema Support EIP Allocations with AWS NLB doGitHub.

• A proteção do finalizador para load balancers de serviço agora está na versão beta e habilitada porpadrão. A proteção do finalizador do load balancer garante que os recursos do load balancer alocadospara um objeto do Kubernetes Service, como o AWS Network Load Balancer, serão destruídos ou

62

Page 71: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioKubernetes 1.15:

liberados quando o serviço for excluído. Para obter mais informações, consulte Garbage Collecting LoadBalancers na documentação do Kubernetes.

• As definições de recursos personalizados do Kubernetes e os mecanismos de extensibilidade dewebhooks de admissão atingiram a disponibilidade geral. Para obter mais informações, consulte CustomResources e Dynamic Admission Control na documentação do Kubernetes.

• O recurso de aplicação no lado do servidor atingiu o status beta e está habilitado por padrão. Para obtermais informações, consulte Server Side Apply na documentação do Kubernetes.

• O recurso CustomResourceDefaulting é promovido para beta e habilitado por padrão. Os padrõespodem ser especificados em esquemas estruturais por meio da API apiextensions.k8s.io/v1.Para obter mais informações, consulte Specifying a structural schema na documentação do Kubernetes.

Para ver o changelog completo do Kubernetes 1.16, consulte https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.16.md.

Kubernetes 1.15:O Kubernetes 1.15 agora está disponível no Amazon EKS. Para obter mais informações sobre oKubernetes 1.15, consulte o official release announcement.

Important

A partir da versão 1.15, o Amazon EKS não marca mais a VPC que contém o cluster.

• As sub-redes dentro da VPC do seu cluster ainda são marcadas.• As tags da VPC não serão modificadas em atualizações de cluster existentes para a versão

1.15.

• Para obter mais informações sobre marcação de VPC, consulte ??? (p. 174).

Important

Amazon EKS definiu a política de re-invocações para o sistema de identidade do Pod IfNeeded.Isto permite que o nethook seja novamente invocado se os objetos forem alterados por outrosdispositivos de admissão de entrada em terra como o App Mesh injetor de carro lateral. Para obtermais informações sobre o injetor do arquivo associado App Mesh, consulte Instalar o injetor doarquivo associado.

Os seguintes recursos agora são compatíveis nos clusters do Amazon EKS no Kubernetes 1.15:

• O EKS agora oferece suporte à configuração de terminação TLS (Transport Layer Security), logs deacesso e intervalos de origem para network load balancers. Para obter mais informações, consulteNetwork Load Balancer support on AWS no GitHub.

• Maior flexibilidade das CRDs (Custom Resource Definitions, Definições de recursos personalizados),incluindo a capacidade de conversão entre versões em qualquer lugar. Para obter mais informações,consulte Expandir a API do Kubernetes com CustomResourceDefinitions no GitHub.

• NodeLocal DNSCache está na versão beta para clusters do Kubernetes versão 1.15. Esse recurso podeajudar a melhorar o desempenho DNS do cluster executando um agente de armazenamento em cacheDNS em nós de cluster como um DaemonSet. Para obter mais informações, consulte Using NodeLocalDNSCache in Kubernetes clusters no GitHub.

Note

Ao executar coredões em Amazon EC2, recomendamos que não utilize force_tcp naconfiguração e garantir que options use-vc não está definido em /etc/resolv.conf.

63

Page 72: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioKubernetes 1.14

Para ver o changelog completo do Kubernetes 1.15, consulte https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.15.md.

Kubernetes 1.14O Kubernetes 1.14 agora está disponível no Amazon EKS. Para obter mais informações sobre oKubernetes 1.14, consulte o official release announcement.

Important

O -allow-privileged bandeira foi removida de kubelet em Amazon EKS 1,14 nós. Se tivermodificado ou limitado o Política de segurança de pods padrão do Amazon EKS (p. 292) no seugrupo, deve verificar se as suas aplicações têm as permissões necessárias em 1,14 nós.

Os seguintes recursos agora são compatíveis nos clusters do Amazon EKS no Kubernetes 1.14:

• A topologia da Container Storage Interface está em beta para clusters do Kubernetes versão 1.14.Para obter mais informações, consulte CSI Topology Feature na documentação do desenvolvedor daCSI do Kubernetes. Os drivers da CSI a seguir fornecem uma interface de CSI para orquestradores decontêineres, como o Kubernetes, para gerenciar o ciclo de vida de volumes do Amazon EBS, sistemasde arquivos Amazon EFS e Amazon FSx para sistemas de arquivos Lustre:• Amazon Elastic Block Store (EBS) CSI driver• Driver da CSI do Amazon EFS• Driver da CSI do Amazon FSx for Lustre

• A limitação de IDs de processo (PID) está na versão beta para clusters do Kubernetes versão 1.14. Esserecurso permite que você defina cotas para quantos processos um pod pode criar, o que pode evitar afalta de recursos para outros aplicativos em um cluster. Para obter mais informações, consulte ProcessID Limiting for Stability Improvements in Kubernetes 1.14.

• Volumes locais persistentes agora estão disponíveis para o público e disponibilizam armazenamentoanexado localmente como uma origem de volume persistente. Para mais informações, consulteKubernetes 1,14: Volumes persistentes locais GA.

• A prioridade e a preempção de pods agora estão disponíveis para o público e permitem que pods sejamatribuídos a um nível de prioridade de programação. Para obter mais informações, consulte Pod Priorityand Preemption na documentação do Kubernetes.

• O suporte de nó do Windows é GA com Kubernetes 1.14.

Para ver o changelog completo do Kubernetes 1.14, consulte https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.14.md.

Suspensão da versão do Amazon EKSDe acordo com o suporte da comunidade do Kubernetes para versões do Kubernetes, o Amazon EKS estácomprometido em executar pelo menos três versões do Kubernetes prontas para produção a qualquermomento, com uma quarta versão em suspensão.

Vamos anunciar a suspensão de determinada versão secundária do Kubernetes pelo menos 60 dias antesda data de término do suporte. Por causa do processo de lançamento e qualificação do Amazon EKS paranovas versões do Kubernetes, a suspensão de uma versão do Kubernetes no Amazon EKS será na dataem que o projeto do Kubernetes interrompe o suporte ao upstream da versão ou após essa data.

Kubernetes suporta compatibilidade entre o plano de controlo e os nós para até duas versões menores,por isso 1.15 os nós continuarão a funcionar quando orados por um 1.17 plano de controlo. Para obtermais informações, consulte a Política de suporte da distorção da versão e da versão do Kubernetes nadocumentação do Kubernetes.

64

Page 73: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVersões da plataforma

Versões da plataformaAs versões da plataforma do Amazon EKS representam os recursos do plano de controle do cluster,como quais sinalizadores do servidor de API do Kubernetes estão habilitados e a versão de patch atual doKubernetes. Cada versão secundária do Kubernetes tem uma ou mais versões de plataforma do AmazonEKS associadas. As versões de plataforma para diferentes versões secundárias do Kubernetes sãoindependentes.

Quando uma nova versão pequena Kubernetes está disponível em Amazon EKS, como 1.17, a inicialAmazon EKS versão da plataforma para a versão menor de Kubernetes começa em eks.1. No entanto,Amazon EKS lançamento de novas versões de plataforma periodicamente para permitir novas definiçõesde plano de controlo Kubernetes e para fornecer correções de segurança.

Quando novas versões de plataforma do Amazon EKS são disponibilizadas para uma versão secundária:

• O número da versão da plataforma do Amazon EKS é incrementado (eks.n+1).• O Amazon EKS atualiza automaticamente todos os clusters existentes da versão de plataforma mais

recente do Amazon EKS para a versão secundária correspondente do Kubernetes.• Amazon EKS pode publicar um novo nó AMI com uma versão de patch correspondente. No entanto,

todas as versões de patch são compatíveis entre o plano de controlo EKS e o amis de nó para umaversão menor de Kubernetes.

Novas versões de plataforma do Amazon EKS não apresentam alterações que podem causar interrupçõesnem causam interrupções de serviço.

Note

As atualizações automáticas de versões de plataforma existentes do Amazon EKS sãoimplementadas de forma incremental. O processo de implantação pode levar algum tempo. Seprecisar dos recursos da versão de plataforma mais recente do Amazon EKS imediatamente,você deverá criar outro cluster do Amazon EKS.

Os clusters são sempre criados com a versão de plataforma mais recente disponível do Amazon EKS(eks.n) para a versão especificada do Kubernetes. Se você atualizar o cluster para uma nova versãosecundária do Kubernetes, o cluster receberá a versão atual da plataforma do Amazon EKS da versãosecundária do Kubernetes para a qual você atualizou.

As versões recentes e atuais da plataforma do Amazon EKS estão descritas nas tabelas a seguir.

Versão Kubernetes 1.17

Versão do Kubernetes Versão da plataformaAmazon EKS

Controladores deadmissão habilitados

Notas de release

1.17.6 eks.1 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy,TaintNodesByCondition,

Versão inicial doKubernetes 1.17 paraAmazon EKS. Paraobter mais informações,consulte Kubernetes1.17 (p. 61).

65

Page 74: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVersão Kubernetes 1.16

Versão do Kubernetes Versão da plataformaAmazon EKS

Controladores deadmissão habilitados

Notas de release

Priority,StorageObjectInUseProtection,PersistentVolumeClaimResize

Versão Kubernetes 1.16

Versão do Kubernetes Versão da plataformaAmazon EKS

Controladores deadmissão habilitados

Notas de release

1.16.8 eks.2 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy,TaintNodesByCondition,Priority,StorageObjectInUseProtection,PersistentVolumeClaimResize

Nova versão daplataforma comcorreções desegurança.

1.16.8 eks.1 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy,TaintNodesByCondition,Priority,StorageObjectInUseProtection,PersistentVolumeClaimResize

Versão inicial doKubernetes 1.16 paraAmazon EKS. Paraobter mais informações,consulte Kubernetes1.16 (p. 62).

Versão Kubernetes 1.15

Versão do Kubernetes Versão da plataformaAmazon EKS

Controladores deadmissão habilitados

Notas de release

1.15.11 eks.3 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,

Nova versão daplataforma comcorreções desegurança.

66

Page 75: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVersão Kubernetes 1.14

Versão do Kubernetes Versão da plataformaAmazon EKS

Controladores deadmissão habilitados

Notas de release

NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy,TaintNodesByCondition,Priority,StorageObjectInUseProtection,PersistentVolumeClaimResize

1.15.11 eks.2 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy,TaintNodesByCondition,Priority,StorageObjectInUseProtection,PersistentVolumeClaimResize

Nova versão deplataforma comcorreções de bugse aprimoramentos,incluindo umaatualização para oAWS IAM Authenticatordo lado do servidor,com melhorias narastreabilidade defunções do IAM.

1.15.10 eks.1 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy,TaintNodesByCondition,Priority,StorageObjectInUseProtection,PersistentVolumeClaimResize

Versão inicial doKubernetes 1.15 parao Amazon EKS. Paraobter mais informações,consulte Kubernetes1.15: (p. 63).

Versão Kubernetes 1.14

Versão do Kubernetes Versão da plataformaAmazon EKS

Controladores deadmissão habilitados

Notas de release

1.14.9 eks.10 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,

Nova versão daplataforma comcorreções desegurança.

67

Page 76: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVersão Kubernetes 1.14

Versão do Kubernetes Versão da plataformaAmazon EKS

Controladores deadmissão habilitados

Notas de release

ValidatingAdmissionWebhook,PodSecurityPolicy

1.14.9 eks.9 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nova versão daplataforma comaprimoramentos esuporte a recursosadicionais.

1.14.9 eks.8 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nova versão daplataforma comcorreções de segurançae de bugs.

1.14.9 eks.7 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nova versão daplataforma comcorreções desegurança.

1.14.9 eks.6 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nova versão daplataforma atualizandoclusters Amazon EKSKubernetes 1.14 para1.14.9, várias correçõesde bugs e melhorias dedesempenho.

68

Page 77: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVersão Kubernetes 1.14

Versão do Kubernetes Versão da plataformaAmazon EKS

Controladores deadmissão habilitados

Notas de release

1.14.8 eks.5 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nova versão daplataforma agoracompatível com AWSFargate (p. 118).

1.14.8 eks.4 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nova versão deplataforma paravárias correções debugs e melhorias dedesempenho.

1.14.8 eks.3 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nova versão daplataforma agoracompatível comGrupos de nósgerenciados (p. 92).

1.14.8 eks.2 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Nova versão deplataforma, atualizandoos clusters do AmazonEKS Kubernetesversão 1.14 para1.14.8 para resolver oCVE-2019-11253.

1.14.6 eks.1 NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,PodSecurityPolicy

Versão inicial doKubernetes 1.14 paraAmazon EKS. Paraobter mais informações,consulte Kubernetes1.14 (p. 64).

69

Page 78: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioSuporte ao Windows

Suporte ao WindowsEste tópico descreve como adicionar suporte do Windows a clusters do Amazon EKS.

ConsiderationsAntes de implementar os nós do Windows, tenha em atenção as seguintes considerações.

• As cargas de trabalho do Windows são compatíveis com clusters do Amazon EKS que executam oKubernetes versão 1.14 ou posterior.

• Os tipos de instância do Amazon EC2 C3, C4, D2, I2, M4 (exceto instâncias m4.16xlarge) e instânciasR3 não são compatíveis com cargas de trabalho do Windows.

• O modo de rede do host não tem suporte para cargas de trabalho do Windows.• Amazon EKS os conjuntos têm de conter um ou mais nós Linux para executar as cápsulas do sistema

principal que só são executadas em Linux, tais como coredns e o controlador de recursos VPC.• Os logs de eventos kubelet e kube-proxy são redirecionados para o log de eventos do Windows EKS

e são definidos como um limite de 200 MB.• Os nós Windows suportam uma interface de rede elástica por nó. O número de cápsulas que pode

executar por nó do Windows é igual ao número de endereços IP disponíveis por interface de redeelástica para o tipo de instância do nó, menos um. Para obter mais informações, consulte Endereços IPpor interface de rede por tipo de instância no Guia do usuário do Amazon EC2 para instâncias do Linux.

• As Contas de Serviço Gerido por Grupo (GMSA) para as cápsulas e recipientes Windows não sãosuportadas pelas versões da Amazon EKS anterior a 1,16. Pode seguir as instruções na documentaçãoKubernetes para activar e testar esta funcionalidade alfa em grupos que são anteriores a 1,16.

Habilitar o suporte do WindowsAs etapas a seguir ajudam você a habilitar o suporte do Windows para seu cluster do Amazon EKS.Escolha a guia abaixo para usar as ferramentas padrão em seu sistema operacional cliente.

eksctl

Como habilitar o suporte do Windows para seu cluster com eksctl

Este procedimento só funciona para clusters que foram criados com eksctl e supõe que a suaversão do eksctl seja 0.25.0 ou posterior. Você pode verificar a versão da com o comando aseguir:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ou atualizaro eksctl (p. 238).

1. Ative o suporte do Windows para seu cluster do Amazon EKS com o comando do eksctl aseguir. Esse comando implanta o controlador de recursos da VPC e o webhook do controladorde admissão da VPC que são necessários em clusters do Amazon EKS para executar cargas detrabalho do Windows.

eksctl utils install-vpc-controllers --cluster cluster_name --approve

2. Depois de habilitar o suporte do Windows, você pode iniciar um grupo de nós do Windows em seucluster. Para obter mais informações, consulte Iniciar os nós do Windows auto-geridos (p. 106).

70

Page 79: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioHabilitar o suporte do Windows

Depois de adicionar suporte do Windows ao cluster, você deve especificar seletores de nó em seusaplicativos para que os pods sejam descarregados em um nó com o sistema operacional apropriado.Para pods do Linux, use o texto do seletor de nó a seguir em seus manifestos.

nodeSelector: kubernetes.io/os: linux kubernetes.io/arch: amd64

Para pods do Windows, use o texto do seletor de nó a seguir em seus manifestos.

nodeSelector: kubernetes.io/os: windows kubernetes.io/arch: amd64

Windows

Como habilitar o suporte do Windows para seu cluster com um cliente Windows

Nos passos seguintes, substitua o region-code com a região em que o seu cluster reside em.

1. Implante o controlador de recursos da VPC em seu cluster.

kubectl apply -f https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/region-code/vpc-resource-controller/latest/vpc-resource-controller.yaml

2. Implante o webhook do controlador de admissão da VPC em seu cluster.

a. Faça download dos scripts e dos arquivos de implantação necessários.

curl -o vpc-admission-webhook-deployment.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/region-code/vpc-admission-webhook/latest/vpc-admission-webhook-deployment.yaml;curl -o Setup-VPCAdmissionWebhook.ps1 https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/region-code/vpc-admission-webhook/latest/Setup-VPCAdmissionWebhook.ps1;curl -o webhook-create-signed-cert.ps1 https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/region-code/vpc-admission-webhook/latest/webhook-create-signed-cert.ps1;curl -o webhook-patch-ca-bundle.ps1 https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/region-code/vpc-admission-webhook/latest/webhook-patch-ca-bundle.ps1;

b. Instale o OpenSSL e o jq.c. Configure e implante o webhook de admissão da VPC.

./Setup-VPCAdmissionWebhook.ps1 -DeploymentTemplate ".\vpc-admission-webhook-deployment.yaml"

3. Determine se o cluster tem a vinculação de função de cluster necessária.

kubectl get clusterrolebinding eks:kube-proxy-windows

Se uma saída semelhante ao resultado de exemplo a seguir for retornada, o cluster terá avinculação de função necessária.

NAME AGEeks:kube-proxy-windows 10d

71

Page 80: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioHabilitar o suporte do Windows

Se a saída incluir Error from server (NotFound), o cluster não tem a associação defunção de cluster necessária. Adicione a vinculação criando um arquivo chamado eks-kube-proxy-windows-crb.yaml com o conteúdo a seguir.

kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: eks:kube-proxy-windows labels: k8s-app: kube-proxy eks.amazonaws.com/component: kube-proxysubjects: - kind: Group name: "eks:kube-proxy-windows"roleRef: kind: ClusterRole name: system:node-proxier apiGroup: rbac.authorization.k8s.io

Aplique a configuração ao cluster.

kubectl apply -f eks-kube-proxy-windows-crb.yaml

4. Depois de habilitar o suporte do Windows, você pode iniciar um grupo de nós do Windows em seucluster. Para obter mais informações, consulte Iniciar os nós do Windows auto-geridos (p. 106).

Depois de adicionar suporte do Windows ao cluster, você deve especificar seletores de nó em seusaplicativos para que os pods sejam descarregados em um nó com o sistema operacional apropriado.Para pods do Linux, use o texto do seletor de nó a seguir em seus manifestos.

nodeSelector: kubernetes.io/os: linux kubernetes.io/arch: amd64

Para pods do Windows, use o texto do seletor de nó a seguir em seus manifestos.

nodeSelector: kubernetes.io/os: windows kubernetes.io/arch: amd64

macOS and Linux

Como habilitar o suporte do Windows para seu cluster com um cliente macOS ou Linux

Este procedimento requer que a biblioteca openssl e o processador jq JSON estejam instalados emseu sistema cliente.

Nos passos seguintes, substitua region-code com a região em que o seu cluster reside em.

1. Implante o controlador de recursos da VPC em seu cluster.

kubectl apply -f https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/region-code/vpc-resource-controller/latest/vpc-resource-controller.yaml

2. Crie o manifesto webhook do controlador de admissão da VPC para seu cluster.

a. Faça download dos scripts e dos arquivos de implantação necessários.

72

Page 81: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioHabilitar o suporte do Windows

curl -o webhook-create-signed-cert.sh https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/region-code/vpc-admission-webhook/latest/webhook-create-signed-cert.shcurl -o webhook-patch-ca-bundle.sh https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/region-code/vpc-admission-webhook/latest/webhook-patch-ca-bundle.shcurl -o vpc-admission-webhook-deployment.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/manifests/region-code/vpc-admission-webhook/latest/vpc-admission-webhook-deployment.yaml

b. Adicione permissões aos scripts de shell para que eles possam ser executados.

chmod +x webhook-create-signed-cert.sh webhook-patch-ca-bundle.sh

c. Crie um segredo para comunicação segura.

./webhook-create-signed-cert.sh

d. Verifique o segredo.

kubectl get secret -n kube-system vpc-admission-webhook-certs

e. Configure o webhook e crie um arquivo de implantação.

cat ./vpc-admission-webhook-deployment.yaml | ./webhook-patch-ca-bundle.sh > vpc-admission-webhook.yaml

3. Implante o webhook de admissão da VPC.

kubectl apply -f vpc-admission-webhook.yaml

4. Determine se o cluster tem a vinculação de função de cluster necessária.

kubectl get clusterrolebinding eks:kube-proxy-windows

Se uma saída semelhante ao resultado de exemplo a seguir for retornada, o cluster terá avinculação de função necessária.

NAME AGEeks:kube-proxy-windows 10d

Se a saída incluir Error from server (NotFound), o cluster não tem a associação defunção de cluster necessária. Adicione a vinculação criando um arquivo chamado eks-kube-proxy-windows-crb.yaml com o conteúdo a seguir.

kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1beta1metadata: name: eks:kube-proxy-windows labels: k8s-app: kube-proxy eks.amazonaws.com/component: kube-proxysubjects: - kind: Group name: "eks:kube-proxy-windows"roleRef: kind: ClusterRole

73

Page 82: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioImplantar um aplicativo de exemplo do Windows

name: system:node-proxier apiGroup: rbac.authorization.k8s.io

Aplique a configuração ao cluster.

kubectl apply -f eks-kube-proxy-windows-crb.yaml

5. Depois de habilitar o suporte do Windows, você pode iniciar um grupo de nós do Windows em seucluster. Para obter mais informações, consulte Iniciar os nós do Windows auto-geridos (p. 106).

Depois de adicionar suporte do Windows ao cluster, você deve especificar seletores de nó em seusaplicativos para que os pods sejam descarregados em um nó com o sistema operacional apropriado.Para pods do Linux, use o texto do seletor de nó a seguir em seus manifestos.

nodeSelector: kubernetes.io/os: linux kubernetes.io/arch: amd64

Para pods do Windows, use o texto do seletor de nó a seguir em seus manifestos.

nodeSelector: kubernetes.io/os: windows kubernetes.io/arch: amd64

Implantar um aplicativo de exemplo do WindowsComo implantar um aplicativo de exemplo do Windows

1. Crie um arquivo chamado windows-server-iis.yaml com o seguinte conteúdo:

apiVersion: apps/v1kind: Deploymentmetadata: name: windows-server-iisspec: selector: matchLabels: app: windows-server-iis tier: backend track: stable replicas: 1 template: metadata: labels: app: windows-server-iis tier: backend track: stable spec: containers: - name: windows-server-iis image: mcr.microsoft.com/windows/servercore:1809 ports: - name: http containerPort: 80 imagePullPolicy: IfNotPresent command: - powershell.exe

74

Page 83: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioSuporte ao ARM

- -command - "Add-WindowsFeature Web-Server; Invoke-WebRequest -UseBasicParsing -Uri 'https://dotnetbinaries.blob.core.windows.net/servicemonitor/2.0.1.6/ServiceMonitor.exe' -OutFile 'C:\\ServiceMonitor.exe'; echo '<html><body><br/><br/><marquee><H1>Hello EKS!!!<H1><marquee></body><html>' > C:\\inetpub\\wwwroot\\default.html; C:\\ServiceMonitor.exe 'w3svc'; " nodeSelector: kubernetes.io/os: windows---apiVersion: v1kind: Servicemetadata: name: windows-server-iis-service namespace: defaultspec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: windows-server-iis tier: backend track: stable sessionAffinity: None type: LoadBalancer

2. Faça a implantação do aplicativo no cluster.

kubectl apply -f windows-server-iis.yaml

3. Obtenha o status do pod.

kubectl get pods -o wide --watch

Aguarde até que o pod faça a transição para o estado Running.4. Consulte os serviços no cluster e aguarde até que a coluna External IP (IP externo) do serviço

windows-server-iis-service seja preenchida.

Note

Pode levar vários minutos para que o endereço IP fique disponível.

kubectl get services -o wide

5. Depois que seu endereço IP externo estiver disponível, aponte um navegador da Web para esseendereço a fim de exibir a página inicial do IIS.

Note

Pode levar vários minutos para que o DNS se propague e o aplicativo de exemplo sejacarregado no navegador da Web.

Suporte ao ARMPode criar um Amazon EKS cluster e adicionar nós a funcionar Instâncias baseadas em listadores AWSao grupo. Essas instâncias oferecem economia significativa para aplicativos de expansão e baseadosno ARM, como servidores web, microsserviços conteinerizados, frotas de armazenamento em cache edatastores distribuídos.

75

Page 84: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConsiderations

Note

Essas instruções e os ativos aos quais elas fazem referência são oferecidos como um recursobeta administrado pela AWS. O uso dessas instruções e ativos é regido como um beta de acordocom os Termos de serviço da AWS. Enquanto estiver na versão beta, o Amazon EKS nãooferecerá suporte ao uso de instâncias com base no AWS Graviton para produção de cargas detrabalho do Kubernetes. Envie comentários ou dúvidas em GitHub issue.

Considerations• Os nós podem utilizar qualquer tipo de instância baseado em graviton AWS, tal como a1.xgrande ou

m6g.2xgrande. No entanto, todos os nós num grupo de nós devem utilizar o mesmo tipo de instância.• Os nós têm de ser implementados com Kubernetes versão 1.15 ou 1.14.• Para utilizar os nós de instância baseados em graviton AWS, tem de configurar um novo Amazon EKS

grupo. Não pode adicionar estes nós a um grupo que tenha um nó x86 existente.

Prerequisites• Ter o eksctl instalado no computador. Se ele não estiver instalado, consulte Instalar eksctl (p. 5) para

obter instruções de instalação.• Ter o kubectl instalado no computador. Para obter mais informações, consulte Instalarkubectl (p. 233).

• Ter a AWS CLI versão 1.16.156 ou posterior, ou o aws-iam-authenticator instalado. Para obtermais informações, consulte Instalar aws-iam-authenticator (p. 222) ou Instalar a AWS CLI.

Criar um cluster1. Execute o seguinte comando para criar uma Amazon EKS cluster sem nós. Se quiser criar um grupo

com a versão 1.14 do Kubernetes, substitua-o 1.15 com a versão que pretende. Pode substituirregion-code com qualquer Região que Amazon EKS está disponível em.

eksctl create cluster \--name a1-preview \--version 1.15 \--region region-code \--without-nodegroup

Executar um cluster do Amazon EKS usando o eksctl criará uma pilha do AWS CloudFormation.O processo de execução dessa pilha normalmente leva de 10 a 15 minutos. Você pode monitorar oprogresso no console do Amazon EKS.

2. Quando a criação do cluster estiver concluída, abra o console do AWS CloudFormation. Veráuma pilha com o nome eksctl-a1-preview-cluster. Seleccione esta pilha. Selecione a guiaRecursos. Registre os valores dos IDs dos recursos ControlPlaneSecurityGroup e VPC.

3. Confirme se o cluster está sendo executado com o comando kubectl get svc. O comandoretornará uma saída semelhante ao exemplo de saída a seguir.

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.100.0.1 <none> 443/TCP 20m

76

Page 85: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioHabilitar o suporte ao ARM

Habilitar o suporte ao ARMPara poder ter somente nós ARM em um cluster do Amazon EKS, é necessário atualizar algunscomponentes do Kubernetes. Conclua as etapas a seguir para atualizar o CoreDNS e o kube-proxy, einstale o plug-in ARM64 CNI da Amazon VPC para Kubernetes.

1. Atualize o ID da imagem do CoreDNS usando o comando que corresponde à versão do clusterinstalada na etapa anterior. Pode substituir 1.15 com 1.14.

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-arm-preview/dns-arm-1.15.yaml

2. Atualizar o kube-proxy ID de imagem utilizando o comando correspondente à versão do grupo queinstalou num passo anterior.Pode substituir 1.15 com 1.14.

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-arm-preview/kube-proxy-arm-1.15.yaml

3. Implante o plug-in ARM64 CNI da Amazon VPC para Kubernetes.

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-arm-preview/aws-k8s-cni-arm64.yaml

Lançar nósImportant

Os nós do Amazon EKS são instâncias padrão do Amazon EC2, e você é cobrado por eles combase nos preços normais de instâncias do Amazon EC2. Para obter mais informações, consulteDefinição de preço do Amazon EC2.

1. Abra o console do AWS CloudFormation. Verifique se você está na região da AWS na qual criou ocluster do Amazon EKS.

2. Selecione Create stack (Criar pilha) e With new resources (standard) (Com novos recursos (padrão)).3. Em Specify template (Especificar modelo), selecione Amazon S3 URL (URL do Amazon S3), insira o

URL a seguir na caixa Amazon S3 URL (URL do Amazon S3) e selecione Next (Próximo) duas vezes.

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-arm-nodegroup.yaml

4. Na página Specify stack details (Especificar detalhes da pilha), preencha os parâmetros a seguiradequadamente:

• Stack name (Nome da pilha) – escolha um nome para a pilha do AWS CloudFormation. Porexemplo, pode nomeá-lo a1-preview-nós.

• KubernetesVersion – selecione a versão do Kubernetes que você escolheu ao executar o cluster doAmazon EKS.

• ClusterName – insira o nome que você usou ao criar o cluster do Amazon EKS.Important

Este nome tem de corresponder exatamente ao nome utilizado em Etapa 1 Crie o seuAmazon EKS cluster (p. 22) caso contrário, os seus nós não podem aderir ao grupo.

• ClusterControlPlaneSecurityGroup – escolha o valor de ID ControlPlaneSecurityGroup nasaída do AWS CloudFormation gerada com the section called “Criar um cluster” (p. 76).

77

Page 86: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioLançar nós

• NodeGroupName – insira um nome para o grupo de nós. Este nome pode ser utilizadoposteriormente para identificar o grupo de Escala automática que é criado para os seus nós.

• tamanho do painel de controlo automático – Introduza o número mínimo de nós que o grupo deEscala automática pode escalar para.

• NodeAutoScalingGroupDesiredCapacity – insira o número desejado de nós para o qual dimensionarquando a pilha for criada.

• escalãodeescalãodeescalãodedepreciação – Introduza o número máximo de nós que o grupo deescala automática do seu nó pode escalar para.

• nodeinstantâneo – Escolha um dos A1 ou M6g tipos de instância para os seus nós, tais comoa1.large.

• tamanho da conta – Especifique um tamanho de volume de raiz para os seus nós, na gib.• nome chave – Introduza o nome de um Amazon EC2 O par de chaves SSH que pode utilizar para

ligar a SSH aos seus nós após o lançamento. Se ainda não tiver um par de chaves do Amazon EC2,você poderá criar um no Console de gerenciamento da AWS. Para obter mais informações, consultePares de chaves do Amazon EC2 no Guia do usuário do Amazon EC2 para instâncias do Linux.

Note

Se você não fornecer um par de chaves aqui, ocorrerá uma falha na criação da pilha doAWS CloudFormation.

• BootstrapArguments – argumentos que devem ser transmitidos ao script de bootstrap. Para obterdetalhes, consulte https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh.

• VpcId – insira o ID da VPC criada em the section called “Criar um cluster” (p. 76).• Subnets (Sub-redes) – escolha as sub-redes criadas em the section called “Criar um

cluster” (p. 76).

Important

Se alguma das sub-redes for pública, ela deverá ter a atribuição automática de atribuiçãode endereço IP público habilitada. Se a configuração não estiver habilitada para a sub-rede pública, os nós implantados nessa sub-rede pública não receberão um endereço IPpúblico e não poderão se comunicar com o cluster nem com outros serviços da AWS. Se asub-rede tiver sido implantada antes de 03/26/2020 usando qualquer um dos modelos deVPC do Amazon EKS AWS CloudFormation (p. 168), ou usando eksctl, a atribuiçãoautomática de endereço IP público será desabilitada para sub-redes públicas. Para obterinformações sobre como habilitar a atribuição de endereço IP público para uma sub-rede,consulte Modificar o atributo de endereçamento IPv4 público para a sub-rede. Se o nó forimplantado em uma sub-rede privada, ele poderá se comunicar com o cluster e com outrosserviços da AWS por meio de um gateway NAT.

• NodeImageAMI11x – o parâmetro Amazon EC2 Systems Manager para o ID da imagem da AMI.Você não deve fazer nenhuma alteração nesses parâmetros.

5. Selecione Next (Próximo) e Next (Próximo) novamente.6. Confirme que a pilha pode criar recursos do IAM e escolha Create stack (Criar pilha).

Note

Se os nós não conseguirem juntar-se ao cluster, consulte ??? (p. 321) no guia de Soluçãode problemas.

7. Quando a criação da pilha for concluída, selecione-a no console e escolha Outputs (Saídas).8. Registre o valor de NodeInstanceRole para o grupo de nós criado. Precisa disto quando configurar o

seu Amazon EKS nós.

78

Page 87: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioJuntar nós a um grupo

Juntar nós a um grupo1. Faça download, edite e aplique o mapa de configuração do AWS IAM Authenticator.

a. Use o comando a seguir para fazer download do mapa de configuração:

wget https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2019-11-15/aws-auth-cm.yaml

b. Abra o arquivo com seu editor de texto favorito. Substituir o <ARN of instance role (notinstance profile)> fragmento com o nodeinstantâneo valor que registou no procedimentoanterior e guarde o ficheiro.

Important

Não modifique outras linhas nesse arquivo.

apiVersion: v1kind: ConfigMapmetadata: name: aws-auth namespace: kube-systemdata: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

c. Aplique a configuração. Esse comando pode demorar alguns minutos para ser concluído.

kubectl apply -f aws-auth-cm.yaml

Note

Se você receber qualquer erro de autorização ou de tipo de recurso, consulteUnauthorized or access denied (kubectl) (Não autorizado ou acesso negado(kubectl)) (p. 322) na seção de solução de problemas.

2. Observe o status de seus nós e aguarde até que eles atinjam o status Ready.

kubectl get nodes --watch

(Opcional) Implantar um aplicativoPara confirmar que pode implementar e executar uma aplicação nos nós, realize os seguintes passos.

1. Implante o auxiliar de métricas da CNI com o comando a seguir.

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-arm-preview/cni-metrics-helper-arm64.yaml

A saída retornada será semelhante ao exemplo de saída a seguir.

clusterrole.rbac.authorization.k8s.io/cni-metrics-helper created79

Page 88: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioSuporte do Inferentia

serviceaccount/cni-metrics-helper createdclusterrolebinding.rbac.authorization.k8s.io/cni-metrics-helper createddeployment.extensions/cni-metrics-helper created

2. Verifique se o auxiliar de métricas da CNI está sendo executado com o comando a seguir.

kubectl -n kube-system get pods -o wide

O pod estará em execução se o pod cni-metrics-helper for retornado na saída.

Suporte do InferentiaEste tópico descreve como criar um Amazon EKS cluster com nós em execução Amazon EC2 Inf. 1e (opcionalmente) implementem uma aplicação de amostra. Amazon EC2 As instâncias de Inf1 sãoalimentadas por AWS Inferencia batatas fritas, que são personalizadas AWS para proporcionar umelevado desempenho e menor inferência de custos na cloud. Os modelos de aprendizagem da máquinasão aplicados aos contentores utilizando AWS Neurónio, um kit de desenvolvimento de software (SDK)especializado que consiste em ferramentas de compactação, tempo de execução e definição de perfis queotimizam o desempenho de inferência da máquina de chips de Inferentia. AWS O neurovascular suportaquadros de aprendizagem de máquinas populares, tais como o tensorflow, pitocha e mxnet.

Considerations• Instâncias do Inf1 são compatíveis com clusters do Amazon EKS que executam o Kubernetes versão

1.14 e posterior.• Os IDs lógicos do dispositivo Neuron devem ser contíguos. Se um pod que solicita vários dispositivos

Neuron estiver agendado em um tipo de instância inf1.6xlarge ou inf1.24xlarge (que tem maisde um dispositivo Neuron), esse pod não será iniciado se o programador do Kubernetes selecionarIDs de dispositivo não contíguos. Para obter mais informações, consulte Device logical IDs must becontiguous no GitHub.

• Instâncias Inf1 do Amazon EC2 atualmente não são compatíveis com grupos de nós gerenciados.

Prerequisites• Ter o eksctl instalado no computador. Se ele não estiver instalado, consulte Instalar eksctl (p. 5) para

obter instruções de instalação.• Ter o kubectl instalado no computador. Para obter mais informações, consulte Instalarkubectl (p. 233).

• (Opcional) Instale o python3 no computador. Se você não o tiver instalado, consulte as instruções deinstalação de downloads do Python.

Criar um clusterPara criar um grupo com o Inf1 Amazon EC2 nós de instância

1. Crie um grupo com o Inf1 Amazon EC2 nós de instância. Pode substituir inf1.2xlarge comqualquer Tipo de instância de Inf1. eksctl confirma que está a lançar um grupo de nós com um tipode instância de Inf1 e irá iniciar os seus nós utilizando o EKS otimizado para AMI acelerada (p. 141).

80

Page 89: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Opcional) Criar uma imagem do

aplicativo Neuron TensorFlow Serving

Note

Você não pode usar funções do IAM para contas de serviço (p. 275) com o TensorFlowServing.

eksctl create cluster \ --name inferentia \ --version 1.16 \ --region region-code \ --nodegroup-name ng-inf1 \ --node-type inf1.2xlarge \ --nodes 2 \ --nodes-min 1 \ --nodes-max 4

Note

Observe o valor da seguinte linha da saída. Ele é usado em uma etapa posterior (opcional).

[✓] adding identity "arn:aws:iam::111122223333:role/eksctl-inferentia-nodegroup-ng-in-NodeInstanceRole-FI7HIYS3BS09" to auth ConfigMap

Ao iniciar um grupo de nós com instâncias Inf1, o eksctl instala automaticamente o plug-in dedispositivo Kubernetes do AWS Neuron. Este plug-in anuncia dispositivos Neuron como um recursode sistema para o programador Kubernetes, que pode ser solicitado por um contêiner. Além dapredefinição Amazon EKS nó IAM políticas, o Amazon S3 a política de acesso apenas de leituraé adicionada para que a aplicação de amostras, coberta num passo posterior, possa carregar ummodelo com formação de Amazon S3.

2. Verifique se todos os pods foram iniciados corretamente.

kubectl get pods -n kube-system

Resultado

NAME READY STATUS RESTARTS AGEaws-node-kx2m8 1/1 Running 0 5maws-node-q57pf 1/1 Running 0 5mcoredns-86d5cbb4bd-56dz2 1/1 Running 0 5mcoredns-86d5cbb4bd-d6n4z 1/1 Running 0 5mkube-proxy-75zx6 1/1 Running 0 5mkube-proxy-plkfq 1/1 Running 0 5mneuron-device-plugin-daemonset-6djhp 1/1 Running 0 5mneuron-device-plugin-daemonset-hwjsj 1/1 Running 0 5m

(Opcional) Criar uma imagem do aplicativo NeuronTensorFlow Serving

Note

Em breve, o Neuron estará disponível e pré-instalado em contêineres de aprendizagem profundada AWS. Para atualizações, consulte AWS Neuron.

1. Crie um repositório do Amazon ECR para armazenar a imagem do aplicativo.

81

Page 90: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Opcional) Implante uma imagem

de aplicativo do TensorFlow Serving

aws ecr create-repository --repository-name tensorflow-model-server-neuron

Anote o repositoryUri retornado na saída para uso em uma etapa posterior.2. Crie um Dockerfile denominado Dockerfile.tf-serving com o seguinte conteúdo. O Dockerfile

contém os comandos para criar uma imagem de aplicativo Neuron otimizado para TensorFlowServing. O Neuron TensorFlow Serving usa a mesma API que o TensorFlow Serving comum. Asúnicas diferenças são que o modelo salvo deve ser compilado para Inferentia e o ponto de entrada éum binário diferente.

FROM amazonlinux:2

RUN yum install -y awscli

RUN echo $'[neuron] \n\name=Neuron YUM Repository \n\baseurl=https://yum.repos.neuron.amazonaws.com \n\enabled=1' > /etc/yum.repos.d/neuron.repo

RUN rpm --import https://yum.repos.neuron.amazonaws.com/GPG-PUB-KEY-AMAZON-AWS-NEURON.PUB

RUN yum install -y tensorflow-model-server-neuron

3. Registre seu cliente Docker em seu repositório ECR.

aws ecr get-login-password \ --region region-code \ | docker login \ --username AWS \ --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.com

4. Crie a imagem do Docker e carregue-a no repositório do Amazon ECR criado em uma etapa anterior.

docker build . -f Dockerfile.tf-serving -t tensorflow-model-server-neurondocker tag tensorflow-model-server-neuron:latest 111122223333.dkr.ecr.region-code.amazonaws.com/tensorflow-model-server-neuron:1.15.0docker push 111122223333.dkr.ecr.region-code.amazonaws.com/tensorflow-model-server-neuron:1.15.0

Note

Se o Docker apresentar problemas relacionados à permissão, talvez seja necessárioconfigurar o Docker para uso do usuário que não seja raiz. Para obter mais informações,consulte Manage Docker as a non-root user na documentação do Docker.

(Opcional) Implante uma imagem de aplicativo doTensorFlow ServingUm modelo treinado deve ser compilado para um destino do Inferentia antes que possa ser implantadoem instâncias do Inferentia. Para continuar, você precisará de um modelo do TensorFlow otimizado paraNeuron salvo no Amazon S3. Se você ainda não tem um modelo salvo, você pode seguir o tutorial nadocumentação do AWS Neuron para criar um modelo BERT-Large compatível com Neuron e carregá-lo noS3. BERT é uma técnica de machine learning popular usada para entender tarefas de linguagem natural.Para obter mais informações sobre como compilar modelos do Neuron, consulte The AWS Inferentia ChipWith DLAMI no Guia do desenvolvedor do AWS Deep Learning AMI.

82

Page 91: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Opcional) Implante uma imagem

de aplicativo do TensorFlow Serving

O manifesto de implementação da amostra gere dois recipientes: A imagem do recipiente Runtime e aaplicação de serviço de tensorflow. Para obter mais informações sobre a imagem do recipiente Neuron,consulte Tutorial: Ferramentas de contentores do túnel em github. O Runtime funciona como uma imagemde contentor lateral e é utilizado para interagir com as batatas fritas do Inferentia nos seus nós. Os doiscontêineres se comunicam por meio de um soquete de domínio Unix colocado em um volume montadocompartilhado. Na inicialização, a imagem do aplicativo buscará seu modelo do Amazon S3, iniciará oNeuron TensorFlow Serving com o modelo salvo e aguardará solicitações de previsão.

O número de dispositivos do Inferentia pode ser ajustado usando o recurso aws.amazon.com/neuronna especificação do contêiner de tempo de execução do Neuron. O tempo de execução espera 128páginas de 2 MB por dispositivo, por conseguinte, hugepages-2Mi tem de ser definido para 256 x thenumber of Inferentia devices. Para aceder aos dispositivos Inferentia, o Runtime do Neuronrequer SYS_ADMIN e IPC_LOCK no entanto, no entanto, o tempo de execução tem estas capacidadesaquando da inicialização, antes de abrir uma tomada.

1. Adicionar AmazonS3ReadOnlyAccess IAM política para a função de instância de nó criada nopasso 1 de the section called “Criar um cluster” (p. 80). Isso é necessário para que o aplicativo deexemplo possa carregar um modelo treinado do Amazon S3.

aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess \ --role-name eksctl-inferentia-nodegroup-ng-in-NodeInstanceRole-FI7HIYS3BS09

2. Crie um arquivo chamado bert_deployment.yaml com o conteúdo abaixo. Atualização:111122223333, region-codee bert/saved_model com a ID da sua conta, código da Região enome do modelo guardado e localização. O nome do modelo é para fins de identificação quando umcliente faz uma solicitação ao servidor do TensorFlow. Este exemplo usa um nome de modelo paracorresponder a um script de cliente BERT de exemplo que será usado em uma etapa posterior paraenviar solicitações de previsão. Também pode substituir 1.0.7865.0 com uma versão posterior.Para obter a versão mais recente, consulte Notas de release do tempo de execução do Neuron noGitHub ou insira o seguinte comando.

aws ecr list-images --repository-name neuron-rtd --registry-id 790709498068 --region us-west-2

kind: DeploymentapiVersion: apps/v1metadata: name: eks-neuron-test labels: app: eks-neuron-test role: masterspec: replicas: 2 selector: matchLabels: app: eks-neuron-test role: master template: metadata: labels: app: eks-neuron-test role: master spec: volumes: - name: sock emptyDir: {} containers: - name: eks-neuron-test

83

Page 92: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Opcional) Implante uma imagem

de aplicativo do TensorFlow Serving

image: 111122223333.dkr.ecr.region-code.amazonaws.com/tensorflow-model-server-neuron:1.15.0 command: - /usr/local/bin/tensorflow_model_server_neuron args: - --port=9000 - --rest_api_port=8500 - --model_name=bert_mrpc_hc_gelus_b4_l24_0926_02 - --model_base_path=s3://bert/saved_model ports: - containerPort: 8500 - containerPort: 9000 imagePullPolicy: IfNotPresent env: - name: AWS_REGION value: "region-code" - name: S3_USE_HTTPS value: "1" - name: S3_VERIFY_SSL value: "0" - name: AWS_LOG_LEVEL value: "3" - name: NEURON_RTD_ADDRESS value: unix:/sock/neuron.sock resources: limits: cpu: 4 memory: 4Gi requests: cpu: "1" memory: 1Gi volumeMounts: - name: sock mountPath: /sock - name: neuron-rtd image: 790709498068.dkr.ecr.region-code.amazonaws.com/neuron-rtd:1.0.7865.0 securityContext: capabilities: add: - SYS_ADMIN - IPC_LOCK volumeMounts: - name: sock mountPath: /sock resources: limits: hugepages-2Mi: 256Mi aws.amazon.com/neuron: 1 requests: memory: 1024Mi

3. Implante o modelo.

kubectl apply -f bert_deployment.yaml

4. Crie um arquivo denominado bert_service.yaml com o seguinte conteúdo: As portas HTTP egRPC são abertas para aceitar solicitações de previsão.

kind: ServiceapiVersion: v1metadata: name: eks-neuron-test labels: app: eks-neuron-test

84

Page 93: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Opcional) Faça previsões em relação

ao serviço do TensorFlow Serving

spec: type: ClusterIP ports: - name: http-tf-serving port: 8500 targetPort: 8500 - name: grpc-tf-serving port: 9000 targetPort: 9000 selector: app: eks-neuron-test role: master

5. Crie um serviço Kubernetes para o seu aplicativo de modelo do TensorFlow Serving.

kubectl apply -f bert_service.yaml

(Opcional) Faça previsões em relação ao serviço doTensorFlow Serving1. Para testar localmente, encaminhe a porta gRPC para o serviço eks-neuron-test.

kubectl port-forward svc/eks-neuron-test 9000:9000 &

2. Baixe o cliente de exemplo BERT do repositório Neuron GitHub.

curl https://raw.githubusercontent.com/aws/aws-neuron-sdk/master/src/examples/tensorflow/k8s_bert_demo/bert_client.py > bert_client.py

3. Execute o script para enviar previsões ao seu serviço.

python3 bert_client.py

Resultado

...Inference successful: 0Inference successful: 1Inference successful: 2Inference successful: 3Inference successful: 4Inference successful: 5Inference successful: 6Inference successful: 7Inference successful: 8Inference successful: 9...Inference successful: 91Inference successful: 92Inference successful: 93Inference successful: 94Inference successful: 95Inference successful: 96Inference successful: 97Inference successful: 98Inference successful: 99Ran 100 inferences successfully. Latency

85

Page 94: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVisualizar sinalizadores do servidor de API

Visualizar sinalizadores do servidor de APIÉ possível usar o recurso de registro em log do plano de controle para que os clusters do Amazon EKSvisualizem os sinalizadores do servidor de API que foram ativados quando um cluster foi criado. Para obtermais informações, consulte Registro em log do plano de controle do Amazon EKS (p. 58). Este tópicomostra como visualizar os sinalizadores do servidor de API de um cluster do Amazon EKS no console doAmazon CloudWatch.

Quando um cluster é criado pela primeira vez, os logs iniciais do servidor de API incluem os sinalizadoresque foram usados para iniciar o servidor de API. Se você ativar os logs do servidor de API ao executar ocluster, ou pouco tempo depois, esses logs serão enviados ao CloudWatch Logs e você poderá visualizá-los lá.

Como visualizar os sinalizadores do servidor de API de um cluster

1. Se você ainda não fez isso, ative os logs do servidor de API do cluster do Amazon EKS.

a. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.b. Selecione o nome do cluster para exibir as informações dele.c. Em Logging (Registro em log), selecione Update (Atualizar).d. Em API server (Servidor de API), verifique se o tipo de log está Enabled (Ativado).e. Selecione Update (Atualizar) para concluir.

2. No console do Amazon EKS, role para baixo até a seção Logging (Registro em log) da página dedetalhes do cluster. Selecione o link em CloudWatch para abrir a página do console do CloudWatchpara os logs do cluster.

3. Na lista de fluxos de log, encontre a versão mais antiga do fluxo de log kube-apiserver-example-ID-288ec988b77a59d70ec77. Use a coluna Last Event Time (Hora do último evento) paradeterminar as idades do fluxo de log.

4. Role para cima até os eventos mais antigos (o início do fluxo de log). Você deve ver os sinalizadoresiniciais do servidor de API do cluster.

Note

Caso não veja os logs do servidor de API no começo do fluxo de log, provavelmente oarquivo de log do servidor de API foi alternado no servidor antes de você ativar o registroem log do servidor de API no servidor. Qualquer arquivo de log que é alternado antes que oregistro em log do servidor de API seja ativado não pode ser exportado ao CloudWatch.No entanto, é possível criar outro cluster com a mesma versão do Kubernetes e ativar oregistro em log do servidor de API ao criar o cluster. Os clusters com a mesma versãode plataforma têm os mesmos sinalizadores ativados, portanto, os sinalizadores devemcorresponder aos sinalizadores do novo cluster. Ao terminar de visualizar os sinalizadores donovo cluster no CloudWatch, você poderá excluir o novo cluster.

Clusters privadosEste tópico descreve como implantar um cluster privado sem acesso de saída à Internet. Se não estiverfamiliarizado com Amazon EKS rede, ver Desmistificação de rede em grupo para Amazon EKS nós dostrabalhadores.

RequirementsOs seguintes requisitos devem ser atendidos para executar o Amazon EKS em um cluster privado semacesso de saída à Internet.

86

Page 95: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConsiderations

• Uma imagem de contêiner precisa estar dentro ou ser copiada para o Amazon Elastic Container Registry(Amazon ECR) ou para um registro dentro da VPC para ser extraída. Para obter mais informações,consulte the section called “Criar cópias locais das imagens do contêiner” (p. 88).

• É necessário o acesso privado ao endpoint para que os nós se registem com o parâmetro deavaliação do grupo. O acesso público ao endpoint é opcional. Para obter mais informações, consulte??? (p. 49).

• Talvez seja necessário incluir os VPC endpoints encontrados em the section called “VPC endpoints paraclusters privados” (p. 88).

• Tem de incluir o seguinte texto nos argumentos da faixa de arranque ao lançar nós autogerido. Essetexto ignora a introspecção do Amazon EKS e não requer acesso à API do Amazon EKS de dentro daVPC. Substituir cluster-endpoint e cluster-certificate-authority com os valores do seuAmazon EKS grupo.

--apiserver-endpoint cluster-endpoint --b64-cluster-ca cluster-certificate-authority

• O ConfigMap da aws-auth deve ser criado na VPC. Para obter mais informações sobre como criar oConfigMap da aws-auth, consulte ??? (p. 229).

ConsiderationsConsidere o seguinte ao executar o Amazon EKS em um cluster privado sem acesso de saída à Internet.

• O eksctl não é compatível com clusters privados.• O AWS X-Ray não é compatível com clusters privados.• O Amazon CloudWatch Logs é compatível com clusters privados, mas você deve usar um VPC endpoint

do Amazon CloudWatch Logs. Para obter mais informações, consulte the section called “VPC endpointspara clusters privados” (p. 88).

• Auto-gerido e gerido nós (p. 100) são suportados. As instâncias para os nós devem ter acesso aosparâmetros de avaliação VPC. Se criar um grupo de nó gerido, o grupo de segurança de terminais VPCtem de permitir ao CIDR as sub-redes, ou deve adicionar o grupo de segurança de nó criado ao grupode segurança de terminais VPC.

• O ??? (p. 275) é compatível. Você deve incluir o VPC endpoint do STS. Para obter mais informações,consulte the section called “VPC endpoints para clusters privados” (p. 88).

• O ??? (p. 152) é compatível. Antes de implantar, o arquivo kustomization.yaml deve ser alterado deforma a definir as imagens de contêiner para usar a mesma região do cluster do Amazon EKS.

• O ??? (p. 156) é compatível. Antes de implantar, o arquivo kustomization.yaml deve ser alterado deforma a definir as imagens de contêiner para usar a mesma região do cluster do Amazon EKS.

• O ??? (p. 160) não é compatível.• O ??? (p. 216) não funciona em clusters privados.• O ??? (p. 118) é compatível com clusters privados. Você deve incluir o VPC endpoint do STS. Para

obter mais informações, consulte the section called “VPC endpoints para clusters privados” (p. 88).Você deve usar um controlador de entrada de terceiros com o AWS Fargate, porque o ALB IngressController no Amazon EKS não funciona em clusters privados, e os Classic Load Balancers e NetworkLoad Balancers não são compatíveis com pods executados no Fargate.

• O App Mesh é compatível com clusters privados quando você usa o VPC endpoint do App MeshEnvoy. Para obter mais informações, consulte the section called “VPC endpoints para clustersprivados” (p. 88).• O injetor de arquivos associados do App Mesh para Kubernetes é compatível. Para obter mais

informações, consulte Injetor de arquivos associados do App Mesh no GitHub.• O controlador do App Mesh para Kubernetes não é compatível. Para obter mais informações, consulte

o Controlador do App Mesh no GitHub.

87

Page 96: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar cópias locais das imagens do contêiner

Criar cópias locais das imagens do contêinerComo um cluster privado não tem acesso de saída à Internet, as imagens do contêiner não podem serextraídas de fontes externas, como o Docker Hub. Em vez disso, elas devem ser copiadas localmente parao Amazon ECR ou para um registro alternativo acessível na VPC. Uma imagem do contêiner pode sercopiada para o Amazon ECR de fora da VPC privada. O cluster privado acessa o repositório do AmazonECR usando os VPC endpoints do Amazon ECR. Você deve ter o Docker e a AWS CLI instalados naestação de trabalho que você usa para criar a cópia local.

Como criar uma cópia local de uma imagem do contêiner

1. Crie um repositório do Amazon ECR. Para obter mais informações, consulte Criar um repositório.2. Extraia a imagem do contêiner do registro externo usando docker pull.3. Marque a sua imagem com o registro do Amazon ECR, o repositório e a combinação opcional de

nomes de tags da imagem usando docker tag.4. Faça a autenticação para o registro. Para obter mais informações, consulte Autenticação de registro.5. Enviar a imagem por push para o Amazon ECR usando docker push.

Note

Certifique-se de atualizar a configuração do recurso para usar o novo local da imagem.

O exemplo a seguir extrai a imagem amazon/aws-node-termination-handler usando a tag v1.3.1-linux-amd64 do Docker Hub e cria uma cópia local no Amazon ECR.

aws ecr create-repository --repository-name amazon/aws-node-termination-handlerdocker pull amazon/aws-node-termination-handler:v1.3.1-linux-amd64docker tag amazon/aws-node-termination-handler 111122223333.dkr.ecr.region-code.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.comdocker push 111122223333.dkr.ecr.region-code.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64

VPC endpoints para clusters privadosOs seguintes VPC endpoints podem ser necessários.

• com.amazonaws.region.ec2

• com.amazonaws.region.ecr.api

• com.amazonaws.region.ecr.dkr

• com.amazonaws.region.s3 – para extrair imagens do contêiner• com.amazonaws.region.logs – Para CloudWatch Logs• com.amazonaws.region.sts – se estiver usando o AWS Fargate ou funções do IAM para contas de

serviço• com.amazonaws.region.elasticloadbalancing – se estiver usando Application Load Balancers• com.amazonaws.region.autoscaling – se estiver usando o Cluster Autoscaler• com.amazonaws.region.appmesh-envoy-management – se estiver usando o App Mesh

88

Page 97: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Amazon EKS calcularO seu Amazon EKS o cluster pode programar cápsulas em qualquer combinação de the section called“Nós autogerido” (p. 100), Amazon EKS the section called “Grupos de nós gerenciados” (p. 92), ethe section called “AWS Fargate” (p. 118). A tabela seguinte fornece vários critérios para avaliar aodecidir quais as opções que melhor satisfazem os seus requisitos. Recomendamos que reveja esta páginafrequentemente porque os dados nesta tabela mudam frequentemente à medida que novas capacidadessão introduzidas Amazon EKS.

Critérios EKS grupos denós geridos

Nós autogerido AWS Fargate

Pode executar contentores querequerem janelas

: não Sim (p. 70) – Oseu cluster aindanecessita de pelomenos um (doisrecomendadosparadisponibilidade) onó Linux, embora.

: não

Pode executar contentores querequerem Linux

Sim. Sim. Sim.

Pode executar volumes de trabalho querequerem o Chip infertivo

: não Sim (p. 80) –Apenas nós Linux

: não

Pode executar volumes de trabalho querequerem uma GPU

Sim (p. 137) –Apenas nós Linux

Sim (p. 137) –Apenas nós Linux

: não

Pode executar cargas de trabalho querequerem processadores ARM

: não Sim (p. 75) –Disponível naversão de pré-visualização. Sópode executar osnós Linux e osnós devem serexecutados numcluster dedicado.

: não

As cápsulas partilham um ambiente deexecução kernel com outras cápsulas

Sim – Todas assuas cápsulas emcada um dos seusnós

Sim – Todas assuas cápsulas emcada um dos seusnós

Não – Cada grupotem um kerneldedicado

As séries partilham os recursos da CPU,memória, armazenamento e rede comoutras cápsulas.

Sim – Poderesultar emrecursos nãoutilizados em cadanó

Sim – Poderesultar emrecursos nãoutilizados em cadanó

Não – Cada grupotem recursosdedicados e podeser dimensionadode formaindependentepara maximizara utilização derecursos.

89

Page 98: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Critérios EKS grupos denós geridos

Nós autogerido AWS Fargate

Os grupos podem utilizar mais hardwaree memória do que o solicitado nasespecificações do grupo

Sim – Se o gruponecessitar de maisrecursos do queo pedido e osrecursos estiveremdisponíveis nonó, o grupo podeutilizar recursosadicionais.

Sim – Se o gruponecessitar de maisrecursos do queo pedido e osrecursos estiveremdisponíveis nonó, o grupo podeutilizar recursosadicionais.

Não, mas ogrupo pode serreimplementadoutilizando umavcpu maior econfiguração dememória.

Deve implementar e gerir Amazon EC2instâncias

Sim (p. 94)– automatizadoatravés deAmazon EKS

Sim –Configuraçãomanual ouutilizaçãoAmazon EKS-fornecido AWSCloudFormationmodelos aimplementar Linux(x86) (p. 101),Linux(BRAÇO) (p. 75),ou Janelas (p. 70)nós.

: não

Deve manter, manter e fixar o sistemaoperativo de Amazon EC2 instâncias

Sim. Sim. : não

Pode fornecer argumentos de bootstrapna implementação de um nó, tais comoargumentos de kubelet adicionais.

: não Sim – Para maisinformações,consulte oinformações deutilização do scriptda faixa bootstrapem github.

Não – Não há nó.

Pode atribuir endereços IP a pods deum bloco CIDR diferente do endereço IPatribuído ao nó.

: não Sim. Não – Não há nó.

CAN SSH no nó Sim. Sim. Não – Não existesistema operativode anfitrião de nópara SSH para.

Pode colocar o seu próprio-AMIpersonalizado aos nós

: não Sim. Não – Não gerenós.

Pode utilizar o seu próprio CNIpersonalizado para nós

Sim. Sim. Não – Não gerenós.

90

Page 99: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Critérios EKS grupos denós geridos

Nós autogerido AWS Fargate

Deve atualizar o seu próprio nó AMI Sim –É notificadono AmazonEKS quandoas atualizaçõesestiveremdisponíveis epode efectuara actualizaçãocom um clique naconsola.

Sim - Utilizarferramentasdiferentes doAmazon EKSconsola, porqueos nós autogeridosnão podem sergeridos com oAmazon EKSconsola.

Não – Não gerenós.

Tem de atualizar a versão do nóKubernetes

Sim É notificadono AmazonEKS quandoas atualizaçõesestiveremdisponíveis epode efectuar aatualização comum clique com orato.

Sim – Utilizarferramentasdiferentes doAmazon EKSconsola, porqueos nós autogeridosnão podem sergeridos com oAmazon EKSconsola.

Não – Não gerenós.

Pode utilizar Armazenamento EBS daAmazon com cápsulas

Sim. (p. 152) Sim. (p. 152) : não

Pode utilizar Armazenamento da SCJ daAmazon com cápsulas

Sim. (p. 156) Sim. (p. 156) : não

Pode utilizar Fsx para Lustrearmazenamento com cápsulas

Sim. (p. 160) Sim. (p. 160) : não

Pode utilizar Load balancer de rede paraserviços

Sim. Sim. : não

As séries podem ser executadas numasubrede pública

Sim. Sim. : não

Pode executar monmonset Kubernetes Sim. Sim. : não

Apoio HostPort e HostNetwork nomanifesto do grupo

Sim. Sim. : não

Disponibilidade da região Todas as regiõessuportadas peloEKS

Todas as regiõessuportadas peloEKS

Alguns AmazonEKS-regiõessuportadas (p. 118)

91

Page 100: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioGrupos de nós gerenciados

Critérios EKS grupos denós geridos

Nós autogerido AWS Fargate

Definição de preço Custo de AmazonEC2 que executamúltiplas cápsulas.Para obter maisinformações,consulte Definiçãode preços doAmazon EC2.

Custo de AmazonEC2 que executamúltiplas cápsulas.Para obter maisinformações,consulte Definiçãode preços doAmazon EC2.

Custo de umindivíduo Fargatememória econfiguração daCPU. Cada grupotem o seu própriocusto. Para obtermais informações,consulte Definiçãode preços do AWSFargate.

Grupos de nós gerenciadosOs grupos de nós gerenciados do Amazon EKS automatizam o provisionamento e o gerenciamento dociclo de vida dos nós (instâncias do Amazon EC2) para clusters de Kubernetes no Amazon EKS.

Note

Grupos de nós gerenciados (p. 92) são compatíveis com clusters do Amazon EKS a partirdo Kubernetes versão 1.14 e versão da plataforma (p. 65) eks.3. Os clusters existentespodem atualizar para a versão 1.14 ou posterior para aproveitar esse recurso. Para obter maisinformações, consulte Atualizar uma versão do Kubernetes do cluster do Amazon EKS (p. 37).

Com os grupos de nós gerenciados do Amazon EKS, não é necessário provisionar ou registrarseparadamente as instâncias do Amazon EC2 que fornecem capacidade computacional para executarseus aplicativos do Kubernetes. Você pode criar, atualizar ou encerrar nós para seu cluster com uma únicaoperação. Os nós são executados usando as AMIs otimizadas para Amazon EKS mais recentes na suaconta da AWS, enquanto as atualizações e encerramentos de nó drenam os nós para garantir que seusaplicativos continuem disponíveis.

Todos os nós gerenciados são provisionados como parte de um grupo de Auto Scaling do Amazon EC2gerenciado pelo Amazon EKS para você. Todos os recursos, incluindo as instâncias e os grupos deAuto Scaling, são executados na sua conta da AWS. Cada grupo de nós usa a AMI do Amazon Linux 2otimizada para o Amazon EKS e pode ser executado em várias zonas de disponibilidade definidas porvocê.

Você pode adicionar um grupo de nós gerenciados a clusters novos ou existentes usando o console doAmazon EKS, o eksctl, a AWS CLI, a API da AWS ou infraestruturas como ferramentas de programação,incluindo o AWS CloudFormation. Os nós iniciados como parte de um grupo de nós gerenciados sãomarcados automaticamente para detecção automática pelo autoscaler de cluster do Kubernetes, e vocêpode usar o grupo de nós para aplicar rótulos do Kubernetes aos nós e atualizá-los a qualquer momento.

Não há custos adicionais pelo uso dos grupos de nós gerenciados pelo Amazon EKS. Você só paga pelosrecursos da AWS que provisionar. Isso inclui as instâncias do Amazon EC2, os volumes do Amazon EBS,as horas de cluster do Amazon EKS e qualquer outra infraestrutura da AWS. Não há taxas mínimas nemcompromissos antecipados.

Para começar a usar um novo cluster do Amazon EKS e um grupo de nós gerenciados, consulte Conceitosbásicos do Console de gerenciamento da AWS (p. 13).

Para adicionar um grupo de nós gerenciados a um cluster existente, consulte Criar um grupo de nósgerenciados (p. 94).

92

Page 101: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConceitos dos grupos de nós gerenciados

Conceitos dos grupos de nós gerenciados• Os grupos de nós gerenciados do Amazon EKS criam e gerenciam instâncias do Amazon EC2 por você.• Todos os nós gerenciados são provisionados como parte de um grupo de Auto Scaling do Amazon EC2

gerenciado para você pelo Amazon EKS e todos os recursos, incluindo as instâncias do Amazon EC2 eos grupos do Auto Scaling, são executados na sua conta da AWS.

• Um grupo de Auto Scaling do grupo de nós gerenciados abrange todas as sub-redes que vocêespecifica na criação do grupo.

• O Amazon EKS adiciona tags aos recursos do grupo de nós gerenciados para que eles sejamconfigurados para usar o Kubernetes Autoscaler do cluster (p. 54).

Important

Se você está executando um aplicativo stateful em várias Zona de disponibilidades baseadasem volumes do Amazon EBS e usando o Kubernetes Autoscaler do cluster (p. 54), deveráconfigurar vários grupos de nós, cada um delimitado a uma única Zona de disponibilidade. Alémdisso, você deverá ativar o recurso --balance-similar-node-groups.

• As instâncias em um grupo de nós gerenciados usam a versão mais recente da AMI do Amazon Linux2 otimizada para o Amazon EKS para a versão do Kubernetes do cluster. Você pode escolher entrevariantes padrão e GPU da AMI do Amazon Linux 2 otimizada para Amazon EKS.

• O Amazon EKS segue o modelo de responsabilidade compartilhada para CVEs e os patches desegurança nos grupos de nós gerenciados. Como os nós gerenciados executam AMIs otimizadas para oAmazon EKS, o Amazon EKS é responsável por criar versões dessas AMIs com patches quando errosou problemas forem relatados e for possível publicar uma correção. No entanto, você é responsávelpor implantar essas versões de AMI com patches nos seus grupos de nós gerenciados. Quando asatualizações estiverem disponíveis, consulte Atualizar um grupo de nós gerenciados (p. 97).

• Os grupos de nós gerenciados do Amazon EKS podem ser executados em sub-redes públicas eprivadas. Se você executar um grupo de nós gerenciados em uma sub-rede pública em ou após04/22/2020, a sub-rede deverá ter MapPublicIpOnLaunch definido como true para que as instânciaspossam ingressar com êxito em um cluster. Se a sub-rede pública foi criada usando eksctl ou osmodelos do AWS CloudFormation fornecidos pelo Amazon EKS (p. 168) em ou após 03/26/2020, essaconfiguração já está definida como true. Se as sub-redes públicas foram criadas antes de 03/26/2020,então é necessário alterar a configuração manualmente. Para obter mais informações, consulteModificar o atributo de endereçamento IPv4 público para a sub-rede.

• Ao usar VPC endpoints em sub-redes privadas, é necessário criar endpoints paracom.amazonaws.region.ecr.api, com.amazonaws.region.ecr.dkr e um endpoint de gatewaypara o Amazon S3. Para obter mais informações, consulte VPC endpoints de interface do Amazon ECR(AWS PrivateLink).

• Você pode criar vários grupos de nós gerenciados em um único cluster. Por exemplo, é possível criar umgrupo de nós com a AMI padrão do Amazon Linux 2 otimizada para o Amazon EKS para algumas cargasde trabalho e outra com a variante de GPU para cargas de trabalho que exigem suporte a GPU.

• Se o grupo de nós gerenciados encontrar um problema de integridade, o Amazon EKS retornará umamensagem de erro para ajudar você a diagnosticar o problema. Para obter mais informações, consulteManaged node group errors (Erros de grupo de nós gerenciados) (p. 323).

• O Amazon EKS adiciona rótulos do Kubernetes a instâncias de grupo de nós gerenciados. Esses rótulosfornecidos pelo Amazon EKS são prefixados com eks.amazon.com.

• O Amazon EKS drena automaticamente os nós usando a API do Kubernetes durante os encerramentosou atualizações. As atualizações respeitam os orçamentos de interrupção do pod definidos para seuspods.

• Não há custos adicionais pelo uso dos grupos de nós gerenciados pelo Amazon EKS. Você só pagapelos recursos da AWS que provisionar.

93

Page 102: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um grupo de nós gerenciados

Criar um grupo de nós gerenciadosEste tópico ajuda-o a lançar um Amazon EKS grupo de nós gerido de nós Linux que se regista com oseu Amazon EKS grupo. Depois que os nós ingressam no cluster, você pode implantar aplicativos doKubernetes neles.

Grupos de nós gerenciados (p. 92) são compatíveis com clusters do Amazon EKS a partir doKubernetes versão 1.14 e versão da plataforma (p. 65) eks.3. Os clusters existentes podem atualizar paraa versão 1.14 ou posterior para aproveitar esse recurso. Para obter mais informações, consulte Atualizaruma versão do Kubernetes do cluster do Amazon EKS (p. 37).

Se for a primeira vez que você executa um grupo de nós gerenciados do Amazon EKS, recomendamosseguir um dos nossos guias Conceitos básicos de Amazon EKS (p. 3). Os guias fornecem demonstraçõescompletas para criar uma Amazon EKS cluster com nós.

Important

Amazon EKS os nós são padrão Amazon EC2 e ser-lhes-ão cobrados as mesmas com baseno normal Amazon EC2 preços. Para obter mais informações, consulte Definição de preço doAmazon EC2.

Seleccione o separador com o nome da ferramenta que gostaria de criar o seu grupo de nó gerido com.

eksctl

Para criar um grupo de nó gerido com eksctl

Este procedimento exige a versão eksctl 0.25.0 ou posterior. Você pode verificar a versão com oseguinte comando:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ou atualizaro eksctl (p. 238).

• Crie o seu grupo de nó gerido com o seguinte eksctl comando, substituir variable text comos seus próprios valores.

eksctl create nodegroup \ --cluster my-cluster \ --region us-west-2 \ --name my-mng \ --node-type m5.large \ --nodes 3 \ --nodes-min 2 \ --nodes-min 4 \ --ssh--access \ --ssh-public-key my-public-key.pub \ --managed

Console de gerenciamento da AWS

Para iniciar o seu grupo de nó gerido utilizando o Console de gerenciamento da AWS

1. Aguarde pelo estado do seu cluster para mostrar como ACTIVE. Não pode criar um grupo de nógerido para um grupo que ainda não esteja ACTIVE.

94

Page 103: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um grupo de nós gerenciados

2. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.3. Escolha o nome do cluster em que você deseja criar seu grupo de nós gerenciados.4. Na página do cluster, selecione a guia Computação e escolha Adicionar grupo de nós.5. Na página Configure node group (Configurar o grupo de nós) preencha os parâmetros

adequadamente e escolha Next (Próximo).

• Nome – insira um nome exclusivo para o grupo de nós gerenciados.• Nome da função do IAM do nó – escolha a função da instância do nó a ser usada com o grupo

de nós. Para obter mais informações, consulte Amazon EKS nó IAM função (p. 271).

Important

Recomendamos usar uma função que não esteja atualmente em uso por um grupode nós autogerenciados ou que você queira usar com um novo grupo de nósautogerenciados. Para obter mais informações, consulte ??? (p. 100).

• Sub-redes – escolha as sub-redes para iniciar seus nós gerenciados.

Important

Se você está executando um aplicativo stateful em várias Zona de disponibilidadesbaseadas em volumes do Amazon EBS e usando o Kubernetes Autoscaler docluster (p. 54), deverá configurar vários grupos de nós, cada um delimitado a umaúnica Zona de disponibilidade. Além disso, você deverá ativar o recurso --balance-similar-node-groups.

Important

Se você escolher uma sub-rede pública, ela deverá ter MapPublicIpOnLaunchdefinido como true para que as instâncias possam ingressar com êxito em um cluster.Se a sub-rede foi criada usando eksctl ou os modelos do AWS CloudFormationfornecidos pelo Amazon EKS (p. 168) em ou após 03/26/2020, essa configuraçãojá está definida como true. Se as sub-redes foram criadas com eksctl ou com osmodelos do AWS CloudFormation antes de 03/26/2020, então é necessário alterar aconfiguração manualmente. Para obter mais informações, consulte Modificar o atributode endereçamento IPv4 público para a sub-rede.

• Acesso remoto – (opcional) você pode habilitar o acesso SSH aos nós no seu grupo denós gerenciados. Habilitar o SSH permite que você se conecte às suas instâncias e reúnainformações de diagnóstico quando houver problemas. Siga as instruções abaixo para habilitaro acesso remoto.

Note

É altamente recomendado habilitar o acesso remoto ao criar seu grupo de nós. Não épossível ativá-lo depois que o grupo estiver criado.

1. Marque a caixa de seleção Allow remote access to nodes (Permitir acesso remoto aos nós).2. Em SSH key pair (Par de chaves SSH), escolha uma chave SSH do Amazon EC2 para usar.

Para obter mais informações, consulte Pares de chaves do Amazon EC2 no Guia do usuáriodo Amazon EC2 para instâncias do Linux.

3. Em Allow remote access from (Permitir acesso remoto de), escolha All (Todos) para permitiracesso SSH de qualquer endereço da Internet (0.0.0.0/0), ou selecione um grupo desegurança para permitir o acesso SSH de instâncias que pertençam a ele.

• Tags – (opcional) você pode optar por aplicar tags ao seu grupo de nós gerenciados peloAmazon EKS. Essas tags não se propagam para os outros recursos no grupo de nós, comoinstâncias ou grupos do Auto Scaling. Para obter mais informações, consulte Marcar osrecursos do Amazon EKS (p. 248).

• Rótulos do Kubernetes – (opcional) você pode optar por aplicar rótulos do Kubernetes aos nósno grupo de nós gerenciados.

95

Page 104: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um grupo de nós gerenciados

6. Na página Definir configuração de computação (Set compute configuration), preencha osparâmetros adequadamente e escolha Next (Próximo).

• Tipo de AMI – escolha Amazon Linux 2 (AL2_x86_64) para instâncias que não forem de GPU,ou Amazon Linux 2 GPU Enabled (AL2_x86_64_GPU) para instâncias de GPU.

• Tipo de instância – Escolha o tipo de instância a utilizar no seu grupo de nó gerido. Cada tipode instância do Amazon EC2 oferece suporte a um número máximo de interfaces de redeelásticas (ENIs) e cada ENI oferece suporte a um número máximo de endereços IP. Comocada nó de operador e pod recebe seu próprio endereço IP, é importante escolher um tipo deinstância que ofereça suporte ao número máximo de pods que você deseja executar em cadanó de operador. Para obter uma lista do número de ENIs e endereços IP com suporte, por tipode instância, consulte Endereços IP por interface de rede por tipo de instância. Por exemplo,o tipo de instância t3.medium oferece suporte a um máximo de 18 endereços IP para o nóde operador e os pods. Alguns tipos de instância podem não estar disponíveis em todas asregiões.

• Tamanho do disco – Introduza o tamanho do disco (na gib) para utilizar para o volume de raizdo seu nó.

7. Na página Setup scaling policies (Configurar políticas de escalabilidade) preencha os parâmetrosadequadamente e escolha Next (Próximo).

Note

O Amazon EKS não expande ou diminui automaticamente o grupo de nós. No entanto,você pode configurar o Kubernetes Autoscaler do cluster (p. 54) para fazer isso por você.

• Tamanho mínimo – Especifique o número mínimo de nós que o grupo de nó gerido podeescalar para.

• Tamanho máximo – Especifique o número máximo de nós que o grupo de nó gerido podeescalar para.

• Tamanho desejado – Especifique o número atual de nós que o grupo de nó gerido deve manterno lançamento.

8. Na página Review and create (Revisar e criar), reveja a configuração do grupo de nósgerenciados e escolha Create (Criar).

Note

Se os nós não conseguirem juntar-se ao cluster, consulte ??? (p. 321) no guia deSolução de problemas.

9. Observe o status de seus nós e aguarde até que eles atinjam o status Ready.

kubectl get nodes --watch

10. (Apenas nós GPU) Se escolher um tipo de instância GPU e o Amazon EKS-o AMI aceleradootimizado, então tem de aplicar o Plug-in do dispositivo NVIDIA para Kubernetes como umconjunto de diapositivos no seu grupo com o seguinte comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.6.0/nvidia-device-plugin.yml

11. (Opcional) Implementar uma aplicação Linux de amostras (p. 204) – Expanda uma aplicação deamostras para testar o seu cluster e os nós Linux.

Agora que tem um trabalho Amazon EKS cluster com nós, está pronto para começar a instalaros suplementos Kubernetes e a implementar aplicações no seu grupo. Os seguintes tópicos dedocumentação ajudam a estender a funcionalidade do seu cluster.

96

Page 105: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar um grupo de nós gerenciados

• the section called “Autoscaler do cluster” (p. 54) – Configure o Zoom Automático do Kubernetes paraajustar automaticamente o número de nós nos seus grupos de nó.

• the section called “Expansão da amostra” (p. 204) – Expanda uma aplicação de amostras para testar oseu cluster e os nós Linux.

• Implantar um aplicativo de exemplo do Windows (p. 74) – Expanda uma aplicação de amostras paratestar o seu cluster e nós Windows.

• Gerenciamento de clusters (p. 233) – Saiba como utilizar ferramentas importantes para gerir o seugrupo.

Atualizar um grupo de nós gerenciadosExistem vários casos de uso para atualizar a versão ou a configuração do grupo de nós gerenciados peloAmazon EKS:

• Atualizou a versão Kubernetes para o seu Amazon EKS e pretende actualizar os seus nós para utilizar amesma versão de Kubernetes.

• Uma nova versão da AMI está disponível para o grupo de nós gerenciados. Para obter maisinformações, consulte Amazon EKS-otimizado Amazon Linux 2 Versões do EAH (p. 139).

• Você deseja ajustar a contagem mínima, máxima ou desejada das instâncias no seu grupo de nósgerenciados.

• Você deseja adicionar ou remover os rótulos do Kubernetes das instâncias no seu grupo de nósgerenciados.

• Você deseja adicionar ou remover as tags da AWS do seu grupo de nós gerenciados.

Se houver uma versão da AMI para a versão do Kubernetes do grupo de nós gerenciado mais recente doque a versão que o grupo de nós está executando, você poderá atualizá-la para usar essa nova versãoda AMI. Se o cluster estiver executando uma versão mais recente do Kubernetes do que o grupo de nós,você poderá atualizar o grupo de nós para usar a versão mais recente da AMI correspondente à versão doKubernetes do cluster.

Note

Você não pode reverter um grupo de nós para uma versão anterior do Kubernetes ou da AMI.

Quando um nó em um grupo de nós gerenciados é encerrado devido a uma ação de dimensionamento ouatualização, os pods nesse nó são drenados antes. Para obter mais informações, consulte Comportamentodas atualizações dos nós gerenciados (p. 99).

Atualizar uma versão do grupo de nósPara atualizar uma versão do grupo de nós

1. (Opcional) Se você estiver usando o Autoscaler do cluster do Kubernetes, reduza a implantação parazero réplicas para evitar ações de dimensionamento conflitantes.

kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system

2. Selecione a guia com o nome da ferramenta com a qual você deseja atualizar a versão.

Console de gerenciamento da AWS

1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.2. Escolha o cluster que contém o grupo de nós a ser atualizado.3. Se, pelo menos, um dos seus grupos de nós tiver uma atualização disponível, verá uma

notificação sob o nome do grupo, informando-o de quantos grupos de nós têm uma

97

Page 106: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar um grupo de nós gerenciados

atualização disponível. Na tabela Node Groups (Grupos de nós), você verá Update now(Atualizar agora) à direita do valor na coluna AMI release version (Versão de lançamento daAMI) de cada grupo de nós que pode ser atualizado. Selecione Update now (Atualizar agora)para um grupo de nós que deseja atualizar.

Se você selecionar um grupo de nós da tabela e uma atualização estiver disponível, vocêreceberá uma notificação na página Node Group configuration (Configuração do grupo denós). Nesse caso, selecione o botão Update now (Atualizar agora) na página Node Groupconfiguration (Configuração do grupo de nós).

Note

A opção Update now (Atualizar agora) só aparecerá se houver uma atualizaçãodisponível. Se você não vir esse texto, o grupo de nós está executando a versãomais recente disponível.

4. Na página Update AMI release version (Atualizar a versão de lançamento da AMI), selecionea Available AMI release version (Versão de lançamento da AMI disponível) para a qualvocê deseja atualizar, selecione uma das opções a seguir em Update strategy (Atualizarestratégia) e escolha Update (Atualizar).

• Rolling update (Atualização contínua) — essa opção respeita os orçamentos de interrupçãodos pods para seu cluster, e a atualização falhará se não o Amazon EKS não conseguirdrenar corretamente os pods que estão sendo executados nesse grupo de nós devido aum problema de orçamento de interrupção de pods.

• Force update (Forçar atualização) — essa opção não respeita os orçamentos deinterrupção de pods e força a reinicialização dos nós.

eksctl

Atualize um nodegrupo gerido para a versão mais recente do AMI da mesma versão Kubernetesque está actualmente expandida nos nós com o seguinte comando.

eksctl upgrade nodegroup --name=node-group-name --cluster=cluster-name

É possível atualizar um grupo de nós para uma versão secundária posterior à versão atual doKubernetes do grupo de nós, até a versão do Kubernetes do cluster. Por exemplo, se tiver umgrupo a correr Kubernetes 1.17, pode actualizar os nós actualmente a executar Kubernetes 1.16para a versão 1.17 com o seguinte comando.

eksctl upgrade nodegroup --name=node-group-name --cluster=cluster-name --kubernetes-version=1.17

3. (Opcional) Se você estiver usando o Cluster Autoscaler do Kubernetes, reduza a implantação para aquantidade de réplicas desejada.

kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system

Editar uma configuração do grupo de nósÉ possível alterar algumas das configurações de um grupo de nós gerenciados.

Para editar uma configuração do grupo de nós

1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.2. Escolha o cluster que contém o grupo de nós a ser editado.

98

Page 107: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar um grupo de nós gerenciados

3. Selecione o grupo de nós a ser editado e escolha Edit (Editar).4. Na página Edit node group (Editar o grupo de nós), ajuste a Group configuration (Configuração do

grupo) se necessário.

• Tags — adicione ou remova tags do recurso do grupo de nós. Essas tags são aplicadas somenteao grupo de nós do Amazon EKS e não se propagam para outros recursos, como sub-redes ouinstâncias do Amazon EC2 no grupo de nós.

• Kubernetes labels (Rótulos do Kubernetes) — adicione ou remova rótulos do Kubernetes aos nósdo seu grupo. Os rótulos mostrados aqui são apenas aqueles que você aplicou com o Amazon EKS.Outros rótulos que não são exibidos aqui podem existir nos seus nós.

5. Na página Edit node group (Editar o grupo de nós) configure o Group size (Tamanho do grupo) senecessário.

• Tamanho mínimo — Especifique o número atual de nós que o grupo de nó gerido deve manter.• Tamanho máximo — Especifique o número máximo de nós que o grupo de nó gerido pode escalar

para. Por padrão, os grupos de nós gerenciados oferecem suporte a até 100 nós.• Tamanho desejado — Especifique o número atual de nós que o grupo de nó gerido deve manter.

6. Quando terminar de editar, escolha Save changes (Salvar alterações).

Comportamento das atualizações dos nós gerenciadosQuando você atualiza uma versão do grupo de nós gerenciados para a versão mais recente da AMI daversão do Kubernetes do seu grupo de nós ou versão mais recente do Kubernetes para corresponder aocluster, o Amazon EKS aciona a seguinte lógica:

1. O Amazon EKS cria uma nova versão de modelo de execução do Amazon EC2 para o grupo do AutoScaling associado ao seu grupo de nós. O novo modelo usa a AMI de destino para a atualização.

2. O grupo do Auto Scaling é atualizado para aplicar o modelo de execução mais recente com a nova AMI.3. O tamanho máximo do grupo do Auto Scaling e o tamanho desejado são incrementados em duas vezes

o número de Zona de disponibilidades distintas do grupo do Auto Scaling a fim de garantir que pelomenos uma nova instância apareça em cada Zona de disponibilidade do grupo de nós.

4. O grupo do Auto Scaling executa uma nova instância com a nova AMI para atender ao tamanhodesejado aumentado do grupo de nós.

5. O Amazon EKS verifica os nós no grupo com relação ao rótulo eks.amazonaws.com/nodegroup-image e conecta todos os nós no grupo que não estão rotulados com o código da AMI mais recente.Isso impede que os nós que já passaram por uma atualização com falha sejam isolados.

6. O Amazon EKS seleciona aleatoriamente um nó no seu grupo e envia um sinal de encerramento para ogrupo do Auto Scaling. Depois, o Amazon EKS envia um sinal para drenar os pods do nó. *Depois queo nó é drenado, ele é encerrado. Essa etapa é repetida até que todos os nós estejam usando a novaversão da AMI.

7. Os tamanhos máximo e desejado do group do Auto Scaling são reduzidos em 1 para retornar aosvalores de antes da atualização.

*Se os pods não forem drenados de um nó (por exemplo, se um orçamento de interrupção de pods formuito restritivo) em 15 minutos, então, uma destas duas coisas acontecerá:

• Se a atualização não for forçada, ela falhará, e um erro será informado.• Se a atualização for forçada, os pods que não puderam ser drenados serão excluídos.

99

Page 108: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExcluir um grupo de nós gerenciados

Excluir um grupo de nós gerenciadosEste tópico ajuda a excluir um grupo de nós gerenciados pelo Amazon EKS.

Quando você exclui um grupo de nós gerenciados, o Amazon EKS seleciona aleatoriamente um nó nogrupo e envia um sinal de encerramento para o grupo do Auto Scaling. Depois, o Amazon EKS enviaum sinal para drenar os pods do nó. Se os pods não forem drenados de um nó (por exemplo, se umorçamento de interrupção de pods for muito restritivo) em 15 minutos, os pods serão excluídos. Depoisque o nó é drenado, ele é encerrado. Este passo é repetido até que todos os nós do grupo do Auto Scalingsejam encerrados e o grupo do Auto Scaling seja eliminado.

Important

Se eliminar um grupo de nó gerido que utilize um nó IAM que não é utilizada por qualqueroutro grupo de nó gerido no grupo, a função é removida do aws-auth mapa (p. 229). Sequaisquer grupos de nós auto-geridos no grupo estiverem a utilizar o mesmo nó IAM função, osnós autogeridos irão mover-se para o NotReady o estado e a operação do agrupamento serãointerrompidos. É possível adicionar o mapeamento novamente ao ConfigMap para minimizar ainterrupção.

Para excluir um grupo de nós gerenciados

1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.2. Escolha o cluster que contém o grupo de nós a ser excluído.3. Selecione o grupo de nós a ser excluído e escolha Delete (Excluir).4. No Eliminar nodegroup , escreva o nome do grupo no campo de texto e escolha Confirmar

Nós autogeridoAs máquinas de trabalhadores em Kubernetes são chamadas nós. Amazon EKS os nós funcionam noseu AWS e ligue-se ao plano de controlo do seu grupo através do ponto final do servidor API de cluster.Coloque um ou mais nós num grupo de nós. Um grupo de nós é uma ou mais instâncias do Amazon EC2implantadas em um grupo Amazon EC2 Auto Scaling. Todas as instâncias em um grupo de nós devem:

• Ser do mesmo tipo de instância• Estar em execução na mesma imagem de máquina da Amazon (AMI)• Usar o mesmo Amazon EKS nó IAM função (p. 271)

Um grupo pode conter vários grupos de nós e cada grupo de nó pode conter vários nós.

Amazon EKS os nós são padrão Amazon EC2 e ser-lhes-ão cobrados os preços normais de EC2. Paraobter mais informações, consulte Definição de preços do Amazon EC2.

O Amazon EKS fornece uma imagem de máquina da Amazon (AMI) especializada chamada de AMIotimizada para o Amazon EKS. Este AMI é construído sobre o Amazon Linux 2 e está configurado paraservir como imagem de base para Amazon EKS nós. A AMI é configurada para funcionar com o AmazonEKS imediatamente e inclui o Docker, o kubelet e o AWS IAM Authenticator. A AMI também contém umscript de bootstrap especializado que permite que ele descubra e conecte-se ao plano de controle docluster automaticamente.

Note

É possível rastrear os eventos de segurança e privacidade do Amazon Linux 2 no Centro desegurança do Amazon Linux ou assinar o feed RSS associado. Os eventos de segurança eprivacidade incluem uma visão geral do problema, quais pacotes são afetadas e como atualizarsuas instâncias para corrigir o problema.

100

Page 109: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIniciar auto-gestão Amazon Linux 2 nós

Se restringir o acesso ao parâmetro de avaliação público do seu grupo utilizando blocos CIDR, recomenda-se que também active acesso de ponto final privado para que os nós possam comunicar com o grupo. Semo endpoint privado ativado, os blocos CIDR especificados para acesso público devem incluir as origensde saída da VPC. Para obter mais informações, consulte Controle de acesso ao endpoint do cluster doAmazon EKS (p. 49).

Para adicionar nós autogerido ao seu Amazon EKS cluster, ver Iniciar auto-gestão Amazon Linux 2nós (p. 101). Se seguir os passos do guia, a etiqueta necessária é adicionada ao nó para si. Se lançaros nós auto-geridos manualmente, tem de adicionar a seguinte etiqueta a cada nó. Para obter maisinformações, consulte Adicionar e excluir tags em um recurso individual.

Chave Valor

kubernetes.io/cluster/<cluster-name> owned

Para mais informações sobre nós de uma perspetiva geral de Kubernetes, consulte Nós na documentaçãoKubernetes.

Tópicos• Iniciar auto-gestão Amazon Linux 2 nós (p. 101)• Iniciar os nós do Windows auto-geridos (p. 106)• Atualizações de nós auto-geridas (p. 110)

Iniciar auto-gestão Amazon Linux 2 nósEste tópico ajuda-o a lançar um Auto Scaling grupo de nós Linux que se registem com o seu Amazon EKSgrupo. Depois que os nós ingressam no cluster, você pode implantar aplicativos do Kubernetes neles.

Se for o seu lançamento pela primeira vez Amazon EKS Nós de Linux, recomendamos que siga umdos nossos Conceitos básicos de Amazon EKS (p. 3) em vez disso. Os guias fornecem demonstraçõescompletas para criar uma Amazon EKS cluster com nós.

Important

Os nós do Amazon EKS são instâncias padrão do Amazon EC2, e você é cobrado por eles combase nos preços normais de instâncias do Amazon EC2. Para obter mais informações, consulteDefinição de preço do Amazon EC2.

Escolha o separador abaixo que corresponde ao método de criação do nó pretendido.

eksctl

Para iniciar os nós de Linux auto-geridos utilizando eksctl

Este procedimento exige a versão eksctl 0.25.0 ou posterior. Você pode verificar a versão com oseguinte comando:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ou atualizaro eksctl (p. 238).

Note

Este procedimento funciona apenas para clusters que foram criados com o eksctl.

101

Page 110: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIniciar auto-gestão Amazon Linux 2 nós

1. Crie o seu grupo de nó com o seguinte comando. Substituir o example values com os seuspróprios valores.

eksctl create nodegroup \--cluster default \--version auto \--name standard-nodes \--node-type t3.medium \--node-ami auto \--nodes 3 \--nodes-min 1 \--nodes-max 4

Note

Se os nós não conseguirem juntar-se ao cluster, consulte ??? (p. 321) no guia deSolução de problemas.

Note

Para obter mais informações sobre as opções disponíveis para o eksctl createnodegroup, consulte o projeto LEIA-ME no GitHub ou visualize a página de ajuda com ocomando a seguir.

eksctl create nodegroup --help

Resultado

Verá várias linhas de saída à medida que os nós são criados. A última linha de saída ésemelhante ao exemplo de linha a seguir.

[✓] all nodegroups have up-to-date configuration

2. (Opcional) Implementar uma aplicação Linux de amostras (p. 204) — Expanda uma aplicaçãode amostras para testar o seu cluster e os nós Linux.

Console de gerenciamento da AWS

Esses procedimentos têm os seguintes pré-requisitos:

• Você criou uma VPC e um grupo de segurança que atendem aos requisitos de um clusterdo Amazon EKS. Para obter mais informações, consulte Considerações sobre a VPC docluster (p. 173) e Considerações sobre os grupos de segurança do Amazon EKS (p. 175). Oguia Conceitos básicos de Amazon EKS (p. 3) cria uma VPC que atende aos requisitos, ou vocêtambém pode seguir Criar uma VPC para o cluster do Amazon EKS (p. 168) para criar umamanualmente.

• Você criou um cluster do Amazon EKS e especificou que ele use a VPC e o grupo de segurançaque atendam aos requisitos de um cluster do Amazon EKS. Para obter mais informações, consulteCriar um cluster do Amazon EKS (p. 30).

Para lançar nós autogerido utilizando o Console de gerenciamento da AWS

1. Aguarde pelo estado do seu cluster para mostrar como ACTIVE. Se iniciar os seus nós antes de ogrupo estar activo, os nós não se registarão no grupo e terá de os transferir.

2. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.3. Selecione Create stack.

102

Page 111: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIniciar auto-gestão Amazon Linux 2 nós

4. Em Specify template (Especificar modelo), selecione Amazon S3 URL (URL do Amazon S3),copie o seguinte URL, cole-o no Amazon S3 URL (URL do Amazon S3) e selecione Next(Próximo) duas vezes.

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-nodegroup.yaml

5. Na página Quick create stack (Criar pilha rapidamente), preencha os parâmetros a seguir deforma adequada:

• Nome da stack Escolha um nome de pilha para o seu AWS CloudFormation pilha. Por exemplo,pode ligar-lhe <cluster-name>-nós.

• nome do edifício: Introduza o nome que utilizou quando criou o seu Amazon EKS grupo.

Important

Este nome tem de corresponder exatamente ao nome utilizado em Etapa 1 Crie o seuAmazon EKS cluster (p. 22) caso contrário, os seus nós não podem aderir ao grupo.

• clustercontrolopersecuritygroup: Escolha o segurançosgrupos valor do AWS CloudFormationsaída gerada com Criar a VPC do cluster do Amazon EKS (p. 19).

• nome do nodegroupname: Introduza um nome para o seu grupo de nó. Este nome pode serutilizado posteriormente para identificar o grupo de nó de Escala automática criado para osseus nós.

• tamanho do painel de controlo automático: Introduza o número mínimo de nós que o grupo deescala automática do seu nó pode escalar para.

• escaldeescaldodeescalaçãodedepreciação: Introduza o número desejado de nós para a escalaquando a sua pilha for criada.

• escalãodeescalãodeescalãodedepreciação: Introduza o número máximo de nós que o grupo deescala automática do seu nó pode escalar para.

• nodeinstantâneo: Escolha um tipo de instância para os seus nós.

Note

Os tipos de instâncias compatíveis para a versão mais recente do plug-in CNI daAmazon VPC para Kubernetes são mostrados aqui. Pode ser necessário atualizar aversão do CNI para poder aproveitar os tipos de instâncias compatíveis mais recentes.Para obter mais informações, consulte Plug-in CNI da Amazon VPC para atualizaçõesdo Kubernetes (p. 194).

Important

Alguns tipos de instância podem não estar disponíveis em todas as regiões.• nodeimageidssmparam: Pré-preenchido com o Amazon EC2 Systems Manager parâmetro

do actual recomendado Amazon EKS-ID de XXXXXXX Linux optimizada para uma versão deKubernetes. Se quiser utilizar o Amazon EKS-AMI acelerada otimizado e, em seguida, substituiramazon-linux-2 com amazon-linux-2-gpu. Se quiser utilizar uma versão menor deKubernetes suportada com Amazon EKS, então pode substituir 1.x com diferentes versãosuportada (p. 61). Recomendamos que especifique a mesma versão Kubernetes como o seugrupo.

Note

A AMI do nó do Amazon EKS é baseada em Amazon Linux 2. Você pode rastrear oseventos de segurança e de privacidade do Amazon Linux 2 no Centro de segurançado Amazon Linux ou assinar o feed RSS associado. Os eventos de segurança eprivacidade incluem uma visão geral do problema, quais pacotes são afetados e comoatualizar suas instâncias para corrigir o problema.103

Page 112: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIniciar auto-gestão Amazon Linux 2 nós

• nodeimageid: (Opcional) Se estiver a utilizar o seu próprio AMI personalizado (em vez deAmazon EKS-AMI otimizado), introduza uma ID de nó AMI para a sua região. Se vocêespecificar um valor aqui, ele substituirá todos os valores no campo NodeImageIdSSMParam.

• tamanho da conta: Especifique um tamanho de volume de raiz para os seus nós, na gib.• KeyName Introduza o nome de um Amazon EC2 O par de chaves SSH que pode utilizar para

ligar a SSH aos seus nós após o lançamento. Se você ainda não tem um par de chaves doAmazon EC2, é possível criar um no Console de gerenciamento da AWS. Para obter maisinformações, consulte Pares de chaves do Amazon EC2 no Guia do usuário do Amazon EC2para instâncias do Linux.

Note

Se você não fornecer um par de chaves aqui, ocorrerá uma falha na criação da pilhado AWS CloudFormation.

• colecionamentos: Especifique quaisquer argumentos opcionais para passar para o script defaixa de impulso do nó, como extra kubelet argumentos. Para obter mais informações, consulteas informações de uso do script de inicialização no GitHub.

Note

• Se estiver a lançar nós para um VPC privado sem acesso à Internet de saída, entãotem de incluir os seguintes argumentos.

--apiserver-endpoint cluster-endpoint --b64-cluster-ca cluster-certificate-authority

• Se pretender atribuir endereços IP a grupos que sejam de um bloco CIDR diferentedo bloco que inclui o endereço IP do nó, então pode ter de adicionar um blocoCIDR ao seu VPC e especificar um argumento para suportar a capacidade. Paraobter mais informações, consulte the section called “Rede personalizada doCNI” (p. 188).

• decúrsv1: Cada nó suporta o Serviço de Metadados da Instância Versão 1 (imdsv1) e imdsv2por predefinição, mas pode desativar o imdsv1. Selecionar verdadeiro se não quiser nenhumnó no grupo de nós, ou quaisquer cápsulas programadas nos nós no grupo de nós para utilizarimdsv1. Para mais informações sobre IMDS, consulte Configurar o serviço de metadados dainstância.

• vpcid: Introduza a ID do VPC que criou em Criar a VPC do cluster do Amazon EKS (p. 19).• Subnets (Sub-redes). Escolha as subredes criadas em Criar a VPC do cluster do Amazon

EKS (p. 19). Se criou o seu VPC utilizando os passos descritos em Criar uma VPC para ocluster do Amazon EKS (p. 168), então especifique apenas as sub-redes privadas dentro doVPC para que os seus nós iniciem em.

Important

Se alguma das sub-redes for pública, ela deverá ter a atribuição automática deatribuição de endereço IP público habilitada. Se a configuração não estiver habilitadapara a sub-rede pública, os nós implantados nessa sub-rede pública não receberãoum endereço IP público e não poderão se comunicar com o cluster nem com outrosserviços da AWS. Se a sub-rede tiver sido implantada antes de 03/26/2020 usandoqualquer um dos modelos de VPC do Amazon EKS AWS CloudFormation (p. 168),ou usando eksctl, a atribuição automática de endereço IP público será desabilitadapara sub-redes públicas. Para obter informações sobre como habilitar a atribuiçãode endereço IP público para uma sub-rede, consulte Modificar o atributo deendereçamento IPv4 público para a sub-rede. Se o nó for implantado em uma sub-rede privada, ele poderá se comunicar com o cluster e com outros serviços da AWSpor meio de um gateway NAT.

104

Page 113: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIniciar auto-gestão Amazon Linux 2 nós

Important

Se as sub-redes não tiverem acesso à Internet, certifique-se de que você está cientedas considerações e das etapas adicionais em ??? (p. 86).

6. Confirme que a pilha pode criar recursos do IAM e escolha Create stack (Criar pilha).7. Quando a criação da pilha for concluída, selecione-a no console e escolha Outputs (Saídas).8. Registre o valor de NodeInstanceRole para o grupo de nós criado. Precisa disto quando

configurar o seu Amazon EKS nós.

Para permitir que os nós se juntem ao seu grupo

Note

Se lançou nós dentro de um VPC privado sem acesso à Internet de saída, então tem depermitir que os nós juntem ao seu grupo a partir do VPC.

1. Faça download, edite e aplique o mapa de configuração do AWS IAM Authenticator.

a. Use o comando a seguir para fazer download do mapa de configuração:

curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/aws-auth-cm.yaml

b. Abra o arquivo com seu editor de texto favorito. Substituir o <ARN of instance role(not instance profile)> fragmento com o nodeinstantâneo valor que registou noprocedimento anterior e guarde o ficheiro.

Important

Não modifique outras linhas nesse arquivo.

apiVersion: v1kind: ConfigMapmetadata: name: aws-auth namespace: kube-systemdata: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

c. Aplique a configuração. Esse comando pode demorar alguns minutos para ser concluído.

kubectl apply -f aws-auth-cm.yaml

Note

Se você receber qualquer erro de autorização ou de tipo de recurso, consulteUnauthorized or access denied (kubectl) (Não autorizado ou acesso negado(kubectl)) (p. 322) na seção de solução de problemas.

Note

Se os nós não conseguirem juntar-se ao cluster, consulte ??? (p. 321) no guia deSolução de problemas.

105

Page 114: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIniciar os nós do Windows auto-geridos

2. Observe o status de seus nós e aguarde até que eles atinjam o status Ready.

kubectl get nodes --watch

3. (Apenas nós GPU) Se escolher um tipo de instância GPU e o Amazon EKS-AMI aceleradaotimizado, tem de aplicar o Plug-in do dispositivo NVIDIA para Kubernetes como um conjunto dediapositivos no seu grupo com o seguinte comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.6.0/nvidia-device-plugin.yml

4. (Opcional) Implementar uma aplicação Linux de amostras (p. 204) — Expanda uma aplicaçãode amostras para testar o seu cluster e os nós Linux.

Iniciar os nós do Windows auto-geridosEste tópico ajuda-o a lançar um Auto Scaling grupo de nós Windows que se registem com o seu AmazonEKS grupo. Depois que os nós ingressam no cluster, você pode implantar aplicativos do Kubernetes neles.

Important

Os nós do Amazon EKS são instâncias padrão do Amazon EC2, e você é cobrado por eles combase nos preços normais de instâncias do Amazon EC2. Para obter mais informações, consulteDefinição de preço do Amazon EC2.

Tem de activar o suporte do Windows para o seu grupo e recomendamos que reveja consideraçõesimportantes antes de iniciar um grupo de nó do Windows. Para obter mais informações, consulte Habilitar osuporte do Windows (p. 70).

Escolha o separador abaixo que corresponde ao seu método de criação de nó desejado:

eksctl

Se ainda não tiver um Amazon EKS cluster e um grupo de nós Linux para adicionar um grupo de nódo Windows, depois recomendamos que siga o Conceitos básicos de eksctl (p. 3) em vez disso. Oguia fornece uma demonstração completa para criar um Amazon EKS com os nós Linux e Windows.Se tiver um Amazon EKS cluster e um grupo de nós Linux para adicionar um grupo de nó do Windowse, em seguida, complete os passos seguintes para adicionar o grupo do nó do Windows.

Para iniciar os nós do Windows auto-geridos utilizando eksctl

Este procedimento pressupõe que instalou eksctl, e que o seu eksctl versão é pelo menos0.25.0. Pode verificar a sua versão com o seguinte comando:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ou atualizaro eksctl (p. 238).

Note

Este procedimento funciona apenas para clusters que foram criados com o eksctl.

1. Crie o seu grupo de nó com o seguinte comando. Substituir o example values com os seuspróprios valores.

eksctl create nodegroup \

106

Page 115: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIniciar os nós do Windows auto-geridos

--region region-code \--cluster windows \--name windows-ng \--node-type t2.large \--nodes 3 \--nodes-min 1 \--nodes-max 4 \--node-ami-family WindowsServer2019FullContainer

Note

Se os nós não conseguirem juntar-se ao cluster, consulte ??? (p. 321) no guia deSolução de problemas.

Note

Para obter mais informações sobre as opções disponíveis para o eksctl createnodegroup, consulte o projeto LEIA-ME no GitHub ou visualize a página de ajuda com ocomando a seguir.

eksctl create nodegroup --help

Resultado

Verá várias linhas de saída à medida que os nós são criados. A última linha de saída ésemelhante ao exemplo de linha a seguir.

[✓] all nodegroups have up-to-date configuration

2. (Opcional) Implantar um aplicativo de exemplo do Windows (p. 74) — Expanda uma aplicação deamostras para testar o seu cluster e nós Windows.

Console de gerenciamento da AWS

Para iniciar os nós do Windows auto-geridos utilizando o Console de gerenciamento da AWS

Esses procedimentos têm os seguintes pré-requisitos:

• Tem um Amazon EKS cluster e um grupo de nós Linux. Se você não tiver esses recursos,recomendamos que siga um de nossos guias Conceitos básicos de Amazon EKS (p. 3) para criá-los. Os guias fornecem uma demonstração completa para criar uma Amazon EKS com os nósLinux.

• Você criou uma VPC e um grupo de segurança que atendem aos requisitos de um clusterdo Amazon EKS. Para obter mais informações, consulte Considerações sobre a VPC docluster (p. 173) e Considerações sobre os grupos de segurança do Amazon EKS (p. 175). Oguia Conceitos básicos de Amazon EKS (p. 3) cria uma VPC que atende aos requisitos, ou vocêtambém pode seguir Criar uma VPC para o cluster do Amazon EKS (p. 168) para criar umamanualmente.

1. Aguarde pelo estado do seu cluster para mostrar como ACTIVE. Se iniciar os seus nós antes de ogrupo estar activo, os nós não se registarão no grupo e terá de os transferir.

2. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.3. Selecione Create stack.4. Em Specify template (Especificar modelo), selecione Amazon S3 URL (URL do Amazon S3),

copie o seguinte URL, cole-o no Amazon S3 URL (URL do Amazon S3) e selecione Next(Próximo) duas vezes.

107

Page 116: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIniciar os nós do Windows auto-geridos

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-windows-nodegroup.yaml

5. Na página Quick create stack (Criar pilha rapidamente), preencha os parâmetros a seguir deforma adequada:

• Nome da stack Escolha um nome de pilha para o seu AWS CloudFormation pilha. Por exemplo,pode ligar-lhe cluster-name-nós.

• nome do edifício: Introduza o nome que utilizou quando criou o seu Amazon EKS grupo.

Important

Este nome tem de corresponder exatamente ao nome utilizado em Etapa 1 Crie o seuAmazon EKS cluster (p. 22) caso contrário, os seus nós não podem aderir ao grupo.

• clustercontrolopersecuritygroup: Escolha o segurançosgrupos valor do AWS CloudFormationsaída gerada com Criar a VPC do cluster do Amazon EKS (p. 19).

• nome do nodegroupname: Introduza um nome para o seu grupo de nó. Este nome pode serutilizado posteriormente para identificar o grupo de nó de Escala automática criado para osseus nós.

• tamanho do painel de controlo automático: Introduza o número mínimo de nós que o grupo deescala automática do seu nó pode escalar para.

• escaldeescaldodeescalaçãodedepreciação: Introduza o número desejado de nós para a escalaquando a sua pilha for criada.

• escalãodeescalãodeescalãodedepreciação: Introduza o número máximo de nós que o grupo deescala automática do seu nó pode escalar para.

• nodeinstantâneo: Escolha um tipo de instância para os seus nós.

Note

Os tipos de instâncias compatíveis para a versão mais recente do plug-in CNI daAmazon VPC para Kubernetes são mostrados aqui. Pode ser necessário atualizar aversão do CNI para poder aproveitar os tipos de instâncias compatíveis mais recentes.Para obter mais informações, consulte Plug-in CNI da Amazon VPC para atualizaçõesdo Kubernetes (p. 194).

• nodeimageidssmparam: Pré-preenchido com o Amazon EC2 Systems Manager parâmetro doactual recomendado Amazon EKS-ID do Windows Core AMI otimizado. Se pretender utilizar aversão completa do Windows, substitua Core com Full.

• nodeimageid: (Opcional) Se estiver a utilizar o seu próprio AMI personalizado (em vez deAmazon EKS-AMI otimizado), introduza uma ID de nó AMI para a sua região. Se vocêespecificar um valor aqui, ele substituirá todos os valores no campo NodeImageIdSSMParam.

• tamanho da conta: Especifique um tamanho de volume de raiz para os seus nós, na gib.• KeyName Introduza o nome de um Amazon EC2 O par de chaves SSH que pode utilizar para

ligar a SSH aos seus nós após o lançamento. Se você ainda não tem um par de chaves doAmazon EC2, é possível criar um no Console de gerenciamento da AWS. Para obter maisinformações, consulte Pares de chaves do Amazon EC2 no Guia do usuário do Amazon EC2para instâncias do Windows.

Note

Se você não fornecer um par de chaves aqui, ocorrerá uma falha na criação da pilhado AWS CloudFormation.

• colecionamentos: Especifique quaisquer argumentos opcionais para passar para o script defaixa de impulso do nó, como extra kubelet argumentos utilizando -KubeletExtraArgs.

• vpcid: Selecione a ID para o VPC que criou em Criar a VPC do cluster do Amazon EKS (p. 19).108

Page 117: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIniciar os nós do Windows auto-geridos

• grupos nodeseguradores: Selecione o grupo de segurança que foi criado para o seu grupo denó Linux em Criar a VPC do cluster do Amazon EKS (p. 19). Se os seus nós Linux tiverem maisdo que um grupo de segurança ligado (por exemplo, se o grupo de nó Linux tiver sido criadocom eksctl), especifique todas aqui.

• Subnets (Sub-redes). Escolha as subredes criadas em Criar a VPC do cluster do AmazonEKS (p. 19). Se criou o seu VPC utilizando os passos descritos em Criar uma VPC para ocluster do Amazon EKS (p. 168), então especifique apenas as sub-redes privadas dentro doVPC para que os seus nós iniciem em.

Important

Se alguma das sub-redes for pública, ela deverá ter a atribuição automática deatribuição de endereço IP público habilitada. Se a configuração não estiver habilitadapara a sub-rede pública, os nós implantados nessa sub-rede pública não receberãoum endereço IP público e não poderão se comunicar com o cluster nem com outrosserviços da AWS. Se a sub-rede tiver sido implantada antes de 03/26/2020 usandoqualquer um dos modelos de VPC do Amazon EKS AWS CloudFormation (p. 168),ou usando eksctl, a atribuição automática de endereço IP público será desabilitadapara sub-redes públicas. Para obter informações sobre como habilitar a atribuiçãode endereço IP público para uma sub-rede, consulte Modificar o atributo deendereçamento IPv4 público para a sub-rede. Se o nó for implantado em uma sub-rede privada, ele poderá se comunicar com o cluster e com outros serviços da AWSpor meio de um gateway NAT.

6. Confirme que a pilha pode criar recursos do IAM e escolha Create stack (Criar pilha).7. Quando a criação da pilha for concluída, selecione-a no console e escolha Outputs (Saídas).8. Registre o valor de NodeInstanceRole para o grupo de nós criado. Precisa disto quando

configurar o seu Amazon EKS Nós do Windows.

Para permitir que os nós se juntem ao seu grupo

1. Faça download, edite e aplique o mapa de configuração do AWS IAM Authenticator.

a. Use o comando a seguir para fazer download do mapa de configuração:

curl -o aws-auth-cm-windows.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/aws-auth-cm-windows.yaml

b. Abra o arquivo com seu editor de texto favorito. Substituir o <ARN of instance role(not instance profile) of **Linux** node> e <ARN of instance role (notinstance profile) of **Windows** node> com o nodeinstantâneo valores queregistou nos seus nós Linux e Windows e guarde o ficheiro.

Important

Não modifique outras linhas nesse arquivo.

apiVersion: v1kind: ConfigMapmetadata: name: aws-auth namespace: kube-systemdata: mapRoles: | - rolearn: <ARN of instance role (not instance profile) of **Linux** node> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

109

Page 118: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizações de nós auto-geridas

- rolearn: <ARN of instance role (not instance profile) of **Windows** node> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - eks:kube-proxy-windows

c. Aplique a configuração. Esse comando pode demorar alguns minutos para ser concluído.

kubectl apply -f aws-auth-cm-windows.yaml

Note

Se você receber qualquer erro de autorização ou de tipo de recurso, consulteUnauthorized or access denied (kubectl) (Não autorizado ou acesso negado(kubectl)) (p. 322) na seção de solução de problemas.

Note

Se os nós não conseguirem juntar-se ao cluster, consulte ??? (p. 321) no guia deSolução de problemas.

2. Observe o status de seus nós e aguarde até que eles atinjam o status Ready.

kubectl get nodes --watch

3. (Opcional) Implantar um aplicativo de exemplo do Windows (p. 74) — Expanda uma aplicação deamostras para testar o seu cluster e nós Windows.

Atualizações de nós auto-geridasQuando um novo Amazon EKS-o AMI otimizado é libertado, deve considerar substituir os nós no seugrupo de nós autogerido com o novo AMI. Da mesma forma, se actualizou a versão Kubernetes para o seuAmazon EKS , também deve actualizar os nós para utilizar nós com a mesma versão Kubernetes.

Important

Este tópico abrange atualizações de nós para nós autogerido. Se você estiver usando Grupos denós gerenciados (p. 92), consulte Atualizar um grupo de nós gerenciados (p. 97).

Há duas maneiras básicas de atualizar grupos de nós autogerenciados em seus clusters para usar umanova AMI:

• the section called “Migração para um novo grupo de nós” (p. 110) – Crie um novo grupo de nós emigre os seus grupos para esse grupo. A migração para um novo grupo de nós é mais graciosa do quesimplesmente atualizar a ID do AMI num existente AWS CloudFormation a pilha, porque o processo demigração dá origem ao grupo de nó antigo como NoSchedule e drene os nós depois de uma nova pilhaestar pronta para aceitar a carga de trabalho de sustentação existente.

• the section called “Atualizar um grupo de nó auto gerido existente” (p. 115) – Atualizar o AWSCloudFormation pilha para um grupo de nó existente para utilizar o novo AMI. Este método não ésuportado para grupos de nó criados com eksctl.

Migração para um novo grupo de nósEste tópico ajuda-o a criar um novo grupo de nós, migrar graciosamente as suas aplicações existentespara o novo grupo e, em seguida, remover o grupo de nó antigo do seu grupo.

110

Page 119: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizações de nós auto-geridas

eksctl

Para migrar as suas aplicações para um novo grupo de nós com eksctl

Este procedimento exige a versão eksctl 0.25.0 ou posterior. Você pode verificar a versão com oseguinte comando:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ou atualizaro eksctl (p. 238).

Note

Este procedimento só funciona para clusters e grupos de nós criados com eksctl.

1. Recuperar o nome dos grupos de nós existentes, substituir default com o nome do seu grupo.

eksctl get nodegroups --cluster=default

Resultado

CLUSTER NODEGROUP CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE IDdefault standard-nodes 2019-05-01T22:26:58Z 1 4 3 t3.medium ami-05a71d034119ffc12

2. Iniciar um novo grupo de nós com eksctl com o seguinte comando, substituir o examplevalores com os seus próprios valores.

Note

Para obter mais sinalizadores disponíveis e suas descrições, consulte https://eksctl.io/.

eksctl create nodegroup \--cluster default \--version 1.17 \--name standard-nodes-new \--node-type t3.medium \--nodes 3 \--nodes-min 1 \--nodes-max 4 \--node-ami auto

3. Quando o comando anterior terminar, verifique se todos os seus nós atingiram o Ready com oseguinte comando:

kubectl get nodes

4. Elimine o grupo de nó original com o seguinte comando, substituindo o example valores com oseu grupo e nomes nodegrupos:

eksctl delete nodegroup --cluster default --name standard-nodes

111

Page 120: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizações de nós auto-geridas

Console de gerenciamento da AWS

Para migrar as suas aplicações para um novo grupo de nós com o Console de gerenciamentoda AWS

1. Inicie um novo grupo de nós seguindo os passos descritos em Iniciar auto-gestão Amazon Linux 2nós (p. 101).

2. Quando a criação da pilha for concluída, selecione-a no console e escolha Outputs (Saídas).3. Registre o valor de NodeInstanceRole para o grupo de nós criado. Precisa disto para adicionar o

novo Amazon EKS ao seu grupo.Note

Se tiver anexado qualquer política adicional do IAM à função do IAM do antigo grupode nós (por exemplo, para adicionar permissões para o Autoscaler do cluster doKubernetes), você deverá anexar essas mesmas políticas à função do IAM do novogrupo de nós para manter essa funcionalidade no novo grupo.

4. Atualize os grupos de segurança para ambos os grupos de nós para que possam comunicarentre si. Para obter mais informações, consulte Considerações sobre os grupos de segurança doAmazon EKS (p. 175).

a. Registe as Ids de grupo de segurança para ambos os grupos de nós. Isso é mostrado como ovalor NodeSecurityGroup nas saídas da pilha do AWS CloudFormation.

É possível usar os seguintes comandos da AWS CLI para obter os IDs do grupo desegurança dos nomes da pilha. Nestes comandos, oldNodes é o AWS CloudFormationnome da pilha para a sua pilha de nó mais antigo, e newNodes é o nome da pilha que está amigrar para.

oldNodes="<old_node_CFN_stack_name>"newNodes="<new_node_CFN_stack_name>"

oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \--query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \--output text)newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \--query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \--output text)

b. Adicione regras de entrada a cada grupo de segurança de nó, de modo a que aceitem otráfego uns dos outros.

Os comandos da AWS CLI a seguir adicionam regras de entrada a cada grupo de segurançaque permite todo o tráfego em todos os protocolos do outro grupo de segurança. Estaconfiguração permite que os grupos em cada grupo de nó comuniquem entre si enquantoestá a migrar a sua carga de trabalho para o novo grupo.

aws ec2 authorize-security-group-ingress --group-id $oldSecGroup \--source-group $newSecGroup --protocol -1aws ec2 authorize-security-group-ingress --group-id $newSecGroup \--source-group $oldSecGroup --protocol -1

5. Editar aws-auth mapa para mapear a nova função de instância de nó no RBAC.

kubectl edit configmap -n kube-system aws-auth

112

Page 121: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizações de nós auto-geridas

Adicionar um novo mapRoles entrada para o novo grupo de nós.

apiVersion: v1data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - rolearn: arn:aws:iam::111122223333:role/nodes-1-16-NodeInstanceRole-U11V27W93CX5 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

Substituir o <ARN of instance role (not instance profile)> fragmento com onodeinstantâneo valor que registou em Step 3 (p. 112), guarde e feche o ficheiro para aplicar omapa de configmap actualizado.

6. Observe o estado dos seus nós e aguarde que os seus novos nós se juntem ao seu grupo ealcance o Ready estado.

kubectl get nodes --watch

7. (Opcional) Se você estiver usando o Autoscaler do cluster do Kubernetes, reduza a implantaçãopara 0 réplicas para evitar ações de dimensionamento conflitantes.

kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system

8. Marque cada um dos nós que você quer remover com NoSchedule, para que novos pods nãosejam programados ou reprogramados nos nós que você está substituindo, usando o seguintecomando:

kubectl taint nodes node_name key=value:NoSchedule

Se estiver a actualizar os seus nós para uma nova versão Kubernetes, pode identificar ememorizar todos os nós de uma versão específica de Kubernetes (neste caso, 1.15) com oseguinte excerto de código.

K8S_VERSION=1.15nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")for node in ${nodes[@]}do echo "Tainting $node" kubectl taint nodes $node key=value:NoScheduledone

9. Determine o provedor DNS do cluster.

kubectl get deployments -l k8s-app=kube-dns -n kube-system

Saída (esse cluster está usando kube-dns para a resolução de DNS, mas o cluster pode retornarcoredns em vez disso):

113

Page 122: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizações de nós auto-geridas

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEkube-dns 1 1 1 1 31m

10. Se a implantação atual estiver executando menos de duas réplicas, expanda-a para duasréplicas. Substitua coredns por kube-dns se a saída do comando anterior retornou isso.

kubectl scale deployments/kube-dns --replicas=2 -n kube-system

11. Drene cada um dos nós que você deseja remover do cluster com o seguinte comando:

kubectl drain node_name --ignore-daemonsets --delete-local-data

Se estiver a actualizar os seus nós para uma nova versão Kubernetes, pode identificar e drenartodos os nós de uma versão específica de Kubernetes (neste caso, 1.15) com o seguinte excertode código.

K8S_VERSION=1.15nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")for node in ${nodes[@]}do echo "Draining $node" kubectl drain $node --ignore-daemonsets --delete-local-datadone

12. Depois de os seus antigos nós terem terminado a drenagem, revogue as regras de entrada dogrupo de segurança que autorizou anteriormente e, em seguida, elimine o AWS CloudFormationpara terminar as instâncias.

Note

Se tiver anexado qualquer política adicional do IAM à função do IAM do antigo grupode nós (por exemplo, para adicionar permissões para o Autoscaler do cluster doKubernetes), você deverá desanexar essas políticas adicionais da função antes deexcluir a pilha do AWS CloudFormation.

a. Revogar as regras de entrada que criou para os grupos de segurança do seu nóanteriormente. Nestes comandos, oldNodes é o AWS CloudFormation nome da pilha para asua pilha de nó mais antigo, e newNodes é o nome da pilha que está a migrar para.

oldNodes="<old_node_CFN_stack_name>"newNodes="<new_node_CFN_stack_name>"

oldSecGroup=$(aws cloudformation describe-stack-resources --stack-name $oldNodes \--query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \--output text)newSecGroup=$(aws cloudformation describe-stack-resources --stack-name $newNodes \--query 'StackResources[?ResourceType==`AWS::EC2::SecurityGroup`].PhysicalResourceId' \--output text)aws ec2 revoke-security-group-ingress --group-id $oldSecGroup \--source-group $newSecGroup --protocol -1aws ec2 revoke-security-group-ingress --group-id $newSecGroup \--source-group $oldSecGroup --protocol -1

b. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

114

Page 123: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizações de nós auto-geridas

c. Selecione a sua pilha de nó antigo.d. Selecione Actions (Ações) e Delete stack (Excluir pilha).

13. Editar aws-auth configmap para remover a função de instância de nó antigo da RBAC.

kubectl edit configmap -n kube-system aws-auth

Eliminar o mapRoles entrada para o grupo de nó antigo.

apiVersion: v1data: mapRoles: | - rolearn: arn:aws:iam::111122223333:role/nodes-1-16-NodeInstanceRole-W70725MZQFF8 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - rolearn: arn:aws:iam::111122223333:role/nodes-1-15-NodeInstanceRole-U11V27W93CX5 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

Salve e feche o arquivo para aplicar o configmap atualizado.14. (Opcional) Se você estiver usando o Autoscaler do cluster do Kubernetes, reduza a implantação

para uma réplica.

Note

Você também deve marcar o novo grupo do Auto Scaling corretamente (por exemplo,k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/<YOURCLUSTER NAME>) e atualizar o comando da implantação do Cluster Autoscaler paraapontar para o grupo do Auto Scaling recém-marcado. Para obter mais informações,consulte Autoscaler do cluster na AWS.

kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system

15. (Opcional) Verifique se você está usando a versão mais recente do plug-in CNI da Amazon VPCpara Kubernetes. Pode ser necessário atualizar a versão do CNI para poder aproveitar os tiposde instâncias compatíveis mais recentes. Para obter mais informações, consulte Plug-in CNI daAmazon VPC para atualizações do Kubernetes (p. 194).

16. Se o cluster estiver usando o kube-dns para resolução de DNS (consulte a etapa Step9 (p. 113)), reduza a implantação de kube-dns para uma réplica.

kubectl scale deployments/kube-dns --replicas=1 -n kube-system

Atualizar um grupo de nó auto gerido existenteEste tópico ajuda-o a actualizar um AWS CloudFormation pilha de nós autogerido com um novo AMI. Podeutilizar este procedimento para atualizar os seus nós para uma nova versão de Kubernetes após umaatualização de grupo, ou pode atualizar para o mais recente Amazon EKS-AMI otimizado para uma versãoexistente de Kubernetes.

115

Page 124: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizações de nós auto-geridas

Important

Este tópico abrange atualizações de nós para nós autogerido. Se você estiver usando Grupos denós gerenciados (p. 92), consulte Atualizar um grupo de nós gerenciados (p. 97).

A última predefinição Amazon EKS nó AWS CloudFormation modelo está configurado para lançar umainstância com o novo AMI no seu grupo antes de remover um antigo, um de cada vez. Essa configuraçãogarante que você esteja com a contagem desejada do grupo do Auto Scaling de instâncias ativas nocluster durante a implantação da atualização.

Note

Este método não é suportado para grupos de nó criados com eksctl. Se criou o seu grupo degrupo ou nó com eksctl, consulte Migração para um novo grupo de nós (p. 110).

Para actualizar um grupo de nó existente

1. Determine o provedor DNS do cluster.

kubectl get deployments -l k8s-app=kube-dns -n kube-system

Saída (esse cluster está usando kube-dns para a resolução de DNS, mas o cluster pode retornarcoredns em vez disso):

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEkube-dns 1 1 1 1 31m

2. Se a implantação atual estiver executando menos de duas réplicas, expanda-a para duas réplicas.Substitua coredns por kube-dns se a saída do comando anterior retornou isso.

kubectl scale deployments/kube-dns --replicas=2 -n kube-system

3. (Opcional) Se você estiver usando o Autoscaler do cluster do Kubernetes, reduza a implantação parazero réplicas para evitar ações de dimensionamento conflitantes.

kubectl scale deployments/cluster-autoscaler --replicas=0 -n kube-system

4. Determine o tipo de instância e a contagem de instância pretendida do seu grupo de nó atual. Vocêpoderá inserir esses valores mais tarde, ao atualizar o modelo do AWS CloudFormation para o grupo.

a. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.b. Escolher Iniciar configurações na navegação esquerda e anote o tipo de instância para a

configuração de lançamento de nó existente.c. Escolher Auto Scaling Grupos na navegação esquerda e anote o Desejado contagem de instância

para o seu nó existente Auto Scaling grupo.5. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.6. Selecione a pilha do grupo de nós e escolha Atualizar.7. Selecione Replace current template (Substituir modelo atual) e selecione Amazon S3 URL (URL do

Amazon S3).8. Para URL do Amazon S3cole o seguinte URL na área de texto para garantir que está a utilizar a

versão mais recente do nó AWS CloudFormation e depois escolha Seguinte:

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-nodegroup.yaml

9. Na página Specify stack details (Especificar detalhes da pilha), preencha os parâmetros a seguir eescolha Next (Próximo):

116

Page 125: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizações de nós auto-geridas

• NodeAutoScalingGroupDesiredCapacity – Insira a contagem de instâncias desejada que vocêregistrou em Step 4 (p. 116), ou insira um novo número desejado de nós para o qual dimensionarquando a pilha for atualizada.

• escalãodeescalãodeescalãodedepreciação – Introduza o número máximo de nós aos quais o grupode escala automática do seu nó pode escalar. Este valor tem de ser pelo menos um nó maior doque a sua capacidade desejada, para que possa realizar uma atualização do seu nó sem reduzir acontagem do seu nó durante a atualização.

• nodeinstantâneo – Escolha o tipo de instância em que se registou Step 4 (p. 116), ou escolhaum tipo de instância diferente para os seus nós. Cada tipo de instância do Amazon EC2 oferecesuporte a um número máximo de interfaces de rede elásticas (ENIs) e cada ENI oferece suportea um número máximo de endereços IP. Como cada nó de operador e pod recebe seu próprioendereço IP, é importante escolher um tipo de instância que ofereça suporte ao número máximo depods que você deseja executar em cada nó de operador. Para obter uma lista do número de ENIse endereços IP com suporte, por tipo de instância, consulte Endereços IP por interface de redepor tipo de instância. Por exemplo, o tipo de instância t3.medium oferece suporte a um máximode 18 endereços IP para o nó de operador e os pods. Alguns tipos de instância podem não estardisponíveis em todas as regiões.

Note

Os tipos de instâncias compatíveis para a versão mais recente do plug-in CNI da AmazonVPC para Kubernetes são mostrados aqui. Pode ser necessário atualizar a versãodo CNI para poder aproveitar os tipos de instâncias compatíveis mais recentes. Paraobter mais informações, consulte Plug-in CNI da Amazon VPC para atualizações doKubernetes (p. 194).

Important

Alguns tipos de instância podem não estar disponíveis em todas as regiões.• NodeImageIdSSMParam – o parâmetro do Amazon EC2 Systems Manager do ID da AMI para o

qual você deseja atualizar. O valor a seguir usa a AMI otimizada para o Amazon EKS mais recentepara a versão 1.17 do Kubernetes.

/aws/service/eks/optimized-ami/1.17/amazon-linux-2/recommended/image_id

Pode alterar o 1.17 valor para qualquer versão Kubernetes suportada (p. 65). Se você quiser usara AMI acelerada otimizada para o Amazon EKS, altere amazon-linux-2 para amazon-linux-2-gpu.

Note

Utilizar o Amazon EC2 Systems Manager o parâmetro permite atualizar os seusnós no futuro sem ter de procurar e especificar uma ID do AMI. Se a pilha do AWSCloudFormation estiver usando esse valor, qualquer atualização da pilha sempre executaráa AMI otimizada para Amazon EKS recomendada e mais recente de sua versão doKubernetes, mesmo que você não altere nenhum valor no modelo.

• NodeImageId – para usar sua própria AMI personalizada, insira o ID da AMI a ser usada.

Important

Esse valor substitui qualquer valor especificado para NodeImageIdSSMParam. Para usar ovalor de NodeImageIdSSMParam verifique se o valor de NodeImageId está em branco.

10. (Opcional) Na página Options (Opções), marque os recursos da pilha. Selecione Next (Próximo).11. Na página Review (Revisão), revise suas informações, confirme se a pilha pode criar recursos do IAM

e selecione Update stack (Atualizar pilha).

117

Page 126: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAWS Fargate

Note

A atualização de cada nó no cluster leva vários minutos. Aguarde até que a atualização detodos os nós seja concluída antes de executar as próximas etapas.

12. Se o provedor de DNS do cluster for kube-dns, reduza a implantação kube-dns para uma réplica.

kubectl scale deployments/kube-dns --replicas=1 -n kube-system

13. (Opcional) Se você estiver usando o Cluster Autoscaler do Kubernetes, reduza a implantação para aquantidade de réplicas desejada.

kubectl scale deployments/cluster-autoscaler --replicas=1 -n kube-system

14. (Opcional) Verifique se você está usando a versão mais recente do plug-in CNI da Amazon VPCpara Kubernetes. Pode ser necessário atualizar a versão do CNI para poder aproveitar os tipos deinstâncias compatíveis mais recentes. Para obter mais informações, consulte Plug-in CNI da AmazonVPC para atualizações do Kubernetes (p. 194).

AWS FargateEste tópico aborda a utilização Amazon EKS para executar as cápsulas Kubernetes em AWS Fargate.

O AWS Fargate é uma tecnologia que fornece capacidade computacional sob demanda e do tamanhocerto para contêineres. Com o AWS Fargate, não é mais necessário provisionar, configurar ou dimensionargrupos de máquinas virtuais para executar contêineres. Isso elimina a necessidade de escolher tipos deservidor, de decidir quando dimensionar os grupos de nós ou de otimizar o pacote de clusters.

É possível controlar quais pods serão iniciados no Fargate e como eles serão executados com os perfis doFargate (p. 124), que são definidos como parte do cluster do Amazon EKS.

O Amazon EKS integra o Kubernetes ao AWS Fargate com controladores criados pela AWS usando omodelo extensível de upstream fornecido pelo Kubernetes. Esses controladores são executados comoparte do plano de controle do Kubernetes gerenciado pelo Amazon EKS e são responsáveis por programarpods nativos do Kubernetes no Fargate. Os controladores do Fargate incluem um novo programador que éexecutado com o programador do Kubernetes, além de vários controladores de admissão de mutação e devalidação. Ao iniciar um pod que atende aos critérios de execução no Fargate, os controladores do Fargateem execução no cluster reconhecem, atualizam e programam o pod no Fargate.

Cada pod em execução no Fargate tem seu próprio limite de isolamento e não compartilha o kernelsubjacente, os recursos de CPU, os recursos de memória nem a interface de rede elástica com outro pod.

Este tópico descreve os diferentes componentes de séries a executar Fargatee chama consideraçõesespeciais para utilizar Fargate com Amazon EKS.

No momento, o AWS Fargate com o Amazon EKS só está disponível nas seguintes regiões:

Nome da região Região

Leste dos EUA (Ohio) us-east-2

Leste dos EUA (Norte da Virgínia) us-east-1

Oeste dos EUA (Oregon) us-west-2

Ásia-Pacífico (Cingapura) ap-southeast-1

118

Page 127: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConsiderações sobre o Fargate

Nome da região Região

Ásia-Pacífico (Sydney) ap-southeast-2

Ásia-Pacífico (Tóquio) ap-northeast-1

Europa (Frankfurt) eu-central-1

Europa (Irlanda) eu-west-1

Considerações sobre o AWS FargateVeja a seguir algumas considerações sobre o uso do Fargate no Amazon EKS.

• Os Classic Load Balancers e Load balancer de redes não são compatíveis com pods em execuçãono Fargate. Para ingresso, recomendamos usar o Controlador de entrada do ALB no AmazonEKS (p. 216) (versão mínima v1.1.4).

• Os pods devem corresponder a um perfil do Fargate no momento em que são programados para seremexecutados no Fargate. Cápsulas que não correspondem a uma Fargate o perfil pode estar bloqueadocomo Pending. Se uma correspondência Fargate o perfil existe, pode eliminar os pods pendentes quecriou para os reprogramar Fargate.

• Os conjuntos de daemons não são compatíveis com o Fargate. Se o aplicativo exigir um daemon, vocêdeverá reconfigurar esse daemon para ser executado como um contêiner associado nos pods.

• Os contêineres privilegiados não são compatíveis com o Fargate.• Os pods em execução no Fargate não podem especificar HostPort ou HostNetwork no manifesto do pod.• No momento, as GPUs não estão disponíveis no Fargate.• Os pods em execução no Fargate são compatíveis somente em sub-redes privadas (com acesso do

gateway da NAT aos serviços da AWS, mas não uma rota direta para um gateway da Internet), portanto,a VPC do cluster deve ter sub-redes privadas disponíveis. Para clusters sem acesso de saída à Internet,consulte ??? (p. 86).

• Pode utilizar o Vertical Pod Autoscaler (p. 207) para o tamanho inicialmente correcto da CPUe memória para as suas cápsulas Fargate, e depois utilize o the section called “Horizontal PodAutoscaler” (p. 212) para escalar esses grupos. Se quiser que o Autoscaler Vertical de Sustentaçãoreajuste automaticamente as cápsulas para Fargate com CPU maior e combinações de memória, definao modo Vertical Pod Scaler para Auto ou Recreate para garantir uma funcionalidade correta. Paramais informações, consulte o Balança vertical documentação sobre o github.

• Os aplicativos com estado não são recomendados para pods em execução no Fargate. Em vezdisso, recomendamos o uso de soluções da AWS, como o Amazon S3 ou o DynamoDB para oarmazenamento de dados do pod.

• A resolução DNS e os nomes de host DNS devem estar habilitados para sua VPC. Para obter maisinformações, consulte Visualizar e atualizar o suporte DNS para VPC.

• A Fargate executa cada grupo num ambiente isolado por VM sem partilhar recursos com outrascápsulas. No entanto, porque Kubernetes é um orestrestrador de inquilino único, Fargate não podegarantir isolamento de segurança ao nível da sustentação. Você deve executar cargas de trabalhoconfidenciais ou cargas de trabalho não confiáveis que precisam de isolamento de segurança completousando clusters do Amazon EKS separados.

• Os perfis do Fargate são compatíveis com a especificação de sub-redes de blocos CIDR secundáriosda VPC. Talvez você queira especificar um bloco CIDR secundário porque há um número limitadode endereços IP disponíveis em uma sub-rede. Como resultado, há um número limitado de pods quepodem ser criados no cluster. Usar diferentes sub-redes para pods permite aumentar o número deendereços IP disponíveis. Para obter mais informações, consulte Adicionar blocos CIDR IPv4 a umaVPC.

119

Page 128: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConceitos básicos do Fargate

Conceitos básicos do AWS Fargate com o AmazonEKSEste tópico ajuda a começar a usar a execução de pods no AWS Fargate com o cluster do Amazon EKS.

Note

No momento, o AWS Fargate com o Amazon EKS só está disponível nas seguintes regiões:

Nome da região Região

Leste dos EUA (Ohio) us-east-2

Leste dos EUA (Norte da Virgínia) us-east-1

Oeste dos EUA (Oregon) us-west-2

Ásia-Pacífico (Cingapura) ap-southeast-1

Ásia-Pacífico (Sydney) ap-southeast-2

Ásia-Pacífico (Tóquio) ap-northeast-1

Europa (Frankfurt) eu-central-1

Europa (Irlanda) eu-west-1

Se você restringir o acesso ao endpoint público do cluster usando blocos CIDR, é recomendável tambémhabilitar o acesso ao endpoint privado para que os pods do Fargate possam se comunicar com o cluster.Sem o endpoint privado ativado, os blocos CIDR especificados para acesso público devem incluir asorigens de saída da VPC. Para obter mais informações, consulte Controle de acesso ao endpoint docluster do Amazon EKS (p. 49).

(Opcional) Criar um clusterOs pods em execução no Fargate são compatíveis com os clusters do Amazon EKS a partir da versão1.14 do Kubernetes e da versão de plataforma (p. 65) eks.5. Os clusters existentes podem atualizar paraa versão 1.14 ou posterior para aproveitar esse recurso. Para obter mais informações, consulte Atualizaruma versão do Kubernetes do cluster do Amazon EKS (p. 37).

Se você ainda não tiver um cluster do Amazon EKS compatível com o Fargate, poderá criar um com ocomando eksctl a seguir.

Note

Este procedimento exige a versão eksctl 0.25.0 ou posterior. Você pode verificar a versãocom o seguinte comando:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ouatualizar o eksctl (p. 238).

eksctl create cluster --name my-cluster --version 1.17 --fargate

120

Page 129: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConceitos básicos do Fargate

Adicionar a opção --fargate no comando acima cria um cluster sem um grupo de nós. No entanto,o eksctl cria uma função de execução de pod, um perfil do Fargate para os namespaces default ekube-system, e aplica patches à implantação coredns para que ela possa ser executada no Fargate.

Verificar se os nós existentes podem se comunicar com os podsdo FargateSe estiver trabalhando com um novo cluster sem nós de operador ou com um cluster que tenha somentegrupos de nós gerenciados (p. 92), você poderá avançar para Criar uma função de execução de pod doFargate (p. 121).

Se estiver trabalhando com um cluster existente que já tenha nós de operador associados a ele, seránecessário verificar se os pods desses nós podem se comunicar livremente com os pods em execuçãono Fargate. Os pods em execução no Fargate são automaticamente configurados para usar o grupode segurança do cluster ao qual estão associados. É necessário garantir que qualquer nó de operadorexistente no cluster possa enviar e receber tráfego de e para o grupo de segurança do cluster. Grupos denós gerenciados (p. 92) também são configurados automaticamente para usar o grupo de segurança docluster, então não é necessário modificá-los ou verificá-los com relação a essa compatibilidade.

Para grupos de nós existentes que foram criados com o eksctl ou com os modelos do AWSCloudFormation gerenciados pelo Amazon EKS, é possível adicionar o grupo de segurança do cluster aosnós manualmente ou modificar o modelo de execução do grupo de Auto Scaling do grupo de nós paraanexar o grupo de segurança do cluster às instâncias. Para obter mais informações, consulte Alterar osgrupos de segurança de uma instância no Guia do usuário da Amazon VPC.

Você pode verificar se há um grupo de segurança de cluster para seu cluster no Console degerenciamento da AWS, na seção Networking (Rede), ou com o seguinte comando da AWS CLI:

aws eks describe-cluster --name cluster_name --query cluster.resourcesVpcConfig.clusterSecurityGroupId

Criar uma função de execução de pod do FargateQuando o cluster cria pods no AWS Fargate, os pods precisam fazer chamadas às APIs da AWS em seunome para executar ações como extrair imagens de um contêiner do Amazon ECR. A função de execuçãode pod do Amazon EKS fornece as permissões do IAM para fazer isso.

Note

Se você criou o cluster com o eksctl usando a opção --fargate, o cluster já tem uma funçãode execução de pod e você pode avançar para Criar um perfil do Fargate para o cluster (p. 122).Da mesma maneira, se você usar o eksctl para criar os perfis do Fargate, o eksctl criará afunção de execução de pod, caso ela ainda não exista.

Ao criar um perfil do Fargate, é necessário especificar uma função de execução de pod para serusada com os pods. Essa função é adicionada ao Controle de acesso com base em função (RBAC)do Kubernetes do cluster para autorização. Isso permite que o kubelet que está sendo executado nainfraestrutura do Fargate registre-se no cluster do Amazon EKS para poder aparecer no cluster como umnó. Para obter mais informações, consulte Função de execução de pod (p. 273).

Para criar um AWS Fargate função de execução com o Console de gerenciamento da AWS

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. Escolha Roles (Funções) e, em seguida, Create Role (Criar função).3. Escolher EKS da lista de serviços, EKS - Fargate cobertura para o seu caso de utilização, e depois

Seguinte: Permissões

121

Page 130: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConceitos básicos do Fargate

4. Selecione Next (Próximo). Tags5. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter mais

informações sobre como usar tags no IAM, consulte Marcar entidades do IAM no Guia do usuário doIAM.

6. Selecione Next (Próximo). Review (Revisar)7. Em Role name (Nome da função), insira um nome exclusivo para a função, como

AmazonEKSFargatePodExecutionRole, e selecione Create role (Criar função).

Criar um perfil do Fargate para o clusterAntes de programar pods em execução no Fargate no cluster, é necessário definir um perfil do Fargate queespecifique quais pods deverão usar o Fargate quando forem executados. Para obter mais informações,consulte Perfil do AWS Fargate (p. 124).

Note

Se você criou o cluster com o eksctl usando a opção --fargate, um perfil do Fargate jáfoi criado para o cluster com seletores para todos os pods nos namespaces kube-systeme default. Use o procedimento a seguir para criar perfis do Fargate para qualquer outronamespace que você deseja usar com o Fargate.

Selecione a guia a seguir que corresponde ao seu método preferido de criação de perfis do Fargate.

eksctl

Como criar um perfil do Fargate para um cluster com o eksctl

Este procedimento exige a versão eksctl 0.25.0 ou posterior. Você pode verificar a versão com oseguinte comando:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ou atualizaro eksctl (p. 238).

• Crie o perfil do Fargate com o comando eksctl a seguir, substituindo o texto da variávelpor seus próprios valores. É necessário especificar um namespace, mas a opção de rótulos não éobrigatória.

eksctl create fargateprofile --cluster cluster_name --name fargate_profile_name --namespace kubernetes_namespace --labels key=value

Console de gerenciamento da AWS

Como criar um perfil do Fargate para um cluster com o Console de gerenciamento da AWS

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Escolha o cluster para o qual deve ser criado um perfil do Fargate.3. Em Fargate profiles (Perfis do Fargate), selecione Add Fargate profile (Adicionar perfil do

Fargate).4. Na página Configure Fargate profile (Configurar perfil do Fargate), insira as informações a seguir

e selecione Next (Próximo).

a. Em Name (Nome), insira um nome exclusivo para o perfil do Fargate.

122

Page 131: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConceitos básicos do Fargate

b. Em Pod execution role (Função de execução de pod), escolha a função de execução depod que deve ser usada com o perfil do Fargate. Somente funções do IAM com o principalde serviço eks-fargate-pods.amazonaws.com são mostradas. Se nenhuma função forlistada aqui, será necessário criar uma. Para obter mais informações, consulte Função deexecução de pod (p. 273).

c. Em Subnets (Sub-redes), escolha as sub-redes que devem ser usadas para os pods.Por padrão, todas as sub-redes na VPC do cluster são selecionadas. Somente sub-redesprivadas são compatíveis com pods em execução no Fargate. É necessário desmarcar todasas sub-redes públicas.

d. Em Tags, é possível marcar o perfil do Fargate. Essas tags não são propagadas para outrosrecursos associados ao perfil, como seus pods.

5. Na página Configure pods selection (Configurar a seleção de pods), insira as informações aseguir e selecione Next (Próximo).

a. Em Namespace, insira um namespace para corresponder aos pods, como kube-system oudefault.

b. (Opcional) Adicione rótulos do Kubernetes ao seletor que os pods no namespaceespecificado devem ter para corresponder ao seletor. Por exemplo, você pode adicionaro rótulo infrastructure: fargate ao seletor para que somente pods no namespaceespecificado que também tenham o rótulo infrastructure: fargate do Kubernetescorrespondam ao seletor.

6. Na página Review and create (Revisar e criar), revise as informações do perfil do Fargate eselecione Create (Criar).

(Opcional) Atualizar o CoreDNSPor padrão, o CoreDNS está configurado para ser executado na infraestrutura do Amazon EC2 nosclusters do Amazon EKS. Se quiser executar os pods somente no Fargate no cluster, será necessáriomodificar a implantação do CoreDNS para excluir a anotação eks.amazonaws.com/compute-type :ec2. Também é necessário criar um perfil do Fargate para definir os destinos dos pods do CoreDNS. Oarquivo JSON do perfil do Fargate a seguir faz isso.

Note

Se você criou o cluster com o eksctl usando a opção --fargate, já foram aplicados patchesao coredns para que ele seja executado no Fargate e você poderá avançar para Próximasetapas (p. 124).

{ "fargateProfileName": "coredns", "clusterName": "dev", "podExecutionRoleArn": "arn:aws:iam::111122223333:role/AmazonEKSFargatePodExecutionRole", "subnets": [ "subnet-0b64dd020cdff3864", "subnet-00b03756df55e2b87", "subnet-0418fcb68ed294abf" ], "selectors": [ { "namespace": "kube-system", "labels": { "k8s-app": "kube-dns" } } ]}

123

Page 132: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPerfil do Fargate

É possível aplicar esse perfil do Fargate ao cluster com o comando da AWS CLI a seguir. Primeiro, crie umarquivo chamado coredns.json e cole o arquivo JSON da etapa anterior nele, substituindo o texto davariável pelos valores do seu próprio cluster.

aws eks create-fargate-profile --cli-input-json file://coredns.json

Depois, use o comando kubectl a seguir para excluir a anotação eks.amazonaws.com/compute-type : ec2 dos pods do CoreDNS.

kubectl patch deployment coredns -n kube-system --type json \-p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'

Próximas etapas• É possível começar a migrar os aplicativos existentes para serem executados no Fargate com o fluxo de

trabalho a seguir.1. Crie um perfil do Fargate (p. 126) que relacione o namespace do Kubernetes do aplicativo aos

rótulos do Kubernetes.2. Exclua e recrie os pods existentes para que eles sejam programados no Fargate. Por exemplo, o

comando a seguir aciona uma implantação de coredns. É possível modificar o namespace e o tipode implantação para atualizar seus pods específicos.

kubectl rollout restart -n kube-system deployment coredns

• Implante o Controlador de entrada do ALB no Amazon EKS (p. 216) (versão v1.1.4 ou posterior) parapermitir objetos de entrada para os pods em execução no Fargate.

• É possível usar o Vertical Pod Autoscaler (p. 207) para dimensionar inicialmente a CPU e a memóriade forma correta para os pods do Fargate e, depois, usar o the section called “Horizontal PodAutoscaler” (p. 212) para dimensionar esses pods. Se você quiser que o Vertical Pod Autoscalerreimplante automaticamente os pods no Fargate com combinações maiores de CPU e memória, definao modo do Vertical Pod Autoscaler para Auto ou Recreate a fim de garantir a funcionalidade correta.Para obter mais informações, consulte a documentação do Vertical Pod Autoscaler no GitHub.

Perfil do AWS FargateAntes de agendar pods no Fargate no cluster, é necessário definir pelo menos um perfil do Fargate queespecifique quais pods devem usar o Fargate ao serem executados.

O perfil do Fargate permite que um administrador declare quais pods devem ser executados no Fargate.Essa declaração é feita por meio dos seletores de perfil. Cada perfil pode ter até cinco seletores quecontêm um namespace e rótulos opcionais. É necessário definir um namespace para cada seletor. Ocampo de rótulo consiste em vários pares de chave-valor opcionais. Os pods que correspondem a umseletor (relacionando um namespace para o seletor e todos os rótulos especificados no seletor) sãoprogramados no Fargate. Se um seletor de namespace for definido sem rótulos, o Amazon EKS tentaráprogramar todos os pods que são executados nesse namespace para o Fargate usando o perfil. Se umpod a ser programado corresponder a qualquer um dos seletores no perfil do Fargate, esse pod seráprogramado no Fargate.

Se um pod corresponder a vários perfis do Fargate, o Amazon EKS escolherá uma das correspondênciasaleatoriamente. Nesse caso, é possível especificar qual perfil um pod deve usar adicionando oseguinte rótulo do Kubernetes à especificação do pod: eks.amazonaws.com/fargate-profile:profile_name. No entanto, o pod ainda deve corresponder a um seletor nesse perfil para serprogramado no Fargate.

124

Page 133: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPerfil do Fargate

Ao criar um perfil do Fargate, é necessário especificar uma função de execução de pod para os pods quesão executados no Fargate usando o perfil. Essa função é adicionada ao Controle de acesso baseadoem função (RBAC) do Kubernetes do cluster para autorização a fim de que o kubelet que está sendoexecutado na infraestrutura do Fargate possa ser registrado no cluster do Amazon EKS e aparecer nocluster como um nó. A função de execução de pod também fornece permissões do IAM à infraestrutura doFargate para conceder acesso de leitura aos repositórios de imagens do Amazon ECR. Para obter maisinformações, consulte Função de execução de pod (p. 273).

Os perfis do Fargate são imutáveis. No entanto, é possível criar um perfil atualizado para substituir umperfil existente e excluir o original após a criação do perfil atualizado.

Note

Qualquer pod que esteja sendo executado usando um perfil do Fargate será interrompido ecolocado como pendente quando o perfil for excluído.

Se algum perfil do Fargate em um cluster estiver no status DELETING, será necessário aguardar até que operfil do Fargate termine de ser excluído antes de criar qualquer outro perfil nesse cluster.

Componentes do perfil do FargateOs componentes a seguir estão contidos em um perfil do Fargate.

{ "fargateProfileName": "", "clusterName": "", "podExecutionRoleArn": "", "subnets": [ "" ], "selectors": [ { "namespace": "", "labels": { "KeyName": "" } } ], "clientRequestToken": "", "tags": { "KeyName": "" }}

Função de execução de pod

Quando o cluster cria pods no AWS Fargate, o pod precisa fazer chamadas às APIs da AWS em seunome, por exemplo, para extrair imagens de contêiner do Amazon ECR. A função de execução de poddo Amazon EKS fornece as permissões do IAM para fazer isso.

Ao criar um perfil do Fargate, é necessário especificar uma função de execução de pod para serusada com os pods. Essa função é adicionada ao Controle de acesso baseado em função (RBAC)do Kubernetes do cluster para autorização a fim de que o kubelet que está sendo executado nainfraestrutura do Fargate possa ser registrado no cluster do Amazon EKS e aparecer no cluster comoum nó. Para obter mais informações, consulte Função de execução de pod (p. 273).

Sub-redes

Os IDs de sub-redes para executar pods que usam esse perfil. No momento, os pods em execução noFargate não recebem endereços IP públicos, portanto, somente sub-redes privadas (sem rota direta aum gateway da Internet) são aceitas para esse parâmetro.

125

Page 134: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPerfil do Fargate

Seletores

Os seletores a serem relacionados para que os pods usem esse perfil do Fargate. Cada seletordeve ter um namespace associado. Se preferir, você também poderá especificar rótulos para umnamespace. É possível especificar até cinco seletores em um perfil do Fargate. Um pod só precisacorresponder a um seletor para ser executado usando o perfil do Fargate.Namespace

É necessário especificar um namespace para um seletor. O seletor só corresponderá a podscriados nesse namespace, mas você poderá criar vários seletores para serem direcionados avários namespaces.

Rótulos

Se preferir, você poderá especificar rótulos do Kubernetes para corresponder ao seletor. O seletorsó corresponde pods que têm todos os rótulos especificados no seletor.

Criar um perfil do FargateEste tópico ajuda a criar um perfil do Fargate. O cluster deve oferecer suporte ao Fargate (a partir daversão 1.14 do Kubernetes e da versão da plataforma (p. 65) eks.5). Também é necessário ter criadouma função de execução de pod a ser usada para o perfil do Fargate. Para obter mais informações,consulte Função de execução de pod (p. 273). Os pods em execução no Fargate são compatíveissomente em sub-redes privadas (com acesso do gateway da NAT aos serviços da AWS, mas nãouma rota direta para um gateway de Internet), portanto, a VPC do cluster deve ter sub-redes privadasdisponíveis.

eksctl

Como criar um perfil do Fargate para um cluster com o eksctl

Este procedimento exige a versão eksctl 0.25.0 ou posterior. Você pode verificar a versão com oseguinte comando:

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ou atualizaro eksctl (p. 238).

• Crie o perfil do Fargate com o comando eksctl a seguir, substituindo o texto da variávelpor seus próprios valores. É necessário especificar um namespace, mas a opção de rótulos não éobrigatória.

eksctl create fargateprofile --cluster cluster_name --name fargate_profile_name --namespace kubernetes_namespace --labels key=value

Console de gerenciamento da AWS

Como criar um perfil do Fargate para um cluster com o Console de gerenciamento da AWS

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Escolha o cluster para o qual deve ser criado um perfil do Fargate.3. Em Fargate profiles (Perfis do Fargate), selecione Add Fargate profile (Adicionar perfil do

Fargate).

126

Page 135: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConfiguração do pod do Fargate

4. Na página Configure Fargate profile (Configurar perfil do Fargate), insira as informações a seguire selecione Next (Próximo).

a. Em Name (Nome), insira um nome exclusivo para o perfil do Fargate.b. Em Pod execution role (Função de execução de pod), escolha a função de execução de

pod que deve ser usada com o perfil do Fargate. Somente funções do IAM com o principalde serviço eks-fargate-pods.amazonaws.com são mostradas. Se nenhuma função forlistada aqui, será necessário criar uma. Para obter mais informações, consulte Função deexecução de pod (p. 273).

c. Em Subnets (Sub-redes), escolha as sub-redes que devem ser usadas para os pods.Por padrão, todas as sub-redes na VPC do cluster são selecionadas. Somente sub-redesprivadas são compatíveis com pods em execução no Fargate. É necessário desmarcar todasas sub-redes públicas.

d. Em Tags, é possível marcar o perfil do Fargate. Essas tags não são propagadas para outrosrecursos associados ao perfil, como seus pods.

5. Na página Configure pods selection (Configurar a seleção de pods), insira as informações aseguir e selecione Next (Próximo).

a. Em Namespace, insira um namespace para corresponder aos pods, como kube-system oudefault.

b. (Opcional) Adicione rótulos do Kubernetes ao seletor que os pods no namespaceespecificado devem ter para corresponder ao seletor. Por exemplo, você pode adicionaro rótulo infrastructure: fargate ao seletor para que somente pods no namespaceespecificado que também tenham o rótulo infrastructure: fargate do Kubernetescorrespondam ao seletor.

6. Na página Review and create (Revisar e criar), revise as informações do perfil do Fargate eselecione Create (Criar).

Excluir um perfil do FargateEste tópico ajuda a excluir um perfil do Fargate.

Quando você exclui um perfil do Fargate, qualquer pod que foi programado no Fargate com o perfil éexcluído. Se esses pods corresponderem a outro perfil do Fargate, eles serão programados no Fargatecom esse perfil. Se eles não corresponderem a mais nenhum outro perfil do Fargate, eles não serãoprogramados no Fargate e poderão permanecer como pendentes.

Somente um perfil do Fargate em um cluster pode estar no status DELETING por vez. É necessárioaguardar que um perfil do Fargate conclua a exclusão antes de excluir qualquer outro perfil nesse cluster.

Como excluir um perfil do Fargate de um cluster

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Escolha o cluster do qual deseja excluir o perfil do Fargate.3. Escolha o perfil do Fargate que deve ser excluído e selecione Delete (Excluir).4. Na página Delete cluster_name (Excluir nome_do_cluster), digite o nome do cluster e selecione

Confirm (Confirmar) para excluir.

Configuração do pod do FargateEsta seção descreve alguns dos detalhes exclusivos da configuração do pod para a execução de pods doKubernetes no AWS Fargate.

127

Page 136: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioConfiguração do pod do Fargate

CPU e memória do podO Kubernetes permite definir solicitações, uma quantidade mínima de vCPU e recursos de memória quesão alocados a cada contêiner em um pod. Os pods são programados pelo Kubernetes para garantirque pelo menos os recursos solicitados para cada pod estejam disponíveis no recurso de computação.Para obter mais informações, consulte Managing compute resources for containers na documentação doKubernetes.

Quando os pods são programados no Fargate, as reservas de vCPU e de memória dentro daespecificação do pod determinam a quantidade de CPU e de memória que devem ser provisionadas parao pod.

• A solicitação máxima de qualquer contêiner de inicialização é usada para determinar os requisitos devCPU e de memória da solicitação de inicialização.

• As solicitações para todos os contêineres de longa execução são adicionadas para determinar osrequisitos de vCPU e de memória da solicitação de longa duração.

• O maior dos dois valores acima é escolhido para que a solicitação de vCPU e de memória use para opod.

• O Fargate adiciona 256 MB a cada reserva de memória do pod para os componentes exigidos doKubernetes (kubelet, kube-proxy e containerd).

O Fargate arredonda a configuração de computação mostrada abaixo que mais se aproxima da soma dassolicitações de vCPU e de memória, a fim de garantir que os pods sempre tenham os recursos necessáriospara serem executados.

Se você não especificar uma combinação de vCPU e de memória, a menor combinação será usada (0,25de vCPU e 0,5 GB de memória).

A tabela a seguir mostra as combinações de vCPU e de memória que estão disponíveis para pods emexecução no Fargate.

Valor de vCPU Valor de memória

0,25 vCPU 0,5 GB, 1 GB, 2 GB

0,5 vCPU 1 GB, 2 GB, 3 GB, 4 GB

1 vCPU 2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB

2 vCPU Entre 4 GB e 16 GB em incrementos de 1 GB

4 vCPU Entre 8 GB e 30 GB em incrementos de 1 GB

Para obter informações sobre a definição de preço dessas configurações de computação, consulteDefinição de preço do AWS Fargate.

Armazenamento do FargateQuando provisionado, cada pod em execução no Fargate recebe 20 GB de armazenamento de camadade imagem de contêiner. O armazenamento de pods é efêmero. Depois que um pod é interrompido, oarmazenamento é excluído. Os novos pods lançados no Fargate em 28/5/2020, ou após essa data, têm acriptografia do volume de armazenamento temporário habilitada por padrão. O armazenamento temporáriode pod é criptografado com um algoritmo de criptografia AES-256 usando chaves gerenciadas pelo AWSFargate.

128

Page 137: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioMétricas de utilização

Note

O armazenamento utilizável para pods do Amazon EKS em execução no Fargate é inferior a20 GB porque algum espaço é usado pelo kubelet e outros módulos Kubernetes que sãocarregados dentro do pod.

Métricas de uso do AWS FargatePode usar CloudWatch métricas de utilização para fornecer visibilidade sobre a utilização de recursosdas suas contas. Use essas métricas para visualizar o uso do serviço atual nos gráficos e painéis doCloudWatch.

As métricas de uso do AWS Fargate correspondem às cotas de serviço da AWS. Também é possívelconfigurar alarmes que alertem você quando o uso se aproximar de uma cota de serviço. Para obter maisinformações sobre cotas de serviço do Fargate, consulte Cotas de serviço do Amazon EKS (p. 252).

O AWS Fargate publica as métricas a seguir no namespace AWS/Usage.

Métrica Description (Descrição)

ResourceCount O número total do recurso especificado em execução na sua conta.O recurso é definido pelas dimensões associadas à métrica.

As dimensões a seguir são usadas para refinar as métricas de uso publicadas pelo AWS Fargate.

Dimensão Description (Descrição)

Service O nome do serviço da AWS que contém o recurso. Para as métricasde uso do AWS Fargate, o valor dessa dimensão é Fargate.

Type O tipo de entidade que está sendo relatado. No momento, o únicovalor válido para métricas de uso do AWS Fargate é Resource.

Resource O tipo de recurso que está em execução.

Atualmente, AWS Fargate devolve informações sobre o seu FargateUtilização a pedido. O valor de recurso para Fargate A utilização apedido é OnDemand.

Note

Fargate A utilização de utilização customizada combinaAmazon EKS usando Fargate, Amazon ECS tarefasutilizando o Fargate tipo de lançamento e Amazon ECStarefas utilizando o FARGATE fornecedor de capacidades.

Class A classe do recurso que está sendo acompanhado. No momento, oAWS Fargate não usa a dimensão de classe.

Criar uma CloudWatch alarme para monitorizar Fargate métricasde utilização de recursosAWS Fargate fornece CloudWatch métricas de utilização que correspondem ao AWS quotas de serviçopara Fargate Utilização de recursos a pedido. No console do Cotas de serviço, é possível visualizar o uso

129

Page 138: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon EKS-amis otimizado

em um gráfico e configurar alarmes que o alertarão quando o uso se aproximar de uma cota de serviço.Para obter mais informações, consulte Métricas de uso do AWS Fargate (p. 129).

Utilize os passos seguintes para criar uma CloudWatch alarme com base no Fargate métricas de utilizaçãode recursos.

To create an alarm based on your Fargate usage quotas (Console de gerenciamento da AWS)

1. Abra o console do Cotas de serviço em https://console.aws.amazon.com/servicequotas/.2. In the navigation pane, choose AWS services.3. From the AWS services list, search for and select AWS Fargate.4. In the Service quotas list, select the Fargate usage quota you want to create an alarm for.5. In the Eventos do Amazon CloudWatch alarms section, choose Create.6. For Alarm threshold, choose the percentage of your applied quota value that you want to set as the

alarm value.7. For Alarm name, enter a name for the alarm and then choose Create.

Amazon EKS-amis otimizadoPode expandir nós com pré-construído Amazon EKS-otimizado Imagens da máquina Amazon (AMI)ou o seu próprio amis personalizado. Para mais informações sobre cada tipo de Amazon EKS-AMIotimizado, consulte um dos seguintes tópicos. Para mais informações sobre a criação do seu próprioAMI personalizado, consulte the section called “Scripts de compilação de AMI otimizada para AmazonEKS” (p. 136).

Tópicos• Amazon EKS-otimizado Amazon Linux 2 amis (p. 130)• Amazon EKS-Ubuntu amis otimizado (p. 143)• Amazon EKS-amis Windows otimizado (p. 143)

Amazon EKS-otimizado Amazon Linux 2 amisO Amazon EKS-o Linux AMI otimizado é construído sobre o Amazon Linux 2 e está configurado para servircomo imagem de base para Amazon EKS nós. A AMI é configurada para funcionar com o Amazon EKSimediatamente e inclui o Docker, o kubelet e o AWS IAM Authenticator.

Note

É possível rastrear os eventos de segurança e privacidade do Amazon Linux 2 no Centro desegurança do Amazon Linux ou assinar o feed RSS associado. Os eventos de segurança eprivacidade incluem uma visão geral do problema, quais pacotes são afetadas e como atualizarsuas instâncias para corrigir o problema.

Os IDs de AMI para a AMI otimizada para Amazon EKS (com ou sem the section called “Amazon EKS-otimizado acelerado Amazon Linux 2 EAH” (p. 141)) são exibidos na tabela a seguir. Você também poderecuperar os IDs com um parâmetro AWS Systems Manager usando ferramentas diferentes. Para obtermais informações, consulte A recuperar Amazon EKS-otimizado Amazon Linux 2 ID de ES (p. 142).

Note

• A AMI acelerada, otimizada para o Amazon EKS, é compatível apenas com tipos de instânciasbaseadas em GPU e Inferentia. Não se esqueça de especificar esses tipos de instância nomodelo de nó do AWS CloudFormation. Ao usar a AMI acelerada, otimizada para o AmazonEKS, você concorda com o Contrato de licença do usuário final (EULA) da NVIDIA.

130

Page 139: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

• Anteriormente a AMI acelerada, otimizada para Amazon EKS, era mencionada como a AMIotimizada para o Amazon EKS compatível com GPU.

• Versões anteriores da AMI acelerada, otimizada para o Amazon EKS, tinham o repositórionvidia-docker instalado. O repositório não está mais incluído na versão da AMI para AmazonEKS v20200529 e posteriores.

Kubernetes version 1.17.9

Região AMI do Amazon Linux 2otimizada para o Amazon EKS

Acelerado

Leste dos EUA (Ohio) (us-east-2)

Visualizar ID da AMI Visualizar ID da AMI

Leste dos EUA (Norte daVirgínia) (us-east-1)

Visualizar ID da AMI Visualizar ID da AMI

Oeste dos EUA (Oregon) (us-west-2)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Hong Kong) (ap-east-1)

Visualizar ID da AMI Visualizar ID da AMI

África (Cidade do Cabo) (af-south-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia Pacífico (Mumbai) (ap-south-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Tóquio) (ap-northeast-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Seul) (ap-northeast-2)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Cingapura) (ap-southeast-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Sydney) (ap-southeast-2)

Visualizar ID da AMI Visualizar ID da AMI

Canadá (Central) (ca-central-1)

Visualizar ID da AMI Visualizar ID da AMI

China (Pequim) (cn-north-1) Visualizar ID da AMI Visualizar ID da AMI

China (Ningxia) (cn-northwest-1)

Visualizar ID da AMI Visualizar ID da AMI

Europa (Frankfurt) (eu-central-1)

Visualizar ID da AMI Visualizar ID da AMI

Europa (Irlanda) (eu-west-1) Visualizar ID da AMI Visualizar ID da AMI

Europa (Londres) (eu-west-2) Visualizar ID da AMI Visualizar ID da AMI

Europa (Milão) (eu-south-1) Visualizar ID da AMI Visualizar ID da AMI

Europa (Paris) (eu-west-3) Visualizar ID da AMI Visualizar ID da AMI

131

Page 140: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

Região AMI do Amazon Linux 2otimizada para o Amazon EKS

Acelerado

Europa (Estocolmo) (eu-north-1)

Visualizar ID da AMI Visualizar ID da AMI

Oriente Médio (Bahrein) (me-south-1)

Visualizar ID da AMI Visualizar ID da AMI

América do Sul (São Paulo)(sa-east-1)

Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (Leste dosEUA) (us-gov-east-1)

Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (US-West)(us-gov-west-1)

Visualizar ID da AMI Visualizar ID da AMI

Kubernetes version 1.16.13

Região AMI do Amazon Linux 2otimizada para o Amazon EKS

Acelerado

Leste dos EUA (Ohio) (us-east-2)

Visualizar ID da AMI Visualizar ID da AMI

Leste dos EUA (Norte daVirgínia) (us-east-1)

Visualizar ID da AMI Visualizar ID da AMI

Oeste dos EUA (Oregon) (us-west-2)

Visualizar ID da AMI Visualizar ID da AMI

África (Cidade do Cabo) (af-south-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Hong Kong) (ap-east-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia Pacífico (Mumbai) (ap-south-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Tóquio) (ap-northeast-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Seul) (ap-northeast-2)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Cingapura) (ap-southeast-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Sydney) (ap-southeast-2)

Visualizar ID da AMI Visualizar ID da AMI

Canadá (Central) (ca-central-1)

Visualizar ID da AMI Visualizar ID da AMI

China (Pequim) (cn-north-1) Visualizar ID da AMI Visualizar ID da AMI

132

Page 141: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

Região AMI do Amazon Linux 2otimizada para o Amazon EKS

Acelerado

China (Ningxia) (cn-northwest-1)

Visualizar ID da AMI Visualizar ID da AMI

Europa (Frankfurt) (eu-central-1)

Visualizar ID da AMI Visualizar ID da AMI

Europa (Irlanda) (eu-west-1) Visualizar ID da AMI Visualizar ID da AMI

Europa (Londres) (eu-west-2) Visualizar ID da AMI Visualizar ID da AMI

Europa (Milão) (eu-south-1) Visualizar ID da AMI Visualizar ID da AMI

Europa (Paris) (eu-west-3) Visualizar ID da AMI Visualizar ID da AMI

Europa (Estocolmo) (eu-north-1)

Visualizar ID da AMI Visualizar ID da AMI

Oriente Médio (Bahrein) (me-south-1)

Visualizar ID da AMI Visualizar ID da AMI

América do Sul (São Paulo)(sa-east-1)

Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (Leste dosEUA) (us-gov-east-1)

Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (US-West)(us-gov-west-1)

Visualizar ID da AMI Visualizar ID da AMI

Kubernetes version 1.15.11

Região AMI do Amazon Linux 2otimizada para o Amazon EKS

Acelerado

Leste dos EUA (Ohio) (us-east-2)

Visualizar ID da AMI Visualizar ID da AMI

Leste dos EUA (Norte daVirgínia) (us-east-1)

Visualizar ID da AMI Visualizar ID da AMI

Oeste dos EUA (Oregon) (us-west-2)

Visualizar ID da AMI Visualizar ID da AMI

África (Cidade do Cabo) (af-south-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Hong Kong) (ap-east-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia Pacífico (Mumbai) (ap-south-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Tóquio) (ap-northeast-1)

Visualizar ID da AMI Visualizar ID da AMI

133

Page 142: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

Região AMI do Amazon Linux 2otimizada para o Amazon EKS

Acelerado

Ásia-Pacífico (Seul) (ap-northeast-2)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Cingapura) (ap-southeast-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Sydney) (ap-southeast-2)

Visualizar ID da AMI Visualizar ID da AMI

Canadá (Central) (ca-central-1)

Visualizar ID da AMI Visualizar ID da AMI

China (Pequim) (cn-north-1) Visualizar ID da AMI Visualizar ID da AMI

China (Ningxia) (cn-northwest-1)

Visualizar ID da AMI Visualizar ID da AMI

Europa (Frankfurt) (eu-central-1)

Visualizar ID da AMI Visualizar ID da AMI

Europa (Irlanda) (eu-west-1) Visualizar ID da AMI Visualizar ID da AMI

Europa (Londres) (eu-west-2) Visualizar ID da AMI Visualizar ID da AMI

Europa (Milão) (eu-south-1) Visualizar ID da AMI Visualizar ID da AMI

Europa (Paris) (eu-west-3) Visualizar ID da AMI Visualizar ID da AMI

Europa (Estocolmo) (eu-north-1)

Visualizar ID da AMI Visualizar ID da AMI

Oriente Médio (Bahrein) (me-south-1)

Visualizar ID da AMI Visualizar ID da AMI

América do Sul (São Paulo)(sa-east-1)

Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (Leste dosEUA) (us-gov-east-1)

Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (US-West)(us-gov-west-1)

Visualizar ID da AMI Visualizar ID da AMI

Kubernetes version 1.14.9

Região AMI do Amazon Linux 2otimizada para o Amazon EKS

Acelerado

Leste dos EUA (Ohio) (us-east-2)

Visualizar ID da AMI Visualizar ID da AMI

Leste dos EUA (Norte daVirgínia) (us-east-1)

Visualizar ID da AMI Visualizar ID da AMI

Oeste dos EUA (Oregon) (us-west-2)

Visualizar ID da AMI Visualizar ID da AMI

134

Page 143: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

Região AMI do Amazon Linux 2otimizada para o Amazon EKS

Acelerado

África (Cidade do Cabo) (af-south-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Hong Kong) (ap-east-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia Pacífico (Mumbai) (ap-south-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Tóquio) (ap-northeast-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Seul) (ap-northeast-2)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Cingapura) (ap-southeast-1)

Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Sydney) (ap-southeast-2)

Visualizar ID da AMI Visualizar ID da AMI

Canadá (Central) (ca-central-1)

Visualizar ID da AMI Visualizar ID da AMI

China (Pequim) (cn-north-1) Visualizar ID da AMI Visualizar ID da AMI

China (Ningxia) (cn-northwest-1)

Visualizar ID da AMI Visualizar ID da AMI

Europa (Frankfurt) (eu-central-1)

Visualizar ID da AMI Visualizar ID da AMI

Europa (Irlanda) (eu-west-1) Visualizar ID da AMI Visualizar ID da AMI

Europa (Londres) (eu-west-2) Visualizar ID da AMI Visualizar ID da AMI

Europa (Milão) (eu-south-1) Visualizar ID da AMI Visualizar ID da AMI

Europa (Paris) (eu-west-3) Visualizar ID da AMI Visualizar ID da AMI

Europa (Estocolmo) (eu-north-1)

Visualizar ID da AMI Visualizar ID da AMI

Oriente Médio (Bahrein) (me-south-1)

Visualizar ID da AMI Visualizar ID da AMI

América do Sul (São Paulo)(sa-east-1)

Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (Leste dosEUA) (us-gov-east-1)

Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (US-West)(us-gov-west-1)

Visualizar ID da AMI Visualizar ID da AMI

135

Page 144: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

Important

Essas AMIs exigem o modelo de nó de AWS CloudFormation mais recente. Não é possível usaressas AMIs com uma versão anterior do modelo de nó. Elas deixarão de ingressar no cluster. Nãose esqueça de atualizar todas as pilhas de nó do AWS CloudFormation existentes com o modelomais recente (URL mostrado abaixo) antes de tentar usar essas AMIs.

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-nodegroup.yaml

O AWS CloudFormation modelo de nó lança os seus nós com Amazon EC2 dados do utilizadorque acionam um especialista script bootstrap. Este script permite aos seus nós descobrir e ligar-seautomaticamente ao plano de controlo do seu grupo. Para obter mais informações, consulte Iniciar auto-gestão Amazon Linux 2 nós (p. 101).

Scripts de compilação de AMI otimizada para Amazon EKSO Amazon Elastic Kubernetes Service (Amazon EKS) usa scripts de compilação de código aberto paracriar a AMI otimizada para o Amazon EKS. Esses scripts de compilação agora estão disponíveis noGitHub.

O Amazon EKS-o AMI otimizado é construído sobre o Amazon Linux 2, especificamente para utilizaçãocomo nó em Amazon EKS grupos. Você pode usar esse repositório para visualizar os detalhes de como aequipe do Amazon EKS configura o kubelet, o Docker, o AWS IAM Authenticator para Kubernetes e muitomais.

O repositório de scripts de compilação inclui um modelo do HashiCorp packer e scripts de compilação paragerar uma AMI. Esses scripts são a fonte de verdade para compilações de AMI otimizadas para AmazonEKS. Por isso, você pode acompanhar o repositório GitHub para monitorar alterações em nossas AMIs.Por exemplo, talvez você queira que sua AMI use a mesma versão do Docker que a equipe do EKS usapara a AMI oficial.

O repositório GitHub também contém o script de bootstrap especializado que é executado no momento dainicialização para configurar os dados de certificado da instância, o endpoint de plano de controle, o nomedo cluster e muito mais.

Além disso, o repositório de github contém o nosso Amazon EKS nó AWS CloudFormation modelos.Com esses modelos, fica mais fácil ativar uma instância executando a AMI otimizada do Amazon EKS eregistrá-la em um cluster.

Para obter mais informações, consulte os repositórios no GitHub em https://github.com/awslabs/amazon-eks-ami.

Amazon EKS-otimizado acelerado Amazon Linux 2 amisO Amazon EKS-o AMI acelerado otimizado é construído em cima da norma Amazon EKS-Linux AMIotimizado e está configurado para servir como uma imagem opcional para Amazon EKS para apoiar aGPU e Inferencia com volumes de trabalho.

Além da configuração padrão da AMI otimizada para Amazon EKS, a AMI acelerada inclui o seguinte:

• Drivers NVIDIA• nvidia-container-runtime (como tempo de execução padrão)• Tempo de execução do contêiner do AWS Neuron

Os IDs da AMI referentes à última AMI acelerada otimizada para o Amazon EKS são mostrados natabela a seguir. Você também pode recuperar os IDs com um parâmetro AWS Systems Manager usando

136

Page 145: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

ferramentas diferentes. Para obter mais informações, consulte A recuperar Amazon EKS-otimizadoAmazon Linux 2 ID de ES (p. 142).

Note

• A AMI acelerada, otimizada para o Amazon EKS, é compatível apenas com tipos de instânciasbaseadas em GPU e Inferentia. Não se esqueça de especificar esses tipos de instância nomodelo de nó do AWS CloudFormation. Ao usar a AMI acelerada, otimizada para o AmazonEKS, você concorda com o Contrato de licença do usuário final (EULA) da NVIDIA.

• Anteriormente a AMI acelerada, otimizada para Amazon EKS, era mencionada como a AMIotimizada para o Amazon EKS compatível com GPU.

• Versões anteriores da AMI acelerada, otimizada para o Amazon EKS, tinham o repositórionvidia-docker instalado. O repositório não está mais incluído na versão da AMI para AmazonEKS v20200529 e posteriores.

Região AMI otimizada para o Amazon EKS com suporte àGPU

Oeste dos EUA (Oregon) (us-west-2)

Leste dos EUA (Norte da Virgínia) (us-east-1)

Leste dos EUA (Ohio) (us-east-2)

UE (Irlanda) (eu-west-1)

Important

Essas AMIs exigem o modelo de nó de AWS CloudFormation mais recente. Não é possível usaressas AMIs com uma versão anterior do modelo de nó. Elas deixarão de ingressar no cluster. Nãose esqueça de atualizar todas as pilhas de nó do AWS CloudFormation existentes com o modelomais recente (URL mostrado abaixo) antes de tentar usar essas AMIs.

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-nodegroup.yaml

O AWS CloudFormation modelo de nó lança os seus nós com Amazon EC2 dados do utilizadorque acionam um especialista script bootstrap. Este script permite aos seus nós descobrir e ligar-seautomaticamente ao plano de controlo do seu grupo. Para obter mais informações, consulte Iniciar auto-gestão Amazon Linux 2 nós (p. 101).

Habilitar cargas de trabalho baseadas em GPU

A seção a seguir descreve como executar uma carga de trabalho em uma instância baseada em GPU coma AMI acelerada otimizada para o Amazon EKS. Para obter mais informações sobre como usar cargas detrabalho baseadas em Inferentia, consulte ??? (p. 80).

Depois dos seus nós GPU chegarem ao seu grupo, tem de aplicar o Plug-in do dispositivo NVIDIA paraKubernetes como um conjunto de diapositivos no seu grupo com o seguinte comando.

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.6.0/nvidia-device-plugin.yml

Você pode verificar se os nós têm GPUs alocáveis com o seguinte comando:

137

Page 146: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"

Manifesto de GPU de exemplo

Esta secção fornece um exemplo de manifesto para testar que os seus nós GPU estão configuradoscorretamente.

Example Obter a saída nvidia-smi

Este exemplo de manifesto de caixa lança um contentor Cuda que funciona nvidia-smi num nó. Crie umarquivo chamado nvidia-smi.yaml, copie e cole o seguinte manifesto nele e salve-o.

apiVersion: v1kind: Podmetadata: name: nvidia-smispec: restartPolicy: OnFailure containers: - name: nvidia-smi image: nvidia/cuda:9.2-devel args: - "nvidia-smi" resources: limits: nvidia.com/gpu: 1

Aplique o manifesto com o seguinte comando:

kubectl apply -f nvidia-smi.yaml

Após o pod concluir a execução, visualize os logs com o seguinte comando:

kubectl logs nvidia-smi

Resultado

Mon Aug 6 20:23:31 2018+-----------------------------------------------------------------------------+| NVIDIA-SMI 396.26 Driver Version: 396.26 ||-------------------------------+----------------------+----------------------+| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. ||===============================+======================+======================|| 0 Tesla V100-SXM2... On | 00000000:00:1C.0 Off | 0 || N/A 46C P0 47W / 300W | 0MiB / 16160MiB | 0% Default |+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+| Processes: GPU Memory || GPU PID Type Process name Usage ||=============================================================================|| No running processes found |+-----------------------------------------------------------------------------+

138

Page 147: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

Amazon EKS-otimizado Amazon Linux 2 Versões do EAHEste tópico lista as versões das AMIs otimizadas para o Amazon EKS no Linux e as versõescorrespondentes do kubelet,Docker, do kernel do Linux e a configuração do script de compilação doPacker (p. 136).

Os metadados da AMI otimizada para o Amazon EKS, incluindo o código AMI, podem ser recuperados demaneira programática em cada variante. Para obter mais informações, consulte A recuperar Amazon EKS-otimizado Amazon Linux 2 ID de ES (p. 142).

As versões das AMIs são definidas pela versão do Kubernetes e pela data de lançamento da AMI, noseguinte formato:

k8s_major_version.k8s_minor_version.k8s_patch_version-release_date

Amazon EKS-otimizado Amazon Linux 2 EAH

A tabela abaixo lista as versões atuais e anteriores do Amazon EKS otimizado Amazon Linux 2 EAH.

Kubernetes version 1.17

AMI version Versão dokubelet

Versão do Docker Versão do kernel Versão do Packer

1.17.9-20200723 1,17,9 19.03.6-ce 4.14.181 v20200723

1.17.7-20200710 1.17.7 19.03.6-ce 4.14.181 v20200710

1.17.7-20200709 1.17.7 19.03.6-ce 4.14.181 v20200709

Kubernetes version 1.16

AMI version Versão dokubelet

Versão do Docker Versão do kernel Versão do Packer

1.16.13-20200723 1,16,13 19.03.6-ce 4.14.181 v20200723

1.16.12-20200710 1,16,12 19.03.6-ce 4.14.181 v20200710

1.16.12-20200709 1,16,12 19.03.6-ce 4.14.181 v20200709

1.16.8-20200615 1.16.8 19.03.6-ce 4.14.181 v20200615

1.16.8-20200609 1.16.8 19.03.6-ce 4.14.181 v20200609

1.16.8-20200531 1.16.8 18.09.9-ce 4.14.177 v20200531

1.16.8-20200507 1.16.8 18.09.9-ce 4.14.177 v20200507

1.16.8-20200423 1.16.8 18.09.9-ce 4.14.173 v20200423

139

Page 148: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

Kubernetes version 1.15

AMI version Versão dokubelet

Versão do Docker Versão do kernel Versão do Packer

1.15.11-20200723 1.15.11 19.03.6-ce 4.14.181 v20200723

1.15.11-20200710 1.15.11 19.03.6-ce 4.14.181 v20200710

1.15.11-20200709 1.15.11 19.03.6-ce 4.14.181 v20200709

1.15.11-20200615 1.15.11 19.03.6-ce 4.14.181 v20200615

1.15.11-20200609 1.15.11 19.03.6-ce 4.14.181 v20200609

1.15.11-20200531 1.15.11 18.09.9-ce 4.14.177 v20200531

1.15.11-20200507 1.15.11 18.09.9-ce 4.14.177 v20200507

1.15.11-20200423 1.15.11 18.09.9-ce 4.14.173 v20200423

1.15.10-20200406 1.15.10 18.09.9-ce 4.14.173 v20200406

1.15.10-20200228 1.15.10 18.09.9-ce 4.14.165 v20200228

Kubernetes version 1.14

AMI version Versão dokubelet

Versão do Docker Versão do kernel Versão do Packer

1.14.9-20200723 1.14.9 19.03.6-ce 4.14.181 v20200723

1.14.9-20200710 1.14.9 19.03.6-ce 4.14.181 v20200710

1.14.9-20200709 1.14.9 19.03.6-ce 4.14.181 v20200709

1.14.9-20200615 1.14.9 19.03.6-ce 4.14.181 v20200615

1.14.9-20200609 1.14.9 19.03.6-ce 4.14.181 v20200609

1.14.9-20200531 1.14.9 18.09.9-ce 4.14.177 v20200531

1.14.9-20200507 1.14.9 18.09.9-ce 4.14.177 v20200507

1.14.9-20200423 1.14.9 18.09.9-ce 4.14.173 v20200423

1.14.9-20200406 1.14.9 18.09.9-ce 4.14.173 v20200406

1.14.9-20200406 1.14.9 18.09.9-ce 4.14.173 v20200406

1.14.9-20200228 1.14.9 18.09.9-ce 4.14.165 v20200228

1.14.9-20200122 1.14.9 18.09.9-ce 4.14.158 v20200122

1.14.8-20191213 1.14.8 18.09.9-ce 4.14.154 v20191213

1.14.7-20191119 1.14.7 18.09.9-ce 4.14.152 v20191119

1.14.7-20190927 1.14.7 18.06.1-ce 4.14.146 v20190927

140

Page 149: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

Amazon EKS-otimizado acelerado Amazon Linux 2 EAHA tabela abaixo lista as versões atuais e anteriores do ZKS otimizado para a Amazon Amazon Linux 2EAH.

Kubernetes version 1.17

AMI version Versão dokubelet

Versão doDocker

Versão dokernel

Versão doPacker

Versão dodriver Nvidia

1.17.9-202007231,17,9 19.03.6-ce 4.14.181 v20200723 418.87.00

1.17.7-202007101.17.7 19.03.6-ce 4.14.181 v20200710 418.87.00

1.17.7-202007091.17.7 19.03.6-ce 4.14.181 v20200709 418.87.00

Kubernetes version 1.16

AMI version Versão dokubelet

Versão doDocker

Versão dokernel

Versão doPacker

Versão dodriver Nvidia

1.16.13-202007231,16,13 19.03.6-ce 4.14.181 v20200723 418.87.00

1.16.12-202007101,16,12 19.03.6-ce 4.14.181 v20200710 418.87.00

1.16.12-202007091,16,12 19.03.6-ce 4.14.181 v20200709 418.87.00

1.16.8-202006151.16.8 19.03.6-ce 4.14.181 v20200615 418.87.00

1.16.8-202006091.16.8 19.03.6-ce 4.14.181 v20200609 418.87.00

1.16.8-202005311.16.8 18.09.9-ce 4.14.177 v20200531 418.87.00

1.16.8-202005071.16.8 18.09.9-ce 4.14.177 v20200507 418.87.00

1.16.8-202004231.16.8 18.09.9-ce 4.14.173 v20200423 418.87.00

Kubernetes version 1.15

AMI version Versão dokubelet

Versão doDocker

Versão dokernel

Versão doPacker

Versão dodriver Nvidia

1.15.11-202007231.15.11 19.03.6-ce 4.14.181 v20200723 418.87.00

1.15.11-202007101.15.11 19.03.6-ce 4.14.181 v20200710 418.87.00

1.15.11-202007091.15.11 19.03.6-ce 4.14.181 v20200709 418.87.00

1.15.11-202006151.15.11 19.03.6-ce 4.14.181 v20200615 418.87.00

1.15.11-202006091.15.11 19.03.6-ce 4.14.181 v20200609 418.87.00

1.15.11-202005311.15.11 18.09.9-ce 4.14.177 v20200531 418.87.00

1.15.11-202005071.15.11 18.09.9-ce 4.14.177 v20200507 418.87.00

1.15.11-202004231.15.11 18.09.9-ce 4.14.173 v20200423 418.87.00

141

Page 150: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon Linux 2

AMI version Versão dokubelet

Versão doDocker

Versão dokernel

Versão doPacker

Versão dodriver Nvidia

1.15.10-202004061.15.10 18.09.9-ce 4.14.173 v20200406 418.87.00

1.15.10-202002281.15.10 18.09.9-ce 4.14.165 v20200228 418.87.00

Kubernetes version 1.14

AMI version Versão dokubelet

Versão doDocker

Versão dokernel

Versão doPacker

Versão dodriver Nvidia

1.14.9-202007231.14.9 19.03.6-ce 4.14.181 v20200723 418.87.00

1.14.9-202007101.14.9 19.03.6-ce 4.14.181 v20200710 418.87.00

1.14.9-202007091.14.9 19.03.6-ce 4.14.181 v20200709 418.87.00

1.14.9-202006151.14.9 19.03.6-ce 4.14.181 v20200615 418.87.00

1.14.9-202006091.14.9 19.03.6-ce 4.14.181 v20200609 418.87.00

1.14.9-202005311.14.9 18.09.9-ce 4.14.177 v20200531 418.87.00

1.14.9-202005071.14.9 18.09.9-ce 4.14.177 v20200507 418.87.00

1.14.9-202004231.14.9 18.09.9-ce 4.14.173 v20200423 418.87.00

1.14.9-202004061.14.9 18.09.9-ce 4.14.173 v20200406 418.87.00

1.14.9-202002281.14.9 18.09.9-ce 4.14.165 v20200228 418.87.00

1.14.9-202001221.14.9 18.09.9-ce 4.14.158 v20200122 418.87.00

1.14.8-201912131.14.8 18.09.9-ce 4.14.154 v20191213 418.87.00

1.14.7-201911191.14.7 18.09.9-ce 4.14.152 v20191119 418.87.00

1.14.7-201909271.14.7 18.06.1-ce 4.14.146 v20190927 418.87.00

A recuperar Amazon EKS-otimizado Amazon Linux 2 ID de ESVocê pode recuperar programaticamente o ID da imagem de máquina da Amazon (AMI) para AMIsotimizadas para o Amazon EKS consultando a API Repositório de parâmetros do AWS Systems Manager.Esse parâmetro elimina a necessidade de pesquisar manualmente IDs de AMIs otimizadas para o AmazonEKS. Para obter mais informações sobre a API Repositório de parâmetros do Systems Manager, consulteGetParameter. Sua conta de usuário deve ter a permissão ssm:GetParameter do IAM para recuperar osmetadados da AMI otimizada para o Amazon EKS.

Selecione o nome da ferramenta com a qual você deseja recuperar o ID da AMI.

AWS CLI

Pode recuperar a ID de imagem dos últimos recomendados Amazon EKS-Amazon Linux AMIotimizado com o seguinte comando utilizando o sub-parâmetro image_id. Substituir 1.17 comum versão suportada (p. 65) e region-code com um Amazon EKS-Região suportada para o qualpretende a ID do AMI. Substituir amazon-linux-2 com amazon-linux-2-gpu para ver a ID do AMIacelerada.

142

Page 151: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioUbuntu .

aws ssm get-parameter --name /aws/service/eks/optimized-ami/1.17/amazon-linux-2/recommended/image_id --region region-code --query "Parameter.Value" --output text

Saída de exemplo.

ami-abcd1234efgh5678i

Console de gerenciamento da AWS

Você pode consultar o ID da AMI otimizada para o Amazon EKS recomendado usando um URL. OURL abre o console do Amazon EC2 Systems Manager com o valor do ID do parâmetro. No URLseguinte, substituir 1.17 com um versão suportada (p. 65) e region-code com um Amazon EKS-Região suportada para o qual pretende a ID do AMI. Substituir amazon-linux-2 com amazon-linux-2-gpu para ver a ID do AMI acelerada.

https://console.aws.amazon.com/systems-manager/parameters/%252Faws%252Fservice%252Feks%252Foptimized-ami%252F1.17%252Famazon-linux-2%252Frecommended%252Fimage_id/description?region=region-code

Amazon EKS-Ubuntu amis otimizadoCanonical estabeleceu parcerias com Amazon EKS para criar amis de nó que pode utilizar nos seusgrupos.

A Canonical fornece uma imagem de sistema operacional de nó do Kubernetes para fins específicos. Aimagem minimizada do Ubuntu é otimizada para o Amazon EKS e inclui o kernel da AWS personalizadoque é desenvolvido em conjunto com a AWS. Para obter mais informações, consulte Ubuntu e AmazonElastic Kubernetes Service e Suporte otimizado para Amazon EKS no Ubuntu 18.04.

Amazon EKS-amis Windows otimizadoO Amazon EKS-o AMI otimizado é construído sobre o Windows Server 2019 e está configurado para servircomo imagem de base para Amazon EKS nós. A AMI é configurada para funcionar com o Amazon EKSimediatamente e inclui o Docker, o kubelet e o AWS IAM Authenticator.

Note

É possível rastrear eventos de segurança ou privacidade do Windows Server com o Guia deatualização de segurança da Microsoft.

Os IDs de AMI referentes à última AMI otimizada para Amazon EKS são mostrados na tabela a seguir.O Windows Server 2019 é uma versão do canal de manutenção de longo prazo (LTSC) e o WindowsServer, versão 1909, é uma versão do canal semestral (SAC). Para mais informações, consulte Canaisde assistência do Windows Server: LTSC e SAC na documentação da Microsoft. Você também poderecuperar os IDs com um parâmetro AWS Systems Manager usando ferramentas diferentes. Para obtermais informações, consulte Recuperar IDs de AMI do Windows otimizada para o Amazon EKS (p. 149).

Kubernetes version 1.17.9

Região Windows Server 2019Full otimizado paraAmazon EKS

Windows Server 2019Core otimizado paraAmazon EKS

Windows Server 1909Core otimizado paraAmazon EKS

Leste dos EUA (Ohio)(us-east-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

143

Page 152: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Windows)

Região Windows Server 2019Full otimizado paraAmazon EKS

Windows Server 2019Core otimizado paraAmazon EKS

Windows Server 1909Core otimizado paraAmazon EKS

Leste dos EUA (Norteda Virgínia) (us-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Oeste dos EUA(Oregon) (us-west-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

África (Cidade doCabo) (af-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (HongKong) (ap-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia Pacífico (Mumbai)(ap-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Tóquio)(ap-northeast-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Seul)(ap-northeast-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico(Cingapura) (ap-southeast-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Sydney)(ap-southeast-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Canadá (Central) (ca-central-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

China (Pequim) (cn-north-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

China (Ningxia) (cn-northwest-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Frankfurt)(eu-central-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Irlanda) (eu-west-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Londres) (eu-west-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Milão) (eu-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Paris) (eu-west-3)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Estocolmo)(eu-north-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

144

Page 153: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Windows)

Região Windows Server 2019Full otimizado paraAmazon EKS

Windows Server 2019Core otimizado paraAmazon EKS

Windows Server 1909Core otimizado paraAmazon EKS

Oriente Médio(Bahrein) (me-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

América do Sul (SãoPaulo) (sa-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (Lestedos EUA) (us-gov-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (US-West) (us-gov-west-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Kubernetes version 1.16.13

Região Windows Server 2019Full otimizado paraAmazon EKS

Windows Server 2019Core otimizado paraAmazon EKS

Windows Server 1909Core otimizado paraAmazon EKS

Leste dos EUA (Ohio)(us-east-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Leste dos EUA (Norteda Virgínia) (us-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Oeste dos EUA(Oregon) (us-west-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

África (Cidade doCabo) (af-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (HongKong) (ap-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia Pacífico (Mumbai)(ap-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Tóquio)(ap-northeast-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Seul)(ap-northeast-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico(Cingapura) (ap-southeast-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Sydney)(ap-southeast-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

145

Page 154: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Windows)

Região Windows Server 2019Full otimizado paraAmazon EKS

Windows Server 2019Core otimizado paraAmazon EKS

Windows Server 1909Core otimizado paraAmazon EKS

Canadá (Central) (ca-central-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

China (Pequim) (cn-north-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

China (Ningxia) (cn-northwest-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Frankfurt)(eu-central-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Irlanda) (eu-west-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Londres) (eu-west-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Milão) (eu-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Paris) (eu-west-3)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Estocolmo)(eu-north-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Oriente Médio(Bahrein) (me-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

América do Sul (SãoPaulo) (sa-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (Lestedos EUA) (us-gov-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (US-West) (us-gov-west-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Kubernetes version 1.15.11

Região Windows Server 2019Full otimizado paraAmazon EKS

Windows Server 2019Core otimizado paraAmazon EKS

Windows Server 1909Core otimizado paraAmazon EKS

Leste dos EUA (Ohio)(us-east-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Leste dos EUA (Norteda Virgínia) (us-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

146

Page 155: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Windows)

Região Windows Server 2019Full otimizado paraAmazon EKS

Windows Server 2019Core otimizado paraAmazon EKS

Windows Server 1909Core otimizado paraAmazon EKS

Oeste dos EUA(Oregon) (us-west-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

África (Cidade doCabo) (af-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (HongKong) (ap-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia Pacífico (Mumbai)(ap-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Tóquio)(ap-northeast-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Seul)(ap-northeast-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico(Cingapura) (ap-southeast-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Sydney)(ap-southeast-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Canadá (Central) (ca-central-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

China (Pequim) (cn-north-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

China (Ningxia) (cn-northwest-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Frankfurt)(eu-central-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Irlanda) (eu-west-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Londres) (eu-west-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Milão) (eu-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Paris) (eu-west-3)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Estocolmo)(eu-north-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Oriente Médio(Bahrein) (me-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

147

Page 156: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Windows)

Região Windows Server 2019Full otimizado paraAmazon EKS

Windows Server 2019Core otimizado paraAmazon EKS

Windows Server 1909Core otimizado paraAmazon EKS

América do Sul (SãoPaulo) (sa-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (Lestedos EUA) (us-gov-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (US-West) (us-gov-west-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Kubernetes version 1.14.9

Região Windows Server 2019Full otimizado paraAmazon EKS

Windows Server 2019Core otimizado paraAmazon EKS

Windows Server 1909Core otimizado paraAmazon EKS

Leste dos EUA (Ohio)(us-east-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Leste dos EUA (Norteda Virgínia) (us-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Oeste dos EUA(Oregon) (us-west-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

África (Cidade doCabo) (af-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (HongKong) (ap-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia Pacífico (Mumbai)(ap-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Tóquio)(ap-northeast-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Seul)(ap-northeast-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico(Cingapura) (ap-southeast-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Ásia-Pacífico (Sydney)(ap-southeast-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Canadá (Central) (ca-central-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

China (Pequim) (cn-north-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

148

Page 157: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Windows)

Região Windows Server 2019Full otimizado paraAmazon EKS

Windows Server 2019Core otimizado paraAmazon EKS

Windows Server 1909Core otimizado paraAmazon EKS

China (Ningxia) (cn-northwest-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Frankfurt)(eu-central-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Irlanda) (eu-west-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Londres) (eu-west-2)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Milão) (eu-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Paris) (eu-west-3)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Europa (Estocolmo)(eu-north-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Oriente Médio(Bahrein) (me-south-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

América do Sul (SãoPaulo) (sa-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (Lestedos EUA) (us-gov-east-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

AWS GovCloud (US-West) (us-gov-west-1)

Visualizar ID da AMI Visualizar ID da AMI Visualizar ID da AMI

Recuperar IDs de AMI do Windows otimizada para o AmazonEKSVocê pode recuperar programaticamente o ID da imagem de máquina da Amazon (AMI) para AMIsotimizadas para o Amazon EKS consultando a API Repositório de parâmetros do AWS Systems Manager.Esse parâmetro elimina a necessidade de pesquisar manualmente IDs de AMIs otimizadas para o AmazonEKS. Para obter mais informações sobre a API Repositório de parâmetros do Systems Manager, consulteGetParameter. Sua conta de usuário deve ter a permissão ssm:GetParameter do IAM para recuperar osmetadados da AMI otimizada para o Amazon EKS.

Selecione o nome da ferramenta com a qual você deseja recuperar o ID da AMI.

AWS CLI

Pode recuperar a ID de imagem dos últimos recomendados Amazon EKS-o Windows AMI otimizadocom o seguinte comando utilizando o sub-parâmetro image_id. Pode substituir 1.17 com qualquersuporte Amazon EKS versão e pode substituir region-code com um Amazon EKS-Região suportada

149

Page 158: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário(Windows)

para o qual pretende a ID do AMI. Substituir Core com Full para ver a ID de AMI completa doWindows Server. Também pode substituir 2019 com 1909 para o Core apenas versão.

aws ssm get-parameter --name /aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-1.17/image_id --region region-code --query "Parameter.Value" --output text

Saída de exemplo.

ami-ami-00a053f1635fffea0

Console de gerenciamento da AWS

Você pode consultar o ID da AMI otimizada para o Amazon EKS recomendado usando um URL. OURL abre o console do Amazon EC2 Systems Manager com o valor do ID do parâmetro. No URLseguinte, pode substituir 1.17 com qualquer suporte Amazon EKS versão e pode substituir region-code com um Amazon EKS-Região suportada para o qual pretende a ID do AMI. Substituir Core comFull para ver a ID de AMI completa do Windows Server. Também pode substituir 2019 com 1909para o Core apenas versão.

https://console.aws.amazon.com/systems-manager/parameters/%252Faws%252Fservice%252Fami-windows-latest%252FWindows_Server-2019-English-Core-EKS_Optimized-1.17%252Fimage_id/description?region=region-code

150

Page 159: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioClasses de armazenamento

ArmazenamentoEste capítulo aborda as opções de armazenamento para clusters do Amazon EKS.

O tópico Classes de armazenamento (p. 151) usa o provisionador de armazenamento do Amazon EBSna árvore. O Driver da CSI do Amazon EBS (p. 152) está disponível para gerenciar o armazenamentoem clusters do Kubernetes 1.14 e posterior.

Note

O plug-in do Amazon EBS na árvore existente ainda é compatível, mas usando um driver de CSI,você se beneficia do desacoplamento do ciclo de lançamento upstream do Kubernetes e do ciclode lançamento do driver de CSI. Eventualmente, o plug-in na árvore será reprovado em favor dodriver de CSI.

Tópicos• Classes de armazenamento (p. 151)• Driver da CSI do Amazon EBS (p. 152)• Driver da CSI do Amazon EFS (p. 156)• Driver da CSI do Amazon FSx for Lustre (p. 160)

Classes de armazenamentoOs clusters do Amazon EKS criados antes da versão 1.11 do Kubernetes não foram criados com nenhumaclasse de armazenamento. Você deve definir classes de armazenamento para o cluster usar e devedefinir uma classe de armazenamento padrão para reclamações de volume persistente. Para obter maisinformações, consulte Storage classes na documentação do Kubernetes.

Note

Este tópico usa o provisionador de armazenamento do Amazon EBS na árvore. Para clustersdo Kubernetes 1.14 e posterior, o Driver da CSI do Amazon EBS (p. 152) está disponívelpara gerenciamento de armazenamento. O plug-in do Amazon EBS na árvore existente aindaé compatível, mas usando um driver de CSI, você se beneficia do desacoplamento do ciclo delançamento upstream do Kubernetes e do ciclo de lançamento do driver de CSI. Eventualmente, oplug-in na árvore será reprovado em favor do driver de CSI.

Para criar uma classe de armazenamento da AWS para o cluster do Amazon EKS

1. Crie um arquivo de manifesto de classe de armazenamento da AWS para a classe dearmazenamento. O exemplo gp2-storage-class.yaml a seguir define uma classe dearmazenamento chamada gp2 que usa o tipo de volume Amazon EBS do gp2.

Para obter mais informações sobre as opções disponíveis para as classes de armazenamento daAWS, consulte AWS EBS na documentação do Kubernetes.

kind: StorageClassapiVersion: storage.k8s.io/v1

151

Page 160: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon EBS

metadata: name: gp2 annotations: storageclass.kubernetes.io/is-default-class: "true"provisioner: kubernetes.io/aws-ebsparameters: type: gp2 fsType: ext4

2. Use kubectl para criar a classe de armazenamento do arquivo manifesto.

kubectl create -f gp2-storage-class.yaml

Resultado:

storageclass "gp2" created

Para definir uma classe de armazenamento padrão

1. Liste as classes de armazenamento existentes para o cluster. Uma classe de armazenamento deveestar definida para que você possa defini-la como padrão.

kubectl get storageclass

Resultado:

NAME PROVISIONER AGEgp2 kubernetes.io/aws-ebs 8m

2. Escolha uma classe de armazenamento e defina-a como a padrão definindo a anotaçãostorageclass.kubernetes.io/is-default-class=true.

kubectl patch storageclass gp2 -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

Resultado:

storageclass "gp2" patched

3. Verifique se a classe de armazenamento agora está definida como padrão.

kubectl get storageclass

Resultado:

gp2 (default) kubernetes.io/aws-ebs 12m

Driver da CSI do Amazon EBSO driver da Container Storage Interface (CSI) do Amazon EBS fornece uma interface CSI que permiteaos clusters do Amazon EKS gerenciarem o ciclo de vida dos volumes do Amazon EBS para volumespersistentes.

152

Page 161: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon EBS

Este tópico mostra como implantar o driver de CSI do Amazon EBS no cluster do Amazon EKS e verificarse ele funciona. Recomendamos usar a versão v0.5.0 do driver.

Note

Este condutor só é suportado em Kubernetes versão 1.14 e posterior Amazon EKS clusters e nós.O driver não é compatível com o Fargate. Os recursos Alpha do driver de CSI do Amazon EBSnão são compatíveis com clusters do Amazon EKS. O driver está na versão Beta. É bem testadoe compatível com o Amazon EKS para uso em produção. O suporte para o driver não serádescartado, embora os detalhes possam mudar. Se o esquema ou os diagramas esquemáticos deum driver forem alterados, serão fornecidas instruções para migrar para a próxima versão.

Para obter descrições detalhadas dos parâmetros disponíveis e exemplos completos que demonstram osrecursos do driver, consulte o projeto Amazon EBS Container Storage Interface (CSI) driver no GitHub.

Como implantar o driver da CSI do Amazon EBS em um cluster do Amazon EKS

1. Criar um IAM política chamada Amazon_EBS_CSI_Driver para o seu perfil de instância de nóque permite Amazon EBS Condutor CSI para efectuar chamadas para AWS em seu nome. Use osseguintes comandos da AWS CLI para criar a política do IAM na conta da AWS. É possível visualizaro documento da política no GitHub.

a. Faça download do documento de política no GitHub.

curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-ebs-csi-driver/v0.5.0/docs/example-iam-policy.json

b. Crie a política.

aws iam create-policy --policy-name Amazon_EBS_CSI_Driver \ --policy-document file://example-iam-policy.json

Anote o ARN da política que é retornado.2. Obtenha o IAM nome da função para os seus nós. Use o comando a seguir para imprimir o configmap

aws-auth.

kubectl -n kube-system describe configmap aws-auth

Resultado

Name: aws-authNamespace: kube-systemLabels: <none>Annotations: <none>

Data====mapRoles:----- groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/eksctl-alb-nodegroup-ng-b1f603c5-NodeInstanceRole-GKNS581EASPU username: system:node:{{EC2PrivateDNSName}}

Events: <none>

153

Page 162: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon EBS

Registre o nome da função para qualquer valor rolearn que tenha o grupo system:nodes atribuídoa ele. Na saída do exemplo anterior, o nome da função é eksctl-alb-nodegroup-ng-b1f603c5-NodeInstanceRole-GKNS581EASPUÉ necessário ter um valor para cada grupo de nós no cluster.

3. Anexar o novo Amazon_EBS_CSI_Driver IAM política para cada um dos nós IAM funções queidentificou anteriormente com o seguinte comando, substituindo o texto vermelho com o seu AWSnúmero e nó da conta IAM nome da função.

aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/Amazon_EBS_CSI_Driver \--role-name eksctl-alb-nodegroup-ng-b1f603c5-NodeInstanceRole-GKNS581EASPU

4. Implante o driver de CSI do Amazon EBS com o seguinte comando.

Note

Este comando requer a versão 1.14 ou posterior de kubectl. Pode ver o seu kubectlversão com o seguinte comando. Para instalar ou atualizar sua versão do kubectl, consulteInstalar kubectl (p. 233).

kubectl version --client --short

kubectl apply -k "github.com/kubernetes-sigs/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/?ref=master"

Como implantar um aplicativo de exemplo e verificar se o driver de CSI está funcionando

Este procedimento usa o exemplo Dynamic Volume Provisioning do repositório do GitHub AmazonEBS Container Storage Interface (CSI) driver para consumir um volume do Amazon EBS provisionadodinamicamente.

1. Clone o repositório do GitHub Amazon EBS Container Storage Interface (CSI) driver no sistema local.

git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git

2. Navegue até o diretório de exemplo dynamic-provisioning.

cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/

3. Implante a classe de armazenamento ebs-sc, a declaração de volume persistente ebs-claim e oaplicativo de exemplo app do diretório specs.

kubectl apply -f specs/

4. Descreva a classe de armazenamento ebs-sc.

kubectl describe storageclass ebs-sc

Resultado

Name: ebs-scIsDefaultClass: NoAnnotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"ebs-sc"},"provisioner":"ebs.csi.aws.com","volumeBindingMode":"WaitForFirstConsumer"}

154

Page 163: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon EBS

Provisioner: ebs.csi.aws.comParameters: <none>AllowVolumeExpansion: <unset>MountOptions: <none>ReclaimPolicy: DeleteVolumeBindingMode: WaitForFirstConsumerEvents: <none>

Observe que a classe de armazenamento usa o modo de vinculação de volumeWaitForFirstConsumer. Isso significa que os volumes não são provisionados dinamicamenteaté que um pod faça uma declaração de volume persistente. Para obter mais informações, consulteVolume Binding Mode na documentação do Kubernetes.

5. Observe os pods no namespace padrão e aguarde até que o pod app fique pronto.

kubectl get pods --watch

6. Liste os volumes persistentes no namespace padrão. Procure um volume persistente com adeclaração default/ebs-claim.

kubectl get pv

Resultado

NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGEpvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a 4Gi RWO Delete Bound default/ebs-claim ebs-sc 30s

7. Descreva o volume persistente.

kubectl describe pv pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a

Resultado

Name: pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5aLabels: <none>Annotations: pv.kubernetes.io/provisioned-by: ebs.csi.aws.comFinalizers: [kubernetes.io/pv-protection external-attacher/ebs-csi-aws-com]StorageClass: ebs-scStatus: BoundClaim: default/ebs-claimReclaim Policy: DeleteAccess Modes: RWOVolumeMode: FilesystemCapacity: 4GiNode Affinity: Required Terms: Term 0: topology.ebs.csi.aws.com/zone in [regiona]Message:Source: Type: CSI (a Container Storage Interface (CSI) volume source) Driver: ebs.csi.aws.com VolumeHandle: vol-0d651e157c6d93445 ReadOnly: false VolumeAttributes: storage.kubernetes.io/csiProvisionerIdentity=1567792483192-8081-ebs.csi.aws.comEvents: <none>

155

Page 164: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon EFS

O ID do volume do Amazon EBS é listado como VolumeHandle.8. Verifique se o pod está gravando dados com êxito no volume.

kubectl exec -it app cat /data/out.txt

Resultado

Wed Jul 8 13:52:09 UTC 2020Wed Jul 8 13:52:14 UTC 2020Wed Jul 8 13:52:19 UTC 2020Wed Jul 8 13:52:24 UTC 2020Wed Jul 8 13:52:29 UTC 2020Wed Jul 8 13:52:34 UTC 2020

9. Ao concluir os testes, exclua os recursos para limpar esse aplicativo de exemplo.

kubectl delete -f specs/

Driver da CSI do Amazon EFSO Amazon EFS Controlador da Interface de Armazenamento de Contentores (CSI) fornece uma interfaceCSI que permite a execução de agrupamentos Kubernetes AWS para gerir o ciclo de vida de Amazon EFSsistemas de ficheiros.

Este tópico mostra como implantar o driver de CSI do Amazon EFS no cluster do Amazon EKS e verificarse ele funciona.

Note

O driver não é compatível com o Fargate. Os recursos Alpha do driver de CSI do Amazon EFSnão são compatíveis com clusters do Amazon EKS.

Para obter descrições detalhadas dos parâmetros disponíveis e exemplos completos que demonstram osrecursos do driver, consulte o projeto Amazon EFS Container Storage Interface (CSI) driver no GitHub.

Como implantar o driver da CSI do Amazon EFS em um cluster do Amazon EKS

• Implementar o Amazon EFS Controlador CSI com o seguinte comando.Note

Este comando requer a versão 1.14 ou superior do kubectl. Você pode verificar a versãodo kubectl com o comando a seguir: Para instalar ou atualizar sua versão do kubectl,consulte Instalar kubectl (p. 233).

kubectl version --client --short

kubectl apply -k "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/ecr/?ref=release-1.0"

Note

• A partir da versão 1.0.0, a encriptação de dados em trânsito utilizando o TLS está activadapor predefinição. Utilizar encriptação em trânsito, os dados serão encriptados durante atransição da rede para o Amazon EFS serviço. Para desactivá-lo e montá-lo utilizando o

156

Page 165: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon EFS

nfsv4, defina o volumeAttributes campo encryptInTransit para "false" no seumanifesto de volume persistente. Para um exemplo de manifesto, consulte Exemplo deencriptação em trânsito em github.

• Apenas o aprovisionamento de volume estático é suportado. Isto significa que um AmazonEFS o sistema de ficheiros tem de ser criado fora de Amazon EKS antes de seremutilizados por cápsulas no seu grupo.

Amazon EFS pontos de acesso

O Amazon EFS Suporte de condutor CSI Amazon EFS pontos de acesso, que são pontos de entradaespecíficos da aplicação num Amazon EFS sistema de ficheiros que facilita a partilha de um sistema deficheiros entre várias cápsulas. Os pontos de acesso podem aplicar uma identidade de utilizador paratodos os pedidos de sistema de ficheiros que são feitos através do ponto de acesso e aplicar um diretóriode raiz para cada grupo. Para mais informações, consulte Amazon EFS pontos de acesso em github.

Como criar um sistema de arquivos do Amazon EFS para o cluster do Amazon EKS

1. Localize o ID da VPC para o cluster do Amazon EKS. Você pode encontrar esse ID no console doAmazon EKS ou usar o comando da AWS CLI a seguir.

aws eks describe-cluster --name cluster_name --query "cluster.resourcesVpcConfig.vpcId" --output text

Resultado

vpc-exampledb76d3e813

2. Localize o intervalo CIDR para a VPC de seu cluster. Você pode encontrar isso no console da AmazonVPC ou usar o comando da AWS CLI a seguir.

aws ec2 describe-vpcs --vpc-ids vpc-exampledb76d3e813 --query "Vpcs[].CidrBlock" --output text

Resultado

192.168.0.0/16

3. Crie um grupo de segurança que permita tráfego NFS de entrada para seus pontos de montagem doAmazon EFS.

a. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.b. Escolher Grupos de segurança no painel de navegação esquerdo e, em seguida, escolha Criar

grupo de segurança.c. Insira um nome e uma descrição para o grupo de segurança e escolha a VPC que o cluster do

Amazon EKS está usando.d. Abaixo Regras de entrada, selecione Adicionar regra.e. Abaixo Tipo, selecione NFS.f. Abaixo Fonte, selecione Personalizado, e cole a gama VPC CIDR que obteve no passo anterior.g. Escolha Create security group (Criar grupo de segurança).

4. Crie o sistema de arquivos do Amazon EFS para o cluster do Amazon EKS.

a. Abra o console do Amazon Elastic File System em https://console.aws.amazon.com/efs/.b. Escolher Sistemas de ficheiros no painel de navegação esquerdo e, em seguida, escolha Criar

sistema de ficheiros.

157

Page 166: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon EFS

c. No Criar sistema de ficheiros página, escolher Personalizar.d. No Definições do sistema de ficheiros não é necessário introduzir ou seleccionar qualquer

informação, mas pode, se pretendido, e selecionar Seguinte.e. No Acesso à rede página, para Nuvem Privada Virtual (VPC), escolha o seu VPC.

Note

Se não vir o seu VPC, no canto superior direito da consola, certifique-se de que a regiãoem que o seu VPC está selecionado está selecionada.

f. Abaixo Metas de montagem, se um grupo de segurança predefinido já estiver listado, seleccioneX no canto superior direito da caixa com o nome do grupo de segurança predefinido para removê-lo de cada ponto de montagem, selecione o grupo de segurança que criou num passo anteriorpara cada alvo de montagem e, em seguida, selecione Seguinte.

g. No Política do sistema de ficheiros página, selecione Seguinte.h. No Rever e criar página, selecione Criar.

Important

Por padrão, os novos sistemas de arquivos do Amazon EFS são de propriedade doroot:root, e somente o usuário root (UID 0) tem permissões de leitura, gravação eexecução. Se os contêineres não estiverem sendo executados como root, você deveráalterar as permissões do sistema de arquivos do Amazon EFS para permitir que outrosusuários modifiquem o sistema de arquivos. Para obter mais informações, consulteTrabalhar com usuários, grupos e permissões no nível do Network File System (NFS) noGuia do usuário do Amazon Elastic File System.

Como implantar um aplicativo de exemplo e verificar se o driver de CSI está funcionando

Este procedimento usa o exemplo de Multiple Pods Read Write Many do repositório GitHub Driver daContainer Storage Interface (CSI) do Amazon EFS para consumir um volume persistente do Amazon EFSprovisionado estaticamente e acessá-lo de vários pods com o modo de acesso ReadWriteMany.

1. Clone o repositório do GitHub Amazon EFS Container Storage Interface (CSI) driver no sistema local.

git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git

2. Navegue até o diretório de exemplo multiple_pods.

cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/

3. Recupere o ID do sistema de arquivos do Amazon EFS. Você pode encontrá-lo no console do AmazonEFS ou usar o comando da AWS CLI a seguir.

aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text

Resultado

fs-582a03f3

4. Edite o arquivo specs/pv.yaml e substitua o valor de volumeHandle pelo ID do sistema dearquivos do Amazon EFS.

apiVersion: v1kind: PersistentVolumemetadata: name: efs-pv

158

Page 167: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon EFS

spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: efs-sc csi: driver: efs.csi.aws.com volumeHandle: fs-582a03f3

Note

Como o Amazon EFS é um sistema de arquivos elástico, ele não impõe limites decapacidade do sistema de arquivos. O valor real da capacidade de armazenamento emvolumes persistentes e declarações de volume persistente não será usado durante a criaçãodo sistema de arquivos. No entanto, uma vez que a capacidade de armazenamento é umcampo obrigatório em Kubernetes, tem de especificar um valor válido, como, por exemplo,5Gi neste exemplo. Esse valor não limita o tamanho do sistema de arquivos do AmazonEFS.

5. Implante a classe de armazenamento efs-sc, a declaração de volume persistente efs-claim, ovolume persistente efs-pv e os aplicativos de exemplo app1 e app2 do diretório specs.

kubectl apply -f specs/

6. Descobre as cápsulas no nome predefinido e aguarde pelo app1 e app2 pés STATUS tornar-seRunning.

kubectl get pods --watch

Note

Pode demorar alguns minutos para que as cápsulas atinjam o Running estado.7. Liste os volumes persistentes no namespace padrão. Procure um volume persistente com a

declaração default/efs-claim.

kubectl get pv

Resultado

NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGEefs-pv 5Gi RWX Retain Bound default/efs-claim efs-sc 2m50s

8. Descreva o volume persistente.

kubectl describe pv efs-pv

Resultado

Name: efs-pvLabels: <none>Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"PersistentVolume","metadata":{"annotations":{},"name":"efs-pv"},"spec":{"accessModes":["ReadWriteMany"],"capaci...

159

Page 168: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon FSx for Lustre

pv.kubernetes.io/bound-by-controller: yesFinalizers: [kubernetes.io/pv-protection]StorageClass: efs-scStatus: BoundClaim: default/efs-claimReclaim Policy: RetainAccess Modes: RWXVolumeMode: FilesystemCapacity: 5GiNode Affinity: <none>Message:Source: Type: CSI (a Container Storage Interface (CSI) volume source) Driver: efs.csi.aws.com VolumeHandle: fs-582a03f3 ReadOnly: false VolumeAttributes: <none>Events: <none>

O ID do sistema de arquivos do Amazon EFS está listado como VolumeHandle.9. Verifique se o pod app1 está gravando dados com êxito no volume.

kubectl exec -ti app1 -- tail /data/out1.txt

Resultado

Thu Jul 23 21:44:02 UTC 2020Thu Jul 23 21:44:07 UTC 2020Thu Jul 23 21:44:12 UTC 2020Thu Jul 23 21:44:17 UTC 2020Thu Jul 23 21:44:22 UTC 2020Thu Jul 23 21:44:27 UTC 2020

10. Verifique se o pod app2 mostra os mesmos dados no volume.

kubectl exec -ti app2 -- tail /data/out1.txt

Resultado

Thu Jul 23 21:44:47 UTC 2020Thu Jul 23 21:44:52 UTC 2020Thu Jul 23 21:44:57 UTC 2020Thu Jul 23 21:45:02 UTC 2020Thu Jul 23 21:45:07 UTC 2020Thu Jul 23 21:45:12 UTC 2020

11. Ao concluir os testes, exclua os recursos para limpar esse aplicativo de exemplo.

kubectl delete -f specs/

Driver da CSI do Amazon FSx for LustreO driver da Container Storage Interface (CSI) do Amazon FSx for Lustre fornece uma interface CSI quepermite aos clusters do Amazon EKS gerenciarem o ciclo de vida dos sistemas de arquivos do AmazonFSx for Lustre.

160

Page 169: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon FSx for Lustre

Este tópico mostra como implantar o driver de CSI do Amazon FSx for Lustre no cluster do Amazon EKS everificar se ele funciona. Recomendamos usar a versão 0.3.0 do driver.

Note

Este controlador é suportado na versão Kubernetes 1.17 e mais tarde Amazon EKS clusters enós. O driver não é compatível com o Fargate. Os recursos Alpha do driver de CSI do AmazonFSx for Lustre não são compatíveis com clusters do Amazon EKS. O driver está na versãoBeta. É bem testado e compatível com o Amazon EKS para uso em produção. O suporte para odriver não será descartado, embora os detalhes possam mudar. Se o esquema ou os diagramasesquemáticos de um driver forem alterados, serão fornecidas instruções para migrar para apróxima versão.

Para obter descrições detalhadas dos parâmetros disponíveis e exemplos completos que demonstram osrecursos do driver, consulte o projeto Amazon FSx for Lustre Container Storage Interface (CSI) driver noGitHub.

Prerequisites

Você deve ter:

• Versão 1.18.110 ou posterior da AWS CLI instalada. É possível verificar sua versão instalada atualmentecom o comando aws --version. Para instalar ou atualizar a AWS CLI, consulte Instalar a CLI daAWS.

• Um cluster existente do Amazon EKS Se você não tiver um cluster no momento, consulte ??? (p. 3) paracriar um.

• Versão 0.25.0 ou posterior do eksctl instalado. É possível verificar sua versão instalada atualmentecom o comando eksctl version. Para instalar ou atualizar o eksctl, consulte Instalar ou atualizar oeksctl (p. 238).

• A versão mais recente do kubectl instalada que se alinha à versão do cluster. É possível verificar suaversão instalada atualmente com o comando kubectl version --short --client. Para obtermais informações, consulte Instalar kubectl (p. 233).

Como implantar o driver da CSI do Amazon FSx for Lustre em um cluster do Amazon EKS

1. Crie um provedor de OIDC do AWS Identity and Access Management e associe-o ao seu cluster.

eksctl utils associate-iam-oidc-provider \ --region region-code \ --cluster prod \ --approve

2. Crie uma conta de serviço e política do IAM que permita que o driver faça chamadas para APIs daAWS em seu nome.

a. Copie o texto a seguir e salve-o em um arquivo chamado fsx-csi-driver.json.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iam:CreateServiceLinkedRole", "iam:AttachRolePolicy", "iam:PutRolePolicy" ], "Resource":"arn:aws:iam::*:role/aws-service-role/s3.data-source.lustre.fsx.amazonaws.com/*"

161

Page 170: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon FSx for Lustre

}, { "Action":"iam:CreateServiceLinkedRole", "Effect":"Allow", "Resource":"*", "Condition":{ "StringLike":{ "iam:AWSServiceName":[ "fsx.amazonaws.com" ] } } }, { "Effect":"Allow", "Action":[ "s3:ListBucket", "fsx:CreateFileSystem", "fsx:DeleteFileSystem", "fsx:DescribeFileSystems" ], "Resource":[ "*" ] } ]}

b. Crie a política.

aws iam create-policy \ --policy-name Amazon_FSx_Lustre_CSI_Driver \ --policy-document file://fsx-csi-driver.json

Anote o Amazon Resource Name (ARN) da política retornado.3. Crie uma conta de serviço do Kubernetes para o driver e associe a política à conta de serviço.

Substitua o ARN da política pelo ARN retornado na etapa anterior.

eksctl create iamserviceaccount \ --region region-code \ --name fsx-csi-controller-sa \ --namespace kube-system \ --cluster prod \ --attach-policy-arn arn:aws:iam::111122223333:policy/Amazon_FSx_Lustre_CSI_Driver \ --approve

Resultado

Você verá várias linhas de saída à medida que a conta de serviço é criada. A última linha de saída ésemelhante ao exemplo de linha a seguir.

[✓] created serviceaccount "kube-system/fsx-csi-controller-sa"

Observe o nome da pilha do AWS CloudFormation implantada. No exemplo de saída acima, apilha é denominada eksctl-prod-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa.

4. Anote o Role ARN (ARN da função) para a função criada.

a. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.

162

Page 171: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon FSx for Lustre

b. Certifique-se de que o console esteja definido para a região na qual você criou sua função do IAMe, depois, selecione Stacks (Pilhas).

c. Selecione a pilha chamada eksctl-prod-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa.

d. Selecione a guia Outputs (Saídas). O Role ARN (ARN da função) é listado na página Output(1)(Saída (1)) .

5. Implante o driver com o seguinte comando.

kubectl apply -k "github.com/kubernetes-sigs/aws-fsx-csi-driver/deploy/kubernetes/overlays/stable/?ref=master"

Resultado

Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl applyserviceaccount/fsx-csi-controller-sa configuredclusterrole.rbac.authorization.k8s.io/fsx-csi-external-provisioner-role createdclusterrolebinding.rbac.authorization.k8s.io/fsx-csi-external-provisioner-binding createddeployment.apps/fsx-csi-controller createddaemonset.apps/fsx-csi-node createdcsidriver.storage.k8s.io/fsx.csi.aws.com created

6. Aplique patch à implantação do driver a fim de adicionar a conta de serviço criada na etapa 3,substituindo o ARN pelo ARN anotado na etapa 4.

kubectl annotate serviceaccount -n kube-system fsx-csi-controller-sa \ eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/eksctl-prod-addon-iamserviceaccount-kube-sys-Role1-NPFTLHJ5PJF5 --overwrite=true

Para implantar uma classe de armazenamento do Kubernetes, uma declaração de volumepersistente e um aplicativo de exemplo para verificar se o driver CSI está funcionando

Este procedimento usa o Dynamic Volume Provisioning for Amazon S3 do repositório do GitHub AmazonFSx for Lustre Container Storage Interface (CSI) driver para consumir um volume do Amazon FSx forLustre provisionado dinamicamente.

1. Crie um bucket do Amazon S3 e uma pasta dentro dele denominada export criando e copiando umarquivo para o bucket.

aws s3 mb s3://fsx-csiecho test-file >> testfileaws s3 cp testfile s3://fsx-csi/export/testfile

2. Faça download do manifesto storageclass com o seguinte comando:

curl -o storageclass.yaml https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning_s3/specs/storageclass.yaml

3. Edite o arquivo e substitua os valores alternate-colored existentes pelos seus próprios.

parameters: subnetId: subnet-056da83524edbe641 securityGroupIds: sg-086f61ea73388fb6b s3ImportPath: s3://ml-training-data-000 s3ExportPath: s3://ml-training-data-000/export

163

Page 172: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon FSx for Lustre

deploymentType: SCRATCH_2

• subnetId – o ID de da sub-rede em que o sistema de arquivos do Amazon FSx for Lustre deve sercriado. O Amazon FSx for Lustre não tem suporte em todas as Zona de disponibilidades. Abra oconsole do Amazon FSx for Lustre no https://console.aws.amazon.com/fsx/ para confirmar se a sub-rede que você deseja usar está em uma Zona de disponibilidade compatível. A subrede pode incluiros seus nós ou pode ser uma subrede ou VPC diferente. Se a subrede que especificar não for amesma subrede que tem nós, então os seus vpcs devem ser ligado, e tem de garantir que tem asportas necessárias abertas nos seus grupos de segurança.

• segurançasdeficientes – A ID do grupo de segurança para os seus nós.• s3ImportPath – o repositório de dados do Amazon Simple Storage Service do qual você deseja

copiar dados para o volume persistente. Especifique o bucket fsx-csi criado na etapa 1.• s3ExportPath – o repositório de dados do Amazon S3 para o qual você deseja exportar arquivos

novos ou modificados. Especifique a pasta fsx-csi/export criada na etapa 1.• deploymentType – o tipo de implantação do sistema de arquivos. Os valores válidos sãoSCRATCH_1, SCRATCH_2, e PERSISTENT_1. Para mais informações sobre os tipos deimplementação, consulte Crie o seu Amazon FSx for Lustre sistema de ficheiros.

Note

O bucket do Amazon S3 para s3ImportPath e s3ExportPath deve ser o mesmo,caso contrário, o driver não poderá criar o sistema de arquivos Amazon FSx for Lustre. Os3ImportPath pode ficar sozinho. Um caminho aleatório será criado automaticamentecomo s3://ml-training-data-000/FSxLustre20190308T012310Z. Os3ExportPath não pode ser utilizado sem especificar um valor para S3ImportPath.

4. Crie o storageclass.

kubectl apply -f storageclass.yaml

5. Faça download do manifesto de declaração de volume persistente.

curl -o claim.yaml https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning_s3/specs/claim.yaml

6. (Opcional) Edite o arquivo claim.yaml. Alterar o seguinte value para um dos valores de incrementoindicados abaixo, com base nos requisitos de armazenamento e no deploymentType que selecionounum passo anterior.

storage: 1200Gi

• SCRATCH_2 e PERSISTENT – 1,2 TiB, 2,4 TiB, ou incrementos de 2,4 TiB sobre 2,4 TiB.• SCRATCH_1 – 1,2 TiB, 2,4 TiB, 3,6 TiB, ou incrementos de 3,6 TiB sobre 3,6 TiB.

7. Crie a declaração de volume persistente.

kubectl apply -f claim.yaml

8. Confirme se o sistema de arquivos está provisionado.

kubectl get pvc

Resultado

164

Page 173: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon FSx for Lustre

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEfsx-claim Bound pvc-15dad3c1-2365-11ea-a836-02468c18769e 1200Gi RWX fsx-sc 7m37s

Note

O STATUS pode mostrar como Pending durante 5 a 10 minutos, antes de mudar paraBound. Não continue com o passo seguinte até o STATUS é Bound.

9. Implante o aplicativo de exemplo.

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning_s3/specs/pod.yaml

10. Verifique se o aplicativo de exemplo está em execução.

kubectl get pods

Resultado

NAME READY STATUS RESTARTS AGEfsx-app 1/1 Running 0 8s

Acesso Amazon S3 ficheiros do Amazon FSx for Lustre sistema de ficheiros

Se você só deseja importar dados e lê-los sem nenhuma modificação e criação, não precisará de um valorpara s3ExportPath no seu arquivo storageclass.yaml. Verifique se os dados foram gravados nosistema de arquivos Amazon FSx for Lustre pelo aplicativo de exemplo.

kubectl exec -it fsx-app ls /data

Resultado

export out.txt

O aplicativo de exemplo gravou o arquivo out.txt no sistema de arquivos.

Arquivar ficheiros para s3ExportPath

Para novos arquivos e arquivos modificados, é possível usar a ferramenta de espaço de usuário do Lustrepara arquivar os dados novamente no Amazon S3 usando o valor especificado para s3ExportPath.

1. Exporte o arquivo novamente para Amazon S3.

kubectl exec -ti fsx-app -- lfs hsm_archive /data/out.txt

Note

• Novos arquivos não são sincronizados novamente no Amazon S3 de modo automático.Para sincronizar arquivos com o s3ExportPath, é necessário instalar o cliente Lustreem sua imagem de contêiner e executar manualmente o comando lfs hsm_archive. Ocontêiner deve ser executado em modo privilegiado com a capacidade CAP_SYS_ADMIN.

165

Page 174: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDriver da CSI do Amazon FSx for Lustre

• Este exemplo usa um gancho de ciclo de vida para instalar o cliente Lustre para fins dedemonstração. Uma abordagem normal é criar uma imagem de contêiner com o clienteLustre.

2. Confirme se o arquivo out.txt foi gravado na pasta s3ExportPath no Amazon S3.

aws s3 ls fsx-csi/export/

Resultado

2019-12-23 12:11:35 4553 out.txt2019-12-23 11:41:21 10 testfile

166

Page 175: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Redes do Amazon EKSEste capítulo fornece uma descrição geral do Amazon EKS rede. O diagrama seguinte mostracomponentes chave de um Amazon EKS e a relação dos componentes com um VPC.

As explicações seguintes ajudam-no a compreender como os componentes do diagrama se relacionamentre si e os tópicos deste guia e outros AWS guias que pode consultar para obter mais informações.

• Amazon VPC e subredes – Todos Amazon EKS são implementados a uma região numa subredeexistente num VPC existente. Para mais informações, consulte e subredes no Amazon VPC Guia doutilizador. Cada subrede existe num Zona de disponibilidade. O VPC e as subredes devem cumprirrequisitos como o seguinte:• Os vpcs e subredes devem ser etiquetados adequadamente, para que a Kubernetes saiba que pode

utilizá-los para implementar recursos, tais como balanços de carga. Para obter mais informações,consulte the section called “Requisito de marcação de VPC” (p. 174) e the section called “Requisitode marcação de sub-rede” (p. 175). Se implementar o VPC utilizando um Amazon EKS-fornecidoAWS CloudFormation modelo (p. 170) ou usando eksctl, então os VPC e as subredes sãoetiquetados adequadamente para si.

• Uma subrede pode ou não ter acesso à Internet. Se uma sub-rede não tiver acesso à Internet, ascápsulas colocadas no mesmo devem ser capazes de aceder a outro AWS serviços, tais comoAmazon ECR, para puxar imagens dos recipientes. Para mais informações sobre a utilização desubredes que não têm acesso à Internet, consulte ??? (p. 86).

• Quaisquer subredes públicas que utilize têm de ser configuradas para atribuir automaticamenteendereços IP públicos para Amazon EC2 casos lançados dentro dos mesmos. Para obter maisinformações, consulte the section called “Endereçamento IP da VPC” (p. 173).

• Os nós e o plano de controlo devem ser capazes de comunicar sobre todas as portas através deum rótulo devidamente etiquetado grupos de segurança. Para obter mais informações, consulte thesection called “Considerações sobre os grupos de segurança do Amazon EKS” (p. 175).

167

Page 176: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioComo criar uma VPC para o Amazon EKS

• Pode implementar uma política de segmentação de rede e de isolamento de inquilino. As políticas derede são semelhantes aos grupos de segurança da AWS, nos quais você pode criar regras de entradae saída de rede. Em vez de atribuir instâncias a um grupo de segurança, você atribui políticas de redepara pods usando seletores de pod e rótulos. Para obter mais informações, consulte the section called“Instalação do Calico no Amazon EKS” (p. 198).

Pode implementar um VPC e subredes que cumpram o Amazon EKS através de configuração manual,ou através da implementação de VPC e subredes utilizando eksctl (p. 238), ou um Amazon EKSfornecido AWS CloudFormation modelo. Ambos eksctl e o AWS CloudFormation crie o VPC e assubredes com a configuração necessária. Para obter mais informações, consulte the section called“Como criar uma VPC para o Amazon EKS” (p. 170).

• Amazon EKS plano de controlo – Implementado e gerido por Amazon EKS num Amazon EKS-VPCgerido. Quando cria o grupo, Amazon EKS cria e gere interfaces de rede gerida pelo solicitante numVPC separado do VPC do plano de controlo que especificar, o que permite AWS Fargate e Amazon EC2para comunicar com o plano de controlo.

Por predefinição, o plano de controlo expõe um parâmetro de avaliação público para que os clientes enós possam comunicar com o grupo. Pode limitar os endereços IP de origem do cliente da Internet quepodem comunicar com o parâmetro de avaliação público. Em alternativa, pode permitir um parâmetro deavaliação privado e desactivar o parâmetro de avaliação público ou permitir os parâmetros de avaliaçãopúblico e privado. Para saber mais sobre os parâmetros de avaliação do grupo, consulte ??? (p. 49).

Os clientes na sua rede nas instalações ou outros vpcs podem comunicar com o parâmetro de avaliaçãopúblico ou privado, se tiver configurado conectividade entre o VPC que o cluster é implementado e asoutras redes. Para mais informações sobre como ligar o seu VPC a outras redes, consulte os AWS Redepara-Amazon VPC opções de conectividade e Amazon VPC-a-Amazon VPC opções de conectividadeartigos técnicos.

• Amazon EC2 instâncias – Cada Amazon EC2 o nó é expandido para uma subrede. Cada nó é atribuídoa endereço IP privado a partir de um bloco CIDR atribuído à subrede. Se as subredes foram criadasutilizando um dos Amazon EKS fornecido AWS CloudFormation modelos (p. 170), então os nósaplicados a subredes públicas são automaticamente atribuídos a endereço IP público pela subrede.Cada nó é expandido com o the section called “Redes de pods (CNI)” (p. 179) que, por predefinição,atribui cada grupo a um endereço IP privado do bloco CIDR atribuído à subrede que o nó está eme adiciona o endereço IP como endereço IP secundário a um dos interfaces de rede elástica (ENI)anexado à instância.

Para nós autogeridos, pode alterar este comportamento atribuindo blocos CIDR adicionais ao seu VPC epermitindo the section called “Rede personalizada do CNI” (p. 188), que atribui endereços IP a pods dediferentes subredes do que o nó é expandido para. Para utilizar uma rede de contactos personalizada,tem de activá-la quando iniciar os seus nós autogeridos.

Por predefinição, o endereço IP de origem de cada grupo que comunica com recursos fora do VPC étraduzido através da tradução de endereço de rede (NAT) para o endereço IP principal da ENI primáriaanexada ao nó. Pode alterar este comportamento para, em vez disso, ter um dispositivo NAT numasubrede privada, traduza cada endereço IP do grupo para o endereço IP do dispositivo NAT. Para obtermais informações, consulte the section called “SNAT externa” (p. 186).

• Cápsulas Fargate – Implementado apenas para sub-redes privadas. Cada módulo recebe um endereçoIP privado do bloco CIDR atribuído à subrede. Fargate não suporta todas as opções de rede. Para obtermais informações, consulte ??? (p. 119).

Criar uma VPC para o cluster do Amazon EKSA Amazon Virtual Private Cloud (Amazon VPC) permite executar os recursos da AWS em uma redevirtual definida por você. Essa rede virtual se assemelha a uma rede tradicional que você operaria no seu

168

Page 177: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioComo criar uma VPC para o Amazon EKS

datacenter, com os benefícios de usar a infraestrutura dimensionável da AWS. Para mais informações,consulte o Guia do usuário da Amazon VPC e Desmistificação de rede em grupo para Amazon EKS nós.

Se você quiser usar uma VPC existente, ela deverá atender aos requisitos específicos para uso com oAmazon EKS. Para obter mais informações, consulte ??? (p. 173). Este tópico oferece orientação para acriação de uma VPC para seu cluster usando uma das seguintes configurações:

• Sub-redes públicas e privadas – esta VPC tem duas sub-redes públicas e duas privadas. Uma sub-redepública e uma privada são implantadas no mesmo Zona de disponibilidade. As outras sub-redes públicase privadas são implantadas em um segundo Zona de disponibilidade na mesma região. Recomendamosessa opção para todas as implantações de produção. Esta opção permite-lhe expandir os seus nóspara sub-redes privadas e permite que a Kubernetes implemente balanceadores de carga às sub-redespúblicas que podem carregar o tráfego para as cápsulas que funcionam em nós nas sub-redes privadas.

Os endereços IP públicos são atribuídos automaticamente a recursos implantados em uma das sub-redes públicas, mas não são atribuídos a nenhum recurso implantado nas sub-redes privadas. Os nósem subredes privadas podem comunicar com o grupo e outros AWS serviços e as cápsulas podemcomunicar a saída à Internet através de uma Gateway NAT que é implementado em cada Zona dedisponibilidade. É implantado um grupo de segurança que nega todo o tráfego de entrada e permite todoo tráfego de saída. As sub-redes são marcadas para que o Kubernetes possa implantar load balancersnelas. Para obter mais informações sobre marcação de sub-rede, consulte ??? (p. 175). Para obtermais informações sobre esse tipo de VPC, consulte VPC com sub-redes públicas e privadas (NAT).

• Somente sub-redes públicas – esta VPC tem três sub-redes públicas que são implantadas em Zonade disponibilidades diferentes na região. Todos os nós são automaticamente atribuídos endereços IPpúblicos e podem enviar e receber tráfego de Internet através de um portal da Internet. É implantadoum grupo de segurança que nega todo o tráfego de entrada e permite todo o tráfego de saída. As sub-redes são marcadas para que o Kubernetes possa implantar load balancers nelas. Para obter maisinformações sobre marcação de sub-rede, consulte ??? (p. 175). Para obter mais informações sobreesse tipo de VPC, consulte VPC com uma única sub-rede pública.

• Somente sub-redes privadas – esta VPC tem três sub-redes privadas que são implantadas em Zona dedisponibilidade diferentes na região. Todos os nós podem opcionalmente enviar e receber tráfego deInternet através de uma instância NAT ou gateway NAT. É implantado um grupo de segurança que negatodo o tráfego de entrada e permite todo o tráfego de saída. As sub-redes são marcadas para que oKubernetes possa implantar load balancers internos nelas. Para obter mais informações sobre marcaçãode sub-rede, consulte ??? (p. 175). Para obter mais informações sobre esse tipo de VPC, consulteVPC com apenas uma sub-rede privada e acesso ao AWS Site-to-Site VPN.

Important

Há requisitos adicionais se a VPC não tiver acesso de saída à Internet, como por meio deuma instância NAT, gateway NAT, VPN ou conexão direta. Tem de ignorar a introspecaçãodo cluster EKS fornecendo a autoridade do certificado de agrupamento e o ponto final de APIde cluster aos nós. Você também pode precisar configurar os VPC endpoints listados em??? (p. 49).

Important

Se você implantou uma VPC usando eksctl ou usando um dos modelos de VPC do AWSCloudFormation do Amazon EKS:

• Em ou após 03/26/2020 – Os endereços ipv4 públicos são atribuídos automaticamente porsubredes públicas a novos nós aplicados a subredes públicas.

• Antes 03/26/2020 – Os endereços ipv4 públicos não são atribuídos automaticamente porsubredes públicas a novos nós implementados a subredes públicas.

169

Page 178: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioComo criar uma VPC para o Amazon EKS

Essa alteração afeta os novos grupos de nós implantados em sub-redes públicas das seguintesmaneiras:

• Grupos de nós gerenciados (p. 94) – Se o grupo de nós for implantado em uma sub-redepública em ou após 04/22/2020, a sub-rede pública deverá ter a atribuição automática deendereços IP públicos habilitada. Para obter mais informações, consulte Modificar o atributo deendereçamento IPv4 público para a sub-rede.

• Linux (p. 101), Janelas (p. 106), ou Braço (p. 77) grupos de nós autogeridos – Se o grupo denós for implementado para uma subrede pública no ou após 03/26/2020, a subrede públicadeve ter atribuição automática de endereços IP públicos activados ou os nós devem serlançados com um endereço IP público. Para obter mais informações, consulte Modificar oatributo de endereçamento IPv4 público para a sub-rede ou Atribuir um endereço IPv4 públicodurante a execução da instância.

Escolha a guia abaixo que representa sua configuração de VPC desejada.

Criar uma VPC para o cluster do Amazon EKSPublic and private subnets

Como criar sua VPC de cluster com sub-redes públicas e privadas

1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.2. Na barra de navegação, selecione uma região que seja compatível com o Amazon EKS.3. Selecione Create stack.4. Em Choose a template (Escolher um modelo), selecione Specify an Amazon S3 template URL

(Especificar o URL de um modelo do Amazon S3).5. Cole a seguinte URL na área de texto e selecione Next (Próximo):

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-vpc-private-subnets.yaml

6. Na página Specify Details (Especificar detalhes), preencha os parâmetros conforme necessário e,em seguida, escolha Next (Próximo).

• Nome da stack Escolha um nome de pilha para o seu AWS CloudFormation pilha. Por exemplo,você pode chamá-la de eks-vpc.

• vpcblock: Escolha uma gama CIDR para o seu VPC. Cada nó de operador, pod e loadbalancer implantado recebe um endereço IP desse bloco. O valor padrão fornece endereçosIP suficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo. Para obter mais informações, consulte Dimensionamento da VPC e da sub-rede no Guia dousuário da Amazon VPC. Você também pode adicionar blocos CIDR extras à VPC depois queela for criada.

• sub-rede01Bloco: Especifique um bloco CIDR para sub-rede pública 1. O valor padrão forneceendereços IP suficientes para a maioria das implementações, mas, se não fornecer, vocêpoderá alterá-lo

• subnet02Bloco: Especifique um bloco CIDR para sub-rede pública 2. O valor padrão forneceendereços IP suficientes para a maioria das implementações, mas, se não fornecer, vocêpoderá alterá-lo

• sub-rede privatesub01Bloco: Especifique um bloco CIDR para sub-rede privada 1. O valorpadrão fornece endereços IP suficientes para a maioria das implementações, mas, se nãofornecer, você poderá alterá-lo

170

Page 179: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioComo criar uma VPC para o Amazon EKS

• sub-rede privatesubnet02Bloco: Especifique um bloco CIDR para subnet privado 2. O valorpadrão fornece endereços IP suficientes para a maioria das implementações, mas, se nãofornecer, você poderá alterá-lo

7. (Opcional) Na página Options (Opções), marque os recursos da pilha. Selecione Next (Próximo).8. Na página Revisão, selecione Criar.9. Quando a pilha estiver criada, selecione-a no console e escolha Outputs (Saídas).10. Registre o valor de SecurityGroups para o security group criado. Quando adiciona nós ao seu

grupo, tem de especificar a ID do grupo de segurança. O grupo de segurança é aplicado àsinterfaces de rede elástica de conta cruzada que são criadas nas suas sub-redes que permitemao Amazon EKS plano de controlo para comunicar com os seus nós.

11. Registre o VpcId para a VPC que foi criada. Precisa disto quando iniciar o seu modelo de grupode nó.

12. Registre os SubnetIds para as sub-redes que foram criadas e se você as criou como sub-redespúblicas ou privadas. Quando adiciona nós ao seu cluster, tem de especificar as identificaçõesdas subredes que pretende lançar os nós para.

Only public subnets

Para criar sua VPC do cluster apenas com sub-redes públicas

1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.2. Na barra de navegação, selecione uma região que seja compatível com o Amazon EKS.3. Selecione Create stack.4. Em Choose a template (Escolher um modelo), selecione Specify an Amazon S3 template URL

(Especificar o URL de um modelo do Amazon S3).5. Cole a seguinte URL na área de texto e selecione Next (Próximo):

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-vpc-sample.yaml

6. Na página Specify Details (Especificar detalhes), preencha os parâmetros conforme necessário e,em seguida, escolha Next (Próximo).

• Nome da stack Escolha um nome de pilha para o seu AWS CloudFormation pilha. Por exemplo,você pode chamá-la de eks-vpc.

• vpcblock: Escolha um bloco CIDR para o seu VPC. Cada nó de operador, pod e load balancerimplantado recebe um endereço IP desse bloco. O valor padrão fornece endereços IPsuficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo.Para obter mais informações, consulte Dimensionamento da VPC e da sub-rede no Guia dousuário da Amazon VPC. Você também pode adicionar blocos CIDR extras à VPC depois queela for criada.

• Subnet01Bloco: Especifique um bloco CIDR para sub-rede 1. O valor padrão fornece endereçosIP suficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo

• Subnet02Bloco: Especifique um bloco CIDR para subrede 2. O valor padrão fornece endereçosIP suficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo

• Subnet03Bloco: Especifique um bloco CIDR para subnet 3. O valor padrão fornece endereçosIP suficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo

7. (Opcional) Na página Options (Opções), marque os recursos da pilha. Selecione Next (Próximo).8. Na página Revisão, selecione Criar.9. Quando a pilha estiver criada, selecione-a no console e escolha Outputs (Saídas).10. Registre o valor de SecurityGroups para o security group criado. Quando adiciona nós ao seu

grupo, tem de especificar a ID do grupo de segurança. O grupo de segurança é aplicado às

171

Page 180: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioComo criar uma VPC para o Amazon EKS

interfaces de rede elástica de conta cruzada que são criadas nas suas sub-redes que permitemao Amazon EKS plano de controlo para comunicar com os seus nós.

11. Registre o VpcId para a VPC que foi criada. Precisa disto quando iniciar o seu modelo de grupode nó.

12. Registre os SubnetIds para as sub-redes que foram criadas. Quando adiciona nós ao seu cluster,tem de especificar as identificações das subredes que pretende lançar os nós para.

Only private subnets

Como criar sua VPC do cluster apenas com sub-redes privadas

1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.2. Na barra de navegação, selecione uma região que seja compatível com o Amazon EKS.3. Selecione Create stack.4. Em Choose a template (Escolher um modelo), selecione Specify an Amazon S3 template URL

(Especificar o URL de um modelo do Amazon S3).5. Cole a seguinte URL na área de texto e selecione Next (Próximo):

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-fully-private-vpc.yaml

6. Na página Specify Details (Especificar detalhes), preencha os parâmetros conforme necessário e,em seguida, escolha Next (Próximo).

• Nome da stack Escolha um nome de pilha para o seu AWS CloudFormation pilha. Por exemplo,você pode chamá-la de eks-vpc.

• vpcblock: Escolha um bloco CIDR para o seu VPC. Cada nó de operador, pod e load balancerimplantado recebe um endereço IP desse bloco. O valor padrão fornece endereços IPsuficientes para a maioria das implementações, mas, se não fornecer, você poderá alterá-lo.Para obter mais informações, consulte Dimensionamento da VPC e da sub-rede no Guia dousuário da Amazon VPC. Você também pode adicionar blocos CIDR extras à VPC depois queela for criada.

• sub-rede privatesub01Bloco: Especifique um bloco CIDR para sub-rede 1. O valor padrãofornece endereços IP suficientes para a maioria das implementações, mas, se não fornecer,você poderá alterá-lo

• sub-rede privatesubnet02Bloco: Especifique um bloco CIDR para subrede 2. O valor padrãofornece endereços IP suficientes para a maioria das implementações, mas, se não fornecer,você poderá alterá-lo

• privatóriosubnet03Bloco: Especifique um bloco CIDR para subnet 3. O valor padrão forneceendereços IP suficientes para a maioria das implementações, mas, se não fornecer, vocêpoderá alterá-lo

7. (Opcional) Na página Options (Opções), marque os recursos da pilha. Selecione Next (Próximo).8. Na página Revisão, selecione Criar.9. Quando a pilha estiver criada, selecione-a no console e escolha Outputs (Saídas).10. Registre o valor de SecurityGroups para o security group criado. Quando adiciona nós ao seu

grupo, tem de especificar a ID do grupo de segurança. O grupo de segurança é aplicado àsinterfaces de rede elástica de conta cruzada que são criadas nas suas sub-redes que permitemao Amazon EKS plano de controlo para comunicar com os seus nós.

11. Registre o VpcId para a VPC que foi criada. Precisa disto quando iniciar o seu modelo de grupode nó.

12. Registre os SubnetIds para as sub-redes que foram criadas. Quando adiciona nós ao seu cluster,tem de especificar as identificações das subredes que pretende lançar os nós para.

172

Page 181: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPróximas etapas

Próximas etapasDepois de criar a VPC, você pode experimentar a Conceitos básicos de Amazon EKS (p. 3) demonstração,mas você pode ignorar a seção Criar a VPC do cluster do Amazon EKS (p. 19) e usar essas sub-redes eos security groups para o cluster.

Considerações sobre a VPC do clusterAo criar um cluster do Amazon EKS, especifique as sub-redes da VPC que o cluster deve usar. O AmazonEKS exige sub-redes em pelo menos duas Zona de disponibilidades. Recomendamos uma VPC com sub-redes públicas e privadas a fim de que o Kubernetes possa criar load balancers públicos nas sub-redespúblicas que fazem o balanceamento de carga do tráfego para pods em execução em nós em sub-redesprivadas.

Quando cria o seu grupo, especifique todas as subredes que irão alojar recursos para o seu grupo (comonós e balanceadores de carga).

Note

Load balancers voltados para a Internet requerem uma sub-rede pública em seu cluster. Porpredefinição, os nós também requerem acesso à Internet de saída ao Amazon EKS API para aintrospecação do cluster e registo do nó na hora de lançamento. Para clusters sem acesso desaída à Internet, consulte ??? (p. 86).Para extrair imagens de contêiner, eles exigem acesso às APIs do Amazon S3 e do Amazon ECR(e quaisquer outros registros de contêiner, como o DockerHub). Para obter mais informações,consulte Considerações sobre os grupos de segurança do Amazon EKS (p. 175) e Intervalos deendereços IP da AWS nas AWS General Reference.

As subredes que passa quando cria a influência do grupo em que Amazon EKS coloca interfaces de redeelásticas que são utilizadas para a comunicação do plano de controlo para o nó.

É possível especificar apenas sub-redes públicas ou privadas ao criar o cluster, mas há algumas limitaçõesassociadas a essas configurações:

• Apenas privado: Tudo funciona numa subnet privada e Kubernetes não pode criar balanceadores decarga para a Internet para as suas cápsulas.

• Apenas público: Tudo funciona numa subrede pública, incluindo os seus nós.

Amazon EKS cria uma interface de rede elástica nas suas subredes privadas para facilitar a comunicaçãoaos seus nós. Este canal de comunicação suporta a funcionalidade de Kubernetes como kubectl exec ekubectl logs. O grupo de segurança que especificar quando cria o seu grupo é aplicado às interfaces derede elásticas criadas para o seu plano de controlo do grupo.

Sua VPC deve ter suporte de nomes de host de DNS e resolução de DNS. Caso contrário, os seus nósnão podem registar-se no seu grupo. Para obter mais informações, consulte Uso do DNS com sua VPC, noGuia do usuário da Amazon VPC.

Endereçamento IP da VPCOs nós devem ser capazes de comunicar com o plano de controlo e outros serviços AWS. Se os seus nósforem implementados numa sub-rede privada, então deve ter:

• Configurar uma rota predefinida para a subrede a Gateway NAT. O gateway NAT tem de ser atribuídoum endereço IP público para fornecer acesso à Internet para os nós.

• Configure várias definições necessárias para a sub-rede e adoptou as acções necessárias listadas em??? (p. 86).

173

Page 182: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioRequisito de marcação de VPC

Se os nós auto-geridos forem implementados para uma subrede pública, então a subrede tem de serconfigurada para atribuir automaticamente endereços IP públicos ou os seus casos de nó devem seratribuídos a um endereço IP público quando estiverem lançado. Se os nós geridos forem implementadospara uma subrede pública, então a subrede tem de ser configurada para atribuir automaticamenteendereços IP públicos ou os nós não receberão um endereço IP público. Determine se as sub-redespúblicas estão configuradas para atribuir automaticamente endereços IP públicos com o comando a seguir.

aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=VPC-ID" | grep 'SubnetId\|MapPublicIpOnLaunch'

Resultado

"MapPublicIpOnLaunch": false,"SubnetId": "subnet-aaaaaaaaaaaaaaaaa","MapPublicIpOnLaunch": false,"SubnetId": "subnet-bbbbbbbbbbbbbbbbb",

Em quaisquer sub-redes com MapPublicIpOnLaunch definido como false, altere a configuração paratrue.

aws ec2 modify-subnet-attribute --map-public-ip-on-launch --subnet-id subnet-aaaaaaaaaaaaaaaaa

Important

Se você usou um modelo do AWS CloudFormation do Amazon EKS (p. 168) para implantar suaVPC antes de 03/26/2020, será necessário alterar a configuração das sub-redes públicas.

Você pode definir os dois intervalos CIDR da VPC, privado (RFC 1918) e público (não RFC 1918), usadono seu cluster do Amazon EKS. Para mais informações, consulte Adicionar blocos ipv4 CIDR a um VPC noGuia do usuário da Amazon VPC. Ao escolher os blocos de roteamento inter-domínio (CIDR) sem classepara o seu VPC e subredes, certifique-se de que os blocos contêm endereços IP suficientes para todosos Amazon EC2 nós e cápsulas que planeia implementar (um endereço IP por grupo). Pode conservar autilização do endereço IP através da implementação de um gateway de trânsito com um VPC de serviçospartilhados. Para mais informações, consulte Vpcs isolados com serviços partilhados e EKS VPC routableIP address conservation standards numa rede híbrida.

O Amazon EKS plano de controlo cria até 4 interfaces de rede gerida pelo solicitante no seu VPC paracada grupo. Certifique-se de que as subredes que especificar têm endereços IP disponíveis suficientespara as interfaces de rede geridas pelo requerente e as suas cápsulas.

Requisito de marcação de VPCQuando você cria um cluster do Amazon EKS anterior à versão 1.15, o Amazon EKS marca a VPC quecontém as sub-redes especificadas da seguinte maneira para que o Kubernetes possa detectá-la:

Chave Valor

kubernetes.io/cluster/<cluster-name> shared

• Key (Chave) A . <cluster-name> o valor corresponde ao seu Amazon EKS nome do cluster.• Valor O shared o valor permite mais do que um cluster para utilizar este VPC.

Essa tag não é necessária ou criada pelo Amazon EKS para clusters 1.15. Se você implantar um cluster1.15 em uma VPC que já tenha essa tag, a tag não será removida.

174

Page 183: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioRequisito de marcação de sub-rede

Requisito de marcação de sub-redeQuando você cria o seu cluster do Amazon EKS, o Amazon EKS marca as sub-redes que você especificada seguinte maneira para que o Kubernetes possa descobri-las:

Note

Todas as sub-redes (públicas e privadas) que o cluster usa para recursos devem ter essa tag.

Chave Valor

kubernetes.io/cluster/<cluster-name> shared

• Key (Chave) A . <cluster-name> o valor corresponde ao seu Amazon EKS grupo.• Valor O shared o valor permite mais do que um cluster para utilizar esta subrede.

Requisito de marcação da sub-rede privada para load balancersinternosAs sub-redes privadas devem ser marcadas da maneira indicada a seguir para que o Kubernetes saibaque pode usar as sub-redes para load balancers internos. Se você usar um modelo do Amazon EKS AWSCloudFormation para criar a VPC após 03/26/2020, as sub-redes criadas pelo modelo serão marcadasquando forem criadas. Para obter mais informações sobre os modelos de VPC do Amazon EKS AWSCloudFormation, consulte ??? (p. 168).

Chave Valor

kubernetes.io/role/internal-elb 1

Opção de marcação de sub-rede pública para load balancersexternosÉ necessário marcar as sub-redes públicas da VPC para que o Kubernetes saiba que deve usar somenteessas sub-redes para load balancers externos, em vez de escolher uma sub-rede pública em cada Zonade disponibilidade (em ordem lexicográfica por ID de sub-rede). Se você usar um modelo do AmazonEKS AWS CloudFormation para criar a VPC após 03/26/2020, as sub-redes criadas pelo modelo serãomarcadas quando forem criadas. Para obter mais informações sobre os modelos de VPC do Amazon EKSAWS CloudFormation, consulte ??? (p. 168).

Chave Valor

kubernetes.io/role/elb 1

Considerações sobre os grupos de segurança doAmazon EKS

As secções seguintes descrevem as definições de grupo de segurança mínimas exigidas e recomendadaspara os grupos de grupo, plano de controlo e segurança do nó para o seu grupo, dependendo da versãodo seu Kubernetes e Amazon EKS versão da plataforma.

175

Page 184: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioGrupo de segurança do cluster (disponível a partir

dos clusters do Amazon EKS que executam oKubernetes 1.14 e a versão eks.3 da plataforma)

Grupo de segurança do cluster (disponível a partir dosclusters do Amazon EKS que executam o Kubernetes1.14 e a versão eks.3 da plataforma)A partir da versão Kubernetes 1.14 e da versão eks.3 da plataforma (p. 65), os clusters do AmazonEKS criam um grupo de segurança do cluster como parte da criação do cluster (ou quando o cluster éatualizado para essas versões do Kubernetes e da plataforma). Esse grupo de segurança foi projetadopara permitir que todo o tráfego do plano de controle e dos grupos de nós gerenciados (p. 92) flualivremente entre eles. Ao atribuir o grupo de segurança do cluster às interfaces de rede elástica entrecontas do plano de controle e às instâncias do grupo de nós gerenciados, não é preciso configurar regrasde grupos de segurança complexas para permitir essa comunicação. Qualquer instância ou interface derede atribuída a esse grupo de segurança pode se comunicar livremente com outros recursos usando essegrupo de segurança.

Você pode verificar se há um grupo de segurança de cluster para seu cluster no Console degerenciamento da AWS, na seção Networking (Rede), ou com o seguinte comando da AWS CLI:

aws eks describe-cluster --name cluster_name --query cluster.resourcesVpcConfig.clusterSecurityGroupId

Se o seu grupo estiver a correr Kubernetes versão 1.14 e versão da plataforma (p. 65) eks.3 ou posterior,recomendamos que adicione o grupo de segurança do grupo a todos os grupos de nós existentes efuturos. Para obter mais informações, consulte Grupos de segurança para a VPC no Guia do usuário daAmazon VPC. Os grupos de nós gerenciados (p. 92) do Amazon EKS são configurados automaticamentepara usar o grupo de segurança do cluster.

  Protocolo Portas. Origem Destino

Tráfego de entradarecomendado

Todos Todos Próprio  

Tráfego de saídarecomendado

Todos Todos   0.0.0.0/0

Restringir o tráfego do grupo

Se precisar de limitar as portas abertas entre o plano de controlo e os nós, o grupo de segurança do grupopredefinido pode ser modificado para permitir apenas as seguintes portas mínimas necessárias. As portasmínimas necessárias são as mesmas que estavam no anterior Amazon EKS versões.

  Protocolo Port Origem Destino

Tráfego de entradamínimo

TCP 443 Security group decluster

 

Tráfego de entradamínimo

TCP 10250 Security group decluster

 

Tráfego de saídamínimo*

TCP 443   Security group decluster

Tráfego de saídamínimo*

TCP 10250   Security group decluster

176

Page 185: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioControlar grupos de segurança do plano e do nó

(para Amazon EKS mais antes do que Kubernetesversão 1.14 e versão da plataforma eks.3)

*Qualquer protocolo e portas que espera que os seus nós utilizem para comunicação entre nós devemser incluídos, se necessário. Os nós também requerem acesso à Internet de saída ao Amazon EKS paraa introspecação do cluster e registo do nó na hora de lançamento, ou que implementou as definiçõesnecessárias em ??? (p. 86). Para puxar imagens dos recipientes, precisam de acesso a Amazon S3,Amazon ECR e quaisquer outros registos de contentores que tenham de extrair imagens de, tais como odockerhub. Para mais informações, consulte Intervalos de endereços IP AWS na referência geral AWS.

Controlar grupos de segurança do plano e do nó (paraAmazon EKS mais antes do que Kubernetes versão1.14 e versão da plataforma (p. 65) eks.3)Para Amazon EKS mais antes do que Kubernetes versão 1.14 e versão da plataforma (p. 65) eks.3, oplano de controlo para comunicação de nó é configurado criando manualmente um grupo de segurançado plano de controlo e especificando esse grupo de segurança quando cria o grupo. Na criação do cluster,esse grupo de segurança é anexado às interfaces de rede elástica para todas as contas do cluster.

Note

Se utilizou a API directamente ou uma ferramenta como AWS CloudFormation para criar o seugrupo e não especificar um grupo de segurança, então o grupo de segurança predefinido para oVPC foi aplicado às interfaces de rede elástica de plano de controlo.

Você pode verificar o grupo de segurança do plano de controle do cluster no Console de gerenciamentoda AWS, na seção Networking (Rede) (listada como Additional security groups (Grupos de segurançaadicionais) ou com o seguinte comando da AWS CLI:

aws eks describe-cluster --name cluster_name --query cluster.resourcesVpcConfig.securityGroupIds

Se iniciar nós com o AWS CloudFormation modelo no Conceitos básicos de Amazon EKS (p. 3) caminhar,AWS CloudFormation modifica o grupo de segurança do plano de controlo para permitir a comunicaçãocom os nós. Amazon EKS recomenda-se vivamente que utilize um grupo de segurança dedicado paracada plano de controlo (um por grupo). Se você compartilhar um grupo de segurança do plano de controlecom outros clusters ou recursos do Amazon EKS, poderá bloquear ou interromper as conexões com essesrecursos.

O grupo de segurança dos nós e o grupo de segurança da comunicação do plano de controle com os nósforam configurados para impedir a comunicação com portas privilegiadas nos nós. Se seus aplicativosprecisarem de acesso adicional de entrada ou de saída no plano de controle ou nos nós, você deveráadicionar essas regras aos grupos de segurança associados ao cluster. Para obter mais informações,consulte Grupos de segurança da VPC no Guia do usuário da Amazon VPC.

Note

Para permitir a funcionalidade de proxy em portas privilegiadas ou para executar os testes deconformidade do CNCF você mesmo, edite os grupos de segurança do plano de controle e dosnós. O grupo de segurança no lado dos nós deve permitir o acesso de entrada para as portas 0a 65535 no plano de controle, e o lado do plano de controle deve permitir o acesso de saída aosnós nas portas 0 a 65535.

Grupo de segurança do plano de controle

  Protocolo Intervalo de portas Origem Destino

Tráfego de entradamínimo

TCP 443 Todos os gruposde segurança denós

 

177

Page 186: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioControlar grupos de segurança do plano e do nó

(para Amazon EKS mais antes do que Kubernetesversão 1.14 e versão da plataforma eks.3)

  Protocolo Intervalo de portas Origem DestinoQuando pontode avaliação docluster acessoprivado (p. 49)está activado:Quaisquer gruposde segurança quegerem tráfegode cliente deservidor API(como kubectlcomandos numorganizador debasras dentro doVPC do seu grupo)

Tráfego de entradarecomendado

TCP 443 Todos os gruposde segurança denós

Quando pontode avaliação docluster acessoprivado (p. 49)está activado:Quaisquer gruposde segurança quegerem tráfegode cliente deservidor API(como kubectlcomandos numorganizador debasras dentro doVPC do seu grupo)

 

Tráfego de saídamínimo*

TCP 10250   Todos os gruposde segurança denós

Tráfego de saídarecomendado

TCP 1025-65535   Todos os gruposde segurança denós

Grupo de segurança do nó

  Protocolo Intervalo de portas Origem Destino

Tráfego mínimo deentrada (de outrosnós)

Qualquer protocoloque espera que osseus nós utilizempara comunicaçãoentre nós

Quaisquer portasque espera que osseus nós utilizempara comunicaçãoentre nós

Todos os gruposde segurança denós

 

178

Page 187: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioRedes de pods (CNI)

  Protocolo Intervalo de portas Origem Destino

Tráfego de entradamínimo (do planode controle)

TCP 10250 Grupo desegurança doplano de controle

 

Tráfego de entradarecomendado

Todos

TCP

Todos

443, 1025-65535

Todos os gruposde segurança denós

Grupo desegurança doplano de controle

 

Tráfego de saídamínimo*

TCP 443   Grupo desegurança doplano de controle

Tráfego de saídarecomendado

Todos Todos   0.0.0.0/0

*Os nós também requerem acesso ao Amazon EKS API para a introspecação do cluster e registo denódulo no momento de lançamento, quer através de parâmetros de avaliação de Internet ou VPC.Para extrair imagens de contêiner, eles exigem acesso às APIs do Amazon S3 e do Amazon ECR (equaisquer outros registros de contêiner, como o DockerHub). Para mais informações, consulte Intervalosde endereços IP AWS no AWS General Reference e the section called “Clusters privados” (p. 86).

Se tiver mais do que um grupo de segurança associado aos seus nós, então um dos grupos de segurançatem de ter a seguinte etiqueta aplicada. Se tiver apenas um grupo de segurança associado aos seus nós,então a etiqueta é opcional. Para obter mais informações sobre marcação, consulte Trabalhar com tagsusando o console (p. 250).

Chave Valor

kubernetes.io/cluster/<cluster-name> owned

Redes de pods (CNI)O Amazon EKS oferece suporte a redes de VPC nativas por meio do plug-in Container Network Interface(CNI) da Amazon VPC para Kubernetes. O uso desse plug-in CNI permite que os pods do Kubernetestenham o mesmo endereço IP dentro do pod como têm na rede da VPC. Esse plug-in CNI é um projeto decódigo aberto que é mantido no GitHub. O plug-in CNI da Amazon VPC é totalmente compatível para usoem clusters do Amazon EKS e do Kubernetes autogerenciados na AWS.

Note

O Kubernetes aproveita a CNI (Container Networking Interface), permitindo configurações derede configuráveis. O plug-in CNI da Amazon VPC pode não atender aos requisitos para todos oscasos de uso. O Amazon EKS mantém uma rede de parceiros que oferecem soluções alternativasde CNI com opções de suporte comerciais. Para obter mais informações, consulte the sectioncalled “Plug-ins CNI compatíveis alternativos” (p. 195).

179

Page 188: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVariáveis de configuração do CNI

O plug-in CNI é responsável por alocar endereços IP da VPC para nós do Kubernetes e configurar asredes necessárias para pods em cada nó. O plug-in consiste em dois componentes principais:

• O daemon L-IPAM é responsável por anexar interfaces de rede elástica a instâncias, atribuir endereçosIP secundários a interfaces de rede elástica e manter um "grupo quente" de endereços IP em cada nópara atribuição a pods do Kubernetes quando são programados.

• O plug-in CNI em si é responsável por conectar a rede do host (por exemplo, configurando as interfacese os pares virtuais de Ethernet) e por adicionar a interface correta ao namespace do pod.

Para obter mais informações sobre o design e a configuração de redes, visite Plug-in CNI para redes doKubernetes por meio da AWS VPC.

Limitações de interfaces de rede elástica e de endereços IP secundários por tipos de instância do AmazonEC2 são aplicáveis. Em geral, instâncias maiores podem oferecer suporte a mais endereços IP. Para obtermais informações, consulte Endereços IP por interface de rede por tipo de instância no Guia do usuário doAmazon EC2 para instâncias do Linux.

Tópicos• Variáveis de configuração do CNI (p. 180)• Conversão de endereços de rede de fonte externa (Source Network Address Translation –

SNAT) (p. 186)• Rede personalizada do CNI (p. 188)• Assistente de métricas da CNI (p. 191)• Plug-in CNI da Amazon VPC para atualizações do Kubernetes (p. 194)• Plug-ins CNI compatíveis alternativos (p. 195)

Variáveis de configuração do CNIO plug-in CNI da Amazon VPC para o Kubernetes oferece suporte a várias opções de configuração, quesão definidas por meio de variáveis de ambiente. As variáveis de ambiente a seguir estão disponíveis, etodas são opcionais.

180

Page 189: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVariáveis de configuração do CNI

AWS_VPC_CNI_NODE_PORT_SUPPORT

Tipo – booliano

Predefinição – true

Especifica se NodePort os serviços são ativados na interface de rede primária de um nó. Isso requerregras iptables adicionais e que o filtro de caminho reverso do kernel na interface primária sejadefinido como loose.

AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG

Tipo – booliano

Predefinição – false

Especifica que os seus grupos podem utilizar subredes e grupos de segurança, dentro domesmo VPC como recursos do seu plano de controlo, que são independentes do seu gruporesourcesVpcConfig. Por predefinição, as cápsulas partilham os mesmos grupos de subredee segurança como a interface principal do nó. Definir esta variável para true causas ipamD parautilizar os grupos de segurança e subredes num nó ENIConfig para a atribuição de interface derede elástica. Tem de criar um ENIConfig definição de recursos personalizados para cada subnetque as suas cápsulas irão residir e, em seguida, anotar cada nó para utilizar um ENIConfig (váriosnós podem ser anotados com o mesmo ENIConfig). Os nós só podem ser anotados com um únicoENIConfig ao mesmo tempo e a subrede no ENIConfig deve pertencer ao mesmo Zona dedisponibilidade que o nó reside em. Para obter mais informações, consulte Rede personalizada doCNI (p. 188).

ENI_CONFIG_ANNOTATION_DEF

Tipo – string

Predefinição – k8s.amazonaws.com/eniConfig

Especifica um nome de chave de anotação de nó. Deve ser utilizado quandoAWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true. O valor da anotação será utilizado para definirENIConfig nome. As anotações têm precedência sobre rótulos.

ENI_CONFIG_LABEL_DEF

Tipo – string

Predefinição – k8s.amazonaws.com/eniConfig

Especifica um nome de chave de rótulo de nó. Deve ser utilizado quandoAWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true. O valor da etiqueta será utilizado para definirENIConfig nome. As anotações terão precedência sobre rótulos. Para usar rótulos, certifique-se de que uma anotação com a chave k8s.amazonaws.com/eniConfig esteja definida e queum valor para a chave de anotação ENI_CONFIG_ANNOTATION_DEF não esteja definido no nó.Para seleccionar um ENIConfig com base em Zona de disponibilidade, defina isto para failure-domain.beta.kubernetes.io/zone e crie um ENIConfig recurso personalizado para cada Zonade disponibilidade, como us-east-1a. Para mais informações, consulte Rede personalizada doCNI (p. 188).

AWS_VPC_ENI_MTU – v1.6.0 e posterior

Tipo – inteiro

Predefinição – 9001

Usado para configurar o tamanho da MTU para ENIs anexadas. O intervalo válido é de 576 a 9001.

181

Page 190: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVariáveis de configuração do CNI

AWS_VPC_K8S_CNI_EXTERNALSNAT

Tipo – booliano

Predefinição – false

Especifica se um gateway NAT externo deve ser usado para fornecer SNAT de endereços IP ENIsecundários. Se definida como true, a regra iptables de SNAT e a regra de IP fora da VPC nãoserão aplicadas, e essas regras serão removidas se já tiverem sido aplicadas.

Desative a SNAT se precisar permitir a comunicação de entrada para os pods de VPNs externas,conexões diretas e VPCs externas e os pods não precisarem acessar a Internet diretamente por umGateway da Internet. Os nós devem estar em execução em uma sub-rede privada e conectados àInternet por meio de um Gateway NAT da AWS ou outro dispositivo NAT externo.

Para obter mais informações, consulte Conversão de endereços de rede de fonte externa (SourceNetwork Address Translation – SNAT) (p. 186).

AWS_VPC_K8S_CNI_RANDOMIZESNAT

Tipo – string

Predefinição – hashrandom

Valores válidos – hashrandom, prng, none

Especifica se a regra iptables de SNAT deve randomizar as portas de saída para conexões. Deveser utilizado quando AWS_VPC_K8S_CNI_EXTERNALSNAT=false. Quando ativado (hashrandom)o --random será adicionado ao SNAT iptables regra. Para usar uma geração de númerospseudoaleatórios, em vez de baseada em hash (--random-fully), use prng para a variável deambiente. Para versões antigas de iptables que não suportam --random-fully, esta opção irávoltar a --random. Desativar (none) esta funcionalidade se confiar na atribuição sequencial de portaspara ligações de saída.

Note

Quaisquer opções exceto none farão com que as conexões de saída sejam atribuídas a umaporta de origem que não faça necessariamente parte do intervalo de portas efêmeras definidono nível do SO (/proc/sys/net/ipv4/ip_local_port_range). Isso será relevantese você tiver NACLs restringindo o tráfego com base no intervalo de portas encontrado emip_local_port_range.

AWS_VPC_K8S_CNI_EXCLUDE_SNAT_CIDRS – v1.6.0 e posterior

Tipo – string

Padrão – vazio

Especifique uma lista separada por vírgulas de CIDRs IPv4 para excluir do SNAT. Paracada item na lista, uma regra iptables e uma regra de IP fora da VPC serão aplicadas.Se um item não for um intervalo IPv4 válido, ele será ignorado. Isso deve ser usado quandoAWS_VPC_K8S_CNI_EXTERNALSNAT=false.

WARM_ENI_TARGET

Tipo – inteiro

Predefinição – 1

Especifica o número de interfaces de rede elástica (gratuita e todos os seus endereços IP disponíveis)que o daemon ipamD deve tentar manter disponíveis para a atribuição de pod no nó. Por padrão, oipamD tenta manter uma interface de rede elástica e todos os seus endereços IP disponíveis para aatribuição de pod.

182

Page 191: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVariáveis de configuração do CNI

Note

O número de endereços IP por interface de rede varia de acordo com o tipo de instância.Para obter mais informações, consulte Endereços IP por interface de rede por tipo deinstância no Guia do usuário do Amazon EC2 para instâncias do Linux.

Por exemplo, uma m4.4xlarge é executada com uma interface de rede e 30 endereços IP. Se cincopods forem colocados no nó e cinco endereços IP livres forem removidos do endereço IP do grupopassivo, o ipamD tentará alocar mais interfaces até que as interfaces livres WARM_ENI_TARGETestejam disponíveis no nó.

Note

Se WARM_IP_TARGET estiver definida, essa variável de ambiente será ignorada e ocomportamento WARM_IP_TARGET será usado em seu lugar.

WARM_IP_TARGET

Tipo – inteiro

Padrão – nenhum

Especifica o número de interfaces de endereços IP que o daemon ipamD deve tentar manterdisponíveis para a atribuição de pod no nó. Por exemplo, se WARM_IP_TARGET estiver definido como10 e, em seguida, ipamD tenta manter 10 endereços IP livres disponíveis a todo momento. Se asinterfaces de rede elástica no nó não conseguirem fornecer esses endereços livres, ipamD tentaráalocar mais interfaces até que os endereços IP WARM_IP_TARGET livres estejam disponíveis.

Note

Essa variável de ambiente substitui o comportamento WARM_ENI_TARGET.MINIMUM_IP_TARGET – v1.6.0 e posterior

Tipo – inteiro

Padrão – nenhum

Especifica o número de endereços IP totais que o ipamD o daemon deve tentar atribuir para atribuiçãode pod no nó. MINIMUM_IP_TARGET comporta de forma idêntica a WARM_IP_TARGET, exceto que emvez de definir um número alvo de endereços IP gratuitos para manter sempre disponível, define umnúmero alvo para um piso sobre quantos endereços IP totais são atribuídos.

MINIMUM_IP_TARGET é para pré-dimensionamento e WARM_IP_TARGET é para dimensionamentodinâmico. Por exemplo, suponha que um cluster tenha uma densidade de pod esperada deaproximadamente 30 pods por nó. Se WARM_IP_TARGET estiver definido como 30 para garantir quehaja IPs suficientes inicialmente alocados pela CNI, 30 pods serão implantados no nó. A CNI alocará30 IPs adicionais, de um total de 60, acelerando o esgotamento de IP nas sub-redes relevantes. Se,em vez disso, MINIMUM_IP_TARGET estivesse definido como 30 e WARM_IP_TARGET como 2, apósos 30 pods serem implantados, a CNI alocaria 2 IPs adicionais. Isso ainda fornece elasticidade, masusa aproximadamente metade do número de IPs que usar WARM_IP_TARGET sozinho (32 endereçosIP versus 60 endereços IP).

Isso também melhora a confiabilidade do cluster reduzindo o número de chamadas necessárias paraalocar ou desalocar endereços IP privados, o que pode ser limitado, especialmente em momentosrelacionados ao dimensionamento.

MAX_ENI

Tipo – inteiro

Padrão – nenhum

183

Page 192: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVariáveis de configuração do CNI

Especifica o número máximo de ENIs que serão associadas ao nó. Quando MAX_ENI não estiverdefinido ou for menor ou igual a 0, a configuração não será usada, e o número máximo de ENIssempre será igual ao número máximo para o tipo de instância em questão. Mesmo quando MAX_ENI éum número positivo, ele é limitado pelo número máximo para o tipo de instância.

AWS_VPC_K8S_CNI_LOGLEVEL

Tipo – string

Padrão – DEBUG

Valores válidos – DEBUG, INFO, WARN, ERROR ou FATAL (não diferencia maiúsculas e minúsculas)

Especifica o nível de log para ipamd.AWS_VPC_K8S_CNI_LOG_FILE

Tipo – string

Padrão – não definido

Valores válidos: {, } stdout ou um caminho de ficheiro

Especifica onde escrever a saída de registo de ipamd. Pode especificar stdout ou substituir oficheiro predefinido, como /var/log/aws-routed-eni/ipamd.log.

AWS_VPC_K8S_PLUGIN_LOG_FILE

Tipo – string

Padrão – não definido

Valores válidos – stdout ou um caminho de arquivo.

Especifica onde gravar a saída de log para o plugin aws-cni. É possível especificar stdout ousubstituir o arquivo padrão, como /var/log/aws-routed-eni/plugin.log.

AWS_VPC_K8S_PLUGIN_LOG_LEVEL

Tipo – string

Padrão – DEBUG

Valores válidos – DEBUG, INFO, WARN, ERROR ou FATAL (não diferencia maiúsculas e minúsculas)

Especifica o nível de log para o plugin aws-cni.INTROSPECTION_BIND_ADDRESS

Tipo – string

Predefinição – 127.0.0.1:61679

Especifica o endereço de vinculação para o endpoint de introspecção. Um soquete de domínio Unixpode ser especificado com o prefixo unix: antes do caminho do soquete.

DISABLE_INTROSPECTION

Tipo – booliano

Padrão – falso

Especifica se os parâmetros de avaliação de introspection são desativados num nó. Definir isso comotrue reduzirá as informações de depuração que é possível obter do nó ao executar o script aws-cni-support.sh.

184

Page 193: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVariáveis de configuração do CNI

DISABLE_METRICS

Tipo – booliano

Padrão – falso

Especifica se o parâmetro de avaliação de métrica Prometheus está desativado ou não para ipamd.Por predefinição, as métricas são publicadas em :61678/metrics.

AWS_VPC_K8S_CNI_VETHPREFIX

Tipo – string

Predefinição – eni

Especifica o prefixo veth usado para gerar o nome do dispositivo veth do lado do host para o CNI. Oprefixo pode ter no máximo quatro caracteres.

ADDITIONAL_ENI_TAGS – v1.6.0 e posterior

Tipo – string

Predefinição – {}

Valores de exemplo – {"tag_key": "tag_val"}

Os metadados aplicados a ENIs ajudam você a categorizar e organizar seus recursos parafaturamento ou outros fins. Cada tag consiste em uma chave definida personalizada e um valoropcional. As chaves de tag podem ter um tamanho máximo de 128 caracteres. Os valores das tagspodem ter um tamanho máximo de 256 caracteres. As tags serão adicionadas a todas as ENIs nohost.

Important

As tags personalizadas não devem conter o prefixo k8s.amazonaws.com, pois ele estáreservado. Se a tag contiver k8s.amazonaws.com, a adição da tag será ignorada.

CLUSTER_NAME

Tipo – string

Predefinição – ""

Especifica o nome do cluster com o qual marcar ENIs alocados.

Tags de ENI relacionadas à alocação

Este plugin interage com as seguintes tags em ENIs:• cluster.k8s.amazonaws.com/name

• node.k8s.amazonaws.com/instance_id

• node.k8s.amazonaws.com/no_manage

Tag do nome do cluster

A tag cluster.k8s.amazonaws.com/name será definida como o nome do cluster do daemonsetaws-node que criou o ENI.

Tag de ID de instância

A tag node.k8s.amazonaws.com/instance_id será definida como o ID da instância aws-nodeque alocou esse ENI.

185

Page 194: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioSNAT externa

Sem tag de gerenciamento

A tag node.k8s.amazonaws.com/no_manage é lida pelo daemonset aws-node para determinarse um ENI associado à máquina não deve ser configurado nem usado para endereços IP privados.Essa tag não é definida pelo próprio plugin CNI, mas pode ser definida por um usuário para indicarque um ENI é destinado a pods de rede do host, ou para algum outro processo não relacionado aoKubernetes.

Note

Associar um ENI com a tag no_manage resultará em um valor incorreto para a opçãode configuração --max-pods do kubelet. Considere também atualizar as opções deconfiguração MAX_ENI e --max-pods neste plugin e no kubelet, respectivamente, seestiver usando dessa tag.

(Observações)

O L-IPAMD (aws-node monmonset) em cada nó requer acesso ao servidor API Kubernetes. Seele não conseguir acessar o servidor de API do Kubernetes, o ipamD será encerrado, e o CNI nãoserá capaz de obter nenhum endereço IP para pods. Como confirmar se o L-IPAMD tem acesso aoservidor de API do Kubernetes.

kubectl get svc kubernetes

Resultado

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.0.0.1 <none> 443/TCP 29d

SSH num nó para verificar se o nó pode chegar ao servidor API.

telnet 10.0.0.1 443

Resultado

Trying 10.0.0.1...Connected to 10.0.0.1.Escape character is '^]'.

Se você receber a última linha de saída, o servidor de API do Kubernetes estará acessível.

Conversão de endereços de rede de fonte externa(Source Network Address Translation – SNAT)A comunicação dentro de uma VPC (por exemplo, de pod para pod) é direta entre endereços IP privados enão requer conversão de endereço de rede de origem (SNAT). Quando o tráfego está destinado para umendereço fora do VPC, o Amazon VPC Plugin CNI para Kubernetes traduz o endereço IP privado de cadagrupo para o endereço IP privado principal atribuído ao interface de rede elástica (interface de rede) doAmazon EC2 nó em que o grupo está em execução, por predefinição. SNAT:

• Permite que os pods se comuniquem de forma bidirecional com a Internet. O nó deve estar num sub-rede pública e têm um público ou elástico Endereço IP atribuído ao endereço IP privado principal da suainterface de rede principal. O tráfego é convertido de e para o endereço IP público ou elástico e roteadode e para a Internet por um gateway da Internet, conforme mostrado na imagem a seguir.

186

Page 195: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioSNAT externa

O SNAT é necessário porque o gateway da Internet apenas sabe como traduzir entre o endereço IPprincipal privado e público ou elástico atribuído à interface de rede elástica primária do Amazon EC2 nóde instância que as cápsulas estão a executar em.

• Impede um dispositivo noutros espaços de endereços IP privados (por exemplo, Martelamento deVPC, VPC de trânsito, ou Ligação directa) de comunicar diretamente a um grupo que não tenha sidoatribuído a um endereço IP privado principal da interface de rede elástica primária do Amazon EC2 nóde instância.

Se a Internet ou os dispositivos noutros espaços de endereços IP privados tiverem de comunicar comum grupo que não tenha atribuído o endereço IP privado principal atribuído à interface de rede elásticaprimária do Amazon EC2 nó de instância em que o grupo está a ser executado, depois:

• O nó deve ser implementado numa subrede privada que tenha um caminho para um Dispositivo NATnuma subrede pública.

• É necessário habilitar a SNAT externa no DaemonSet aws-node do plug-in CNI com o comando aseguir:

kubectl set env daemonset -n kube-system aws-node AWS_VPC_K8S_CNI_EXTERNALSNAT=true

Assim que o SNAT externo estiver activado, o plugin CNI não traduz um endereço IP privado de um grupopara o endereço IP privado principal atribuído à interface de rede elástica primária do Amazon EC2 o nóde instância que o grupo está a ser executado quando o trânsito está destinado para um estadiamentofora do VPC. O tráfego do pod para a Internet é convertido externamente para e do endereço IP públicodo dispositivo NAT e encaminhado para e da Internet por um gateway da Internet, conforme exibido naimagem a seguir.

187

Page 196: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioRede personalizada do CNI

Rede personalizada do CNIPor predefinição, quando são atribuídas novas interfaces de rede para as cápsulas, ipamd utiliza os gruposde segurança da interface de rede elástica primária do nó (ENI) e subrede. No entanto, há casos de usoem que as interfaces de rede do pod devem usar um grupo de segurança ou sub-rede diferente na mesmaVPC como o grupo de segurança do plano de controle. Por exemplo, .

• Há um número limitado de endereços IP disponíveis em uma sub-rede. Isso limita o número de pods quepodem ser criados no cluster. A utilização de diferentes subredes para cápsulas permite-lhe aumentar onúmero de endereços IP disponíveis.

• Por motivos de segurança, os pods devem usar diferentes grupos de segurança ou sub-redes do que onó da interface de rede primária.

• Os nós são configurados em sub-redes públicas e quer que as cápsulas sejam colocadas em sub-redesprivadas utilizando um NAT Gateway. Para obter mais informações, consulte Conversão de endereçosde rede de fonte externa (Source Network Address Translation – SNAT) (p. 186).

Note

É possível configurar redes personalizadas para grupos de nós autogerenciados, mas nãopara grupos de nós gerenciados. Os casos de uso discutidos neste tópico exigem o plug-inCNI da Amazon VPC para Kubernetes versão 1.4.0 ou posterior. Para verificar sua versãodo CNI e atualizar se necessário, consulte Plug-in CNI da Amazon VPC para atualizações doKubernetes (p. 194).

A ativação de uma rede personalizada remove eficazmente uma interface de rede elástica disponível (etodos os endereços IP disponíveis para as cápsulas) de cada nó que o utiliza. A interface de rede primáriapara o nó não é utilizada para colocação de pod quando uma rede personalizada está ativada.

Para configurar a rede personalizada do CNI

1. Associar um bloco CIDR secundário à VPC do cluster. Para mais informações, consulte Associar umbloco CIDR secundário ipv4 com o seu VPC no Guia do usuário da Amazon VPC.

2. Crie uma subrede no seu VPC para cada Zona de disponibilidade, usando o seu bloco CIDRsecundário. As suas sub-redes personalizadas devem ser de um bloco CIDR VPC diferente do que a

188

Page 197: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioRede personalizada do CNI

subrede que os seus nós foram lançados em. Para obter mais informações, consulte Criar uma sub-rede na VPC no Guia do usuário da Amazon VPC.

3. Defina a variável de ambiente AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true como true noDaemonSet aws-node:

kubectl set env daemonset aws-node -n kube-system AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true

4. Visualize a versão do CNI instalada atualmente.

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

Resultado

amazon-k8s-cni:1.6.3

5. Se você tiver a versão 1.3 ou posterior do CNI instalada, poderá passar para a etapa 6. Defina umnovo recurso ENIConfig personalizado para seu cluster.

a. Crie um arquivo chamado ENIConfig.yaml e cole o conteúdo a seguir nesse arquivo:

apiVersion: apiextensions.k8s.io/v1beta1kind: CustomResourceDefinitionmetadata: name: eniconfigs.crd.k8s.amazonaws.comspec: scope: Cluster group: crd.k8s.amazonaws.com version: v1alpha1 names: plural: eniconfigs singular: eniconfig kind: ENIConfig

b. Aplique o arquivo ao cluster usando o seguinte comando:

kubectl apply -f ENIConfig.yaml

6. Crie um recurso ENIConfig personalizado para cada sub-rede na qual você deseja programar pods.

a. Crie um arquivo exclusivo para cada configuração de interface de rede elástica. Cada ficheirotem de incluir o conteúdo abaixo com um valor único para name. Recomendamos vivamentea utilização de um valor para name que corresponde ao Zona de disponibilidade da subrede,uma vez que isto torna mais simples a implementação de grupos de escala automática multi-AZ (consulte o passo 6c abaixo). Neste exemplo, será criado um arquivo nomeado como us-west-2a.yaml. Substituir o example values para name, subnet, e securityGroups comos seus próprios valores. Neste exemplo, seguimos as práticas recomendadas e definimos o valorde name para o Zona de disponibilidade em que está a sub-rede. Se você não tiver um grupode segurança específico que deseja anexar para os pods, poderá deixar esse valor vazio porenquanto. Mais tarde, irá especificar o grupo de segurança do nó no eniconfig.

Note

Cada combinação de sub-rede e grupo de segurança requer seu próprio recursopersonalizado.

apiVersion: crd.k8s.amazonaws.com/v1alpha1kind: ENIConfig

189

Page 198: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioRede personalizada do CNI

metadata: name: us-west-2aspec: securityGroups: - sg-0dff111a1d11c1c11 subnet: subnet-011b111c1f11fdf11

b. Aplique cada arquivo de recursos personalizados que você criou ao seu cluster com o seguintecomando:

kubectl apply -f us-west-2a.yaml

c. (Opcional, mas recomendado para váriosZona de disponibilidade grupos de nós) Porpredefinição, Kubernetes aplica o Zona de disponibilidade de um nó para o failure-domain.beta.kubernetes.io/zone etiqueta. Se tiver chamado os recursos personalizadosdo seu eniconfig após cada Zona de disponibilidade no seu VPC, conforme recomendadono passo 6a acima, pode permitir que a Kubernetes aplique automaticamente o eniconfigcorrespondente para o nó Zona de disponibilidade com o seguinte comando.

kubectl set env daemonset aws-node -n kube-system ENI_CONFIG_LABEL_DEF=failure-domain.beta.kubernetes.io/zone

Note

Certifique-se de que não haja uma anotação com a chave k8s.amazonaws.com/eniConfig para a variável de ambiente ENI_CONFIG_ANNOTATION_DEF naespecificação do contêiner para o daemonset aws-node. Se existir, ela substituirá ovalor ENI_CONFIG_LABEL_DEF e deve ser removida. Você pode verificar se a variávelestá definida com o comando kubectl describe daemonset aws-node -n kube-system | grep ENI_CONFIG_ANNOTATION_DEF. Se nenhuma saída for retornada, avariável não está definida.

7. Criar um novo grupo de nó auto-gerido para cada ENIConfig que configurou.

a. Determine o número máximo de cápsulas que podem ser programadas em cada nó utilizando aseguinte fórmula.

maxPods = (number of interfaces - 1) * (max IPv4 addresses per interface - 1) + 2

Por exemplo, o tipo de instância m5.large oferece suporte para três interfaces de rede e dezendereços IPv4 por interface. Ao inserir os valores na fórmula, a instância pode oferecer suporte aaté 20 pods, conforme mostrado no cálculo a seguir.

maxPods = (3 - 1) * (10 - 1) + 2 = 20

Para obter mais informações sobre o número máximo de interfaces de rede por tipo de instância,consulte Endereços IP por interface de rede por tipo de instância no Guia do usuário do AmazonEC2 para instâncias do Linux.

b. Siga os passos no Nós autogerido separador de Iniciar auto-gestão Amazon Linux 2 nós (p. 101)para criar cada novo grupo de nó autogerido. Depois de abrir o modelo do AWS CloudFormation,insira valores conforme descrito nas instruções. No campo BootstrapArguments insira o valor aseguir.

--use-max-pods false --kubelet-extra-args '--max-pods=20'

190

Page 199: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAssistente de métricas da CNI

8. Depois dos seus grupos de nó serem criados, registe o grupo de segurança que foi criado para cadagrupo de nó e aplique-o ao seu grupo ENIConfig. Editar cada ENIConfig com o seguinte comando,substituir eniconfig-name com o seu valor:

kubectl edit eniconfig.crd.k8s.amazonaws.com/eniconfig-name

Se você seguiu as práticas recomendadas das etapas 6a e 6c acima, o eniconfig-namecorresponderá ao nome Zona de disponibilidade.

A seção spec deve ser semelhante a:

spec: securityGroups: - sg-0dff222a2d22c2c22 subnet: subnet-022b222c2f22fdf22

9. Se tiver quaisquer nódulos no seu grupo que tenham tido cápsulas sobre eles antes de concluireste procedimento, deve terminá-los. Somente novos nós que são registrados com o rótulok8s.amazonaws.com/eniConfig usarão o novo recurso de redes personalizadas.

Assistente de métricas da CNIO auxiliar de métricas da CNI é uma ferramenta que pode ser usada para remover informações dainterface de rede elástica e de endereço IP, agregar métricas no nível do cluster e publicar as métricas noAmazon CloudWatch.

Ao gerenciar um cluster do Amazon EKS, você pode querer saber quantos endereços IP foram atribuídos equantos estão disponíveis. O assistente de métricas da CNI ajuda você a:

• Acompanhar essas métricas ao longo do tempo• Solucionar e diagnosticar problemas relacionados à atribuição e à recuperação de IP• Fornecer insights para planejamento da capacidade

Quando um nó é provisionado, o plugin CNI atribui automaticamente um conjunto de endereços IPsecundários da subrede de nó à interface de rede elástica primária (eth0). Este conjunto de endereçosIP é conhecido como piscina quente, e o seu tamanho é determinado pelo tipo de instância de nó. Porexemplo, uma instância c4.large pode oferecer suporte a três interfaces de rede elástica e a noveendereços IP por interface. O número de endereços IP disponíveis para um determinado pod é um amenos que o máximo (de dez), pois um dos endereços IP é reservado para a própria interface de redeelástica. Para obter mais informações, consulte Endereços IP por interface de rede por tipo de instância noGuia do usuário do Amazon EC2 para instâncias do Linux.

À medida que o grupo de endereços IP é esgotado, o plug-in anexa automaticamente outra interfacede rede elástica à instância e aloca outro conjunto de endereços IP secundários a essa interface. Esseprocesso continua até que o nó não possa mais oferecer suporte a interfaces de rede elástica adicionais.

As métricas a seguir são coletadas para o cluster e exportadas para o CloudWatch:

• O número máximo de interfaces de rede elástica às quais o cluster pode oferecer suporte• O número de interfaces de rede elástica alocadas para os pods• O número de endereços IP atribuídos atualmente aos pods• Os números total e máximo de endereços IP disponíveis• O número de erros ipamD

191

Page 200: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAssistente de métricas da CNI

Implantar o assistente de métricas da CNIO auxiliar de métricas da CNI requer as permissões cloudwatch:PutMetricData para enviar dados demétrica ao CloudWatch. Esta secção ajuda-o a criar uma IAM com essas permissões, aplique-as na suafunção de instância de nó e, em seguida, expanda o assistente de métrica CNI.

Para criar uma política do IAM para o auxiliar de métricas da CNI

1. Crie um arquivo chamado allow_put_metrics_data.json e preencha-o com o seguintedocumento de política.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" } ]}

2. Criar um IAM política chamada CNIMetricsHelperPolicy para o seu perfil de instância de nó quepermite ao assistente de métricas do CNI efectuar chamadas para AWS em seu nome. Use comandoda AWS CLI a seguir para criar a política do IAM na conta da AWS.

aws iam create-policy --policy-name CNIMetricsHelperPolicy \--description "Grants permission to write metrics to CloudWatch" \--policy-document file://allow_put_metrics_data.json

Anote o ARN da política que é retornado.3. Obtenha o IAM nome da função para os seus nós. Use o comando a seguir para imprimir o configmap

aws-auth.

kubectl -n kube-system describe configmap aws-auth

Resultado

Name: aws-authNamespace: kube-systemLabels: <none>Annotations: <none>

Data====mapRoles:----- groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/eksctl-prod-nodegroup-standard-wo-NodeInstanceRole-GKNS581EASPU username: system:node:{{EC2PrivateDNSName}}

Events: <none>

192

Page 201: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAssistente de métricas da CNI

Registre o nome da função para qualquer valor rolearn que tenha o grupo system:nodes atribuídoa ele. No exemplo acima indicado, o nome da função é eksctl-prod-nodegroup-standard-wo-NodeInstanceRole-GKNS581EASPUÉ necessário ter um valor para cada grupo de nós no cluster.

4. Anexar o novo CNIMetricsHelperPolicy IAM política para cada um dos nós IAM funções queidentificou anteriormente com o seguinte comando, substituindo o texto vermelho com o seu AWSnúmero e nó da conta IAM nome da função.

aws iam attach-role-policy \--policy-arn arn:aws:iam::111122223333:policy/CNIMetricsHelperPolicy \--role-name eksctl-prod-nodegroup-standard-wo-NodeInstanceRole-GKNS581EASPU

Para implantar o auxiliar de métricas da CNI

• Aplique o manifesto do auxiliar de métricas da CNI com o comando a seguir.

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/cni-metrics-helper.yaml

Criar um painel de métricasDepois de implantar o auxiliar de métricas da CNI, você pode visualizar as métricas da CNI no console doCloudWatch. Este tópico ajuda você a criar um painel para visualizar as métricas da CNI do cluster.

Para criar um painel de métricas da CNI

1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.2. Na barra de navegação à esquerda, escolha Metrics (Métricas).3. Em Custom Namespaces (Namespaces personalizados), escolha Kubernetes.4. Escolha CLUSTER_ID.5. Na guia All metrics (Todas as métricas), selecione as métricas que você deseja adicionar ao painel.6. Escolha Actions (Ações) e Add to dashboard (Adicionar ao painel).7. Na seção Select a dashboard (Selecionar um painel), escolha Create new (Criar novo) e insira um

nome para o painel, como "EKS-CNI-metrics".8. Na seção Select a widget type (Selecionar um tipo de widget), escolha Number (Número).9. Na seção Customize the widget title (Personalizar o título do widget) insira um nome lógico para o

título do painel, como "EKS CNI metrics" (Métricas da CNI do EKS).10. Escolha Add to dashboard (Adicionar ao painel) para concluir. Agora, as métricas da CNI são

adicionadas a um painel que você pode monitorar, conforme mostrado abaixo.

193

Page 202: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizações do CNI

Plug-in CNI da Amazon VPC para atualizações doKubernetesQuando você executa um cluster do Amazon EKS, aplicamos uma versão recente do plug-in CNI daAmazon VPC para o Kubernetes ao cluster. A versão mais recente absoluta do plug-in está disponívelno GitHub por um curto período de carência antes de novos clusters serem alterados para usá-lo. OAmazon EKS não atualiza automaticamente o plug-in CNI em seu cluster quando novas versões foremlançadas. Para obter uma versão mais recente do plug-in CNI em clusters existentes, é necessárioatualizar manualmente o plug-in.

A versão mais recente que recomendamos é a versão 1.6.3. Você pode visualizar as diferentes versõesdisponíveis do plug-in e ler as notas de release de cada versão no GitHub.

Use os procedimentos a seguir para verificar a versão do plug-in CNI e atualizar para a versão maisrecente recomendada.

Como verificar sua versão do plug-in CNI da Amazon VPC para Kubernetes

• Use o comando a seguir para imprimir a versão do CNI de seu cluster:

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

Resultado

amazon-k8s-cni:1.6.2

Neste exemplo de saída, a versão do CNI é 1.6.2, que é anterior à versão recomendada atual, 1.6.3.Use o procedimento a seguir para atualizar o CNI.

Como atualizar o plug-in CNI da Amazon VPC para Kubernetes

• Se a versão do CNI for anterior à 1.6.3, use o comando apropriado abaixo para atualizar a versão doCNI para a versão recomendada mais recente:

• Oeste dos EUA (Oregon) (us-west-2)

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni.yaml

• China (Pequim) (cn-north-1) ou China (Ningxia) (cn-northwest-1)

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni-cn.yaml

• AWS GovCloud (Leste dos EUA) (us-gov-east-1)

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni-us-gov-east-1.yaml

• AWS GovCloud (US-West) (us-gov-west-1)

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni-us-gov-west-1.yaml

194

Page 203: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPlug-ins CNI compatíveis alternativos

• Para todas as outras regiões• Baixe o arquivo de manifesto.

curl -o aws-k8s-cni.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni.yaml

• Substitua region-code no comando a seguir pela região em que seu cluster está e execute ocomando modificado para substituir o código da região no arquivo (atualmente us-west-2).

sed -i -e 's/us-west-2/region-code/' aws-k8s-cni.yaml

• Aplique o arquivo de manifesto ao seu cluster.

kubectl apply -f aws-k8s-cni.yaml

Plug-ins CNI compatíveis alternativosOficialmente, o Amazon EKS é compatível somente com o plug-in CNI da Amazon VPC (p. 179). Noentanto, o Amazon EKS executa o Kubernetes upstream e é compatível com o Kubernetes certificado, demodo que plug-ins CNI alternativos funcionarão com clusters do Amazon EKS. Se você quiser usar umplug-in CNI alternativo na produção, recomendamos que obtenha suporte comercial ou tenha a experiênciainterna para solucionar problemas e contribuir com correções para o projeto de plug-in CNI de códigoaberto.

O Amazon EKS mantém relações com uma rede de parceiros que oferecem suporte para plug-ins CNIcompatíveis alternativos. Consulte a documentação dos parceiros a seguir para obter detalhes sobre asversões compatíveis do Kubernetes e as qualificações e testes realizados.

Parceiro Produto Documentação

Tigera Calico Instruções de instalação:

Isovalent Cilium Instruções de instalação:

Weaveworks Weave Net Instruções de instalação:

O Amazon EKS tem como objetivo oferecer uma ampla variedade de opções para cobrir todos os casos deuso. Se você desenvolver um plug-in Kubernetes CNI compatível comercialmente que não esteja listadoaqui, entre em contato com nossa equipe de parceiros em [email protected] paraobter mais informações.

Instalar ou atualizar o CoreDNSOs clusters do Amazon EKS oferecem suporte ao CoreDNS com o Kubernetes versão 1.14 ou posterior.Clusters que foram criados com a versão 1.10 do Kubernetes enviados com o kube-dns como o provedorde descoberta de serviço e DNS padrão. Se você tiver atualizado a partir de um cluster 1.10 e desejar usaro CoreDNS para DNS e descoberta de serviço, deverá instalar o CoreDNS e remover o kube-dns.

Para verificar se o cluster já está executando o CoreDNS, use o comando a seguir.

kubectl get pod -n kube-system -l k8s-app=kube-dns

195

Page 204: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar ou atualizar o CoreDNS

Se a saída mostra coredns nos nomes do pod, o CoreDNS já está sendo executando no cluster. Casocontrário, use o procedimento a seguir para atualizar seu provedor de descoberta de serviço e DNS paraCoreDNS.

Note

O serviço para CoreDNS ainda é chamado kube-dns para compatibilidade com versõesanteriores.

Para instalar o CoreDNS em um cluster do Amazon EKS atualizado com o kubectl

1. Adicione o seletor {"eks.amazonaws.com/component": "kube-dns"} à implantação kube-dns para o cluster. Isso impede que as duas implantações de DNS concorram para controlar o mesmoconjunto de rótulos.

kubectl patch -n kube-system deployment/kube-dns --patch \'{"spec":{"selector":{"matchLabels":{"eks.amazonaws.com/component":"kube-dns"}}}}'

2. Implante o CoreDNS no cluster.

a. Defina o endereço IP do DNS do cluster como a variável de ambiente DNS_CLUSTER_IP.

export DNS_CLUSTER_IP=$(kubectl get svc -n kube-system kube-dns -o jsonpath='{.spec.clusterIP}')

b. Defina a variável de ambiente da REGION para a region-code da AWS do cluster.

export REGION="region-code"

c. Faça download do manifesto do CoreDNS a partir do bucket de recurso do Amazon EKS.

curl -o dns.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/dns.yaml

d. Substitua os espaços reservados da variável no arquivo dns.yaml pelos valores da sua variávelde ambiente e aplique o manifesto atualizado ao cluster. O comando a seguir conclui isso em umaetapa.

cat dns.yaml | sed -e "s/REGION/$REGION/g" | sed -e "s/DNS_CLUSTER_IP/$DNS_CLUSTER_IP/g" | kubectl apply -f -

e. Obtenha o nome do pod coredns do cluster.

COREDNS_POD=$(kubectl get pod -n kube-system -l eks.amazonaws.com/component=coredns \-o jsonpath='{.items[0].metadata.name}')

f. Consulte o pod coredns para garantir que ele esteja recebendo solicitações.

kubectl get --raw /api/v1/namespaces/kube-system/pods/$COREDNS_POD:9153/proxy/metrics \| grep 'coredns_dns_request_count_total'

Note

Pode levar alguns minutos para que a saída esperada seja retornada corretamente,dependendo da taxa de solicitações de DNS no cluster.

Na saída esperada a seguir, o número 23 é o total da contagem de solicitações DNS.

196

Page 205: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAtualizar o CoreDNS

✓ HELP coredns_dns_request_count_total Counter of DNS requests made per zone, protocol and family.✓ TYPE coredns_dns_request_count_total countercoredns_dns_request_count_total{family="1",proto="udp",server="dns://:53",zone="."} 23

3. Atualize o CoreDNS para a versão recomendada para seu cluster concluindo as etapas em the sectioncalled “Atualizar o CoreDNS” (p. 197).

4. Reduza a implantação kube-dns para zero réplicas.

kubectl scale -n kube-system deployment/kube-dns --replicas=0

5. Limpe os recursos kube-dns antigos.

kubectl delete -n kube-system deployment/kube-dns serviceaccount/kube-dns configmap/kube-dns

Atualizar o CoreDNS1. Verifique a versão atual da implantação de coredns do cluster.

kubectl describe deployment coredns --namespace kube-system | grep Image | cut -d "/" -f 3

Resultado:

coredns:v1.1.3

As versões de coredns recomendadas para as versões correspondentes do Kubernetes são asseguintes:

Versão do Kubernetes 1.17 1.16 1.15 1.14

CoreDNS 1.6.6 1.6.6 1.6.6 1.6.6

2. Se a sua versão de coredns atual for 1.5.0 ou posterior, mas anterior à versão recomendada, puleesta etapa. Se a sua versão atual for anterior à 1.5.0, será necessário modificador o configmap paraque coredns use o plug-in forward, em vez do plug-in proxy.

a. Abra o configmap com o seguinte comando.

kubectl edit configmap coredns -n kube-system

b. Substitua proxy na linha a seguir por forward. Salve o arquivo e saia do editor.

proxy . /etc/resolv.conf

3. Recupere a imagem coredns atual:

kubectl get deployment coredns --namespace kube-system -o=jsonpath='{$.spec.template.spec.containers[:1].image}'

197

Page 206: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalação do Calico no Amazon EKS

4. Atualize coredns para a versão recomendada, obtendo a saída da etapa anterior e substituindo a tagde versão pela versão coredns recomendada do cluster:

kubectl set image --namespace kube-system deployment.apps/coredns \ coredns=602401143452.dkr.ecr.us-west-2.amazonaws.com/eks/coredns:v1.6.6

Instalação do Calico no Amazon EKSProject Calico é um mecanismo de políticas de rede para o Kubernetes. Com a imposição de políticasde rede do Calico, você pode implementar a segmentação de rede e o isolamento de locatário. Isso éútil em ambientes de vários locatários onde você deve isolar locatários entre si ou quando você desejacriar ambientes separados para desenvolvimento, preparação e produção. As políticas de rede sãosemelhantes aos grupos de segurança da AWS, nos quais você pode criar regras de entrada e saída derede. Em vez de atribuir instâncias a um grupo de segurança, você atribui políticas de rede para podsusando seletores de pod e rótulos. O procedimento seguinte mostra como instalar Calico nos nós Linuxno seu Amazon EKS grupo. Para instalar Calico nos nós do Windows, consulte Utilizar Calico on AmazonEKS Recipientes Windows.

Note

• O Calico não é compatível ao usar o Fargate com o Amazon EKS.• Calico adiciona regras a iptables no nó que pode ser maior prioridade do que as regras

existentes que já implementou fora da Calico. Considerar adicionar existente iptables regrasàs suas políticas Calico para evitar ter regras fora da política Calico, sobreposta por Calico.

Para instalar Calico no seu Amazon EKS Nós Linux

1. Aplique o manifesto do Calico do aws/amazon-vpc-cni-k8s Projeto do GitHub. Esse manifesto criaconjuntos de Daemon no namespace kube-system.

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/calico.yaml

2. Observe os kube-system conjuntos de Daemons e aguarde até que os calico-node conjuntos deDaemons tenham um número DESIRED desejado de pods no estado READY. Quando isso acontece, oCalico está funcionando.

kubectl get daemonset calico-node --namespace kube-system

Resultado

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEcalico-node 3 3 3 3 3 <none> 38s

Para excluir O Calico de seu cluster do Amazon EKS

• Se tiver terminado de usar o Calico no seu cluster do Amazon EKS, você poderá excluir o conjunto dedaemon com o seguinte comando:

kubectl delete -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/calico.yaml

198

Page 207: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDemonstração de Stars Policy

Demonstração de Stars PolicyEsta seção descreve a demonstração de Stars Policy fornecida pela documentação do Project Calico. Ademonstração cria um serviço de front-end, um de back-end e um de cliente no cluster do Amazon EKS.A demonstração também cria um GUI de gerenciamento que mostra os caminhos de entrada e saídadisponíveis entre cada serviço.

Antes de você criar políticas de rede, todos os serviços podem se comunicar bidirecionalmente. Depoisde aplicar as políticas da rede, pode ver que o cliente só pode comunicar com o serviço de frontend, e obackend apenas aceita o tráfego da frontend.

Como executar a demonstração de Stars Policy

1. Aplique os serviços de front-end, de back-end, de cliente e de interface do usuário de gerenciamento:

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/00-namespace.yamlkubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/01-management-ui.yamlkubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/02-backend.yamlkubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/03-frontend.yamlkubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/04-client.yaml

2. Aguarde até que todos os pods atinjam o status Running:

kubectl get pods --all-namespaces --watch

3. Para conectar-se à interface do usuário de gerenciamento, encaminhe a porta local 9001 para oserviço de management-ui em execução no cluster:

kubectl port-forward service/management-ui -n management-ui 9001

4. Abra um navegador no sistema local e aponte-o para http://localhost:9001/. Você deve ver a interfacedo usuário de gerenciamento. O nó C é o serviço de cliente, o nó F é o serviço de front-end e o nóB é o serviço de back-end. Cada nó possui acesso total à comunicação com todos os outros nós(conforme indicado pelas linhas coloridas em negrito).

199

Page 208: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDemonstração de Stars Policy

5. Aplique as seguintes políticas de rede para isolar os serviços uns dos outros:

kubectl apply -n stars -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/default-deny.yamlkubectl apply -n client -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/default-deny.yaml

6. Atualize o navegador. Você verá que a interface do usuário de gerenciamento não pode mais acessarnenhum dos nós, portanto, eles não são mostrados na interface do usuário.

7. Aplique as seguintes políticas de rede para permitir que a interface do usuário de gerenciamentoacesse os serviços:

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/allow-ui.yamlkubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/allow-ui-client.yaml

8. Atualize o navegador. Você verá que a interface do usuário de gerenciamento pode acessar os nósnovamente, mas os nós não podem se comunicar uns com os outros.

200

Page 209: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDemonstração de Stars Policy

9. Aplique a seguinte política de rede para permitir o tráfego do serviço de front-end para o serviço deback-end:

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/backend-policy.yaml

10. Aplique a seguinte política de rede para permitir o tráfego do namespace client para o serviço defront-end:

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/policies/frontend-policy.yaml

201

Page 210: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDemonstração de Stars Policy

11. (Opcional) Ao concluir a demonstração, você poderá excluir seus recursos com os seguintescomandos:

kubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/04-client.yamlkubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/03-frontend.yamlkubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/02-backend.yamlkubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/01-management-ui.yamlkubectl delete -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/tutorials/stars-policy/manifests/00-namespace.yaml

Mesmo depois de eliminar os recursos, ainda pode haver iptables regras nos nós que podeminterferir de formas inesperadas com a rede de contactos no seu grupo. A única maneira segura deremover o Calico é encerrar todos os nós e reciclá-los. Para terminar todos os nós, defina a contagemdesejada do Grupo de escala automática para 0 e, em seguida, volte ao número pretendido ou termine

202

Page 211: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDemonstração de Stars Policy

simplesmente os nós. Se você não conseguir reciclar os nós, consulte Disabling and removing CalicoPolicy no repositório do Calico no GitHub para obter um procedimento de último recurso.

203

Page 212: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExpansão da amostra

ApplicationsAs suas aplicações são aplicadas em recipientes, que são expandidos em cápsulas em Kubernetes.Um grupo inclui um ou mais recipientes. Normalmente, uma ou mais cápsulas que fornecem o mesmoserviço são implementadas num serviço de Kubernetes. Assim que tiver implementado várias cápsulas quefornecem o mesmo serviço, pode:

• Amplitudes verticais para cima ou para baixo com os Kubernetes the section called “Vertical PodAutoscaler” (p. 207).

• Escala horizontal do número de cápsulas necessárias para satisfazer a procura com os Kubernetes thesection called “Horizontal Pod Autoscaler” (p. 212).

• Crie um externo (para cápsulas acessíveis à Internet) ou um interno (para cápsulas privadas)balanceador de carga (p. 215) para equilibrar a carga de tráfego em todos os grupos. O balanço decarga encaminha o tráfego na Camada 4 do modelo OSI.

• Criar um the section called “Controlador de entrada do ALB no Amazon EKS” (p. 216) para equilibrar acarga de tráfego em todos os grupos. O balanço de carga de aplicação encaminha o tráfego na Camada7 do modelo OSI.

• Se for novo para Kubernetes, este tópico ajuda-o the section called “Expansão da amostra” (p. 204).

Implementar uma aplicação Linux de amostrasNeste tópico, cria um manifesto de Kubernetes e o coloca no seu grupo.

Prerequisites

• Tem de ter um cluster de Kubernetes existente para implementar uma aplicação de amostra. Se nãotiver um grupo existente, pode implementar um Amazon EKS cluster utilizando um dos ??? (p. 3) guias.

• Tem de ter kubectl instalado no seu computador. Para obter mais informações, consulte??? (p. 233).

• kubectl tem de ser configurado para comunicar com o seu grupo. Para obter mais informações,consulte ??? (p. 226).

Para implantar um aplicativo de exemplo

1. Crie um nome homónimo de Kubernetes para a aplicação de amostras.

kubectl create namespace my-namespace

2. Crie um serviço e uma implantação do Kubernetes.

a. Salve o seguinte conteúdo no seu computador, em um arquivo chamado sample-service.yaml. Se estiver a expandir para ??? (p. 118) e, em seguida, certifique-se deque o valor para namespace corresponde ao nome que definiu no seu ??? (p. 124). Estaimplementação de amostras irá puxar uma imagem de contentor de um repositório público,colocar três instâncias do mesmo no seu grupo e criar um serviço Kubernetes com o seu próprioendereço IP, que pode ser acedido apenas a partir do cluster. Para aceder ao serviço fora dogrupo, tem de implementar um balanceador de carga (p. 215) ou Controlador de entradaALB (p. 216).

apiVersion: v1

204

Page 213: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExpansão da amostra

kind: Servicemetadata: name: my-service namespace: my-namespace labels: app: my-appspec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 80---apiVersion: apps/v1kind: Deploymentmetadata: name: my-deployment namespace: my-namespace labels: app: my-appspec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80

Para saber mais sobre Kubernetes serviços e implementações, consulte a documentaçãoKubernetes. Os recipientes no manifesto de amostras não utilizam o armazenamento de rede,mas podem ser capazes de. Para obter mais informações, consulte ??? (p. 151). Embora nãoseja implementado neste exemplo, recomendamos que crie contas de serviço Kubernetes para assuas cápsulas e associe-as a AWS IAM contas. A especificação de contas de serviço permite queas suas cápsulas tenham as permissões mínimas necessárias para interagir com outros serviços.Para obter mais informações, consulte ??? (p. 275)

b. Implantar o aplicativo

kubectl apply -f sample-service.yaml

3. Ver todos os recursos existentes no my-namespace namespace.

kubectl get all -n my-namespace

Resultado

NAME READY STATUS RESTARTS AGEpod/my-deployment-776d8f8fd8-78w66 1/1 Running 0 27mpod/my-deployment-776d8f8fd8-dkjfr 1/1 Running 0 27mpod/my-deployment-776d8f8fd8-wmqj6 1/1 Running 0 27m

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/my-service ClusterIP 10.100.190.12 <none> 80/TCP 32m

205

Page 214: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExpansão da amostra

NAME READY UP-TO-DATE AVAILABLE AGEdeployment.apps/my-deployment 3/3 3 3 27m

NAME DESIRED CURRENT READY AGEreplicaset.apps/my-deployment-776d8f8fd8 3 3 3 27m

Na saída, vê o serviço e a expansão especificados no manifesto de amostra implementado no passoanterior. Também vê três cápsulas, que devem ser especificadas 3 para replicas no manifesto deamostra. Para mais informações sobre as cápsulas, consulte Cápsulas na documentação Kubernetes.Kubernetes criou automaticamente o replicaset mas não especificado no manifesto da amostra.Para obter mais informações sobre réplicas, consulte restaurar na documentação Kubernetes.

Note

Kubernetes manterá o número de réplicas especificado no manifesto. Se esta fosse umaimplementação de produção e pretender que Kubernetes faça a escala horizontal do númerode réplicas ou escala vertical dos recursos de cálculo para as cápsulas, terá de utilizar oHorizontal Pod Autoscaler (p. 212) e o Vertical Pod Autoscaler (p. 207).

4. Ver os detalhes do serviço aplicado.

kubectl -n my-namespace describe service my-service

Saída abreviada

Name: my-serviceNamespace: my-namespaceLabels: app=my-appAnnotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"my-app"},"name":"my-service","namespace":"my-namespace"}...Selector: app=my-appType: ClusterIPIP: 10.100.190.12Port: <unset> 80/TCPTargetPort: 80/TCP...

Na saída, o valor para IP: é um endereço IP único que pode ser alcançado de qualquer grupo dentrodo grupo.

5. Ver os detalhes de uma das cápsulas que foi implementada.

kubectl -n my-namespace describe pod my-deployment-776d8f8fd8-78w66

Saída abreviada

Name: my-deployment-776d8f8fd8-78w66Namespace: my-namespacePriority: 0Node: ip-192-168-9-36.us-west-2.compute.internal/192.168.9.36...IP: 192.168.16.57IPs: IP: 192.168.16.57Controlled By: ReplicaSet/my-deployment-776d8f8fd8...Conditions: Type Status

206

Page 215: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioVertical Pod Autoscaler

Initialized True Ready True ContainersReady True PodScheduled True...Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 3m20s default-scheduler Successfully assigned my-namespace/my-deployment-776d8f8fd8-78w66 to ip-192-168-9-36.us-west-2.compute.internal...

Na saída, o valor para IP: é um IP único atribuído ao grupo do bloco CIDR atribuído à subrede queo nó está em, por predefinição. Se preferir que sejam atribuídos endereços IP a diferentes blocosCIDR do que a subrede que o nó está em, pode alterar o comportamento predefinido. Para obter maisinformações, consulte ??? (p. 188). Também pode ver que o programador Kubernetes agendou ogrupo no nó com o endereço IP 192.168.9.36.

6. Execute uma concha numa das cápsulas substituindo o value abaixo com um valor devolvido paraum dos seus grupos no passo 3.

kubectl exec -it my-deployment-776d8f8fd8-78w66 -n my-namespace -- /bin/bash

7. Ver o ficheiro de configuração do resolver DNS.

cat /etc/resolv.conf

Resultado

nameserver 10.100.0.10search my-namespace.svc.cluster.local svc.cluster.local cluster.local us-west-2.compute.internaloptions ndots:5

Na saída anterior, o valor para nameserver é o nome homónimo do grupo e é automaticamenteatribuído como servidor de nomes para qualquer grupo colocado no grupo.

8. Desligar do grupo digitando exit.9. Remova o serviço de amostras, a expansão, as cápsulas e o nome inicial.

kubectl delete namespace my-namespace

Vertical Pod AutoscalerO Vertical Pod Autoscaler do Kubernetes ajusta automaticamente as reservas de CPU e memória paraseus pods para ajudar a "dimensionar corretamente" seus aplicativos. Esse ajuste pode melhorar autilização de recursos do cluster e liberar CPU e memória para outros pods. Este tópico ajuda você aimplantar o Vertical Pod Autoscaler no cluster e verificar se ele está funcionando.

Instalar o servidor de métricasO servidor de métricas do Kubernetes é um agregador de dados de uso de recursos no cluster. Ele nãoé implantado por padrão em clusters do Amazon EKS, mas fornece métricas exigidas pelo Vertical Pod

207

Page 216: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioImplantar o Vertical Pod Autoscaler

Autoscaler. Este tópico explica como implantar o servidor de métricas do Kubernetes no cluster do AmazonEKS.

Note

Também é possível usar o Prometheus para fornecer métricas para o Vertical PodAutoscaler. Para obter mais informações, consulte Métricas do plano de controle com oPrometheus (p. 244).

Se você já tiver implantado o servidor de métricas no cluster, poderá avançar para a próxima seção. Épossível verificar o servidor de métricas com o seguinte comando.

kubectl -n kube-system get deployment/metrics-server

Se esse comando retornar um erro NotFound, você deverá implantar o servidor de métricas no cluster doAmazon EKS.

Como implantar o servidor de métricas

1. Implante o servidor de métricas com o seguinte comando:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

2. Verifique se a implantação do metrics-server está executando o número desejado de pods com oseguinte comando.

kubectl get deployment metrics-server -n kube-system

Resultado

NAME READY UP-TO-DATE AVAILABLE AGEmetrics-server 1/1 1 1 6m

Implantar o Vertical Pod AutoscalerNesta seção, você implantará o Vertical Pod Autoscaler em seu cluster.

Como implantar o Vertical Pod Autoscaler

1. Abra uma janela do terminal e navegue até o diretório onde você deseja fazer download do código-fonte do Vertical Pod Autoscaler.

2. Clone o repositório GitHub do kubernetes/autoscaler.

git clone https://github.com/kubernetes/autoscaler.git

3. Mude para o diretório vertical-pod-autoscaler.

cd autoscaler/vertical-pod-autoscaler/

4. (Opcional) Se você já tiver implantado outra versão do Vertical Pod Autoscaler, remova-a com ocomando a seguir.

./hack/vpa-down.sh

5. Implante o Vertical Pod Autoscaler no cluster com o comando a seguir.

208

Page 217: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioTestar a instalação do Vertical Pod Autoscaler

./hack/vpa-up.sh

6. Verifique se os pods do Vertical Pod Autoscaler foram criados com êxito.

kubectl get pods -n kube-system

Resultado

NAME READY STATUS RESTARTS AGEaws-node-949vx 1/1 Running 0 122maws-node-b4nj8 1/1 Running 0 122mcoredns-6c75b69b98-r9x68 1/1 Running 0 133mcoredns-6c75b69b98-rt9bp 1/1 Running 0 133mkube-proxy-bkm6b 1/1 Running 0 122mkube-proxy-hpqm2 1/1 Running 0 122mmetrics-server-8459fc497-kfj8w 1/1 Running 0 83mvpa-admission-controller-68c748777d-ppspd 1/1 Running 0 7svpa-recommender-6fc8c67d85-gljpl 1/1 Running 0 8svpa-updater-786b96955c-bgp9d 1/1 Running 0 8s

Testar a instalação do Vertical Pod AutoscalerNesta seção, você implantará um aplicativo de exemplo para verificar se o Vertical Pod Autoscaler estáfuncionando.

Como testar a instalação do Vertical Pod Autoscaler

1. Implante o exemplo hamster.yaml do Vertical Pod Autoscaler com o comando a seguir.

kubectl apply -f examples/hamster.yaml

2. Obtenha os pods do aplicativo de exemplo hamster.

kubectl get pods -l app=hamster

Resultado

hamster-c7d89d6db-rglf5 1/1 Running 0 48shamster-c7d89d6db-znvz5 1/1 Running 0 48s

3. Descreva um dos pods para visualizar sua reserva de CPU e memória.

kubectl describe pod hamster-c7d89d6db-rglf5

Resultado

Name: hamster-c7d89d6db-rglf5Namespace: defaultPriority: 0Node: ip-192-168-9-44.region-code.compute.internal/192.168.9.44Start Time: Fri, 27 Sep 2019 10:35:15 -0700Labels: app=hamster pod-template-hash=c7d89d6dbAnnotations: kubernetes.io/psp: eks.privileged vpaUpdates: Pod resources updated by hamster-vpa: container 0:

209

Page 218: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioTestar a instalação do Vertical Pod Autoscaler

Status: RunningIP: 192.168.23.42IPs: <none>Controlled By: ReplicaSet/hamster-c7d89d6dbContainers: hamster: Container ID: docker://e76c2413fc720ac395c33b64588c82094fc8e5d590e373d5f818f3978f577e24 Image: k8s.gcr.io/ubuntu-slim:0.1 Image ID: docker-pullable://k8s.gcr.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1 Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Fri, 27 Sep 2019 10:35:16 -0700 Ready: True Restart Count: 0 Requests: cpu: 100m memory: 50Mi...

Pode ver que as reservas de sustentação originais 100 millicpu de CPU e 50 mebibytes de memória.Para este aplicativo de exemplo, 100 milicpu é menos do que o pod precisa para ser executado,portanto, ele está restrito à CPU. Ele também reserva muito menos memória do que precisa. Aimplantação vpa-recommender do Vertical Pod Autoscaler analisa os pods do hamster para verse os requisitos de CPU e memória são apropriados. Se ajustes forem necessários, o vpa-updaterreiniciará os pods com valores atualizados.

4. Aguarde até que o vpa-updater seja inicie um novo pod do hamster. Isso deve levar um ou doisminutos. É possível monitorar os pods com o comando a seguir.

Note

Se você não tiver certeza de que um novo pod foi iniciado, compare os nomes dos pod com alista anterior. Quando o novo pod for iniciado, você verá um novo nome de pod.

kubectl get --watch pods -l app=hamster

5. Quando um novo pod do hamster for iniciado, descreva-o e visualize as reservas atualizadas de CPUe memória.

kubectl describe pod hamster-c7d89d6db-jxgfv

Resultado

Name: hamster-c7d89d6db-jxgfvNamespace: defaultPriority: 0Node: ip-192-168-9-44.region-code.compute.internal/192.168.9.44Start Time: Fri, 27 Sep 2019 10:37:08 -0700Labels: app=hamster pod-template-hash=c7d89d6dbAnnotations: kubernetes.io/psp: eks.privileged vpaUpdates: Pod resources updated by hamster-vpa: container 0: cpu request, memory requestStatus: Running

210

Page 219: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioTestar a instalação do Vertical Pod Autoscaler

IP: 192.168.3.140IPs: <none>Controlled By: ReplicaSet/hamster-c7d89d6dbContainers: hamster: Container ID: docker://2c3e7b6fb7ce0d8c86444334df654af6fb3fc88aad4c5d710eac3b1e7c58f7db Image: k8s.gcr.io/ubuntu-slim:0.1 Image ID: docker-pullable://k8s.gcr.io/ubuntu-slim@sha256:b6f8c3885f5880a4f1a7cf717c07242eb4858fdd5a84b5ffe35b1cf680ea17b1 Port: <none> Host Port: <none> Command: /bin/sh Args: -c while true; do timeout 0.5s yes >/dev/null; sleep 0.5s; done State: Running Started: Fri, 27 Sep 2019 10:37:08 -0700 Ready: True Restart Count: 0 Requests: cpu: 587m memory: 262144k...

Aqui você pode ver que a reserva de CPU aumentou para 587 milicpu, que é mais de cinco vezes ovalor original. A memória aumentou para 262.144 Kilobytes, que são cerca de 250 mebibytes ou cincovezes o valor original. Esse pod estava com poucos recursos, e o Vertical Pod Autoscaler corrigiunossa estimativa com um valor muito mais apropriado.

6. Descreva o recurso hamster-vpa para visualizar a nova recomendação.

kubectl describe vpa/hamster-vpa

Resultado

Name: hamster-vpaNamespace: defaultLabels: <none>Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"autoscaling.k8s.io/v1beta2","kind":"VerticalPodAutoscaler","metadata":{"annotations":{},"name":"hamster-vpa","namespace":"d...API Version: autoscaling.k8s.io/v1beta2Kind: VerticalPodAutoscalerMetadata: Creation Timestamp: 2019-09-27T18:22:51Z Generation: 23 Resource Version: 14411 Self Link: /apis/autoscaling.k8s.io/v1beta2/namespaces/default/verticalpodautoscalers/hamster-vpa UID: d0d85fb9-e153-11e9-ae53-0205785d75b0Spec: Target Ref: API Version: apps/v1 Kind: Deployment Name: hamsterStatus: Conditions: Last Transition Time: 2019-09-27T18:23:28Z Status: True Type: RecommendationProvided

211

Page 220: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioHorizontal Pod Autoscaler

Recommendation: Container Recommendations: Container Name: hamster Lower Bound: Cpu: 550m Memory: 262144k Target: Cpu: 587m Memory: 262144k Uncapped Target: Cpu: 587m Memory: 262144k Upper Bound: Cpu: 21147m Memory: 387863636Events: <none>

7. Ao terminar de fazer experiências com o aplicativo de exemplo, exclua-o com os comandos a seguir.

kubectl delete -f examples/hamster.yaml

Horizontal Pod AutoscalerO Horizontal Pod Autoscaler do Kubernetes dimensiona automaticamente o número de pods em umaimplantação, o controlador de replicação ou o conjunto de réplicas com base na utilização da CPU desserecurso. Isto pode ajudar as suas aplicações a aumentar a procura ou a escala em que os recursosnão são necessários, libertando assim os seus nós para outras aplicações. Quando você define umaporcentagem de utilização de CPU pretendida, o Horizontal Pod Autoscaler reduz ou expande o aplicativopara tentar atingir essa meta.

O Horizontal Pod Autoscaler é um recurso da API padrão no Kubernetes que simplesmente requerque uma origem de métrica (como o servidor de métricas do Kubernetes) esteja instalada no cluster doAmazon EKS para funcionar. Você não precisa implantar ou instalar o Horizontal Pod Autoscaler em seucluster para começar a dimensionar seus aplicativos. Para obter mais informações, consulte HorizontalPod Autoscaler na documentação do Kubernetes.

Use este tópico para preparar o Horizontal Pod Autoscaler para o cluster do Amazon EKS e verificar se eleestá funcionando com um aplicativo de exemplo.

Note

Este tópico se baseia na Horizontal Pod Autoscaler walkthrough na documentação do Kubernetes.

Instalar o servidor de métricasO servidor de métricas do Kubernetes é um agregador de dados de uso de recursos no cluster. O servidorde métricas não é implantado por padrão em clusters do Amazon EKS, mas fornece as métricas exigidaspelo Horizontal Pod Autoscaler. Este tópico explica como implantar o servidor de métricas do Kubernetesno cluster do Amazon EKS.

Se você já tiver implantado o servidor de métricas no cluster, poderá avançar para a próxima seção. Épossível verificar o servidor de métricas com o seguinte comando.

kubectl -n kube-system get deployment/metrics-server

Se esse comando retornar um erro NotFound, você deverá implantar o servidor de métricas no cluster doAmazon EKS.

212

Page 221: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExecutar um aplicativo de testedo Horizontal Pod Autoscaler

Como implantar o servidor de métricas

1. Implante o servidor de métricas com o seguinte comando:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

2. Verifique se a implantação do metrics-server está executando o número desejado de pods com oseguinte comando.

kubectl get deployment metrics-server -n kube-system

Resultado

NAME READY UP-TO-DATE AVAILABLE AGEmetrics-server 1/1 1 1 6m

Executar um aplicativo de teste do Horizontal PodAutoscalerNesta seção, você implanta um aplicativo de exemplo para verificar se o Horizontal Pod Autoscaler estáfuncionando.

Note

Este exemplo é baseado na Horizontal Pod Autoscaler walkthrough na documentação doKubernetes.

Para testar a instalação do Horizontal Pod Autoscaler

1. Implante um aplicativo simples de servidor web do Apache com o seguinte comando.

kubectl apply -f https://k8s.io/examples/application/php-apache.yaml

Este pod de servidor web do Apache recebe um limite de CPU de 500 milicpu e está atendendo naporta 80.

2. Crie um recurso Horizontal Pod Autoscaler para a implantação do php-apache.

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

Esse comando cria um autoscaler que visa 50% de utilização de CPU para a implantação, com ummínimo de um pod e um máximo de dez pods. Quando a carga média da CPU estiver abaixo de 50%,o autoscaler tentará reduzir o número de pods na implantação para um mínimo de um. Quando acarga for maior que 50%, o autoscaler tentará aumentar o número de pods na implantação, até ummáximo de dez. Para obter mais informações, consulte How does the Horizontal Pod Autoscaler work?na documentação do Kubernetes.

3. Descreva o autoscaler com o seguinte comando para visualizar seus detalhes.

kubectl describe hpa

Resultado

213

Page 222: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExecutar um aplicativo de testedo Horizontal Pod Autoscaler

Name: php-apacheNamespace: defaultLabels: <none>Annotations: <none>CreationTimestamp: Thu, 11 Jun 2020 16:05:41 -0500Reference: Deployment/php-apacheMetrics: ( current / target ) resource cpu on pods (as a percentage of request): <unknown> / 50%Min replicas: 1Max replicas: 10Deployment pods: 1 current / 0 desiredConditions: Type Status Reason Message ---- ------ ------ ------- AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale ScalingActive False FailedGetResourceMetric the HPA was unable to compute the replica count: did not receive metrics for any ready podsEvents: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedGetResourceMetric 42s (x2 over 57s) horizontal-pod-autoscaler unable to get metrics for resource cpu: no metrics returned from resource metrics API Warning FailedComputeMetricsReplicas 42s (x2 over 57s) horizontal-pod-autoscaler invalid metrics (1 invalid out of 1), first error is: failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API Warning FailedGetResourceMetric 12s (x2 over 27s) horizontal-pod-autoscaler did not receive metrics for any ready pods Warning FailedComputeMetricsReplicas 12s (x2 over 27s) horizontal-pod-autoscaler invalid metrics (1 invalid out of 1), first error is: failed to get cpu utilization: did not receive metrics for any ready pods

Como você pode ver, a carga atual da CPU é <unknown>, pois ainda não há nenhuma carga noservidor. A contagem de pod já está no limite mais baixo (um), portanto, não pode ser reduzida.

4. Crie uma carga para o servidor web executando um contêiner.

kubectl run -it --rm load-generator --image=busybox /bin/sh --generator=run-pod/v1

Se não receber uma instrução de comando após vários segundos, pode ter de premir Enter. Apartir da linha de comandos, introduza o comando seguinte para gerar carga e fazer com que o auto-escalador dimensione a implementação.

while true; do wget -q -O- http://php-apache; done

5. Para observar a expansão da implantação, execute periodicamente o seguinte comando em umterminal separado do terminal em que você executou a etapa anterior.

kubectl get hpa

Resultado

NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGEphp-apache Deployment/php-apache 250%/50% 1 10 5 4m44s

Enquanto a porcentagem real da CPU for maior do que a porcentagem de meta, a contagem deréplicas aumentará, até 10. Neste caso, é 250%, então o número de REPLICAS continua a aumentar.

214

Page 223: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioBalanceamento de carga

Note

Poderá demorar alguns minutos para você ver a contagem de réplicas atingir seu máximo. Seapenas 6 réplicas, por exemplo, forem necessárias para que a carga da CPU permaneça em50% ou menos, a carga não escalará além de 6 réplicas.

6. Pare a carga. Na janela do terminal em que você está gerando a carga (a partir da etapa 4), pare acarga mantendo pressionadas as teclas Ctrl+C. Você pode observar a escala de réplicas voltar para1 executando o comando a seguir novamente.

kubectl get hpa

Resultado

NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGEphp-apache Deployment/php-apache 0%/50% 1 10 1 25m

Note

O período de tempo predefinido para a escala decrescente é de cinco minutos, pelo quedemorará algum tempo antes de ver novamente a contagem da réplica 1 novamente, mesmoquando a percentagem da CPU actual é 0 por cento. O período de tempo é modificável.Para obter mais informações, consulte Horizontal Pod Autoscaler na documentação doKubernetes.

7. Ao concluir os testes do seu aplicativo de exemplo, exclua os recursos php-apache.

kubectl delete deployment.apps/php-apache service/php-apache horizontalpodautoscaler.autoscaling/php-apache

Balanceamento de cargaAmazon EKS apoia o Load balancer de rede e o Classic Load Balancer para cápsulas em execuçãoAmazon EC2 nós de instância através do serviço de tipo Kubernetes LoadBalancer. Os Classic LoadBalancers e Network Load Balancers não são suportados para as cápsulas em execução AWS Fargate(Fargate). Para a entrada do Fargate, recomendamos usar o Controlador de entrada do ALB (p. 216) noAmazon EKS (versão mínima v1.1.8).

A configuração do load balancer é controlada por anotações que são adicionadas ao manifesto para oserviço. Por padrão, Classic Load Balancers são usados para serviços do tipo LoadBalancer. Para usaro Load balancer de rede, aplique a anotação a seguir ao serviço:

service.beta.kubernetes.io/aws-load-balancer-type: nlb

Para obter um exemplo de manifesto de serviço que especifica um load balancer, consulte TypeLoadBalancer na documentação do Kubernetes. Para obter mais informações sobre como usar oLoad balancer de rede com o Kubernetes, consulte Suporte para Network Load Balancer na AWS nadocumentação do Kubernetes.

Por padrão, os serviços do tipo LoadBalancer criam load balancers voltados para o público. Para usar oum load balancer interno, aplique a anotação a seguir ao serviço:

service.beta.kubernetes.io/aws-load-balancer-internal: "true"

215

Page 224: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioMarcação de sub-redes para load balancers

Para load balancers internos, o cluster do Amazon EKS deve ser configurado para usar pelo menos umasub-rede privada em sua VPC. O Kubernetes examina a tabela de rotas para as sub-redes para identificarse elas são públicas ou privadas. As sub-redes públicas têm uma rota para a Internet usando diretamenteum gateway da Internet, mas as sub-redes privadas não têm.

Marcação de sub-redes para load balancersÉ necessário marcar as sub-redes públicas da VPC para que o Kubernetes saiba que deve usar somenteessas sub-redes para load balancers externos, em vez de escolher uma sub-rede pública em cada Zonade disponibilidade (em ordem lexicográfica por ID de sub-rede). Se você usar um modelo do AmazonEKS AWS CloudFormation para criar a VPC após 03/26/2020, as sub-redes criadas pelo modelo serãomarcadas quando forem criadas. Para obter mais informações sobre os modelos de VPC do Amazon EKSAWS CloudFormation, consulte ??? (p. 168).

Chave Valor

kubernetes.io/role/elb 1

As sub-redes privadas devem ser marcadas da maneira indicada a seguir para que o Kubernetes saibaque pode usar as sub-redes para load balancers internos. Se você usar um modelo do Amazon EKS AWSCloudFormation para criar a VPC após 03/26/2020, as sub-redes criadas pelo modelo serão marcadasquando forem criadas. Para obter mais informações sobre os modelos de VPC do Amazon EKS AWSCloudFormation, consulte ??? (p. 168).

Chave Valor

kubernetes.io/role/internal-elb 1

Controlador de entrada do ALB no Amazon EKSO Controlador de entrada do ALB da AWS para Kubernetes é um controlador que aciona a criação de umBalanceador de carga de aplicações (ALB) e dos recursos de suporte da AWS necessários sempre queum recurso de entrada é criado no cluster com a anotação kubernetes.io/ingress.class: alb. Orecurso de entrada configura o ALB para rotear tráfego HTTP ou HTTPS para diferentes pods no cluster.O ALB Ingress Controller é compatível com cargas de trabalho de produção executadas em clusters doAmazon EKS.

Para garantir que os objetos de entrada usem o ALB Ingress Controller, adicione a anotação a seguirà especificação de entrada. Para obter mais informações, consulte Especificação de entrada nadocumentação.

annotations: kubernetes.io/ingress.class: alb

O controlador de entrada do ALB oferece suporte aos seguintes modos de tráfego:

• Instância – registra nós dentro do cluster como destinos para o ALB. O tráfego que chega ao ALBé roteado para NodePort para o seu serviço e, depois, enviado por proxy para os seus pods.Esse é o modo de tráfego padrão. Também é possível especificá-lo explicitamente com a anotaçãoalb.ingress.kubernetes.io/target-type: instance.

216

Page 225: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioControlador de entrada do ALB no Amazon EKS

Note

Seu serviço Kubernetes deve especificar o tipo NodePort para usar esse modo de tráfego.• IP – registra pods como destinos para o ALB. O tráfego que chega ao ALB é roteado diretamente

para os pods do seu serviço. É necessário especificar a anotação alb.ingress.kubernetes.io/target-type: ip para usar esse modo de tráfego.

Para outras anotações disponíveis compatíveis com o Controlador de entrada do ALB, consulte Anotaçõesde entrada.

Este tópico mostra como configurar o Controlador de entrada do ALB para funcionar com o cluster doAmazon EKS.

Important

Não é possível usar o ALB Ingress Controller com ??? (p. 86).

Como implantar o Controlador de entrada do ALB em um cluster do Amazon EKS

1. Marque as sub-redes na VPC que você deseja usar para os load balancers de modo que oControlador de entrada do ALB saiba que pode usá-las. Para obter mais informações, consulteRequisito de marcação de sub-rede (p. 175). Se você implantou o cluster com eksctl, as tags jáestarão aplicadas.

• Todas as sub-redes na VPC devem ser marcadas de modo que o Kubernetes possa descobri-las.

Chave Valor

kubernetes.io/cluster/<cluster-name>

shared

• As sub-redes públicas na VPC devem ser marcadas apropriadamente para que os Kubernetessaibam que devem usar somente essas sub-redes para load balancers externos.

Chave Valor

kubernetes.io/role/elb 1

• As sub-redes privadas devem ser marcadas da maneira indicada a seguir para que o Kubernetessaiba que pode usar as sub-redes para load balancers internos. Se você usar um modelo doAmazon EKS AWS CloudFormation para criar a VPC após 03/26/2020, as sub-redes criadas pelomodelo serão marcadas quando forem criadas. Para obter mais informações sobre os modelos deVPC do Amazon EKS AWS CloudFormation, consulte ??? (p. 168).

Chave Valor

kubernetes.io/role/internal-elb 1

2. Crie um provedor IAM OIDC e associe-o ao cluster. Se você não tiver o eksctl versão 0.25.0 ouposterior instalado, siga as instruções em Instalar ou atualizar o eksctl (p. 238) para instalá-lo ouatualizá-lo. É possível verificar sua versão instalada com eksctl version.

eksctl utils associate-iam-oidc-provider \ --region region-code \ --cluster prod \ --approve

217

Page 226: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioControlador de entrada do ALB no Amazon EKS

3. Faça download de uma política do IAM para o pod ALB Ingress Controller que permita que ele façachamadas para APIs da AWS em seu nome. É possível visualizar o documento da política no GitHub.

curl -o iam-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/iam-policy.json

4. Crie uma política do IAM chamada ALBIngressControllerIAMPolicy usando a política obtida pordownload na etapa anterior.

aws iam create-policy \ --policy-name ALBIngressControllerIAMPolicy \ --policy-document file://iam-policy.json

Anote o ARN da política que é retornado.5. Crie uma conta de serviço do Kubernetes denominada alb-ingress-controller no namespace

kube-system, uma função de cluster e uma associação de função de cluster para o ALB IngressController usar com o comando a seguir. Se você não tiver o kubectl instalado, siga as instruçõesem Instalar kubectl (p. 233) para instalá-lo.

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/rbac-role.yaml

6. Crie uma função do IAM para o ALB Ingress Controller e associe a função à conta de serviço criadana etapa anterior. Se você não criou o cluster com eksctl, use as instruções no Console degerenciamento da AWS ou nas guias da AWS CLI.

eksctl

O comando a seguir só funciona para clusters criados com eksctl.

eksctl create iamserviceaccount \ --region region-code \ --name alb-ingress-controller \ --namespace kube-system \ --cluster prod \ --attach-policy-arn arn:aws:iam::111122223333:policy/ALBIngressControllerIAMPolicy \ --override-existing-serviceaccounts \ --approve

Console de gerenciamento da AWS

1. Usando as instruções na guia Console de gerenciamento da AWS em Crie uma função doIAM. (p. 282), crie uma função do IAM chamada eks-alb-ingress-controller e associea política ALBIngressControllerIAMPolicy do IAM criada em uma etapa anterior. Anote afunção do Amazon Resource Name (ARN) depois de criá-la.

2. Anote a conta de serviço do Kubernetes com o ARN da função criada com o comando a seguir.

kubectl annotate serviceaccount -n kube-system alb-ingress-controller \eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/eks-alb-ingress-controller

AWS CLI

1. Usando as instruções na guia AWS CLI em Crie uma função do IAM. (p. 282), crieuma função do IAM chamada eks-alb-ingress-controller e associe a política

218

Page 227: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioControlador de entrada do ALB no Amazon EKS

ALBIngressControllerIAMPolicy do IAM criada em uma etapa anterior. Anote a funçãodo Amazon Resource Name (ARN) depois de criá-la.

2. Anote a conta de serviço do Kubernetes com o ARN da função criada com o comando a seguir.

kubectl annotate serviceaccount -n kube-system alb-ingress-controller \eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/eks-alb-ingress-controller

7. Implante o Controlador de entrada do ALB com o comando a seguir.

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/alb-ingress-controller.yaml

8. Abra o manifesto de implantação do Controlador de entrada do ALB para edição com o comando aseguir.

kubectl edit deployment.apps/alb-ingress-controller -n kube-system

9. Adicione uma linha para o nome do cluster após a linha --ingress-class=alb. Se você estiverexecutando o ALB Ingress Controller no Fargate, também será necessário adicionar as linhas do ID daVPC e o nome da região da AWS do cluster. Depois de adicionar as linhas apropriadas, salve e fecheo arquivo.

spec: containers: - args: - --ingress-class=alb - --cluster-name=prod - --aws-vpc-id=vpc-03468a8157edca5bd - --aws-region=region-code

10. Confirme se o controlador está em execução com o comando a seguir.

kubectl get pods -n kube-system

Saída esperada:

NAME READY STATUS RESTARTS AGEalb-ingress-controller-55b5bbcb5b-bc8q9 1/1 Running 0 56s

Para implantar um aplicativo de exemplo

1. Implante o jogo 2048 como um aplicativo de exemplo para verificar se o Controlador de entrada doALB cria um Balanceador de carga de aplicações como resultado do objeto de entrada. Pode executara aplicação de amostras num grupo que tenha Amazon EC2 apenas os nós, um ou mais Fargateou uma combinação dos dois. Se o seu grupo tiver Amazon EC2 e não Fargate e, em seguida,selecione o Amazon EC2 apenas nós separador. Se o cluster tiver algum pod Fargate existente ouse você quiser implantar o aplicativo em novos pods Fargate, selecione a guia Fargate. Para obtermais informações sobre pods Fargate, consulte Conceitos básicos do AWS Fargate com o AmazonEKS (p. 120) .

Amazon EC2 nodes only

Implante o aplicativo com os comandos a seguir.

219

Page 228: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioControlador de entrada do ALB no Amazon EKS

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-namespace.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-deployment.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-service.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-ingress.yaml

Fargate

Certifique-se de que o cluster no qual deseja usar o Fargate esteja na lista de Regiõescompatíveis (p. 118).

a. Crie um perfil Fargate que inclua o namespace do aplicativo de exemplo com o comando aseguir. Substituir o example-values com os seus próprios valores.

Note

O comando que se segue só funciona para conjuntos criados com eksctl. Senão criou o seu grupo com eksctl, então pode criar o perfil com o Console degerenciamento da AWS (p. 126), utilizando os mesmos valores para name enamespace que estão no comando abaixo.

eksctl create fargateprofile --cluster prod --region region-code --name alb-sample-app --namespace 2048-game

b. Faça download e aplique os arquivos de manifesto para criar o namespace, a implantação e oserviço do Kubernetes com os comandos a seguir.

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-namespace.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-deployment.yamlkubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-service.yaml

c. Faça download do arquivo de manifesto de entrada com o comando a seguir.

curl -o 2048-ingress.yaml https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-ingress.yaml

d. Edite o arquivo 2048-ingress.yaml. Sob a linha alb.ingress.kubernetes.io/scheme: internet-facing existente, adicione a linha alb.ingress.kubernetes.io/target-type: ip.

e. Aplique o arquivo de manifesto de entrada com o comando a seguir.

kubectl apply -f 2048-ingress.yaml

2. Após alguns minutos, verifique se o recurso de entrada foi criado com o comando a seguir.

kubectl get ingress/2048-ingress -n 2048-game

Resultado

NAME HOSTS ADDRESS PORTS AGE

220

Page 229: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioControlador de entrada do ALB no Amazon EKS

2048-ingress * example-2048game-2048ingr-6fa0-352729433.region-code.elb.amazonaws.com 80 24h

Note

Se a entrada não tiver sido criada após vários minutos, execute o comando a seguir paraexibir os logs do controlador de entrada. Os logs podem conter mensagens de erro queajudarão a diagnosticar quaisquer problemas de implantação.

kubectl logs -n kube-system deployment.apps/alb-ingress-controller

3. Abra um navegador e acesse o URL ADDRESS da saída do comando anterior para ver o aplicativo deamostra.

4. Ao terminar de fazer os testes com o aplicativo de amostra, exclua-o com os comandos a seguir.

kubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-ingress.yamlkubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-service.yamlkubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-deployment.yamlkubectl delete -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.8/docs/examples/2048/2048-namespace.yaml

221

Page 230: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar aws-iam-authenticator

Autenticação de clusterO Amazon EKS usa o IAM para fornecer autenticação ao cluster do Kubernetes (por meio do comandoaws eks get-token, disponível na versão 1.16.156 ou posterior da AWS CLI ou do AWS IAM Authenticatorpara Kubernetes), mas ainda depende do Controle de acesso com base na função (RBAC) nativo doKubernetes para autorização. Isso significa que o IAM é usado somente para autenticação de entidadesválidas do IAM. Todas as permissões para interagir com a API do Kubernetes do cluster do Amazon EKSsão gerenciadas por meio do sistema de RBAC nativo do Kubernetes.

Tópicos• Instalar aws-iam-authenticator (p. 222)• Criar um kubeconfig para o Amazon EKS (p. 226)• Gerenciar usuários ou funções do IAM para o cluster (p. 229)

Instalar aws-iam-authenticatorO Amazon EKS usa o IAM para fornecer autenticação ao cluster do Kubernetes por meio do AWS IAMAuthenticator para Kubernetes. É possível configurar o cliente do kubectl para funcionar com o AmazonEKS instalando o AWS IAM Authenticator para Kubernetes e modificando o arquivo de configuraçãokubectl para usá-lo para autenticação.

Note

Se você estiver executando a AWS CLI versão 1.16.156 ou posterior, não será necessário instalaro autenticador. Em vez disso, você pode usar o comando aws eks get-token. Para obter maisinformações, consulte the section called “Criar kubeconfig manualmente” (p. 227).

Se você não conseguir utilizar a AWS CLI versão 1.16.156 ou posterior para criar o arquivo kubeconfig,selecione o sistema operacional em que você deseja instalar o aws-iam-authenticator.

222

Page 231: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar aws-iam-authenticator

macOSPara instalar o aws-iam-authenticator com o Homebrew

A maneira mais fácil de instalar o aws-iam-authenticator é com o Homebrew.

1. Se você não tiver o Homebrew instalado no seu Mac, instale-o com o seguinte comando.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

2. Instale o aws-iam-authenticator com o seguinte comando:

brew install aws-iam-authenticator

3. Teste se o binário do aws-iam-authenticator funciona.

aws-iam-authenticator help

Para instalar o aws-iam-authenticator no MacOS

Você também pode instalar a versão do aws-iam-authenticator fornecida pela AWS seguindo estasetapas.

1. Baixe o binário aws-iam-authenticator fornecido pelo Amazon EKS no Amazon S3:

curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/darwin/amd64/aws-iam-authenticator

2. (Opcional) Verifique o binário baixado com a soma de SHA-256 fornecida no mesmo prefixo dobucket.

a. Faça download da soma de SHA-256 para seu sistema.

curl -o aws-iam-authenticator.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/darwin/amd64/aws-iam-authenticator.sha256

b. Verifique a soma de SHA-256 para o binário obtido por download.

openssl sha1 -sha256 aws-iam-authenticator

c. Compare a soma da SHA-256 gerada na saída do comando em relação a seu arquivo aws-iam-authenticator.sha256 obtido por download. Os dois devem corresponder.

3. Aplique permissões de execução ao binário.

chmod +x ./aws-iam-authenticator

4. Copie o binário para uma pasta no seu $PATH. Recomendamos a criação de uma $HOME/bin/aws-iam-authenticator e garantir que $HOME/bin vem primeiro no seu $PATH.

mkdir -p $HOME/bin && cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$PATH:$HOME/bin

5. Adicione $HOME/bin à variável de ambiente PATH.

223

Page 232: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar aws-iam-authenticator

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

6. Teste se o binário do aws-iam-authenticator funciona.

aws-iam-authenticator help

LinuxPara instalar o aws-iam-authenticator no Linux

1. Baixe o binário aws-iam-authenticator fornecido pelo Amazon EKS no Amazon S3: Para baixar aversão ARM, altere amd64 para arm64 antes de executar o comando.

curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/aws-iam-authenticator

2. (Opcional) Verifique o binário baixado com a soma de SHA-256 fornecida no mesmo prefixo dobucket.

a. Faça download da soma de SHA-256 para seu sistema. Para baixar a versão ARM, altere amd64para arm64 antes de executar o comando.

curl -o aws-iam-authenticator.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/aws-iam-authenticator.sha256

b. Verifique a soma de SHA-256 para o binário obtido por download.

openssl sha1 -sha256 aws-iam-authenticator

c. Compare a soma da SHA-256 gerada na saída do comando em relação a seu arquivo aws-iam-authenticator.sha256 obtido por download. Os dois devem corresponder.

3. Aplique permissões de execução ao binário.

chmod +x ./aws-iam-authenticator

4. Copie o binário para uma pasta no seu $PATH. Recomendamos a criação de uma $HOME/bin/aws-iam-authenticator e garantir que $HOME/bin vem primeiro no seu $PATH.

mkdir -p $HOME/bin && cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$PATH:$HOME/bin

5. Adicione $HOME/bin à variável de ambiente PATH.

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc

6. Teste se o binário do aws-iam-authenticator funciona.

aws-iam-authenticator help

224

Page 233: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar aws-iam-authenticator

WindowsPara instalar aws-iam-authenticator no Windows com Chocolatey

1. Se você ainda não tiver o Chocolatey instalado no sistema Windows, consulte Installing Chocolatey.2. Abra uma janela de terminal do PowerShell e instale o pacote aws-iam-authenticator com o

seguinte comando:

choco install -y aws-iam-authenticator

3. Teste se o binário do aws-iam-authenticator funciona.

aws-iam-authenticator help

Para instalar o aws-iam-authenticator no Windows

1. Abra uma janela de terminal do PowerShell e faça download do binário do Amazon EKS, aws-iam-authenticator, pelo Amazon S3:

curl -o aws-iam-authenticator.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/windows/amd64/aws-iam-authenticator.exe

2. (Opcional) Verifique o binário baixado com a soma de SHA-256 fornecida no mesmo prefixo dobucket.

a. Faça download da soma de SHA-256 para seu sistema.

curl -o aws-iam-authenticator.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/windows/amd64/aws-iam-authenticator.exe.sha256

b. Verifique a soma de SHA-256 para o binário obtido por download.

Get-FileHash aws-iam-authenticator.exe

c. Compare a soma de SHA-256 gerada na saída do comando com o seu arquivo SHA-256 baixado.Os dois devem corresponder, embora a saída do PowerShell tenha letras maiúsculas.

3. Copie o binário para uma pasta no seu PATH. Se tiver um directório existente no seu PATH que utilizapara utilitários de linha de comandos, copie o binário para esse directório. Caso contrário, execute asetapas a seguir.

a. Crie um novo diretório para os binários de linha de comando, como C:\bin.b. Copie o binário aws-iam-authenticator.exe no seu novo diretório.c. Edite a variável de ambiente PATH do sistema ou usuário para adicionar o novo diretório ao

PATH.d. Feche o terminal do PowerShell e abra um novo para escolher a nova variável PATH.

4. Teste se o binário do aws-iam-authenticator funciona.

aws-iam-authenticator help

Se você tiver um cluster do Amazon EKS existente, crie um arquivo kubeconfig para esse cluster. Paraobter mais informações, consulte Criar um kubeconfig para o Amazon EKS (p. 226). Caso contrário,consulte Criar um cluster do Amazon EKS (p. 30) para criar um cluster do Amazon EKS.

225

Page 234: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar um kubeconfig para o Amazon EKS

Criar um kubeconfig para o Amazon EKSNesta seção, você cria um arquivo kubeconfig para o seu cluster (ou atualiza um existente).

Esta seção oferece dois procedimentos para criar ou atualizar o kubeconfig. Você pode criar ou atualizarrapidamente um kubeconfig com o comando update-kubeconfig da AWS CLI automaticamente usando aAWS CLI ou pode criar um kubeconfig manualmente usando a AWS CLI ou o aws-iam-authenticator.

O Amazon EKS usa o comando aws eks get-token, disponível na versão 1.16.156 ou posterior da AWSCLI ou do AWS IAM Authenticator para Kubernetes com kubectl para autenticação de clusters. Se vocêtiver instalado a AWS CLI no seu sistema, por padrão, o Authenticator para Kubernetes do AWS IAM usaráas mesmas credenciais que são retornadas com o seguinte comando:

aws sts get-caller-identity

Para obter mais informações, consulte Configurar a AWS CLI no Guia do usuário do AWS Command LineInterface.

Criar kubeconfig automaticamentePara criar o arquivo kubeconfig com a AWS CLI

1. Verifique se você tem a versão 1.16.156 ou posterior da AWS CLI instalada. Para instalar ou atualizara AWS CLI, consulte Instalar a interface da linha de comando da AWS no Guia do usuário do AWSCommand Line Interface.

Note

A versão do Python do seu sistema deve ser 2.7.9 ou posterior. Caso contrário, vocêreceberá erros de hostname doesn't match com chamadas da AWS CLI para o AmazonEKS.

Você pode verificar a versão da AWS CLI com o comando a seguir:

aws --version

Important

Gerenciadores de pacotes como yum, apt-get ou Homebrew para MacOS geralmente estãopor trás de várias versões da AWS CLI. Para verificar se você tem a versão mais recente,consulte Instalar a interface de linha de comando da AWS no Guia do usuário do AWSCommand Line Interface.

2. Use o comando update-kubeconfig da AWS CLI para criar ou atualizar o kubeconfig para seu cluster.

• Por padrão, o arquivo de configuração resultante é criado no caminho kubeconfig padrão (.kube/config) em seu diretório inicial ou mesclado com um kubeconfig existente nesse local. Você podeespecificar outro caminho com a opção --kubeconfig.

• Você pode especificar um ARN de função do IAM com a opção --role-arn para uso paraautenticação quando você emitir comandos kubectl. Caso contrário, a entidade do IAM na AWS CLIou na cadeia de credenciais padrão do SDK é usada. Você pode visualizar sua identidade padrãoda AWS CLI ou do SDK executando o comando aws sts get-caller-identity.

• Para obter mais informações, consulte a página de ajuda com o comando aws eks update-kubeconfig help ou consulte update-kubeconfig no AWS CLI Command Reference.

226

Page 235: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar kubeconfig manualmente

Note

Para executar o comando a seguir, você deve ter permissão para usar a ação da APIeks:DescribeCluster com o cluster especificado. Para obter mais informações, consulteExemplos de políticas baseadas em identidade do Amazon EKS (p. 262).

aws eks --region region-code update-kubeconfig --name cluster_name

3. Teste a configuração.

kubectl get svc

Note

Se você receber qualquer erro de autorização ou de tipo de recurso, consulte Unauthorizedor access denied (kubectl) (Não autorizado ou acesso negado (kubectl)) (p. 322) naseção de solução de problemas.

Resultado:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEsvc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

Criar kubeconfig manualmentePara criar o arquivo kubeconfig manualmente

1. Crie o diretório ~/.kube padrão, caso ele ainda não exista.

mkdir -p ~/.kube

2. Abra o editor de texto de sua preferência e copie um dos blocos de código kubeconfig abaixo,dependendo do método de token do cliente da sua preferência.

• Para usar o comando aws eks get-token da AWS CLI (requer versão 1.16.156 ou posterior da AWSCLI):

apiVersion: v1clusters:- cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetescontexts:- context: cluster: kubernetes user: aws name: awscurrent-context: awskind: Configpreferences: {}users:- name: aws user: exec:

227

Page 236: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar kubeconfig manualmente

apiVersion: client.authentication.k8s.io/v1alpha1 command: aws args: - "eks" - "get-token" - "--cluster-name" - "<cluster-name>" ✓ - "--role" ✓ - "<role-arn>" ✓ env: ✓ - name: AWS_PROFILE ✓ value: "<aws-profile>"

• Para usar o AWS IAM Authenticator para Kubernetes:

apiVersion: v1clusters:- cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetescontexts:- context: cluster: kubernetes user: aws name: awscurrent-context: awskind: Configpreferences: {}users:- name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws-iam-authenticator args: - "token" - "-i" - "<cluster-name>" ✓ - "-r" ✓ - "<role-arn>" ✓ env: ✓ - name: AWS_PROFILE ✓ value: "<aws-profile>"

3. Substitua a endpoint <endpoint-url> pela URL do endpoint que foi criada para o cluster.4. Substitua o endpoint <base64-encoded-ca-cert> por certificateAuthority.data que foi

criado para o cluster.5. Substitua <cluster-name> pelo nome do cluster.6. (Opcional) Para assumir uma função do IAM e realizar operações de cluster em vez da cadeia de

fornecedor de credencial padrão da AWS, remova os comentários das linhas -r ou --role e <role-arn> e substitua o ARN da função do IAM para usar com o seu usuário.

7. (Opcional) Para sempre usar um perfil de credencial da AWS específico (em vez da cadeira defornecedor de credencial da AWS), remova os comentários das linhas env e substitua <aws-profile> pelo nome de perfil a ser usado.

8. Salve o arquivo na pasta kubectl padrão, com o nome do cluster no nome do arquivo. Por exemplo, seo nome do cluster for devel, salve o arquivo em ~/.kube/config-devel.

9. Adicione o caminho desse arquivo à variável de ambiente KUBECONFIG para que o kubectl saiba ondeprocurar a configuração do cluster.

• Para shells Bash no macOS ou no Linux:

228

Page 237: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioGerenciar usuários ou funções do IAM para o cluster

export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel

• Para o PowerShell no Windows:

$ENV:KUBECONFIG="{0};{1}" -f $ENV:KUBECONFIG, "$ENV:userprofile\.kube\config-devel"

10. (Opcional) Adicione a configuração ao arquivo de inicialização do shell para que ele esteja configuradoquando você abrir um shell.

• Para shells do Bash no MacOS:

echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel' >> ~/.bash_profile

• Para shells do Bash no Linux:

echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-devel' >> ~/.bashrc

• Para o PowerShell no Windows:

[System.Environment]::SetEnvironmentVariable('KUBECONFIG', $ENV:KUBECONFIG, 'Machine')

11. Teste a configuração.

kubectl get svc

Note

Se você receber qualquer erro de autorização ou de tipo de recurso, consulte Unauthorizedor access denied (kubectl) (Não autorizado ou acesso negado (kubectl)) (p. 322) naseção de solução de problemas.

Resultado:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEsvc/kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 1m

Gerenciar usuários ou funções do IAM para ocluster

Quando você cria um cluster do Amazon EKS, a função ou o usuário da entidade do IAM, comoum usuário federado que cria o cluster, recebe automaticamente permissões system:masters naconfiguração do RBAC do cluster. Para conceder a capacidade de interagir com o cluster a usuários oufunções adicionais da AWS, você deve editar o aws-auth ConfigMap no Kubernetes.

Note

Para obter mais informações sobre as diferentes identidades do IAM, consulte Identidades(usuários, grupos e funções) no Guia do usuário do IAM. Para obter mais informações sobrea configuração de RBAC do Kubernetes, consulte Usar autorização de RBAC. Para todas asconfigurações do ConfigMap, consulte Full Configuration Format no GitHub.

O ConfigMap aws-auth é aplicado como parte do guia Conceitos básicos de Amazon EKS (p. 3) quefornece uma demonstração completa para criação de um cluster do Amazon EKS para implantar um

229

Page 238: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioGerenciar usuários ou funções do IAM para o cluster

aplicativo de exemplo do Kubernetes. Inicialmente, é criado para permitir que os seus nós se juntem aoseu grupo, mas também utilize este mapa de configmap para adicionar o acesso RBAC a utilizadores efunções de IAM. Se não tiver lançado nós e aplicado o aws-auth configmap, pode fazê-lo com o seguinteprocedimento.

Para aplicar o aws-auth ConfigMap ao seu cluster

1. Verifique se você já aplicou o aws-auth ConfigMap.

kubectl describe configmap -n kube-system aws-auth

Se você receber um erro informando que "Error from server (NotFound): configmaps"aws-auth" not found" então, prossiga com as etapas a seguir para aplicar o ConfigMap deações.

2. Faça download, edite e aplique o mapa de configuração do autenticador da AWS.

a. Faça download do mapa de configuração:

curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/aws-auth-cm.yaml

b. Abra o arquivo com seu editor de texto favorito. Substituir <ARN of instance role (notinstance profile)> com o Amazon Resource Name (ARN) do IAM função associada aosseus nós e guarde o ficheiro. Não modifique outras linhas nesse arquivo.

Important

O ARN da função não pode incluir um caminho. O formato da função ARN tem de serarn:aws:iam::123456789012:role/role-name. Para mais informações, consulteO aws-auth ConfigMap não concede acesso ao cluster (p. 326).

apiVersion: v1kind: ConfigMapmetadata: name: aws-auth namespace: kube-systemdata: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes

Você pode inspecionar as saídas de pilha do AWS CloudFormation para os grupos de nó deoperador e procurar os seguintes valores:

• instantâneo (para grupos de nó criados com eksctl)• nodeinstantâneo (para grupos de nó criados com Amazon EKS-vencido AWS CloudFormation

modelos no Console de gerenciamento da AWS)c. Aplique a configuração. Esse comando pode demorar alguns minutos para ser concluído.

kubectl apply -f aws-auth-cm.yaml

230

Page 239: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioGerenciar usuários ou funções do IAM para o cluster

Note

Se você receber qualquer erro de autorização ou de tipo de recurso, consulteUnauthorized or access denied (kubectl) (Não autorizado ou acesso negado(kubectl)) (p. 322) na seção de solução de problemas.

3. Observe o status de seus nós e aguarde até que eles atinjam o status Ready.

kubectl get nodes --watch

Para adicionar um usuário ou função do IAM a um cluster do Amazon EKS

1. Verifique se as credenciais da AWS que o kubectl está usando já têm autorização para o cluster. Ousuário do IAM que criou o cluster tem essas permissões por padrão.

2. Abra o ConfigMap aws-auth.

kubectl edit -n kube-system configmap/aws-auth

Note

Se você receber um erro informando que "Error from server (NotFound):configmaps "aws-auth" not found" e, em seguida, use o procedimento anterior paraaplicar a ação ConfigMap.

ConfigMap de exemplo:

✓ Please edit the object below. Lines beginning with a '✓' will be ignored,✓ and an empty file will abort the edit. If an error occurs while saving this file will be✓ reopened with the relevant failures.✓apiVersion: v1data: mapRoles: | - rolearn: arn:aws:iam::111122223333:role/doc-test-nodes-NodeInstanceRole-WDO5P42N3ETB username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodeskind: ConfigMapmetadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","data":{"mapRoles":"- rolearn: arn:aws:iam::111122223333:role/doc-test-nodes-NodeInstanceRole-WDO5P42N3ETB\n username: system:node:{{EC2PrivateDNSName}}\n groups:\n - system:bootstrappers\n - system:nodes\n"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"aws-auth","namespace":"kube-system"}} creationTimestamp: 2018-04-04T18:49:10Z name: aws-auth namespace: kube-system resourceVersion: "780" selfLink: /api/v1/namespaces/kube-system/configmaps/aws-auth uid: dcc31de5-3838-11e8-af26-02e00430057c

3. Adicione os usuários, as funções do IAM ou as contas da AWS ao configMap. Não pode adicionar IAMgrupos para o mapa de configmap.

231

Page 240: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioGerenciar usuários ou funções do IAM para o cluster

• Para adicionar um IAM utilizador: adicionar os detalhes do utilizador ao mapUsers do configmap,sob data. Adicione esta secção se ainda não existir no ficheiro. Cada entrada oferece suporte aosseguintes parâmetros:• userarn: O ARN do IAM utilizador para adicionar.• nome de usuário O nome de utilizador em Kubernetes para mapear para o IAM utilizador.• grupos: Uma lista de grupos em Kubernetes ao qual o utilizador é mapeado para. Para obter mais

informações, consulte Funções padrão e vinculações de função na documentação do Kubernetes.• Para adicionar um IAM função (por exemplo, para utilizadores federados): adicionar os detalhes

da função ao mapRoles do configmap, sob data. Adicione esta secção se ainda não existir noficheiro. Cada entrada oferece suporte aos seguintes parâmetros:• roaprender: O ARN do IAM função a adicionar.• nome de usuário O nome de utilizador em Kubernetes para mapear para o IAM função.• grupos: Uma lista de grupos em Kubernetes ao qual a função é mapeada. Para obter mais

informações, consulte Funções padrão e vinculações de função na documentação do Kubernetes.

Por exemplo, o bloco a seguir contém:

• Um mapRoles que adiciona a função de instância de nó para que os nós possam registar-se com ogrupo.

• Uma seção mapUsers com os usuários admin da AWS da conta padrão da AWS e ops-user deoutra conta da AWS. Os dois usuários são adicionados ao grupo system:masters.

✓ Please edit the object below. Lines beginning with a '✓' will be ignored,✓ and an empty file will abort the edit. If an error occurs while saving this file will be✓ reopened with the relevant failures.✓apiVersion: v1data: mapRoles: | - rolearn: arn:aws:iam::555555555555:role/devel-nodes-NodeInstanceRole-74RF4UBDUKL6 username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes mapUsers: | - userarn: arn:aws:iam::555555555555:user/admin username: admin groups: - system:masters - userarn: arn:aws:iam::111122223333:user/ops-user username: ops-user groups: - system:masters

4. Salve o arquivo e saia do seu editor de texto.

232

Page 241: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar kubectl

Gerenciamento de clustersEste capítulo inclui os seguintes tópicos para o ajudar a gerir o seu grupo.

• the section called “Instalar kubectl” (p. 233) – Saiba como instalar kubectl uma ferramenta de linhade comandos para gerir Kubernetes.

• the section called “eksctl” (p. 238) – Saiba como instalar uma linha de comandos simples para criar egerir clusters Kubernetes em Amazon EKS.

• the section called “Tutorial Implementar dashboard de Kubernetes” (p. 240) – Saiba como instalar odashboard, uma interface de utilizador baseada na Web para o seu cluster e aplicações Kubernetes.

• the section called “Servidor de métricas” (p. 243) – O servidor de métricas Kubernetes é um agregadordos dados de utilização de recursos no seu grupo. Não é implementado por predefinição no seu grupo,mas é utilizado pelos suplementos Kubernetes, tais como o painel de controlo Kubernetes e the sectioncalled “Horizontal Pod Autoscaler” (p. 212). Neste tópico, você aprende como instalar o Servidor demétricas.

• the section called “Métricas do Prometeu” (p. 244) – O servidor API Kubernetes expõe uma sériede métricas úteis para monitorização e análise. Este tópico explica como implementar Prometheus ealgumas das formas que pode utilizar para visualizar e analisar o que o seu grupo está a fazer.

• the section called “Usar o Helm” (p. 247) – O gestor de embalagens Helm para Kubernetes ajuda-oa instalar e gerir aplicações no seu grupo de Kubernetes. Este tópico ajuda-o a instalar e executar osBinários Helm para que possa instalar e gerir gráficos utilizando o Helm CLI no seu computador local.

• the section called “Marcar os recursos do ” (p. 248) – Para o ajudar a gerir o seu Amazon EKSrecursos, pode atribuir os seus próprios metadados a cada recurso sob a forma de etiquetas. Este tópicodescreve tags e mostra a você como criá-los.

• the section called “Cotas de serviço” (p. 252) – O seu AWS conta tem quotas predefinidas,anteriormente referidas como limites, para cada AWS serviço. Saiba mais sobre as quotas para AmazonEKS e como aumentá-los.

Instalar kubectlO Kubernetes usa um utilitário de linha de comando chamado kubectl para se comunicar com o servidorda API do cluster. O binário kubectl está disponível em muitos gerenciadores de pacotes de sistemaoperacional, e essa opção geralmente é muito mais fácil do que o processo de download e instalaçãomanual. Você pode seguir as instruções para seu sistema operacional ou gerenciadores de pacotesespecíficos na Documentação do Kubernetes para instalar.

Este tópico ajuda a baixar e instalar os binários kubectl fornecidos pelo Amazon EKS para sistemasoperacionais MacOS, Linux e Windows. Esses binários são idênticos às versões da comunidade upstream,e não são exclusivos do Amazon EKS ou da AWS.

Note

Você deve usar uma versão kubectl que esteja em uma versão secundária de diferença doplano de controle do cluster do Amazon EKS. Por exemplo, um cliente 1.16 kubectl devefuncionar com clusters do Kubernetes 1.15, 1.16 e 1.17.

macOS

Para instalar o kubectl no MacOS

1. Faça download do binário kubectl fornecido pelo Amazon EKS para a versão do Kubernetes docluster no Amazon S3.

233

Page 242: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar kubectl

• Kubernetes 1.17:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/darwin/amd64/kubectl

• Kubernetes 1.16:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.12/2020-07-08/bin/darwin/amd64/kubectl

• Kubernetes 1.15:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.11/2020-07-08/bin/darwin/amd64/kubectl

• Kubernetes 1.14:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.9/2020-07-08/bin/darwin/amd64/kubectl

2. (Opcional) Verifique se o binário baixado com a soma SHA-256 para o binário.

a. Faça download da soma de SHA-256 para a versão do Kubernetes do cluster para MacOS:

• Kubernetes 1.17:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/darwin/amd64/kubectl.sha256

• Kubernetes 1.16:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.12/2020-07-08/bin/darwin/amd64/kubectl.sha256

• Kubernetes 1.15:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.11/2020-07-08/bin/darwin/amd64/kubectl.sha256

• Kubernetes 1.14:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.9/2020-07-08/bin/darwin/amd64/kubectl.sha256

b. Verifique a soma de SHA-256 para o binário obtido por download.

openssl sha1 -sha256 kubectl

c. Compare a soma de SHA-256 gerada na saída do comando com o seu arquivo SHA-256baixado. Os dois devem corresponder.

3. Aplique permissões de execução ao binário.

chmod +x ./kubectl

4. Copie o binário para uma pasta no seu PATH. Se já instalou uma versão de kubectl, entãorecomendamos a criação de $HOME/bin/kubectl e garantir que $HOME/bin vem primeiro noseu $PATH.

234

Page 243: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar kubectl

mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

5. (Opcional) Adicione o caminho $HOME/bin ao arquivo de inicialização do shell para que eleesteja configurado quando você abrir um shell.

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

6. Após instalar o kubectl, você pode verificar a versão com o seguinte comando:

kubectl version --short --client

Linux

Para instalar o kubectl no Linux

1. Faça download do binário kubectl fornecido pelo Amazon EKS para a versão do Kubernetes docluster no Amazon S3. Para baixar a versão ARM, altere amd64 para arm64 antes de executar ocomando.

• Kubernetes 1.17:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/kubectl

• Kubernetes 1.16:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.12/2020-07-08/bin/linux/amd64/kubectl

• Kubernetes 1.15:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.11/2020-07-08/bin/linux/amd64/kubectl

• Kubernetes 1.14:

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.9/2020-07-08/bin/linux/amd64/kubectl

2. (Opcional) Verifique se o binário baixado com a soma SHA-256 para o binário.

a. Faça download da soma de SHA-256 para a versão do Kubernetes do cluster para Linux.Para baixar a versão ARM, altere amd64 para arm64 antes de executar o comando.

• Kubernetes 1.17:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/linux/amd64/kubectl.sha256

• Kubernetes 1.16:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.12/2020-07-08/bin/linux/amd64/kubectl.sha256

• Kubernetes 1.15:

235

Page 244: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar kubectl

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.11/2020-07-08/bin/linux/amd64/kubectl.sha256

• Kubernetes 1.14:

curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.9/2020-07-08/bin/linux/amd64/kubectl.sha256

b. Verifique a soma de SHA-256 para o binário obtido por download.

openssl sha1 -sha256 kubectl

c. Compare a soma de SHA-256 gerada na saída do comando com o seu arquivo SHA-256baixado. Os dois devem corresponder.

3. Aplique permissões de execução ao binário.

chmod +x ./kubectl

4. Copie o binário para uma pasta no seu PATH. Se já instalou uma versão de kubectl, entãorecomendamos a criação de $HOME/bin/kubectl e garantir que $HOME/bin vem primeiro noseu $PATH.

mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

5. (Opcional) Adicione o caminho $HOME/bin ao arquivo de inicialização do shell para que eleesteja configurado quando você abrir um shell.

Note

Essa etapa pressupõe que você esteja usando o shell Bash. Se você estiver usandooutro shell, altere o comando para usar o arquivo de inicialização do shell.

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc

6. Após instalar o kubectl, você pode verificar a versão com o seguinte comando:

kubectl version --short --client

Windows

Para instalar o kubectl no Windows

1. Abra um terminal do PowerShell.2. Faça download do binário kubectl fornecido pelo Amazon EKS para a versão do Kubernetes do

cluster no Amazon S3.

• Kubernetes 1.17:

curl -o kubectl.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/windows/amd64/kubectl.exe

• Kubernetes 1.16:

curl -o kubectl.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.12/2020-07-08/bin/windows/amd64/kubectl.exe

236

Page 245: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar kubectl

• Kubernetes 1.15:

curl -o kubectl.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.11/2020-07-08/bin/windows/amd64/kubectl.exe

• Kubernetes 1.14:

curl -o kubectl.exe https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.9/2020-07-08/bin/windows/amd64/kubectl.exe

3. (Opcional) Verifique se o binário baixado com a soma SHA-256 para o binário.

a. Faça download da soma de SHA-256 para a versão do Kubernetes do cluster para Windows:

• Kubernetes 1.17:

curl -o kubectl.exe.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.7/2020-07-08/bin/windows/amd64/kubectl.exe.sha256

• Kubernetes 1.16:

curl -o kubectl.exe.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.12/2020-07-08/bin/windows/amd64/kubectl.exe.sha256

• Kubernetes 1.15:

curl -o kubectl.exe.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.15.11/2020-07-08/bin/windows/amd64/kubectl.exe.sha256

• Kubernetes 1.14:

curl -o kubectl.exe.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.14.9/2020-07-08/bin/windows/amd64/kubectl.exe.sha256

b. Verifique a soma de SHA-256 para o binário obtido por download.

Get-FileHash kubectl.exe

c. Compare a soma de SHA-256 gerada na saída do comando com o seu arquivo SHA-256baixado. Os dois devem corresponder, embora a saída do PowerShell tenha letrasmaiúsculas.

4. Copie o binário para uma pasta no seu PATH. Se tiver um directório existente no seu PATH queutiliza para utilitários de linha de comandos, copie o binário para esse directório. Caso contrário,execute as etapas a seguir.

a. Crie um novo diretório para os binários de linha de comando, como C:\bin.b. Copie o binário kubectl.exe no seu novo diretório.c. Edite a variável de ambiente PATH do sistema ou usuário para adicionar o novo diretório ao

PATH.d. Feche o terminal do PowerShell e abra um novo para escolher a nova variável PATH.

5. Após instalar o kubectl, você pode verificar a versão com o seguinte comando:

kubectl version --short --client

237

Page 246: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioeksctl

O utilitário de linha de comando eksctlEste tópico abrange eksctl, uma linha de comandos simples para criar e gerir clusters Kubernetes emAmazon EKS. O eksctl o utilitário da linha de comando fornece a forma mais rápida e fácil de criar umnovo grupo com nós para Amazon EKS.

Para obter mais informações e ver a documentação oficial, acesse https://eksctl.io/.

Instalar ou atualizar o eksctlEsta seção ajuda você a instalar ou atualizar a versão mais recente do utilitário de linha de comandoeksctl.

Escolha a guia abaixo que melhor representa sua configuração de cliente.

macOS

Para instalar ou atualizar o eksctl no MacOS usando o Homebrew

A maneira mais fácil de começar a usar o Amazon EKS no MacOS é instalando o eksctl como Homebrew. A receita do Homebrew para o eksctl instala o eksctl e quaisquer outrasdependências necessárias para o Amazon EKS, como o kubectl. A receita também instala o aws-iam-authenticator (p. 222), que será necessário se você não tiver a AWS CLI versão 1.16.156 ouposterior instalada.

1. Se você ainda não tiver instalado o Homebrew no MacOS, instale-o com o seguinte comando.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

2. Instale a aba Weaveworks do Homebrew.

brew tap weaveworks/tap

3. Instale ou atualize o eksctl.

• Instale o eksctl com o seguinte comando:

brew install weaveworks/tap/eksctl

• Se o eksctl já estiver instalado, execute o comando a seguir para atualizá-lo:

brew upgrade eksctl && brew link --overwrite eksctl

4. Verifique se a instalação foi bem-sucedida com o comando a seguir.

eksctl version

Note

A versão da GitTag deve ser pelo menos a 0.25.0. Caso contrário, verifique sehá erros de instalação ou de atualização na saída do terminal ou faça downloadmanualmente de um arquivo da versão em https://github.com/weaveworks/eksctl/releases/download/0.25.0/eksctl_Darwin_amd64.tar.gz, extraia o eksctl e execute-o.

238

Page 247: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInstalar ou atualizar o eksctl

Linux

Para instalar ou atualizar o eksctl no Linux usando o curl

1. Faça download e extraia a última versão do eksctl com o comando a seguir.

curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp

2. Mova o binário extraído para /usr/local/bin.

sudo mv /tmp/eksctl /usr/local/bin

3. Verifique se a instalação foi bem-sucedida com o comando a seguir.

eksctl version

Note

A versão da GitTag deve ser pelo menos a 0.25.0. Caso contrário, verifique se háerros de instalação ou atualização na saída do terminal ou substitua o endereço na etapa1 por https://github.com/weaveworks/eksctl/releases/download/0.25.0/eksctl_Linux_amd64.tar.gz e conclua as etapas 1 a 3 novamente.

Windows

Para instalar ou atualizar o eksctl no Windows usando o Chocolatey

1. Se você ainda não tiver o Chocolatey instalado no seu sistema Windows, consulte Instalar oChocolatey.

2. Instale ou atualize o eksctl .

• Instale os binários com o seguinte comando:

chocolatey install -y eksctl

• Se eles já estiverem instalados, execute o seguinte comando para atualizá-los:

chocolatey upgrade -y eksctl

3. Verifique se a instalação foi bem-sucedida com o comando a seguir.

eksctl version

Note

A versão da GitTag deve ser pelo menos a 0.25.0. Caso contrário, verifique sehá erros de instalação ou de atualização na saída do terminal ou faça downloadmanualmente de um arquivo da versão em https://github.com/weaveworks/eksctl/releases/download/0.25.0/eksctl_Windows_amd64.zip, extraia o eksctl e execute-o.

239

Page 248: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioTutorial Implementar dashboard de Kubernetes

Tutorial Implementar o painel de controloKubernetes (UI da Web)

Este tutorial orienta você durante a implantação do Painel do Kubernetes no cluster do Amazon EKS,com as métricas de CPU e de memória incluídas. Ele também ajuda a criar uma conta de serviço deadministrador do Amazon EKS que você pode usar para conectar-se com segurança ao painel paravisualizar e controlar o cluster.

PrerequisitesEste tutorial assume o seguinte:

• Você criou um cluster do Amazon EKS seguindo as etapas em Conceitos básicos de AmazonEKS (p. 3).

• Os grupos de segurança para as interfaces e nós de rede elástica do seu plano de controlo seguem asdefinições recomendadas em Considerações sobre os grupos de segurança do Amazon EKS (p. 175).

• Você está usando um cliente do kubectl que está configurado para se comunicar com o cluster doAmazon EKS (p. 24).

Etapa 1 Implementar o servidor de métricasKubernetesO servidor de métricas do Kubernetes é um agregador de dados de uso de recursos no cluster, e não éimplantado por padrão em clusters do Amazon EKS. O painel do Kubernetes usa o servidor de métricaspara coletar métricas do cluster, como o uso de CPU e de memória ao longo do tempo.

Como implantar o servidor de métricas

1. Implante o servidor de métricas com o seguinte comando:

240

Page 249: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Implementar o dashboard

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

2. Verifique se a implantação do metrics-server está executando o número desejado de pods com oseguinte comando.

kubectl get deployment metrics-server -n kube-system

Resultado

NAME READY UP-TO-DATE AVAILABLE AGEmetrics-server 1/1 1 1 6m

Etapa 2. Implementar o dashboardUse o comando a seguir para implantar o painel do Kubernetes.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

Resultado

namespace/kubernetes-dashboard createdserviceaccount/kubernetes-dashboard createdservice/kubernetes-dashboard createdsecret/kubernetes-dashboard-certs createdsecret/kubernetes-dashboard-csrf createdsecret/kubernetes-dashboard-key-holder createdconfigmap/kubernetes-dashboard-settings createdrole.rbac.authorization.k8s.io/kubernetes-dashboard createdclusterrole.rbac.authorization.k8s.io/kubernetes-dashboard createdrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard createdclusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard createddeployment.apps/kubernetes-dashboard createdservice/dashboard-metrics-scraper createddeployment.apps/dashboard-metrics-scraper created

Etapa 3 Criar um eks-admin ligação da conta deserviço e de clusterPor padrão, o usuário do painel do Kubernetes tem permissões limitadas. Nesta seção, você cria umaconta de serviço do eks-admin e uma vinculação de função do cluster que você pode usar para conectar-se com segurança ao painel com permissões em nível de administrador. Para obter mais informações,visite Gerenciamento de contas de serviço na documentação do Kubernetes.

Para criar a conta de serviço do eks-admin e a vinculação de função do cluster

Important

A conta de serviço de exemplo criada com este procedimento tem privilégios completos decluster-admin (superusuário) no cluster. Para obter mais informações, consulte Using RBACauthorization na documentação do Kubernetes.

241

Page 250: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 4. Ligar ao dashboard

1. Crie um arquivo chamado eks-admin-service-account.yaml com o texto abaixo. Este manifestodefine uma conta de serviço e uma vinculação da função do cluster chamadas eks-admin.

apiVersion: v1kind: ServiceAccountmetadata: name: eks-admin namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata: name: eks-adminroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-adminsubjects:- kind: ServiceAccount name: eks-admin namespace: kube-system

2. Aplique a conta de serviço e a vinculação da função do cluster ao cluster:

kubectl apply -f eks-admin-service-account.yaml

Resultado

serviceaccount "eks-admin" createdclusterrolebinding.rbac.authorization.k8s.io "eks-admin" created

Etapa 4. Ligar ao dashboardAgora que o painel do Kubernetes está implantado no cluster, e você tem uma conta de serviço deadministrador que pode usar para visualizar e controlar o cluster, você poderá se conectar ao painel comessa conta de serviço.

Para conectar-se ao painel do Kubernetes

1. Recupere um token de autenticação para a conta de serviço eks-admin. Copiar o<authentication_token> valor da saída. Você usa esse token para se conectar ao painel.

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}')

Resultado

Name: eks-admin-token-b5zv4Namespace: kube-systemLabels: <none>Annotations: kubernetes.io/service-account.name=eks-admin kubernetes.io/service-account.uid=bcfe66ac-39be-11e8-97e8-026dce96b6e8

Type: kubernetes.io/service-account-token

Data====ca.crt: 1025 bytes

242

Page 251: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 5. Próximas etapas

namespace: 11 bytestoken: <authentication_token>

2. Inicie o kubectl proxy.

kubectl proxy

3. Para acessar o endpoint do painel, abra o link a seguir com um navegador da web: http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login.

4. Escolher Token, cole o <authentication_token> saída do comando anterior para o Token eescolha INICIAR SESSÃO.

Note

Pode levar alguns minutos para que as métricas de CPU e de memória apareçam no painel.

Etapa 5. Próximas etapasDepois de se conectar ao painel do Kubernetes, você poderá visualizar e controlar seu cluster usandoa conta de serviço eks-admin. Para obter mais informações sobre como usar o painel, consulte adocumentação do projeto no GitHub.

Instalar o servidor de métricas do KubernetesO servidor de métricas do Kubernetes é um agregador de dados de uso de recursos no cluster, enão é implantado por padrão em clusters do Amazon EKS. O servidor de métricas, em geral, é usadopor outros complementos do Kubernetes, como o Horizontal Pod Autoscaler (p. 212) ou o Painel do

243

Page 252: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioMétricas do Prometeu

Kubernetes (p. 240). Para obter mais informações, consulte Pipeline de métricas de recursos nadocumentação do Kubernetes. Este tópico explica como implantar o servidor de métricas do Kubernetes nocluster do Amazon EKS.

Como implantar o servidor de métricas

1. Implante o servidor de métricas com o seguinte comando:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

2. Verifique se a implantação do metrics-server está executando o número desejado de pods com oseguinte comando.

kubectl get deployment metrics-server -n kube-system

Resultado

NAME READY UP-TO-DATE AVAILABLE AGEmetrics-server 1/1 1 1 6m

Métricas do plano de controle com o PrometheusO servidor de API do Kubernetes expões várias métricas úteis para monitoramento e análise. Essasmétricas são expostas internamente por meio de um endpoint de métricas que se refere à API HTTP /metrics. Assim como outros endpoints, esse endpoint é exposto no plano de controle do Amazon EKS.Este tópico explica algumas das maneiras de usar esse endpoint para visualizar e analisar o que o clusterestá fazendo.

Visualizar as métricas brutasPara visualizar a saída de métricas brutas, use kubectl com o sinalizador --raw. Esse comando permitepassar qualquer caminho HTTP e retorna a resposta bruta.

kubectl get --raw /metrics

Saída de exemplo.

...✓ HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host.✓ TYPE rest_client_requests_total counterrest_client_requests_total{code="200",host="127.0.0.1:21362",method="POST"} 4994rest_client_requests_total{code="200",host="127.0.0.1:443",method="DELETE"} 1rest_client_requests_total{code="200",host="127.0.0.1:443",method="GET"} 1.326086e+06rest_client_requests_total{code="200",host="127.0.0.1:443",method="PUT"} 862173rest_client_requests_total{code="404",host="127.0.0.1:443",method="GET"} 2rest_client_requests_total{code="409",host="127.0.0.1:443",method="POST"} 3rest_client_requests_total{code="409",host="127.0.0.1:443",method="PUT"} 8✓ HELP ssh_tunnel_open_count Counter of ssh tunnel total open attempts✓ TYPE ssh_tunnel_open_count counterssh_tunnel_open_count 0✓ HELP ssh_tunnel_open_fail_count Counter of ssh tunnel failed open attempts✓ TYPE ssh_tunnel_open_fail_count counterssh_tunnel_open_fail_count 0

244

Page 253: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioImplantar o Prometeu

Essa saída bruta retorna textualmente o que o servidor de API expõe. Essas métricas são representadasem um formato do Prometheus. Este formato permite que o servidor de API exponha diferentes métricasdetalhadas por linha. Cada linha inclui um nome da métrica, tags e um valor.

metric_name{"tag"="value"[,...]} value

Embora esse endpoint seja útil se você estiver procurando uma métrica específica, normalmente vocêdeseja analisar essas métricas ao longo do tempo. Para fazer isso, você pode implantar o Prometheus nocluster. O Prometheus é um banco de dados de séries temporais e monitoramento que extrai os endpointsexpostos e agrega dados, permitindo filtrar, criar gráficos e consultar os resultados.

Implantar o PrometeuEste tópico ajuda você a implantar o Prometheus no cluster com o Helm V3. Se você já tiver o Helminstalado, poderá verificar sua versão com o comando helm version. O Helm é um gerenciador depacotes para clusters do Kubernetes. Para obter mais informações sobre o Helm e como instalá-lo,consulte Usar o Helm com o Amazon EKS (p. 247).

Após configurar o Helm para o cluster do Amazon EKS, você poderá usá-lo para implantar o Prometheuscom as etapas a seguir.

Para implantar o Prometheus usando o Helm

1. Crie um namespace do Prometheus.

kubectl create namespace prometheus

2. Implante o Prometheus.

helm install prometheus stable/prometheus \ --namespace prometheus \ --set alertmanager.persistentVolume.storageClass="gp2",server.persistentVolume.storageClass="gp2"

3. Verifique se todos os pods no namespace prometheus estão no estado READY.

kubectl get pods -n prometheus

Resultado

NAME READY STATUS RESTARTS AGEprometheus-alertmanager-59b4c8c744-r7bgp 1/2 Running 0 48sprometheus-kube-state-metrics-7cfd87cf99-jkz2f 1/1 Running 0 48sprometheus-node-exporter-jcjqz 1/1 Running 0 48sprometheus-node-exporter-jxv2h 1/1 Running 0 48sprometheus-node-exporter-vbdks 1/1 Running 0 48sprometheus-pushgateway-76c444b68c-82tnw 1/1 Running 0 48sprometheus-server-775957f748-mmht9 1/2 Running 0 48s

4. Use kubectl para fazer o redirecionamento de portas do console do Prometheus para sua máquinalocal.

kubectl --namespace=prometheus port-forward deploy/prometheus-server 9090

5. Insira localhost:9090 em um navegador da web para visualizar o console do Prometheus.

245

Page 254: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioImplantar o Prometeu

6. Escolha uma métrica do menu - insert metric at cursor (- inserir métrica no cursor) e selecione Execute(Executar). Selecione a guia Graph (Gráfico) para mostrar a métrica ao longo do tempo. A imagem aseguir mostra container_memory_usage_bytes ao longo do tempo.

7. Na barra de navegação superior, selecione Status e Targets (Destinos).

246

Page 255: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioUsar o Helm

Todos os endpoints do Kubernetes que estão conectados ao Prometheus usando a descoberta deserviço são exibidos.

Usar o Helm com o Amazon EKSO gerenciador de pacotes Helm para Kubernetes ajuda a instalar e gerenciar aplicativos no cluster doKubernetes. Para obter mais informações, consulte a documentação do Helm. Este tópico ajuda a instalare executar os binários Helm para que você possa instalar e gerenciar gráficos usando a CLI do Helm nosistema local.

Important

Antes de instalar os gráficos Helm no cluster do Amazon EKS, é necessário configurar o kubectlpara funcionar com o Amazon EKS. Se você ainda não fez isso, consulte Criar um kubeconfigpara o Amazon EKS (p. 226) antes de continuar. Se o comado a seguir for bem-sucedido para ocluster, a configuração estará correta.

kubectl get svc

Como instalar os binários Helm no sistema local

1. Execute o comando apropriado para o sistema operacional cliente.

• Se estiver usando o MacOS com o Homebrew, instale os binários com o comando a seguir.

brew install helm

• Se estiver usando o Windows com o Chocolatey, instale os binários com o comando a seguir.

247

Page 256: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioMarcar os recursos do

choco install kubernetes-helm

• Se você estiver usando o Linux, instale os binários com os comandos a seguir.

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.shchmod 700 get_helm.sh./get_helm.sh

2. Para escolher os novos arquivos binários no PATH, feche a janela atual do terminal e abra uma nova.3. Confirme se o Helm está sendo executado com o comando a seguir.

helm help

4. Neste ponto, você pode executar quaisquer comandos do Helm (como helm installchart_name) para instalar, modificar, excluir ou consultar gráficos do Helm no seu cluster. Se éiniciante no Helm e não tem um gráfico específico para instalar, você pode:

• Experimentar instalando um gráfico de exemplo. Consulte Instalar um gráfico de exemplo no Guiade início rápido do Helm.

• Instale um gráfico do Amazon EKS a partir do repositório do GitHub eks-charts ou do Helm Hub.

Marcar os recursos do Amazon EKSPara o ajudar a gerir o seu Amazon EKS recursos, pode atribuir os seus próprios metadados a cadarecurso utilizando etiquetas. Este tópico fornece uma descrição geral da função de etiquetas e mostracomo pode criar etiquetas.

Tópicos• Conceitos básicos de tags (p. 248)• Marcar os recursos do (p. 249)• Restrições de tags (p. 250)• Trabalhar com tags usando o console (p. 250)• Trabalhar com etiquetas utilizando o CLI, API ou eksctl (p. 251)

Conceitos básicos de tagsUma tag é um rótulo atribuído a um recurso da AWS. Cada tag consiste de uma chave e um valor opcional,ambos definidos por você.

As tags permitem categorizar os recursos da AWS por, por exemplo, finalidade, proprietário ou ambiente.Quando você tem muitos recursos do mesmo tipo; é possível identificar rapidamente um recurso específicocom base nas tags que você atribuiu a ele. Por exemplo, você pode definir um conjunto de tags paraseus clusters do Amazon EKS para ajudá-lo a rastrear o proprietário e o nível da pilha de cada cluster.Recomendamos planejar um conjunto consistente de chaves de tag para cada tipo de recurso. Você podepesquisar e filtrar os recursos de acordo com as tags que adicionar.

Além disso, as tags não são automaticamente atribuídas aos recursos. Depois de adicionar uma tag, vocêpode editar as chaves e os valores das tags ou remover tags de um recurso a qualquer momento. Se vocêexcluir um recurso, todas as tags do recurso também serão excluídas.

As tags não têm significado semântico no Amazon EKS e são interpretadas estritamente como uma stringde caracteres. Você pode definir o valor de uma tag a uma string vazia, mas não pode configurar o valor

248

Page 257: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioMarcar os recursos do

de um tag como nula. Se adicionar uma etiqueta que tenha a mesma chave de uma tag existente nesserecurso, o novo valor substitui o valor anterior.

Pode marcar recursos de cluster novos ou existentes utilizando o Console de gerenciamento da AWS, oAWS CLI, ou o Amazon EKS API. Só pode etiquetar novos recursos de cluster utilizando eksctl.

Se utilizar AWS Identity and Access Management (IAM), pode controlar quais os utilizadores no seu AWSconta tem permissão para gerir etiquetas.

Marcar os recursos doVocê pode adicionar as tags a clusters novos ou existentes e grupos de nós gerenciados do Amazon EKS.

Se estiver a utilizar o Amazon EKS e, em qualquer altura, pode aplicar etiquetas a recursos novos ouexistentes. Pode fazê-lo utilizando o Etiquetas na página de recursos relevante. Se estiver a utilizareksctl, então pode aplicar etiquetas a recursos quando são criados utilizando o --tags opção.

Se estiver a utilizar o Amazon EKS API, o AWS CLI, ou um AWS O SDK pode aplicar tags a novosrecursos utilizando o tags parâmetro na acção API relevante. Pode aplicar tags aos recursos existentesutilizando o TagResource Ação API. Para obter mais informações, consulte TagResource.

Algumas ações de criação de recursos permitem que você especifique tags para um recurso quando ele écriado. Se as etiquetas não puderem ser aplicadas enquanto um recurso está a ser criado, o recurso nãodeve ser criado. Este mecanismo assegura que os recursos que pretende etiquetar na criação são criadoscom etiquetas especificadas ou não são criados em todos. Se marcar recursos no momento da criação,não precisa de executar scripts de marcação personalizados depois de criar um recurso.

A tabela a seguir descreve os recursos do Amazon EKS que podem ser marcados com tags e os recursosque podem ser marcados na criação.

Suporte à marcação para recursos do Amazon EKS

Recurso: Compatível com tags Oferece suporte àpropagação de tags

Suporta a marcação nacriação (Amazon EKSAPI, AWS CLI, AWSSDK, e eksctl)

Clusters do AmazonEKS

Sim. Não. As tags de clusternão são propagadaspara nenhum outrorecurso associado aocluster.

Sim.

Amazon EKS-grupos denós geridos

Sim. Não. As tags de grupode nós gerenciadosnão se propagam paranenhum outro recursoassociado ao grupo denós.

Sim.

Perfis do Amazon EKSFargate

Sim. Não. Tags de perfildo Fargate não sepropagam para outrosrecursos associadosao perfil do Fargate,como os pods que estãoagendados com ele.

Sim.

249

Page 258: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioRestrições de tags

Restrições de tagsAs restrições básicas a seguir se aplicam às tags.

• Número máximo de tags por recurso: –50• Em todos os recursos, cada chave de tag deve ser exclusiva e pode ter apenas um valor.• Comprimento máximo da chave – 128 caracteres Unicode em UTF-8• Valor máximo da chave – 256 caracteres Unicode em UTF-8• Se seu esquema de marcação for usado em vários serviços e recursos da AWS, lembre-se de que

outros serviços podem ter restrições nos caracteres permitidos. Em geral, os caracteres permitidos são:letras, números, espaços representáveis em UTF-8 e os seguintes caracteres: + - = . _ : / @.

• As chaves e os valores de tags diferenciam maiúsculas de minúsculas.• Não utilizar aws:, AWS:, ou qualquer combinação superior ou minúscula de como um prefixo para teclas

ou valores. Estes são reservados apenas para AWS utilizar. Você não pode editar nem excluir chavesnem valores de tag com esse prefixo. As tags com esse prefixo não contam para as tags por limite derecurso.

Trabalhar com tags usando o consoleCom o console do Amazon EKS, é possível gerenciar as tags associadas aos clusters e grupos de nósgerenciados novos ou existentes.

Quando você selecionar uma página específica do recurso no console do Amazon EKS, ela exibirá umalista desses recursos. Por exemplo, se você selecionar Clusters no painel de navegação, o consoleexibirá uma lista dos clusters do Amazon EKS. Quando seleccionar um recurso de uma destas listas(por exemplo, um grupo específico) que suporta etiquetas, pode ver e gerir as suas marcas no Etiquetasseparador.

Adicionar tags a um recurso individual na criaçãoPode adicionar etiquetas a Amazon EKS grupos, grupos de nós geridos e Fargate quando os cria. Paraobter mais informações, consulte Criar um cluster do Amazon EKS (p. 30).

Adicionar e excluir tags em um recurso individualO Amazon EKS permite que você adicione ou exclua tags associadas aos clusters diretamente na páginado recurso.

Para adicionar ou excluir uma tag em um recurso individual

1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.2. Na barra de navegação, selecione a região a ser usada.3. No painel de navegação, escolha Clusters.4. Escolha um cluster específico, role para baixo e escolha Manage tags (Gerenciar tags).5. Na página Update tags (Atualizar tags), adicione ou exclua as tags conforme necessário.

• Para adicionar uma tag — escolha Add Tag (Adicionar tag) e especifique a chave e o valor de cadatag.

• Para remover uma tag — escolha Remove tag (Remover tag).6. Repita esse processo para cada tag que você deseja adicionar ou excluir e escolha Update (Atualizar)

para concluir.

250

Page 259: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioTrabalhar com etiquetas utilizando o CLI, API ou eksctl

Trabalhar com etiquetas utilizando o CLI, API oueksctlUse os seguintes comandos da AWS CLI ou operações da API do Amazon EKS para adicionar, atualizar,listar e excluir as tags de seus recursos. Só pode utilizar eksctl para adicionar etiquetas a novosrecursos.

Suporte à marcação para recursos do Amazon EKS

Tarefa CLI DA AWS AWS Tools para WindowsPowerShell

Ação de API

Adicione ousobrescreva uma oumais tags.

tag-resource Add-EKSResourceTag TagResource

Exclua uma ou maistags.

untag-resource Remove-EKSResourceTag UntagResource

Os exemplos a seguir mostram como marcar ou desmarcar recursos usando a AWS CLI.

Exemplo: = 1. Marcar um grupo existente

O comando a seguir marca um cluster existente.

aws eks tag-resource --resource-arn resource_ARN --tags team=devs

Exemplo: = 2. Desmarcar um grupo existente

O comando a seguir exclui uma tag de um cluster existente.

aws eks untag-resource --resource-arn resource_ARN --tag-keys tag_key

Exemplo 3 Listar as tags de um recurso

O comando a seguir lista as tags associadas a um recurso existente.

aws eks list-tags-for-resource --resource-arn resource_ARN

Algumas ações de criação de recursos permitem especificar as tags ao criar o recurso. As seguintes açõesapoiam a etiquetagem ao criar um recurso.

Tarefa AWS CLI AWS Tools paraWindows PowerShell

Ação de API eksctl

Criar um cluster create-cluster

New-EKSCluster CreateClustercreatecluster

Crie um grupo de nósgerenciados

create-nodegroup

New-EKSNodegroup CreateNodegroupcreatenodegroup

Como criar um perfil doFargate

create-fargate-profile

New-EKSFargateProfile

CreateFargateProfile.htmlcreatefargateprofile

251

Page 260: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCotas de serviço

Cotas de serviço do Amazon EKSO Amazon EKS foi integrado ao Cotas de serviço, um serviço da AWS que permite visualizar e gerenciaras cotas de um local central. Para mais informações, consulte O que são quotas de serviço? no Guiado usuário do Cotas de serviço. Cotas de serviço facilita a procura do valor do seu Amazon EKS e AWSFargate quotas de serviço utilizando o Console de gerenciamento da AWS e AWS CLI.

Console de gerenciamento da AWS

Para ver Amazon EKS e Fargate quotas de serviço utilizando o Console de gerenciamento daAWS

1. Abra o console do Cotas de serviço em https://console.aws.amazon.com/servicequotas/.2. No painel de navegação, escolha AWS services (Serviços da AWS).3. Desde o AWS serviços lista, pesquisar e selecionar Amazon Elastic Kubernetes Service (Amazon

EKS) ou AWS Fargate.

Na lista Service quotas (Cotas de serviço) é possível ver o nome da cota de serviço, o valoraplicado (se estiver disponível), a cota da AWS padrão e se o valor da cota é ajustável.

4. Para visualizar informações adicionais sobre uma cota de serviço, como a descrição, escolha onome da cota.

5. (Opcional) Para solicitar um aumento de cota, selecione a cota que deseja aumentar, selecioneSolicitar aumento de cota, insira ou selecione as informações necessárias e selecione Solicitar.

Para trabalhar mais com cotas de serviço usando o Console de gerenciamento da AWS, consulteo Guia do usuário do Cotas de serviço. Para solicitar um aumento de cota, consulte Solicitar umaumento de cota no Guia do usuário do Cotas de serviço.

AWS CLI

Para ver Amazon EKS e Fargate quotas de serviço utilizando o AWS CLI

Execute o seguinte comando para ver o seu Amazon EKS quotas.

aws service-quotas list-aws-default-service-quotas \ --query 'Quotas[*].{Adjustable:Adjustable,Name:QuotaName,Value:Value,Code:QuotaCode}' \ --service-code eks \ --output table

Execute o seguinte comando para ver o seu Fargate quotas.

aws service-quotas list-aws-default-service-quotas \ --query 'Quotas[*].{Adjustable:Adjustable,Name:QuotaName,Value:Value,Code:QuotaCode}' \ --service-code fargate \ --output table

Note

A quota devolvida é o número máximo de Amazon ECS tarefas ou Amazon EKS séries acorrer em simultâneo Fargate nesta conta na Região atual.

Para trabalhar mais com cotas de serviço usando a AWS CLI, consulte a Referência de comandosda AWS CLI do Cotas de serviço. Para solicitar um aumento de cota, consulte o comando request-service-quota-increase na Referência de comandos da AWS CLI.

252

Page 261: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCotas de serviço

As tabelas seguintes fornecem as quotas predefinidas (também referidas como limites) para Amazon EKSe AWS Fargate para um AWS conta.

Cotas de serviço do Amazon EKS

As seguintes quotas são Amazon EKS quotas de serviço. A maioria destas quotas de serviço estãolistadas sob o Amazon Elastic Kubernetes Service (Amazon EKS) namespace no Cotas de serviçoconsola. Para solicitar um aumento de cota, consulte Solicitar um aumento de cota no Guia do usuário doCotas de serviço.

Cota de serviço Description (Descrição) Valor de cota padrão Ajustável

Clusters O número máximo declusters EKS nestaconta na região atual.

-100 Sim.

Grupos de segurançado plano de controlo porgrupo

O número máximo degrupos de segurançado plano de controlopor grupo (estes sãoespecificados quandocria o grupo).

4. : não

Grupos de nós geridospor grupo

O número máximo degrupos de nós geridospor grupo.

30% Sim.

Nós por grupo de nógerido

O número máximo denós por grupo de nógerido.

-100 Sim.

Acesso ao parâmetro deavaliação público CIDRpor grupo

O número máximode intervalos deCIDR de acesso aoendpoint público porgrupo (estes sãoespecificados quandocria ou actualizam ogrupo).

40 : não

Fargate perfis por grupo O número máximoFargate perfis porgrupo.

10* Sim.

Seletores por Fargateperfil

O número máximo deseletores por Fargateperfil

5. Sim.

Pares de etiquetas porFargate selector deperfil

O número máximo depares de etiquetas porFargate selector deperfil

5. Sim.

Cotas de serviço do AWS Fargate

A seguinte quota é uma Amazon EKS em AWS Fargate quota de serviço. A quota de serviço está listadasob o AWS Fargate namespace no Cotas de serviço consola. Para solicitar um aumento de cota, consulteSolicitar um aumento de cota no Guia do usuário do Cotas de serviço.

253

Page 262: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCotas de serviço

Cota de serviço Description (Descrição) Valor de cota padrão Ajustável

Contagem de recursosa pedido da plataformaFargate

O número máximo deAmazon ECS tarefas ouAmazon EKS séries acorrer em simultâneoFargate nesta conta naRegião atual.

-100 Sim.

254

Page 263: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIdentity and Access Management

Segurança em Amazon EKSA segurança da nuvem na AWS é a nossa maior prioridade. Como cliente da AWS, você se beneficiaráde um datacenter e de uma arquitetura de rede criados para atender aos requisitos das empresas com asmaiores exigências de segurança.

A segurança é uma responsabilidade compartilhada entre a AWS e você. O modelo de responsabilidadecompartilhada descreve isto como segurança da nuvem e segurança na nuvem:

• Segurança da nuvem – A AWS é responsável por proteger a infraestrutura que executa os serviçosda AWS na Nuvem da AWS. Para o Amazon EKS, a AWS é responsável pelo plano de controle doKubernetes, que inclui os nós de plano de controle e o banco de dados etcd. Auditores de terceirostestam e verificam regularmente a eficácia da nossa segurança como parte dos programas deconformidade da AWS. Para saber mais sobre os programas de conformidade que se aplicam aoAmazon EKS, consulte Serviços da AWS no escopo pelo programa de conformidade.

• Segurança na nuvem – Sua responsabilidade inclui as seguintes áreas.• A configuração de segurança do plano de dados, incluindo a configuração dos grupos de segurança

que permitem que o tráfego passe do plano de controle do Amazon EKS para a VPC do cliente• A configuração dos nós e dos próprios contentores• O sistema operativo dos hóspedes do nó (incluindo atualizações e patches de segurança)• Outros softwares de aplicativos associados:

• Configurar e gerenciar os controles de rede, como regras de firewall• Administrar o gerenciamento de acesso e identidade no nível da plataforma, com ou além do IAM

• A confidencialidade dos dados, os requisitos da sua empresa e as leis e regulamentos aplicáveis

Esta documentação ajuda a entender como aplicar o modelo de responsabilidade compartilhada ao usaro Amazon EKS. Os tópicos a seguir mostram como configurar o Amazon EKS para atender aos seusobjetivos de segurança e de conformidade. Você também aprenderá a usar outros serviços da AWS queajudam a monitorar e proteger os recursos do Amazon EKS.

Tópicos• Identity and Access Management para o Amazon EKS (p. 255)• Registrar e monitorar no Amazon EKS (p. 289)• Validação de conformidade do Amazon EKS (p. 289)• Resiliência no Amazon EKS (p. 290)• Segurança da infraestrutura no Amazon EKS (p. 290)• Análise de vulnerabilidade e configuração no Amazon EKS (p. 291)• Política de segurança de pods (p. 292)

Identity and Access Management para o AmazonEKS

O AWS Identity and Access Management (IAM) é um serviço da AWS que ajuda um administrador acontrolar com segurança o acesso aos recursos da AWS. Os administradores do IAM controlam quem

255

Page 264: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAudience

pode ser autenticado (conectado) e autorizado (ter permissões) para usar os recursos do Amazon EKS. OIAM é um serviço da AWS que pode ser usado sem custo adicional.

AudienceO uso do AWS Identity and Access Management (IAM) varia, dependendo do trabalho que você realiza noAmazon EKS.

Usuário do serviço – se você usar o Amazon EKS para fazer sua tarefa, o administrador fornecerá ascredenciais e as permissões de que você precisa. À medida que usar mais recursos do Amazon EKSpara fazer seu trabalho, você poderá precisar de permissões adicionais. Entender como o acesso égerenciado pode ajudar você a solicitar as permissões corretas ao seu administrador. Se não for possívelacessar um recurso no Amazon EKS, consulte Solução de problemas de identidade e acesso do AmazonEKS (p. 289).

Administrador do serviço – se você for o responsável pelos recursos do Amazon EKS em sua empresa,você provavelmente terá acesso total ao Amazon EKS. Seu trabalho é determinar quais recursos doAmazon EKS seus funcionários devem acessar. Assim, é necessário enviar solicitações ao administradordo IAM para alterar as permissões dos usuários de seu serviço. Revise as informações nesta página paraentender os conceitos básicos do IAM. Para saber mais sobre como sua empresa pode usar o IAM com oAmazon EKS, consulte Como o Amazon EKS funciona com o IAM (p. 260).

Administrador do IAM – se você é um administrador do IAM, talvez queira saber detalhes sobre comopode escrever políticas para gerenciar o acesso ao Amazon EKS. Para visualizar exemplos de políticasbaseadas em identidade do Amazon EKS que podem ser usadas no IAM, consulte Exemplos de políticasbaseadas em identidade do Amazon EKS (p. 262).

Autenticar com identidadesA autenticação é a forma como você faz login na AWS usando suas credenciais de identidade. Para obtermais informações sobre como fazer login usando o Console de gerenciamento da AWS, consulte A páginade login e do console do IAM no Guia do usuário do IAM.

Você deve ser autenticado (fazer login na AWS) como o Usuário raiz da conta da AWS, um usuário doIAM, ou assumindo uma função do IAM. Também é possível usar a autenticação de logon único da suaempresa, ou até mesmo fazer login usando o Google ou o Facebook. Nesses casos, seu administradorconfigurou anteriormente a federação de identidades usando funções do IAM. Ao acessar a AWS usandocredenciais de outra empresa, você estará assumindo uma função indiretamente.

Para fazer login diretamente no Console de gerenciamento da AWS, use sua senha com o e-mail dousuário raiz ou seu nome de usuário do IAM. É possível acessar a AWS de maneira programática usandoseu usuário raiz ou as chaves de acesso do usuário do IAM. A AWS fornece ferramentas do SDK ou dalinha de comando para assinar sua solicitação de forma criptográfica usando suas credenciais. Se vocênão utilizar ferramentas da AWS, cadastre a solicitação você mesmo. Faça isso usando o Signature versão4, um protocolo para autenticação de solicitações de API de entrada. Para obter mais informações sobre aautenticação de solicitações, consulte Processo de cadastramento do Signature versão 4 na AWS GeneralReference.

Independentemente do método de autenticação usado, também pode ser exigido que você forneçainformações adicionais de segurança. Por exemplo, a AWS recomenda o uso da autenticação multifator(MFA) para aumentar a segurança de sua conta. Para saber mais, consulte Usar a autenticação multifator(MFA) na AWS no Guia do usuário do IAM.

Usuário raiz da conta da AWSAo criar uma conta da AWS, você começa com uma única identidade de login que tenha acesso total atodos os recursos e serviços da AWS na conta. Essa identidade é chamada de AWS da conta da usuário

256

Page 265: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAutenticar com identidades

raiz e é acessada pelo login com o endereço de e-mail e a senha que você usou para criar a conta.Recomendamos que não use o usuário raiz para suas tarefas diárias, nem mesmo as administrativas.Em vez disso, siga as melhores práticas de uso do usuário raiz somente para criar seu primeiro usuáriodo IAM. Depois, armazene as credenciais usuário raiz com segurança e use-as para executar apenasalgumas tarefas de gerenciamento de contas e de serviços.

Grupos e usuários do IAMUm usuário do IAM é uma identidade em sua conta da AWS que tem permissões específicas para umaúnica pessoa ou um único aplicativo. Um usuário do IAM pode ter credenciais de longo prazo, como umnome de usuário e uma senha ou um conjunto de chaves de acesso. Para saber como gerar chaves deacesso, consulte Gerenciar chaves de acesso para usuários do IAM no Guia do usuário do IAM. Ao gerarchaves de acesso para um usuário do IAM, visualize e salve o par de chaves de maneira segura. Não serápossível recuperar a chave de acesso secreta futuramente. Em vez disso, você deverá gerar outro par dechaves de acesso.

Um grupo do IAM é uma identidade que especifica uma coleção de usuários do IAM. Não é possívelfazer login como um grupo. É possível usar grupos para especificar permissões para vários usuários deuma vez. Os grupos facilitam o gerenciamento de permissões para grandes conjuntos de usuários. Porexemplo, você pode ter um grupo chamado Administradores do IAM e atribuir a esse grupo permissõespara administrar recursos do IAM.

Usuários são diferentes de funções. Um usuário é exclusivamente associado a uma pessoa ou a umaplicativo, mas uma função pode ser assumida por qualquer pessoa que precisar dela. Os usuários têmcredenciais permanentes de longo prazo, mas as funções fornecem credenciais temporárias. Para sabermais, consulte Quando criar um usuário do IAM (em vez de uma função) no Guia do usuário do IAM.

Funções do IAMUma função do IAM é uma identidade dentro de sua conta da AWS que tem permissões específicas.Ela é semelhante a um usuário do IAM, mas não está associada a uma pessoa específica. É possívelassumir temporariamente uma função do IAM no Console de gerenciamento da AWS alternando funções.É possível assumir uma função chamando uma operação de API da AWS CLI ou da AWS, ou usando umURL personalizado. Para obter mais informações sobre os métodos para o uso de funções, consulte Usarfunções do IAM no Guia do usuário do IAM.

As funções do IAM com credenciais temporária são úteis nas seguintes situações:

• Permissões temporárias para usuários do IAM – um usuário do IAM pode assumir uma função do IAMpara obter temporariamente permissões diferentes para uma tarefa específica.

• Acesso de usuário federado – Em vez de criar um usuário do IAM, você pode usar identidadesexistentes do AWS Directory Service, do diretório de usuário da sua empresa ou de um provedor deidentidades da Web. Estes são conhecidos como usuários federados. A AWS atribui uma função a umusuário federado quando o acesso é solicitado por meio de um provedor de identidades. Para obter maisinformações sobre usuários federados, consulte Usuários federados e funções no Guia do usuário doIAM.

• Acesso entre contas – é possível usar uma função do IAM para permitir que alguém (um principalconfiável) em outra conta acesse recursos em sua conta. As funções são a principal forma de concederacesso entre contas. No entanto, alguns serviços da AWS permitem que você anexe uma políticadiretamente a um recurso (em vez de usar uma função como proxy). Para saber a diferença entrefunções e políticas baseadas em recurso para acesso entre contas, consulte Como as funções do IAMdiferem das políticas baseadas em recurso no Guia do usuário do IAM.

• Acesso a serviços da AWS – Uma função de serviço é uma função do IAM que um serviço assumepara realizar ações em seu nome na sua conta. Ao configurar alguns ambientes de serviço da AWS,você deve definir uma função a ser assumida pelo serviço. Essa função de serviço deve incluir todasas permissões necessárias para o serviço acessar os recursos da AWS de que precisa. As funções de

257

Page 266: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioGerenciamento do acesso usando políticas

serviço variam de acordo com o serviço, mas muitas permitem que você escolha as permissões, desdeque atenda aos requisitos documentados para esse serviço. As funções de serviço fornecem acessoapenas dentro de sua conta e não podem ser usadas para conceder acesso a serviços em outrascontas. Você pode criar, modificar e excluir uma função de serviço no IAM. Por exemplo, você podecriar uma função que permita que Amazon Redshift acesse um bucket do Amazon S3 em seu nome ecarregue dados desse bucket em um cluster Amazon Redshift. Para obter mais informações, consulteCriar uma função para delegar permissões a um serviço da AWS no Guia do usuário do IAM.

• Aplicativos em execução no Amazon EC2 –Você pode usar uma função do IAM para gerenciarcredenciais temporárias para aplicativos que estão sendo executados em uma instância do EC2 e quefazem solicitações de API da AWS CLI ou AWS. É preferível fazer isso do que armazenar chaves deacesso na instância do EC2. Para atribuir uma função da AWS a uma instância do EC2 e disponibilizá-la para todos os seus aplicativos, crie um perfil de instância que esteja anexado à instância. Um perfilde instância contém a função e permite que programas que estão em execução na instância do EC2obtenham credenciais temporárias. Para mais informações, consulte Uso de uma função do IAM paraconceder permissões aos aplicativos em execução nas instâncias do Amazon EC2 no Guia do usuáriodo IAM.

Para saber se você deve usar funções do IAM, consulte Quando criar uma função do IAM (em vez de umusuário) no Guia do usuário do IAM.

Gerenciamento do acesso usando políticasVocê controla o acesso na AWS criando políticas e anexando-as às identidades do IAM ou aos recursosda AWS. Uma política é um objeto na AWS que, quando associado a uma identidade ou a um recurso,define suas permissões. A AWS avalia essas políticas quando uma entidade (usuário raiz, usuário doIAM ou função do IAM) faz uma solicitação. As permissões nas políticas determinam se a solicitação serápermitida ou negada. A maioria das políticas são armazenadas na AWS como documentos JSON. Paraobter mais informações sobre a estrutura e o conteúdo de documentos de políticas JSON, consulte Visãogeral de políticas JSON no Guia do usuário do IAM.

Um administrador do IAM pode usar políticas para especificar quem tem acesso aos recursos da AWS equais ações essas pessoas podem executar nesses recursos. Cada entidade do IAM (usuário ou função)começa sem permissões. Em outras palavras, por padrão, os usuários não podem fazer nada, nem mesmoalterar sua própria senha. Para dar permissão a um usuário para fazer algo, um administrador deve anexaruma política de permissões ao usuário. Ou o administrador pode adicionar o usuário a um grupo que tenhaas permissões pretendidas. Quando um administrador concede permissões a um grupo, todos os usuáriosdesse grupo recebem essas permissões.

As políticas do IAM definem permissões para uma ação, independentemente do método usadopara executar a operação. Por exemplo, suponha que você tenha uma política que permite a açãoiam:GetRole. Um usuário com essa política pode obter informações de funções do Console degerenciamento da AWS, da AWS CLI ou da API da AWS.

Políticas baseadas em identidadeAs políticas baseadas em identidade são documentos JSON de políticas de permissões que você podeanexar a uma entidade, como um usuário, função ou grupo do IAM. Essas políticas controlam quais açõescada identidade pode realizar, em quais recursos e em que condições. Para saber como criar uma políticabaseada em identidade, consulte Criar políticas do IAM no Guia do usuário do IAM.

As políticas baseadas em identidade podem ser categorizadas ainda mais como políticas em linha oupolíticas gerenciadas. As políticas em linha são anexadas diretamente a um único usuário, grupo oufunção. As políticas gerenciadas são políticas independentes que podem ser anexadas a vários usuários,grupos e funções em sua conta da AWS. As políticas gerenciadas incluem políticas gerenciadas pela AWSe políticas gerenciadas pelo cliente. Para saber como escolher entre uma política gerenciada ou uma

258

Page 267: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioGerenciamento do acesso usando políticas

política em linha, consulte Escolher entre políticas gerenciadas e políticas em linha no Guia do usuário doIAM.

Políticas baseadas em recursosPolíticas baseadas em recursos são documentos de política JSON que você anexa a um recurso, comoum bucket do Amazon S3. Os administradores do serviço podem usar essas políticas para definir quaisações um principal especificado (função, usuário ou membro da conta) pode executar nesse recurso e sobquais condições. As políticas baseadas em recurso são políticas em linha. Não há políticas baseadas emrecurso gerenciadas.

Listas de controle de acesso (ACLs)As listas de controle de acesso (ACLs) são um tipo de política que controla quais principais (membros,usuários ou funções da conta) têm permissões para acessar um recurso. As ACLs são semelhantes àspolíticas baseadas em recurso, embora não usem o formato de documento de política JSON. O AmazonS3, o AWS WAF e a Amazon VPC são exemplos de serviços que oferecem suporte a ACLs. Para sabermais sobre as ACLs, consulte Visão geral da lista de controle de acesso (ACL) no Guia do desenvolvedordo Amazon Simple Storage Service.

Outros tipos de políticaA AWS oferece suporte a tipos de política menos comuns. Esses tipos de política podem definir o máximode permissões concedidas a você pelos tipos de política mais comuns.

• Limites de permissões – um limite de permissões é um recurso avançado no qual você define omáximo de permissões que uma política baseada em identidade pode conceder a uma entidade doIAM (usuário ou função do IAM). É possível definir um limite de permissões para uma entidade. Aspermissões resultantes são a interseção das políticas baseadas em identidade da entidade e seuslimites de permissões. As políticas baseadas em recurso que especificam o usuário ou a função nocampo Principal não são limitadas pelo limite de permissões. Uma negação explícita em qualqueruma dessas políticas substitui a permissão. Para obter mais informações sobre limites de permissões,consulte Limites de permissões para entidades do IAM no Guia do usuário do IAM.

• Políticas de controle de serviço (SCPs – Service control policies) – SCPs são políticas JSON queespecificam o máximo de permissões para uma organização ou unidade organizacional (UO) noAWS Organizations. O AWS Organizations é um serviço para agrupamento e gerenciamento centraldas várias contas da AWS que sua empresa possui. Se você habilitar todos os recursos em umaorganização, poderá aplicar políticas de controle de serviço (SCPs) a qualquer uma ou a todas ascontas. O SCP limita as permissões para entidades em contas-membro, incluindo cada Usuário raizda conta da AWS. Para obter mais informações sobre Organizações e SCPs, consulte Como SCPsfuncionam no Guia do usuário do AWS Organizations.

• Políticas de sessão – as políticas de sessão são políticas avançadas que você transmite como umparâmetro quando cria de forma programática uma sessão temporária para uma função ou um usuáriofederado. As permissões da sessão resultante são a interseção das políticas baseadas em identidadedo usuário ou da função e das políticas de sessão. As permissões também podem ser provenientes deuma política baseada em recurso. Uma negação explícita em qualquer uma dessas políticas substitui apermissão. Para obter mais informações, consulte Políticas de sessão no Guia do usuário do IAM.

Vários tipos de políticaQuando vários tipos de política são aplicáveis a uma solicitação, é mais complicado compreender aspermissões resultantes. Para saber como a AWS determina se deve permitir uma solicitação quandovários tipos de política estão envolvidos, consulte Lógica de avaliação de políticas no Guia do usuário doIAM.

259

Page 268: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioComo o Amazon EKS funciona com o IAM

Como o Amazon EKS funciona com o IAMAntes de usar o IAM para gerenciar o acesso ao Amazon EKS, entenda quais recursos do IAM estãodisponíveis para uso com o Amazon EKS. Para obter uma visão de alto nível de como o Amazon EKS eoutros serviços da AWS funcionam com o IAM, consulte Serviços da AWS que funcionam com o IAM noGuia do usuário do IAM.

Tópicos• Políticas baseadas em identidade do Amazon EKS (p. 260)• Políticas baseadas em recursos do Amazon EKS (p. 261)• Autorização baseada em tags do Amazon EKS (p. 261)• Funções do IAM do Amazon EKS (p. 262)

Políticas baseadas em identidade do Amazon EKSCom as políticas baseadas em identidade do IAM, você pode especificar ações permitidas ou negadase recursos, bem como as condições sob as quais as ações são permitidas ou negadas. O Amazon EKSoferece suporte a ações, recursos e chaves de condição específicos. Para saber mais sobre todos oselementos usados em uma política JSON, consulte Referência de elementos de política JSON do IAM noGuia do usuário do IAM.

Actions

O elemento Action de uma política baseada em identidade do IAM descreve a ação ou ações específicasque serão permitidas ou negadas pela política. As ações de política geralmente têm o mesmo nome quea operação de API da AWS associada. A ação é usada em uma política para conceder permissões paraexecutar a operação associada.

Ações da política em Amazon EKS utilize o seguinte prefixo antes da acção: eks:. Por exemplo,para conceder alguém a obter informações descritivas sobre um Amazon EKS cluster, inclui oDescribeCluster na sua apólice. As instruções de política devem incluir um elemento Action ouNotAction.

Para especificar várias ações em uma única declaração, separe-as com vírgulas, conforme o seguinte.

"Action": ["eks:action1", "eks:action2"]

Você também pode especificar várias ações usando caracteres curinga (*). Por exemplo, para especificartodas as ações que começam com a palavra Describe, inclua a ação a seguir.

"Action": "eks:Describe*"

Para obter uma lista de ações do Amazon EKS, consulte Ações definidas pelo Amazon Elastic KubernetesService no Guia do usuário do IAM.

Resources

O elemento Resource especifica o objeto ou os objetos aos quais a ação se aplica. As instruções devemincluir um elemento Resource ou um elemento NotResource. Você especifica um recurso usando umARN ou usando o caractere curinga (*) para indicar que a instrução se aplica a todos os recursos.

O recurso de cluster do Amazon EKS tem o seguinte ARN:

260

Page 269: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioComo o Amazon EKS funciona com o IAM

arn:${Partition}:eks:${Region}:${Account}:cluster/${ClusterName}

Para obter mais informações sobre o formato de ARNs, consulte Nomes de recursos da Amazon (ARNs) enamespaces de serviços da AWS.

Por exemplo, para especificar o cluster dev em sua instrução, use o seguinte ARN:

"Resource": "arn:aws:eks:region-code:123456789012:cluster/dev"

Para especificar todos os clusters que pertencem a uma conta e região específicas, use o caracterecuringa (*):

"Resource": "arn:aws:eks:region-code:123456789012:cluster/*"

Algumas ações do Amazon EKS, como as ações para a criação de recursos, não podem ser executadasem um recurso específico. Nesses casos, é necessário usar o caractere curinga (*).

"Resource": "*"

Para ver uma lista de tipos de recurso do Amazon EKS e seus ARNs, consulte Recursos definidos peloAmazon Elastic Kubernetes Service no Guia do usuário do IAM. Para saber com quais ações você podeespecificar o ARN de cada recurso, consulte Ações definidas pelo Amazon Elastic Kubernetes Service.

Chaves de condição

O Amazon EKS não fornece nenhuma chave de condição específica ao serviço, mas oferece suporte aouso de algumas chaves de condição globais. Para consultar todas as chaves de condição global da AWS,consulte Chaves de contexto de condição global da AWS no Guia do usuário do IAM.

Examples

Para visualizar exemplos de políticas baseadas em identidade do Amazon EKS, consulte Exemplos depolíticas baseadas em identidade do Amazon EKS (p. 262).

Quando você cria um cluster do Amazon EKS, a função ou o usuário da entidade do IAM, comoum usuário federado que cria o cluster, recebe automaticamente permissões system:masters naconfiguração do RBAC do cluster. Para conceder a capacidade de interagir com o cluster a usuários oufunções adicionais da AWS, você deve editar o aws-auth ConfigMap no Kubernetes.

Para obter mais informações sobre como trabalhar com o ConfigMap, consulte Gerenciar usuários oufunções do IAM para o cluster (p. 229).

Políticas baseadas em recursos do Amazon EKSO Amazon EKS não oferece suporte a políticas baseadas em recurso.

Autorização baseada em tags do Amazon EKSVocê pode anexar tags a recursos do Amazon EKS ou passar tags em uma solicitação ao Amazon EKS.Para controlar o acesso baseado em tags, forneça informações sobre as tags no elemento de condição deuma política usando as chaves de condição eks:ResourceTag/key-name, aws:RequestTag/key-name ou aws:TagKeys. Para obter mais informações sobre a marcação de recursos do Amazon EKS,consulte Marcar os recursos do Amazon EKS (p. 248).

261

Page 270: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExemplos de políticas baseadas em identidade

Funções do IAM do Amazon EKSUma função do IAM é uma entidade dentro de sua conta da AWS que tem permissões específicas.

Usar credenciais temporárias com o Amazon EKSVocê pode usar credenciais temporárias para fazer login com federação, assumir uma função do IAMou assumir uma função entre contas. As credenciais de segurança temporárias são obtidas chamandooperações da API do AWS STS, como AssumeRole ou GetFederationToken.

O Amazon EKS oferece suporte ao uso de credenciais temporárias.

Funções vinculadas ao serviçoFunções vinculadas ao serviço permitem que os serviços da AWS acessem recursos em outros serviçospara concluir uma ação em seu nome. As funções vinculadas ao serviço aparecem em sua conta doIAM e são de propriedade do serviço. Um administrador do IAM pode visualizar, mas não pode editar aspermissões para funções vinculadas ao serviço.

O Amazon EKS oferece suporte a funções vinculadas ao serviço. Para obter detalhes sobre como criar ougerenciar funções vinculadas ao serviço do Amazon EKS, consulte Usar funções vinculadas ao serviço doAmazon EKS (p. 265).

Funções de serviçoEsse recurso permite que um serviço assuma uma função de serviço em seu nome. A função permite queo serviço acesse recursos em outros serviços para concluir uma ação em seu nome. As funções de serviçoaparecem em sua conta do IAM e são de propriedade da conta. Isso significa que um administrador doIAM pode alterar as permissões para essa função. Porém, fazer isso pode alterar a funcionalidade doserviço.

O Amazon EKS oferece suporte às funções de serviço. Para obter mais informações, consulte the sectioncalled “Função do IAM do cluster” (p. 269) e the section called “Nó IAM função” (p. 271).

Escolher uma função do IAM no Amazon EKSAo criar um recurso de cluster no Amazon EKS, é necessário escolher uma função para permitir que oAmazon EKS acesse vários outros recursos da AWS em seu nome. Se você já tiver criado uma funçãode serviço, o Amazon EKS fornecerá uma lista de funções da qual escolher. É importante escolher umafunção que tenha as políticas gerenciadas do Amazon EKS anexadas. Para obter mais informações,consulte the section called “Verificar se há uma função de cluster existente” (p. 269) e the section called“Verificar uma função de nó existente” (p. 272).

Exemplos de políticas baseadas em identidade doAmazon EKSPor padrão, os usuários e as funções do IAM não têm permissão para criar ou modificar recursos doAmazon EKS. Eles também não podem executar tarefas usando o Console de gerenciamento da AWS, aAWS CLI ou uma API da AWS. Um administrador do IAM deve criar políticas do IAM que concedam aosusuários e funções permissão para executarem operações da API específicas nos recursos especificadosde que precisam. O administrador deve anexar essas políticas aos usuários ou grupos do IAM que exigemessas permissões.

Para saber como criar uma política baseada em identidade do IAM usando esses exemplos dedocumentos de política JSON, consulte Criar políticas na guia JSON no Guia do usuário do IAM.

Quando você cria um cluster do Amazon EKS, a função ou o usuário da entidade do IAM, comoum usuário federado que cria o cluster, recebe automaticamente permissões system:masters na

262

Page 271: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExemplos de políticas baseadas em identidade

configuração do RBAC do cluster. Para conceder a capacidade de interagir com o cluster a usuários oufunções adicionais da AWS, você deve editar o aws-auth ConfigMap no Kubernetes.

Para obter mais informações sobre como trabalhar com o ConfigMap, consulte Gerenciar usuários oufunções do IAM para o cluster (p. 229).

Tópicos• Melhores práticas de políticas (p. 263)• Usar o console do Amazon EKS (p. 263)• Permitir que os usuários visualizem suas próprias permissões (p. 264)• Atualizar um cluster do Kubernetes (p. 265)• Listar ou descrever todos os clusters (p. 265)

Melhores práticas de políticasAs políticas baseadas em identidade são muito eficientes. Elas determinam se alguém pode criar, acessarou excluir recursos do Amazon EKS em sua conta. Essas ações podem incorrer em custos para sua contada AWS. Ao criar ou editar políticas baseadas em identidade, siga estas diretrizes e recomendações:

• Comece usando políticas gerenciadas pela AWS – para começar a usar o Amazon EKS rapidamente,use as políticas gerenciadas pela AWS para conceder a seus funcionários as permissões de queprecisam. Essas políticas já estão disponíveis em sua conta e são mantidas e atualizadas pelaAWS. Para obter mais informações, consulte Conceitos básicos do uso de permissões com políticasgerenciadas pela AWS no Guia do usuário do IAM.

• Conceder privilégio mínimo – ao criar políticas personalizadas, conceda apenas as permissõesnecessárias para executar uma tarefa. Comece com um conjunto mínimo de permissões e concedapermissões adicionais conforme necessário. Fazer isso é mais seguro do que começar com permissõesque são muito lenientes e tentar restringi-las posteriormente. Para obter mais informações, consulteConceder privilégio mínimo, no Guia do usuário do IAM.

• Habilitar o MFA para operações confidenciais – para segurança adicional, exija que os usuários do IAMusem a autenticação multifator (MFA) para acessar recursos ou operações de API confidenciais. Paraobter mais informações, consulte Usar a autenticação multifator (MFA) na AWS no Guia do usuário doIAM.

• Usar condições de política para segurança adicional – na medida do possível, defina as condições sobas quais suas políticas baseadas em identidade permitem o acesso a um recurso. Por exemplo, vocêpode gravar condições para especificar um intervalo de endereços IP permitidos do qual a solicitaçãodeve partir. Você também pode escrever condições para permitir somente solicitações em uma dataespecificada ou período ou para exigir o uso de SSL ou MFA. Para obter mais informações, consulteElementos da política JSON do IAM: condição no Guia do usuário do IAM.

Usar o console do Amazon EKSPara acessar o console do Amazon EKS, é necessário ter um conjunto mínimo de permissões. Essaspermissões devem permitir que você liste e visualize detalhes dos recursos do Amazon EKS em sua contada AWS. Se você criar uma política baseada em identidade que seja mais restritiva que as permissõesmínimas necessárias, o console não funcionará como pretendido para entidades (usuários ou funções doIAM) com essa política.

Para garantir que essas entidades ainda podem utilizar o Amazon EKS consola, crie uma apólice com oseu próprio nome exclusivo, como AmazonEKSAdminPolicy. Anexe a política às entidades. Para obtermais informações, consulte Adicionar permissões a um usuário no Guia do usuário do IAM.

{

263

Page 272: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExemplos de políticas baseadas em identidade

"Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "eks.amazonaws.com" } } } ]}

Não é necessário conceder permissões mínimas do console para usuários que fazem chamadas somenteà AWS CLI ou à API da AWS. Em vez disso, permita o acesso somente às ações que correspondem àoperação da API que você está tentando executar.

Permitir que os usuários visualizem suas próprias permissõesEste exemplo mostra como você pode criar uma política que permite que os usuários do IAM visualizemas políticas gerenciadas e em linha anexadas a sua identidade de usuário. Essa política inclui permissõespara concluir essa ação no console ou de forma programática usando a AWS CLI ou a API da AWS.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ]

264

Page 273: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioUsar funções vinculadas a serviço

}

Atualizar um cluster do KubernetesEste exemplo mostra como você pode criar uma política que permite que um usuário atualize a versão doKubernetes de qualquer cluster dev para uma conta, em qualquer região.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "eks:UpdateClusterVersion", "Resource": "arn:aws:eks:*:111122223333:cluster/dev" } ]}

Listar ou descrever todos os clustersEste exemplo mostra como você pode criar uma política que permite a um usuário acesso somente leiturapara listar ou descrever todos os clusters. Uma conta deve ser capaz de listar e descrever clusters parausar o comando update-kubeconfig da AWS CLI.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListClusters" ], "Resource": "*" } ]}

Usar funções vinculadas ao serviço do Amazon EKSO Amazon Elastic Kubernetes Service usa funções vinculadas ao serviço do AWS Identity and AccessManagement (IAM). A função vinculada ao serviço é um tipo exclusivo de função do IAM vinculadadiretamente ao Amazon EKS. As funções vinculadas a serviços são predefinidas pelo Amazon EKS eincluem todas as permissões que o serviço requer para chamar outros serviços da AWS em seu nome.

Tópicos• Using Roles for Amazon EKS (p. 265)• Using Roles for Amazon EKS Nodegroups (p. 267)

Using Roles for Amazon EKSO Amazon Elastic Kubernetes Service usa funções vinculadas ao serviço do AWS Identity and AccessManagement (IAM). A função vinculada ao serviço é um tipo exclusivo de função do IAM vinculadadiretamente ao Amazon EKS. As funções vinculadas a serviços são predefinidas pelo Amazon EKS eincluem todas as permissões que o serviço requer para chamar outros serviços da AWS em seu nome.

265

Page 274: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioUsar funções vinculadas a serviço

Uma função vinculada ao serviço facilita a configuração do Amazon EKS porque dispensa a inclusãomanual das permissões necessárias. O Amazon EKS define as permissões de suas funções vinculadasao serviço e, a menos que definido em contrário, somente o Amazon EKS pode assumir suas funções. Aspermissões definidas incluem a política de confiança e a política de permissões, e essa política não podeser anexada a nenhuma outra entidade do IAM.

Uma função vinculada ao serviço poderá ser excluída somente após excluir seus recursos relacionados.Isso protege seus recursos do Amazon EKS, pois você não pode remover por engano as permissões paraacessar os recursos.

Para obter informações sobre outros serviços que oferecem suporte às funções vinculadas a serviço,consulte Serviços da AWS compatíveis com o IAM e procure os serviços que apresentam Sim na colunaFunção vinculada a serviços. Escolha um Sim com um link para exibir a documentação da funçãovinculada a serviço desse serviço.

Permissões de função vinculada ao serviço do Amazon EKSO Amazon EKS usa a função vinculada ao serviço chamada AWSServiceRoleForAmazonEKS – Thesepermissions are required for Amazon EKS to manage clusters in your account. These policies are related tomanagement of the following resources: network interfaces, security groups, logs, and VPCs.

Note

A função vinculada ao serviço AWSServiceRoleForAmazonEKS é distinta da função necessáriapara a criação do cluster. Para obter mais informações, consulte the section called “Função doIAM do cluster” (p. 269).

A função vinculada ao serviço AWSServiceRoleForAmazonEKS confia nos seguintes serviços paraassumir a função:

• eks.amazonaws.com

A política de permissões da função permite que o Amazon EKS conclua as seguintes ações nos recursosespecificados:

• AWSServiceRoleForAmazonEKS

Você deve configurar permissões para que uma entidade do IAM (por exemplo, um usuário, grupo oufunção) crie, edite ou exclua uma função vinculada ao serviço. Para obter mais informações, consultePermissões da função vinculada ao serviço no Guia do usuário do IAM.

Criação de uma função vinculada a um serviço do Amazon EKSVocê não precisa criar manualmente uma função vinculada a serviço. Quando você create a cluster noConsole de gerenciamento da AWS, na AWS CLI ou na API da AWS, o Amazon EKS cria uma funçãovinculada ao serviço para você.

Se você excluir essa função vinculada ao serviço e precisar criá-la novamente, poderá usar esse mesmoprocesso para recriar a função em sua conta. Quando você create a cluster, o Amazon EKS cria umafunção vinculada ao serviço para você novamente.

Edição de uma função vinculada ao serviço do Amazon EKSO Amazon EKS não permite a edição da função vinculada ao serviço AWSServiceRoleForAmazonEKS.Depois que criar uma função vinculada ao serviço, você não poderá alterar o nome da função, pois váriasentidades podem fazer referência a ela. No entanto, você poderá editar a descrição da função usando oIAM. Para obter mais informações, consulte Edição de uma função vinculada a serviço no Guia do usuáriodo IAM.

266

Page 275: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioUsar funções vinculadas a serviço

Exclusão de uma função vinculada ao serviço do Amazon EKSSe você não precisar mais usar um recurso ou serviço que requer uma função vinculada a serviço, érecomendável excluí-la. Dessa forma, você não tem uma entidade não utilizada que não seja monitoradaativamente ou mantida. No entanto, você deve limpar sua função vinculada ao serviço para excluí-lamanualmente.

Limpar uma função vinculada ao serviço

Antes de usar o IAM para excluir uma função vinculada ao serviço, você deverá excluir qualquer recursousado pela função.

Note

Se o serviço Amazon EKS estiver usando a função quando você tenta excluir os recursos, aexclusão poderá falhar. Se isso acontecer, espere alguns minutos e tente a operação novamente.

Como excluir recursos do Amazon EKS usados pelo AWSServiceRoleForAmazonEKS

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Selecione um cluster.3. Na página do cluster, se houver grupos de nós gerenciados na seção Node Groups (Grupos de nós)

selecione cada um individualmente e escolha Delete (Excluir).4. Digite o nome do grupo de nós na janela de confirmação de exclusão e selecione Confirm (Confirmar)

para excluir.5. Repita esse procedimento para qualquer outro grupo de nós no cluster. Aguarde até que todas as

operações de exclusão sejam concluídas.6. Na página do cluster, selecione Delete (Excluir).7. Repita esse procedimento para qualquer outro cluster na sua conta.

Excluir manualmente a função vinculada ao serviço

Use o console do IAM, a AWS CLI ou a API da AWS para excluir a função vinculada ao serviçoAWSServiceRoleForAmazonEKS. Para obter mais informações, consulte Exclusão de uma funçãovinculada ao serviço no Guia do usuário do IAM.

Regiões com suporte para funções vinculadas ao serviço Amazon EKSO Amazon EKS oferece suporte a funções vinculadas a serviços em todas as regiões em que o serviçoestá disponível. Para obter mais informações, consulte Amazon EKS Service Endpoints and Quotas.

Using Roles for Amazon EKS NodegroupsO Amazon EKS usa funções vinculadas ao serviço do AWS Identity and Access Management (IAM). Afunção vinculada ao serviço é um tipo exclusivo de função do IAM vinculada diretamente ao Amazon EKS.As funções vinculadas a serviços são predefinidas pelo Amazon EKS e incluem todas as permissões que oserviço requer para chamar outros serviços da AWS em seu nome.

Uma função vinculada ao serviço facilita a configuração do Amazon EKS porque dispensa a inclusãomanual das permissões necessárias. O Amazon EKS define as permissões de suas funções vinculadasao serviço e, a menos que definido em contrário, somente o Amazon EKS pode assumir suas funções. Aspermissões definidas incluem a política de confiança e a política de permissões, e essa política não podeser anexada a nenhuma outra entidade do IAM.

Uma função vinculada ao serviço poderá ser excluída somente após excluir seus recursos relacionados.Isso protege seus recursos do Amazon EKS, pois você não pode remover por engano as permissões paraacessar os recursos.

267

Page 276: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioUsar funções vinculadas a serviço

Para obter informações sobre outros serviços que oferecem suporte às funções vinculadas a serviço,consulte Serviços da AWS compatíveis com o IAM e procure os serviços que apresentam Sim na colunaFunção vinculada a serviços. Escolha um Sim com um link para exibir a documentação da funçãovinculada a serviço desse serviço.

Permissões de função vinculada ao serviço do Amazon EKS

O Amazon EKS usa a função vinculada ao serviço chamada AWSServiceRoleForAmazonEKSNodegroup– These permissions are required for managing nodegroups in your account. These policies are related tomanagement of the following resources: Auto Scaling groups, security groups, launch templates and IAMinstance profiles..

A função vinculada ao serviço AWSServiceRoleForAmazonEKSNodegroup confia nos seguintes serviçospara assumir a função:

• eks-nodegroup.amazonaws.com

A política de permissões da função permite que o Amazon EKS conclua as seguintes ações nos recursosespecificados:

• AWSServiceRoleForAmazonEKS

Você deve configurar permissões para que uma entidade do IAM (por exemplo, um usuário, grupo oufunção) crie, edite ou exclua uma função vinculada ao serviço. Para obter mais informações, consultePermissões da função vinculada ao serviço no Guia do usuário do IAM.

Criação de uma função vinculada a um serviço do Amazon EKS

Você não precisa criar manualmente uma função vinculada a serviço. Quando você CreateNodegroupno Console de gerenciamento da AWS, na AWS CLI ou na API da AWS, o Amazon EKS cria uma funçãovinculada ao serviço para você.

Important

Essa função vinculada ao serviço pode aparecer em sua conta se você concluiu uma ação emoutro serviço que usa os recursos compatíveis com essa função. Se você estava usando o serviçodo Amazon EKS antes de January 1, 2017, quando foi iniciado o suporte às funções vinculadas aserviço, o Amazon EKS criou a função AWSServiceRoleForAmazonEKSNodegroup na sua conta.Para saber mais, consulte Uma nova função apareceu na minha conta do IAM.

Criação de uma função vinculada ao serviço no Amazon EKS (API da AWS)

Você não precisa criar manualmente uma função vinculada a serviço. Quando você cria um grupo de nósgerenciados no Console de gerenciamento da AWS, na AWS CLI ou com a API da AWS, o Amazon EKScria a função vinculada ao serviço por você.

Se você excluir essa função vinculada ao serviço e precisar criá-la novamente, poderá usar esse mesmoprocesso para recriar a função em sua conta. Quando você cria outro grupo de nós gerenciados, oAmazon EKS cria a função vinculada ao serviço novamente por você.

Edição de uma função vinculada ao serviço do Amazon EKS

O Amazon EKS não permite a edição da função vinculada ao serviçoAWSServiceRoleForAmazonEKSNodegroup. Depois que criar uma função vinculada ao serviço, você nãopoderá alterar o nome da função, pois várias entidades podem fazer referência a ela. No entanto, vocêpoderá editar a descrição da função usando o IAM. Para obter mais informações, consulte Edição de umafunção vinculada a serviço no Guia do usuário do IAM.

268

Page 277: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunção do IAM do cluster

Exclusão de uma função vinculada ao serviço do Amazon EKSSe você não precisar mais usar um recurso ou serviço que requer uma função vinculada a serviço, érecomendável excluí-la. Dessa forma, você não tem uma entidade não utilizada que não seja monitoradaativamente ou mantida. No entanto, você deve limpar sua função vinculada ao serviço para excluí-lamanualmente.

Limpar uma função vinculada ao serviço

Antes de usar o IAM para excluir uma função vinculada ao serviço, você deverá excluir qualquer recursousado pela função.

Note

Se o serviço Amazon EKS estiver usando a função quando você tenta excluir os recursos, aexclusão poderá falhar. Se isso acontecer, espere alguns minutos e tente a operação novamente.

Como excluir recursos do Amazon EKS usados pelo AWSServiceRoleForAmazonEKSNodegroup

1. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters.2. Selecione um cluster.3. Na página do cluster, se houver grupos de nós gerenciados na seção Node Groups (Grupos de nós)

selecione cada um individualmente e escolha Delete (Excluir).4. Digite o nome do cluster na janela de confirmação de exclusão e escolha Confirm (Confirmar) para

excluir.5. Repita o procedimento para quaisquer outros grupos de nós no cluster e outros clusters na sua conta.

Excluir manualmente a função vinculada ao serviço

Use o console do IAM, a AWS CLI ou a API da AWS para excluir a função vinculada ao serviçoAWSServiceRoleForAmazonEKSNodegroup. Para obter mais informações, consulte Exclusão de umafunção vinculada ao serviço no Guia do usuário do IAM.

Regiões com suporte para funções vinculadas ao serviço Amazon EKSO Amazon EKS oferece suporte a funções vinculadas a serviços em todas as regiões em que o serviçoestá disponível. Para obter mais informações, consulte Amazon EKS Service Endpoints and Quotas.

Função do IAM do cluster do Amazon EKSOs clusters do Kubernetes gerenciados pelo Amazon EKS fazem chamadas a outros serviços da AWS emseu nome para gerenciar os recursos que você usa com o serviço. Antes de criar clusters do Amazon EKS,é necessário criar uma função do IAM com as seguintes políticas do IAM:

• AmazonEKSClusterPolicy

Note

Antes de 16 de Abril de 2020, política da amazoneksservice foi também necessário e o nomesugerido era eksServiceRole. Com o AWSServiceRoleForAmazonEKS função associada aoserviço, essa política já não é necessária.

Verificar se há uma função de cluster existenteÉ possível usar o procedimento a seguir para verificar se a conta já tem a função do cluster do AmazonEKS.

269

Page 278: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunção do IAM do cluster

Como verificar a eksClusterRole no console do IAM

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. No painel de navegação, escolha Roles (Funções).3. Pesquisar na lista de funções para eksClusterRole. Se uma função que inclui eksClusterRole

não existe e, em seguida, consulte Criar a função do cluster do Amazon EKS (p. 270) para criar afunção. Se houver uma função que inclua eksClusterRole, selecione-a para visualizar as políticasanexadas.

4. Escolha Permissions (Permissões).5. Verifique se a política gerenciada AmazonEKSClusterPolicy está anexada à função. Se a política

estiver anexada, a função do cluster do Amazon EKS estará configurada corretamente.6. Escolha Trust Relationships (Relacionamentos de confiança), Edit Trust Relationship (Editar

relacionamento de confiança).7. Verifique se o relacionamento de confiança contém a seguinte política. Se o relacionamento de

confiança corresponder à política abaixo, escolha Cancel. Se o relacionamento de confiança nãocorresponder, copie a política para a janela Policy Document (Documento da política) e escolhaUpdate Trust Policy (Atualizar política confiável).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

Criar a função do cluster do Amazon EKSÉ possível usar o Console de gerenciamento da AWS ou o AWS CloudFormation para criar a função docluster caso ainda não tenha uma para a sua conta. Selecione o nome da ferramenta que gostaria de usarpara criar a função.

Console de gerenciamento da AWS

Como criar a função do cluster do Amazon EKS no console do IAM

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. Escolha Roles (Funções) e, em seguida, Create Role (Criar função).3. Escolha EKS na lista de serviços e, depois, EKS - Cluster para o caso de uso, e escolha Next:

Permissions (Próximo: Permissões).4. Escolha Next: Tags (Próximo: tags).5. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter

mais informações sobre como usar tags no IAM, consulte Marcar entidades do IAM no Guia dousuário do IAM.

6. Selecione Next: Review.7. Em Role name (Nome da função), insira um nome exclusivo para a função, como

eksClusterRole, e selecione Create role (Criar função).

270

Page 279: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioNó IAM função

AWS CloudFormation

Como criar a função do cluster do Amazon EKS com o AWS CloudFormation

1. Salve o modelo do AWS CloudFormation a seguir em um arquivo de texto no sistema local.

---AWSTemplateFormatVersion: '2010-09-09'Description: 'Amazon EKS Cluster Role'

Resources:

eksClusterRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - eks.amazonaws.com Action: - sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy

Outputs:

RoleArn: Description: The role that Amazon EKS will use to create AWS resources for Kubernetes clusters Value: !GetAtt eksClusterRole.Arn Export: Name: !Sub "${AWS::StackName}-RoleArn"

Note

Antes de 16 de abril de 2020, ManagedPolicyArns tinha uma entrada paraarn:aws:iam::aws:policy/AmazonEKSServicePolicy. Com a função vinculadaao serviço AWSServiceRoleForAmazonEKS, essa política não é mais necessária.

2. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.3. Selecione Create stack.4. Para Specify template (Especificar modelo), selecione Upload a template file (Fazer upload de um

arquivo de modelo) e depois Choose file (Escolher arquivo).5. Selecione o arquivo que você criou anteriormente e, em seguida, selecione Next (Próximo).6. Em Stack name (Nome da pilha), insira um nome para a função, como eksClusterRole, e

selecione Next (Próximo).7. Na página Configure stack options (Configurar opções de pilha), selecione Next (Próximo).8. Na página Review (Revisão), revise as informações, confirme se a pilha pode criar recursos do

IAM e selecione Create stack (Criar pilha).

Amazon EKS nó IAM funçãoO Amazon EKS nó kubelet o daemon faz chamadas para AWS em seu nome. Os nós recebempermissões para estas chamadas API através de um IAM perfil de instância e políticas associadas. Antes

271

Page 280: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioNó IAM função

de poder iniciar os nós e registá-los num grupo, tem de criar um IAM função para os nós utilizarem quandosão lançados. Este requisito aplica-se a nós lançados com o Amazon EKS-AMI otimizado fornecido pelaAmazon, ou com qualquer outro nó de nó que pretenda utilizar. Antes de criar nós, tem de criar um IAMfunção com o seguinte IAM políticas:

• AmazonEKSWorkerNodePolicy

• AmazonEKS_CNI_Policy

• AmazonEC2ContainerRegistryReadOnly

Verificar uma função de nó existentePode utilizar o procedimento seguinte para verificar e ver se a sua conta já tem o Amazon EKS função denó.

Como verificar a NodeInstanceRole no console do IAM

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. No painel de navegação, escolha Roles (Funções).3. Pesquisar na lista de funções para NodeInstanceRole. Se uma função que contém

NodeInstanceRole não existe e, em seguida, consulte Criar o Amazon EKS nó IAMfunção (p. 272) para criar a função. Se houver uma função que contenha NodeInstanceRole,selecione a função para visualizar as políticas anexadas.

4. Escolha Permissions (Permissões).5. Verifique se políticas gerenciadas AmazonEKSWorkerNodePolicy, AmazonEKS_CNI_Policy e

AmazonEC2ContainerRegistryReadOnly estão anexadas à função. Se as políticas estiveremanexadas, o seu Amazon EKS a função do nó está configurada correctamente.

6. Escolha Trust Relationships (Relacionamentos de confiança), Edit Trust Relationship (Editarrelacionamento de confiança).

7. Verifique se o relacionamento de confiança contém a seguinte política. Se o relacionamento deconfiança corresponder à política abaixo, escolha Cancel. Se o relacionamento de confiança nãocorresponder, copie a política para a janela Policy Document (Documento da política) e escolhaUpdate Trust Policy (Atualizar política confiável).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

Criar o Amazon EKS nó IAM funçãoSe criou os seus nós, siga os passos no Conceitos básicos do Console de gerenciamento da AWS (p. 13)ou Conceitos básicos de eksctl (p. 3) tópicos, então a função de nó já existe e não precisa de o criarmanualmente. Pode utilizar o Console de gerenciamento da AWS ou AWS CloudFormation para criar oAmazon EKS função do nó se ainda não tiver uma para a sua conta. Selecione o nome da ferramenta quegostaria de usar para criar a função.

272

Page 281: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunção de execução de pod

Console de gerenciamento da AWS

Para criar o seu Amazon EKS função do nó no IAM consola

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. Escolha Roles (Funções) e, em seguida, Create Role (Criar função).3. Escolher EC2 da lista de Casos de utilização comuns abaixo Escolha um caso de utilização,

depois escolha Seguinte: Permissões4. No Filtrar políticas , introduza AmazonEKSWorkerNodePolicy. Assinale a caixa à esquerda de

amazoneksworkernodepolicy.5. No Filtrar políticas , introduza AmazonEKS_CNI_Policy. Assinale a caixa à esquerda de

amazoneks_CNI_Política.6. No Filtrar políticas , introduza AmazonEC2ContainerRegistryReadOnly. Assinale a caixa à

esquerda de novozonec2recipierregiãoapenas.7. Selecione Next (Próximo). Tags8. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter

mais informações sobre como usar tags no IAM, consulte Marcar entidades do IAM no Guia dousuário do IAM.

9. Selecione Next (Próximo). Review (Revisar)10. Para Nome da função, introduza um nome exclusivo para a sua função, como

NodeInstanceRole. Para Descrição da função, substitua o texto atual com texto descritivo,como Amazon EKS - Node Group Role, depois escolha Criar função.

AWS CloudFormation

Para criar o seu Amazon EKS função de nó utilizando AWS CloudFormation

1. Abra o console do AWS CloudFormation em https://console.aws.amazon.com/cloudformation.2. Selecione Create stack (Criar pilha) e With new resources (standard) (Com novos recursos

(padrão)).3. Em Specify template (Especificar modelo), selecione Amazon S3 URL (URL do Amazon S3).4. Cole o seguinte URL na área de texto Amazon S3 URL (URL do Amazon S3) e escolha Next

(Próximo) duas vezes:

https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-07-23/amazon-eks-nodegroup-role.yaml

5. Na página Specify stack details (Especificar detalhes da pilha), em Stack name (Nome da pilha)insira um nome, como eks-node-group-instance-role, e escolha Next (Próximo).

6. (Opcional) Na página Configure stack options (Configurar opções de pilha), é possível optar pormarcar seus recursos de pilha. Selecione Next (Próximo).

7. Na página Review (Revisar) marque a caixa na seção Capabilities (Recursos) e escolha Createstack (Criar pilha).

8. Quando a pilha estiver criada, selecione-a no console e escolha Outputs (Saídas).9. Registre o valor NodeInstanceRole para a função do IAM que foi criada. Você precisará dele para

criar seu grupo de nós.

Função de execução de podA função de execução de pod do Amazon EKS é necessária para executar pods na infraestrutura do AWSFargate.

273

Page 282: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunção de execução de pod

Quando o cluster cria pods na infraestrutura do AWS Fargate, o pod precisa fazer chamadas para as APIsda AWS em seu nome, por exemplo, para extrair imagens de contêiner do Amazon ECR. A função deexecução de pod do Amazon EKS fornece as permissões do IAM para fazer isso.

Ao criar um perfil do Fargate, é necessário especificar uma função de execução de pod para ser usadacom os pods. Essa função é adicionada ao Controle de acesso baseado em função (RBAC) do Kubernetesdo cluster para autorização, para que o kubelet que está em execução na infraestrutura do Fargatepossa se registrar no cluster do Amazon EKS. É isso que permite que a infraestrutura do Fargate apareçano cluster como nós.

Antes de criar um perfil do Fargate, é necessário criar uma função do IAM com a seguinte política do IAM:

• AmazonEKSFargatePodExecutionRolePolicy

Verificar se há uma função de execução de pod existenteÉ possível usar o procedimento a seguir para verificar se a conta já tem a função de execução de pod doAmazon EKS.

Como verificar AmazonEKSFargatePodExecutionRole no console do IAM

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. No painel de navegação, selecione Roles.3. Procure AmazonEKSFargatePodExecutionRole na lista de funções. Se a função não existir,

consulte Criar a função de execução de pod do Amazon EKS (p. 274) para criar a função. Se afunção existir, selecione-a para visualizar as políticas anexadas.

4. Escolha Permissions.5. Certifique-se de que a política gerenciada AmazonEKSFargatePodExecutionRolePolicy esteja

associada à função. Se a política estiver associada, isso significa que a função de execução de pod doAmazon EKS está configurada corretamente.

6. Selecione Trust Relationships (Relações de confiança) e Edit Trust Relationship (Editar relações deconfiança).

7. Verifique se o relacionamento de confiança contém a seguinte política. Se o relacionamento deconfiança corresponder à política abaixo, escolha Cancel. Se o relacionamento de confiança nãocorresponder, copie a política para a janela Policy Document (Documento da política) e escolhaUpdate Trust Policy (Atualizar política confiável).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

Criar a função de execução de pod do Amazon EKSÉ possível usar o procedimento a seguir para criar a função de execução de pod do Amazon EKS casoainda não tenha uma para sua conta.

274

Page 283: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

Para criar um AWS Fargate função de execução com o Console de gerenciamento da AWS

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. Escolha Roles (Funções) e, em seguida, Create Role (Criar função).3. Escolher EKS da lista de serviços, EKS - Fargate cobertura para o seu caso de utilização, e depois

Seguinte: Permissões4. Selecione Next (Próximo). Tags5. (Opcional) Adicione metadados à função anexando tags como pares de chave-valor. Para obter mais

informações sobre como usar tags no IAM, consulte Marcar entidades do IAM no Guia do usuário doIAM.

6. Selecione Next (Próximo). Review (Revisar)7. Em Role name (Nome da função), insira um nome exclusivo para a função, como

AmazonEKSFargatePodExecutionRole, e selecione Create role (Criar função).

Funções do IAM para contas de serviçoCom as funções do IAM para contas de serviço em clusters do Amazon EKS, é possível associar umafunção do IAM a uma conta de serviço do Kubernetes. Essa conta de serviço pode fornecer permissõesda AWS para os contêineres em qualquer pod que use essa conta de serviço. Com esta função, já nãoprecisa de fornecer permissões alargadas para o nó IAM para que as cápsulas desse nó possam ligarAWS API.

Os aplicativos devem assinar suas solicitações de API da AWS com as credenciais da AWS. Esse recursofornece uma estratégia para gerenciar as credenciais para seus aplicativos, semelhante à forma comoos perfis de instância do Amazon EC2 fornecem credenciais às instâncias do Amazon EC2. Em vez decriar e distribuir suas credenciais da AWS aos contêineres ou usar a função da instância do AmazonEC2, é possível associar uma função do IAM a uma conta de serviço do Kubernetes. Os aplicativos noscontêineres do pod poderão então usar o AWS SDK ou a AWS CLI para fazer solicitações de API paraserviços da AWS autorizados.

As funções do IAM para o recurso de contas de serviço oferecem os seguintes benefícios:

• Menos privilégio — Ao utilizar o IAM funções para a função de contas de serviço, já não precisa defornecer permissões alargadas para o nó IAM para que as cápsulas desse nó possam ligar AWS API.É possível definir o escopo de permissões do IAM para uma conta de serviço, e somente os podsque usarem essa conta de serviço terão acesso a essas permissões. Esse recurso também elimina anecessidade de soluções de terceiros, como o kiam ou o kube2iam.

• Isolamento de credenciais — um contêiner só pode recuperar credenciais para a função do IAM queesteja associada à conta de serviço à qual ele pertença. Um contêiner nunca tem acesso a credenciaisdestinadas a outro contêiner que pertença a outro pod.

• Auditabilidade:— o registro em log de acessos e eventos está disponível por meio do CloudTrail paraajudar a garantir a auditoria retrospectiva.

Para começar, consulte o Habilitar funções do IAM para contas de serviço no cluster (p. 280).

Para obter uma demonstração completa usando o eksctl, consulte Demonstração Atualizar ummonconjunto para utilizar IAM para contas de serviço (p. 286).

Visão geral técnica das funções do IAM para contas de serviçoEm 2014, o AWS Identity and Access Management adicionou suporte a identidades federadas usandoOpenID Connect (OIDC). Esse recurso permite que você autentique chamadas de API da AWS comprovedores de identidade compatíveis e receba um token de web JSON (JWT) OIDC válido. É possívelpassar esse token para a operação da API do AWS STS AssumeRoleWithWebIdentity e receber

275

Page 284: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

credenciais temporárias da função do IAM. Você pode usar essas credenciais para interagir com qualquerserviço da AWS, como o Amazon S3 e o DynamoDB.

O Kubernetes usa há muito tempo contas de serviço como seu próprio sistema de identidade interno.Os pods podem ser autenticados com o servidor de API do Kubernetes usando um token montadoautomaticamente (que era um JWT não OIDC) que somente o servidor de API do Kubernetespodia validar. Esses tokens de conta de serviço legados não expiram, e a rotação da chave deassinatura é um processo difícil. No Kubernetes versão 1.12, foi adicionado suporte a um novo recursoProjectedServiceAccountToken, que é um token de web JSON OIDC que também contém aidentidade da conta de serviço e oferece suporte a um público configurável.

O Amazon EKS agora hospeda um endpoint público de descoberta OIDC por cluster contendo as chavesde assinatura para os tokens de web JSON ProjectedServiceAccountToken para que sistemasexternos, como o IAM, possam validar e aceitar os tokens OIDC emitidos pelo Kubernetes.

Configuração da função do IAMNo IAM, crie uma função do IAM com uma relação de confiança que tenha escopo definido para oprovedor OIDC do cluster, o namespace da conta de serviço e (opcionalmente) o nome da conta deserviço e anexe a política do IAM que você deseja associar à conta de serviço. É possível adicionar váriasentradas nas condições StringLike e StringEquals abaixo para usar várias contas de serviço ounamespaces com a função.

• Como definir o escopo de uma função para uma conta de serviço específica:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::AWS_ACCOUNT_ID:oidc-provider/OIDC_PROVIDER" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "OIDC_PROVIDER:sub": "system:serviceaccount:SERVICE_ACCOUNT_NAMESPACE:SERVICE_ACCOUNT_NAME" } } } ]}

• Como definir o escopo de uma função para um namespace inteiro (para usar o namespace como umlimite):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::AWS_ACCOUNT_ID:oidc-provider/OIDC_PROVIDER" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "OIDC_PROVIDER:sub": "system:serviceaccount:SERVICE_ACCOUNT_NAMESPACE:*" } } }

276

Page 285: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

]}

Configuração da conta de serviçoNo Kubernetes, defina a função do IAM a ser associada a uma conta de serviço no cluster adicionando aanotação eks.amazonaws.com/role-arn à conta de serviço.

apiVersion: v1kind: ServiceAccountmetadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::AWS_ACCOUNT_ID:role/IAM_ROLE_NAME

Configuração do podO webhook de identidade do pod do Amazon EKS no cluster observa os pods associados às contas deserviço com essa anotação e aplica as variáveis de ambiente a seguir a eles.

AWS_ROLE_ARN=arn:aws:iam::AWS_ACCOUNT_ID:role/IAM_ROLE_NAMEAWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token

Note

Seu cluster não precisa usar o web hook mutável para configurar as variáveis de ambiente emontagens de arquivos do token. Você pode optar por configurar pods para adicionar essasvariáveis de ambiente manualmente.

As versões compatíveis do AWS SDK (p. 279) procuram essas variáveis de ambiente primeiro nofornecedor da cadeia de credenciais. As credenciais da função são usadas para os pods que atendam aesses critérios.

Note

Quando um pod usa credenciais da AWS de uma função do IAM associada a uma conta deserviço, a AWS CLI ou outros SDKs nos contêineres desse pod usam as credenciais fornecidaspor essa função exclusivamente. Já não herdam qualquer IAM permissões do nó IAM função.

Por padrão, somente contêineres executados como root têm as permissões adequadas do sistema dearquivos para ler o arquivo do token de identidade da Web. Você pode fornecer essas permissões fazendocom que seus contêineres sejam executados como root, ou fornecendo o contexto de segurança a seguirpara os contêineres em seu manifesto. O ID de fsGroup é arbitrário e você pode escolher qualquer ID degrupo válido. Para obter mais informações sobre as implicações de definir um contexto de segurança paraseus pods, consulte Configurar um contexto de segurança para um pod ou contêiner na documentação doKubernetes.

apiVersion: apps/v1kind: Deploymentmetadata: name: my-appspec: template: metadata: labels: app: my-app spec: serviceAccountName: my-app containers:

277

Page 286: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

- name: my-app image: my-app:latest securityContext: fsGroup: 1337...

O kubelet solicita e armazena o token em nome do grupo. Por predefinição, o kubelet actualiza otoken se for mais de 80 por cento do seu TTL total ou se o token tiver mais de 24 horas. Pode modificaro prazo de validade para qualquer conta, exceto a conta de serviço predefinida, com definições na suaespecificação do grupo. Para mais informações, consulte Projecção do volume do token da conta deserviço na documentação Kubernetes.

Permissões do IAM entre contasVocê pode configurar permissões entre contas do IAM criando um provedor de identidade do clusterde outra conta ou usando operações AssumeRole encadeadas. Nos exemplos a seguir, a Conta A temum cluster do Amazon EKS que oferece suporte a funções do IAM para contas de serviço. Os pods emexecução nesse cluster devem assumir permissões do IAM da Conta B.

Example : Criar um provedor de identidade do cluster de outra conta

Example

Neste exemplo, a Conta A forneceria à Conta B o URL emissor OIDC de seu cluster. A Conta B segue asinstruções em Habilitar funções do IAM para contas de serviço no cluster (p. 280) e Criar uma funçãoe política do IAM para a conta de serviço (p. 281) usando o URL emissor OIDC do cluster da Conta A.Depois, um administrador de cluster anota a conta de serviço no cluster da Conta A para usar a função daConta B.

apiVersion: v1kind: ServiceAccountmetadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::ACCOUNT_B_AWS_ACCOUNT_ID:role/IAM_ROLE_NAME

Example : Usar operações AssumeRole encadeadas

Example

Neste exemplo, a Conta B cria uma política do IAM com as permissões a serem concedidas aos pods nocluster da Conta A. A Conta B anexa essa política a uma função do IAM com uma relação de confiançaque concede permissões AssumeRole à Conta A (111111111111), conforme mostrado abaixo.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111111111111:root" }, "Action": "sts:AssumeRole", "Condition": {} } ]}

A conta A cria uma função com uma política de confiança que obtém credenciais do provedor deidentidade criado com o URL emissor OIDC do cluster, conforme mostrado abaixo.

278

Page 287: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111111111111:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLEC061A78C479E31025A21AC4CDE191335D05820BE5CE" }, "Action": "sts:AssumeRoleWithWebIdentity" } ]}

A Conta A anexa uma política a essa função com as seguintes permissões para assumir a função criadapela Conta B.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/account-b-role" } ]}

O código de aplicação das cápsulas para assumir a função da Conta B utiliza dois perfis:account_b_role e account_a_role. O account_b_role o perfil utiliza o account_a_role perfilcomo fonte. Para a AWS CLI, o arquivo ~/.aws/config seria semelhante ao exemplo a seguir.

[profile account_b_role]source_profile = account_a_rolerole_arn=arn:aws:iam::222222222222:role/account-b-role

[profile account_a_role]web_identity_token_file = /var/run/secrets/eks.amazonaws.com/serviceaccount/token role_arn=arn:aws:iam::111111111111:role/account-a-role

Para especificar perfis encadeados para outros AWS SDKs, consulte a documentação.

Usar o AWS SDK compatívelOs recipientes nas suas cápsulas devem utilizar um AWS Versão do SDK que apoia o pressuposto de umaIAM através de um ficheiro de token de identidade da Web OIDC. AWS As caixas incluídas nos gestoresde pacotes de distribuição Linux podem não ser suficientemente novos para suportar esta funcionalidade.Certifique-se de usar pelo menos as versões mínimas do SDK listadas abaixo:

• Java (versão 2) — 2.10.11• Java — 1.11.704• Go — 1.23.13• Python (Boto3) — 1.9.220• Python (botocore) — 1.12.200• AWS CLI — 1.16.232• Node — 2.521.0• Ruby — 2.11.345

279

Page 288: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

• C++ — 1.7.174• .NET — 3.3.659.1• PHP — 3.110.7

Muitos complementos populares do Kubernetes, como o Cluster Autoscaler e o Controlador de ingressodo ALB oferecem suporte às funções do IAM para contas de serviço. O plug-in CNI da Amazon VPC paraKubernetes foi atualizado com uma versão compatível do AWS SDK para Go e é possível usar as funçõesdo IAM para o recurso de contas de serviço para fornecer as permissões necessárias para que o CNIfuncione.

Para garantir que você esteja usando um SDK compatível, siga as instruções de instalação do SDK de suapreferência em Ferramentas para a Amazon Web Services quando estiver criando seus contêineres.

Habilitar funções do IAM para contas de serviço no clusterO recurso de funções do IAM para contas de serviço está disponível em novos clusters do Amazon EKSKubernetes versão 1.14 e posterior e clusters que foram atualizados para as versões 1.13 ou posterior apartir de 3 de setembro de 2019. Os clusters existentes podem atualizar para a versão 1.13 ou posteriorpara aproveitar esse recurso. Para obter mais informações, consulte Atualizar uma versão do Kubernetesdo cluster do Amazon EKS (p. 37).

Se o cluster oferecer suporte a funções do IAM para contas de serviço, ele terá um URL emissor OpenIDConnect associado a ele. É possível visualizar esse URL no console do Amazon EKS ou usar o comandoda AWS CLI a seguir para recuperá-lo.

Important

É necessário usar pelo menos a versão 1.18.110 ou 2.0.36 da AWS CLI para receber a saídaadequada desse comando. Para obter mais informações, consulte Instalar a AWS CLI no Guia dousuário do AWS Command Line Interface.

aws eks describe-cluster --name cluster_name --query "cluster.identity.oidc.issuer" --output text

Resultado

https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E

Para usar funções do IAM para contas de serviço em seu cluster, você deverá criar um provedor deidentidade OIDC no console do IAM.

eksctl

Como criar um provedor de identidade OIDC do IAM para o cluster com o eksctl

1. Verifique a versão da eksctl com o comando a seguir. Este procedimento pressupõe que vocêinstalou o eksctl e que a versão do eksctl seja pelo menos a 0.25.0.

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ouatualizar o eksctl (p. 238).

2. Crie o provedor de identidade OIDC para o cluster com o seguinte comando. Substituircluster_name com o seu próprio valor.

280

Page 289: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

eksctl utils associate-iam-oidc-provider --cluster cluster_name --approve

Console de gerenciamento da AWS

Como criar um provedor de identidade OIDC do IAM para o cluster com o Console degerenciamento da AWS

1. Recupere o URL emissor OIDC na descrição do console do Amazon EKS de seu cluster ou use ocomando da AWS CLI a seguir.

Important

É necessário usar pelo menos a versão 1.18.110 ou 2.0.36 da AWS CLI para receber asaída adequada desse comando. Para obter mais informações, consulte Instalar a AWSCLI no Guia do usuário do AWS Command Line Interface.

aws eks describe-cluster --name cluster_name --query "cluster.identity.oidc.issuer" --output text

2. Abra o console do IAM em https://console.aws.amazon.com/iam/.3. No painel de navegação, escolha Provedores de identidade e, em seguida, escolha Criar

provedor.4. Para Tipo de provedor, escolha Escolher um tipo de provedor e escolha OpenID Connect.5. Em Provider URL (URL do provedor), cole o URL emissor OIDC do cluster.6. Em Audience (Público), digite sts.amazonaws.com e escolha Next Step (Próxima etapa).7. Verifique se as informações do provedor estão corretas e escolha Create (Criar) para criar seu

provedor de identidade.

Depois de habilitar o provedor de identidade OIDC do IAM para o cluster, você poderá criar funções doIAM para associar a uma conta de serviço no cluster. Para obter mais informações, consulte Criar umafunção e política do IAM para a conta de serviço (p. 281)

Criar uma função e política do IAM para a conta de serviçoÉ necessário criar uma política do IAM que especifique as permissões que deseja que os contêineresem seus pods tenham. Você tem várias maneiras de criar uma nova política de permissões do IAM. Umamaneira de fazer isso é copiar uma política gerenciada da AWS completa que já faça algo do que vocêestá procurando e personalizá-la de acordo com seus requisitos específicos. Para obter mais informações,consulte Criar uma nova política no Guia do usuário do IAM.

Também é necessário criar uma função do IAM para suas contas de serviço do Kubernetes a seremusadas antes de associá-la a uma conta de serviço. A relação de confiança tem escopo definido para ocluster e a conta de serviço para que cada combinação de cluster e conta de serviço exija sua própriafunção. É possível anexar sua política do IAM específica à função que oferece as permissões desejadasaos contêineres em seu pod. Os procedimentos a seguir descrevem como fazer isso.

Criar uma política do IAM

Neste procedimento, oferecemos dois exemplos de políticas que podem ser usadas para seu aplicativo:

• Uma política para permitir acesso somente leitura a um bucket do Amazon S3. É possível armazenarinformações de configuração ou um script de bootstrap nesse bucket, e os contêineres em seu podpodem ler o arquivo do bucket e carregá-lo em seu aplicativo.

281

Page 290: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

• Uma política para permitir imagens de contêiner pagas do AWS Marketplace.

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.2. No painel de navegação, escolha Policies (Políticas) e, em seguida, selecione Create policy (Criar

política).3. Selecione a guia JSON.4. No campo Policy Document (Documento da política) cole uma das seguintes políticas a serem

aplicadas às suas contas de serviço ou cole seu próprio documento de política no campo. Também épossível usar o editor visual para construir sua própria política.

O exemplo abaixo permite a permissão para my-pod-secrets-bucket Amazon S3 bucket Vocêpode modificar o documento de política de acordo com as suas necessidades específicas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-pod-secrets-bucket/*" ] } ]}

O exemplo abaixo fornece as permissões necessárias para usar uma imagem de contêiner paga doAWS Marketplace.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aws-marketplace:RegisterUsage" ], "Effect": "Allow", "Resource": "*" } ]}

5. Selecione Review policy (Revisar política).6. Insira um nome e uma descrição para a política e escolha Create policy (Criar política).7. Registre o Amazon Resource Name (ARN) da política a ser usado posteriormente ao criar sua função.

Crie uma função do IAM.

Crie uma função do IAM para suas contas de serviço. Selecione a guia com o nome da ferramenta quevocê deseja usar para criar a função.

eksctl

Crie a conta de serviço e a IAM função com o comando a seguir. Substituir o example values comos seus próprios valores.

282

Page 291: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

Note

Este comando só funciona para conjuntos criados com eksctl. Se não criou o seu grupocom eksctl, utilize as instruções no Console de gerenciamento da AWS ou AWS CLIseparadores.

eksctl create iamserviceaccount \ --name service_account_name \ --namespace service_account_namespace \ --cluster cluster_name \ --attach-policy-arn IAM_policy_ARN \ --approve \ --override-existing-serviceaccounts

Foi implantado um modelo do AWS CloudFormation que criou uma função do IAM e associou apolítica do IAM a ela. A função foi associada a uma conta de serviço do Kubernetes.

Console de gerenciamento da AWS

1. Recupere o URL emissor OIDC na descrição do console do Amazon EKS de seu cluster ou use ocomando da AWS CLI a seguir.

Important

É necessário usar pelo menos a versão 1.18.110 ou 2.0.36 da AWS CLI para receber asaída adequada desse comando. Para obter mais informações, consulte Instalar a AWSCLI no Guia do usuário do AWS Command Line Interface.

aws eks describe-cluster --name cluster_name --query "cluster.identity.oidc.issuer" --output text

2. Abra o console do IAM em https://console.aws.amazon.com/iam/.3. No painel de navegação, escolha Roles (Funções) e Create Role (Criar função).4. Na seção Select type of trusted entity (Selecionar tipo de entidade confiável), escolha Web identity

(Identidade da web).5. Na seção Choose a web identity provider (Selecionar um provedor de identidade da web):

1. Em Identity provider (Provedor de identidade), escolha o URL do cluster.2. Para Audience (Público), escolha sts.amazonaws.com.

6. Selecione Next (Próximo). Permissões7. Na seção Attach Policy (Anexar política), selecione a política a ser usada para sua conta de

serviço. Selecione Next (Próximo). Tags8. Na tela Add tags (optional) (Adicionar tags (opcional)), é possível adicionar tags para a conta.

Selecione Next (Próximo). Review (Revisar)9. Em Role Name (Nome da função), insira um nome para a função e, depois, escolha, Create role

(Criar função).10. Depois que a função for criada, escolha a função no console a fim de abri-la para edição.11. Escolha a guia Relacionamentos de confiança e, em seguida, selecione Editar relacionamento de

confiança.

1. Edite o sufixo do provedor OIDC e altere-o de :aud para :sub.2. Substitua sts.amazonaws.com pelo ID da conta de serviço.3. Se necessário, alterar region-code para o código Região devolvido na saída do passo 1.

A linha resultante deve ser semelhante a esta.

283

Page 292: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B716D3041E:sub": "system:serviceaccount:SERVICE_ACCOUNT_NAMESPACE:SERVICE_ACCOUNT_NAME"

12. Escolha Update Trust Policy (Atualizar política de confiança) para concluir.13. Associe a função do IAM a uma conta de serviço do Kubernetes. Para obter mais informações,

consulte Especificar uma função do IAM para a conta de serviço (p. 285).

AWS CLI

1. Defina o ID da conta da AWS como uma variável de ambiente com o comando a seguir.

AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text)

2. Defina o provedor de identidade OIDC como uma variável de ambiente com o comando a seguir,substituindo o nome do cluster.

Important

É necessário usar pelo menos a versão 1.18.110 ou 2.0.36 da AWS CLI para receber asaída adequada desse comando. Para obter mais informações, consulte Instalar a AWSCLI no Guia do usuário do AWS Command Line Interface.

OIDC_PROVIDER=$(aws eks describe-cluster --name cluster-name --query "cluster.identity.oidc.issuer" --output text | sed -e "s/^https:\/\///")

3. Copie o seguinte bloco de código para o seu computador e substitua namespace e service-account-name com os seus próprios valores.

read -r -d '' TRUST_RELATIONSHIP <<EOF{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_PROVIDER}" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "${OIDC_PROVIDER}:sub": "system:serviceaccount:namespace:service-account-name" } } } ]}EOFecho "${TRUST_RELATIONSHIP}" > trust.json

4. Execute o bloco de código modificado da etapa anterior para criar um arquivo denominadotrust.json.

5. Execute o comando da AWS CLI a seguir para criar a função, substituindo o nome e a descriçãoda função do IAM.

aws iam create-role --role-name IAM_ROLE_NAME --assume-role-policy-document file://trust.json --description "IAM_ROLE_DESCRIPTION"

284

Page 293: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

6. Execute o comando a seguir para anexar a política do IAM à sua função, substituindo o nome dafunção do IAM e o ARN da política.

aws iam attach-role-policy --role-name IAM_ROLE_NAME --policy-arn=IAM_POLICY_ARN

7. Associe a função do IAM a uma conta de serviço do Kubernetes. Para obter mais informações,consulte Especificar uma função do IAM para a conta de serviço (p. 285).

Especificar uma função do IAM para a conta de serviçoNo Kubernetes, você define a função do IAM a ser associada a uma conta de serviço em seu clusteradicionando a anotação a seguir à conta de serviço.

Note

Se você criou uma função do IAM para usar com sua conta de serviço usando o eksctl, isso jáfoi feito para você com a conta de serviço especificada ao criar a função.

apiVersion: v1kind: ServiceAccountmetadata: annotations: eks.amazonaws.com/role-arn: arn:aws:iam::AWS_ACCOUNT_ID:role/IAM_ROLE_NAME

Como aplicar um patch a uma conta de serviço para usar com funções do IAM

1. Use o comando a seguir para anotar sua conta de serviço com o ARN da função do IAM que vocêdeseja usar com sua conta de serviço. Certifique-se de que substitui os seus próprios valores para oalternate-colored valores de exemplo a utilizar com as suas cápsulas.

kubectl annotate serviceaccount -n SERVICE_ACCOUNT_NAMESPACE SERVICE_ACCOUNT_NAME \eks.amazonaws.com/role-arn=arn:aws:iam::AWS_ACCOUNT_ID:role/IAM_ROLE_NAME

2. Exclua e recrie os pods existentes associados à conta de serviço para aplicar as variáveis deambiente de credenciais. O webhook em mutação não as aplica aos pods que já estão em execução.O comando a seguir exclui os pods aws-node do DaemonSet existentes e implanta-os com aanotação da conta de serviço. É possível modificar o namespace, o tipo de implantação e o rótulo paraatualizar seus pods específicos.

kubectl delete pods -n kube-system -l k8s-app=aws-node

3. Confirme se todos os pods foram reiniciados.

kubectl get pods -n kube-system -l k8s-app=aws-node

4. Descreva um dos pods e verifique se as variáveis de ambiente AWS_WEB_IDENTITY_TOKEN_FILE eAWS_ROLE_ARN existem.

kubectl exec -n kube-system aws-node-9rgzw env | grep AWS

Resultado

AWS_VPC_K8S_CNI_LOGLEVEL=DEBUGAWS_ROLE_ARN=arn:aws:iam::AWS_ACCOUNT_ID:role/IAM_ROLE_NAMEAWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token

285

Page 294: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

A função do IAM foi criada por eksctl quando você criou a conta de serviço do Kubernetes em umaetapa anterior.

Restringir o acesso às credenciais de perfil de instância doAmazon EC2Por predefinição, todos os contentores que estão a executar num nó têm todas as permissões atribuídasao ??? (p. 271) que está anexado ao nó. O serviço de metadados da instância do Amazon EC2 ofereceas credenciais a qualquer processo sendo executado em uma instância. Para obter mais informações,consulte Como recuperar credenciais de segurança dos metadados da instância.

Quando implementa IAM funções para contas de serviço para um grupo, os contentores no grupo têmtodas as permissões atribuídas à conta de serviço e ao nó IAM função. Se implementar IAM funçõespara contas de serviço para todas as cápsulas num cluster, pode querer evitar que os recipientes nospods utilizem as permissões atribuídas ao nó IAM função. Contudo, lembre-se de que pode haver certaspermissões chave no nó IAM que os grupos têm de funcionar. É importante avaliar corretamente asfunções do IAM da conta de serviço para que os pods tenham todas as permissões necessárias. Porexemplo, o nó IAM função é atribuída permissões para puxar imagens dos recipientes de Amazon ECR.Se essas permissões não forem atribuídas ao pod, ele não conseguirá obter as imagens do contêiner doAmazon ECR.

Para evitar que todos os recipientes em todas as séries num nó utilizem as permissões atribuídas ao nóIAM (ao mesmo tempo que permite que as permissões que são atribuídas à conta de serviço), execute oseguinte iptables comandos nos seus nós (como root) ou inclua-os no script de dados do utilizador dasua instância.

Important

• Estes comandos bloqueiam completamente todos contentores a executar num nó de procurar oserviço de metadados de instância para quaisquer metadados, não apenas as credenciais parao nó IAM função. Não execute estes comandos em nós que executam cápsulas que não tenhaimplementado IAM as funções para contas de serviço para ou nenhum dos recipientes no nóterão qualquer permissão atribuída ao nó IAM função.

• Se implementar a política de rede, utilize uma ferramenta como Calico (p. 198), esta regra podeser substituída. Ao implementar a política da rede, certifique-se de que não substitui esta regraou que a sua apólice inclui esta regra.

yum install -y iptables-servicesiptables --insert FORWARD 1 --in-interface eni+ --destination 169.254.169.254/32 --jump DROPiptables-save | tee /etc/sysconfig/iptables systemctl enable --now iptables

Demonstração Atualizar um monconjunto para utilizar IAM paracontas de serviçoO Plug-in CNI da Amazon VPC para Kubernetes é o plug-in de rede para redes de pod em clusters doAmazon EKS. O plug-in CNI é responsável por alocar endereços IP da VPC para nós do Kubernetes econfigurar as redes necessárias para pods em cada nó. O plug-in requer permissões do IAM, fornecidaspela política AmazonEKS_CNI_Policy gerenciada pela AWS, para fazer chamadas para as APIs da AWSem seu nome. Por predefinição, esta política está anexada ao seu nó IAM função. No entanto, utilizandoeste método, todas as cápsulas nos nós têm as mesmas permissões que o plug-in CNI. Pode utilizar o IAM

286

Page 295: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

funções para a função de contas de serviço para fornecer AmazonEKS_CNI_Policy permissões e, emseguida, remover a política do nó IAM função.

Para facilidade de uso, este tópico usa o eksctl para configurar as funções do IAM das contas deserviço. No entanto, se preferir utilizar o Console de gerenciamento da AWS, o AWS CLI, ou um dos AWSaplicam-se os mesmos conceitos básicos, mas terá de modificar os passos para utilizar os procedimentosem Habilitar funções do IAM para contas de serviço no cluster (p. 280).

Para configurar o plug-in CNI para usar funções do IAM para contas de serviço

1. Verifique a versão da eksctl com o comando a seguir. Este procedimento pressupõe que vocêinstalou o eksctl e que a versão do eksctl seja pelo menos a 0.25.0.

eksctl version

Para obter mais informações sobre como instalar ou atualizar o eksctl, consulte Instalar ou atualizaro eksctl (p. 238).

2. Verifique a versão do plug-in CNI da Amazon VPC do cluster para o Kubernetes. Use o comando aseguir para imprimir a versão do CNI de seu cluster:

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

Resultado

amazon-k8s-cni:1.6.2

Se sua versão do CNI for anterior à 1.6.3, execute as etapas a seguir para criar uma conta de serviçoe atualize sua versão do CNI para a versão mais recente:

a. Crie o provedor de identidade OIDC para o cluster com o comando a seguir. Substitua o nome docluster pelo seu próprio valor.

eksctl utils associate-iam-oidc-provider --cluster cluster_name --approve

b. Crie uma conta de serviço do Kubernetes com o comando a seguir. Substituir cluster_namecom o seu próprio valor. Esse comando implanta uma pilha do AWS CloudFormation que criauma função do IAM, associa a política gerenciada AmazonEKS_CNI_Policy da AWS a ela evincula a função do IAM à conta de serviço.

eksctl create iamserviceaccount \ --name aws-node \ --namespace kube-system \ --cluster cluster_name \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --approve \ --override-existing-serviceaccounts

c. Atualize sua versão do CNI para a versão mais recente. O manifesto especifica a conta de serviçoaws-node criada na etapa anterior.

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.6/config/v1.6/aws-k8s-cni.yaml

3. Observe a distribuição e aguarde até que a contagem da implantação DESIRED corresponda àcontagem UP-TO-DATE. Pressione Ctrl + c para sair.

287

Page 296: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFunções do IAM para contas de serviço

kubectl get -n kube-system daemonset.apps/aws-node --watch

4. Liste os pods no daemonset aws-node.

kubectl get pods -n kube-system -l k8s-app=aws-node

Resultado

NAME READY STATUS RESTARTS AGEaws-node-mp88b 1/1 Running 0 17maws-node-n4tcd 1/1 Running 0 20saws-node-qt9dl 1/1 Running 0 17m

5. Verifique novamente a versão do Plugin do CNI da Amazon VPC do seu cluster para Kubernetes,confirmando que a versão é 1.6.3.

kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

Resultado

amazon-k8s-cni:1.6.3

6. Descreva um dos pods e verifique se as variáveis de ambiente AWS_WEB_IDENTITY_TOKEN_FILE eAWS_ROLE_ARN existem.

kubectl exec -n kube-system aws-node-9rgzw env | grep AWS

Resultado

AWS_VPC_K8S_CNI_LOGLEVEL=DEBUGAWS_ROLE_ARN=arn:aws:iam::111122223333:role/eksctl-prod-addon-iamserviceaccount-kube-sys-Role1-V66K5I6JLDGKAWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token

A função do IAM foi criada por eksctl quando você criou a conta de serviço do Kubernetes em umaetapa anterior.

7. Remover o AmazonEKS_CNI_Policy política do seu nó IAM função.

a. Abra o console do IAM em https://console.aws.amazon.com/iam/.b. Na navegação à esquerda, escolha Roles (Funções) e procure a função da instância do nó.c. Escolha a guia Permissions (Permissões) para a função da instância do nó e escolha o X à direita

de AmazonEKS_CNI_Policy.d. Escolha Detach (Desanexar) para concluir.

Agora, os pods do plug-in CNI estão recebendo as permissões do IAM de sua própria função, e a funçãoda instância não pode mais fornecer essas permissões para outros pods.

288

Page 297: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioSolução de problemas

Solução de problemas de identidade e acesso doAmazon EKSPara diagnosticar e corrigir problemas comuns que podem ser encontrados ao trabalhar com o AmazonEKS e o IAM, consulte Solução de problemas no IAM (p. 326).

Registrar e monitorar no Amazon EKSO registro em log do plano de controle do Amazon EKS fornece logs de auditoria e diagnóstico diretamentedo plano de controle do Amazon EKS para o CloudWatch Logs em sua conta. Esses logs facilitam aproteção e a execução dos clusters. Você pode selecionar os tipos exatos de logs necessários, e os logsserão enviados como fluxos de log para cada cluster do Amazon EKS no CloudWatch. Para obter maisinformações, consulte Registro do plano de controle do Amazon EKS (p. 58).

Note

Ao verificar os logs do autenticador do Amazon EKS no Amazon CloudWatch, você verá entradasque contêm texto semelhante ao exemplo a seguir.

level=info msg="mapping IAM role" groups="[]" role="arn:aws:iam::111122223333:role/XXXXXXXXXXXXXXXXXX-NodeManagerRole-XXXXXXXX" username="eks:node-manager"

As entradas que contenham esse texto são esperadas. O username é uma função de serviçointerna do Amazon EKS que executa operações específicas para grupos de nós gerenciados eFargate.

O Amazon EKS é integrado com o AWS CloudTrail, um serviço que fornece um registro das açõesrealizadas por um usuário, uma função ou um serviço da AWS no Amazon EKS. O CloudTrail capturatodas as chamadas de API para o Amazon EKS como eventos. As chamadas capturadas incluem aschamadas do console do Amazon EKS e as chamadas de código para as operações da API do AmazonEKS. Para obter mais informações, consulte Registro em log de chamadas à API do Amazon EKS com oAWS CloudTrail (p. 298).

O servidor de API do Kubernetes expões várias métricas úteis para monitoramento e análise. Para obtermais informações, consulte ??? (p. 244).

Validação de conformidade do Amazon EKSOs auditores externos avaliam a segurança e a conformidade do Amazon EKS como parte de váriosprogramas de conformidade da AWS. Isso inclui SOC, PCI, ISO, HIPAA e outros.

Para obter uma lista dos serviços da AWS no escopo de programas de conformidade específicos, consulteServiços da AWS no escopo por programa de conformidade. Para obter informações gerais, consulteProgramas de conformidade da AWS.

Você pode fazer download de relatórios de auditoria de terceiros usando o AWS Artifact. Para obter maisinformações, consulte Fazer download de relatórios no AWS Artifact.

Sua responsabilidade de conformidade ao usar o Amazon EKS é determinada pela confidencialidade dosseus dados, pelos objetivos de conformidade da sua empresa e pelos regulamentos e leis aplicáveis. AAWS fornece os seguintes recursos para ajudar com a conformidade:

289

Page 298: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioResiliência

• Guias de início rápido de segurança e conformidade – esses guias de implantação abordam asconsiderações de arquitetura e fornecem etapas para a implantação de ambientes de linha de baseconcentrados em conformidade e segurança na AWS.

• Arquitetação para papel de segurança e conformidade HIPAA – Este documento descreve como asempresas podem utilizar AWS para criar aplicações compatíveis com a HIPAA.

• Recursos de conformidade da AWS – esta coleção de manuais e guias pode ser aplicável a seu setor elocal.

• AWS Config – Esse serviço da AWS avalia até que ponto suas configurações de recursos atendemadequadamente a práticas internas e a diretrizes e regulamentações da indústria.

• AWS Security Hub: esse serviço da AWS fornece uma visão abrangente do estado de sua segurança naAWS que ajuda você a verificar sua conformidade com padrões e práticas recomendadas de segurançado setor.

Resiliência no Amazon EKSO AWS a infra-estrutura global é construída AWS Regiões e zonas de disponibilidade. AWS As regiõesfornecem várias zonas de disponibilidade separadas e fisicamente separadas, que estão ligadas combaixa latência, alta produtividade e redes altamente redundantes. Com as zonas de disponibilidade, vocêpode projetar e operar aplicativos e bancos de dados que executam o failover automaticamente entre aszonas de disponibilidade sem interrupção. As zonas de disponibilidade são mais altamente disponíveis,tolerantes a falhas e escaláveis que uma ou várias infraestruturas de data center tradicionais.

O Amazon EKS executa instâncias de plano de controle do Kubernetes em várias Zona dedisponibilidades, para garantir alta disponibilidade. O Amazon EKS detecta e substitui automaticamenteinstâncias de plano de controle com problemas de integridade e fornece patches e atualizações de versõesautomatizados para elas.

Esse plano de controle consiste em pelo menos dois nós de servidor de API e três nós etcd quesão executados em três Zona de disponibilidades em uma região. O Amazon EKS detecta e substituiautomaticamente instâncias não íntegras do plano de controle, reiniciando-as nas Zona de disponibilidadesda região, conforme necessário. O Amazon EKS utiliza a arquitetura de regiões da AWS para manter a altadisponibilidade. Por isso, o Amazon EKS é capaz de oferecer um SLA para disponibilidade do endpoint doservidor de API.

Para obter mais informações sobre regiões e zonas de disponibilidade da AWS, consulte Infraestruturaglobal da AWS.

Segurança da infraestrutura no Amazon EKSComo serviço gerido, Amazon EKS está protegido pelo AWS procedimentos globais de segurança da rededescritos no Amazon Web Services: Visão geral dos processos de segurança papel.

Use chamadas de API publicadas pela AWS para acessar o Amazon EKS pela rede. Os clientes devemoferecer suporte a Transport Layer Security (TLS) 1.0 ou posterior. Recomendamos TLS 1.2 ou posterior.Os clientes também devem oferecer suporte a pacotes de criptografia com Perfect Forward Secrecy (PFS— Sigilo de encaminhamento perfeito), como Ephemeral Diffie-Hellman (DHE) ou Ephemeral Elliptic CurveDiffie-Hellman (ECDHE). A maioria dos sistemas modernos como Java 7 e versões posteriores oferecesuporte a esses modos.

Além disso, as solicitações devem ser assinadas usando um ID da chave de acesso e uma chave deacesso secreta associada a uma entidade principal do IAM. Ou você pode usar o AWS Security TokenService (AWS STS) para gerar credenciais de segurança temporárias para assinar solicitações.

Ao criar um cluster do Amazon EKS, especifique as sub-redes da VPC que o cluster deve usar. O AmazonEKS exige sub-redes em pelo menos duas Zona de disponibilidades. Recomendamos uma VPC com sub-

290

Page 299: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAnálise de configuração e vulnerabilidade

redes públicas e privadas a fim de que o Kubernetes possa criar load balancers públicos nas sub-redespúblicas que fazem o balanceamento de carga do tráfego para pods em execução em nós em sub-redesprivadas.

Para obter mais informações sobre as considerações da VPC, consulte Considerações sobre a VPC docluster (p. 173).

Se você criar a VPC e os grupos de nós com os modelos do AWS CloudFormation fornecidos nademonstração do Conceitos básicos de Amazon EKS (p. 3), o plano de controle e os grupos de segurançado nó serão configurados com as definições recomendadas.

Para obter mais informações sobre considerações de grupos de segurança, consulte Considerações sobreos grupos de segurança do Amazon EKS (p. 175).

Quando você cria um cluster, o Amazon EKS cria um endpoint para o servidor gerenciado de API doKubernetes usado para se comunicar com o cluster (usando as ferramentas de gerenciamento doKubernetes, como kubectl). Por padrão, esse endpoint do servidor de API é público para a internet e oacesso ao servidor de API é protegido por uma combinação do AWS Identity and Access Management(IAM) e Controle de acesso com base em função (RBAC) nativo do Kubernetes.

Você pode habilitar o acesso privado ao servidor de API do Kubernetes para que todas as comunicaçõesentre os nós e o servidor de API fiquem na VPC. É possível limitar os endereços IP que podem acessarseu servidor de API pela Internet, ou desabilitar completamente o acesso pela Internet ao servidor de API.

Para obter mais informações sobre como modificar o acesso do endpoint do cluster, consulte Modificar oacesso ao endpoint do cluster (p. 49):

Você pode implementar políticas de rede com ferramentas como Project Calico (p. 198). O Project Calico éum projeto de código-fonte aberto de terceiros. Para obter mais informações, consulte a documentação doProject Calico.

Análise de vulnerabilidade e configuração noAmazon EKS

A segurança é uma consideração crítica para configurar e manter os clusters e aplicações Kubernetes. OCenter for Internet Security (CIS) Kubernetes Benchmark fornece orientação para Amazon EKS definiçõesde segurança do nó. A referência:

• Aplica-se a Amazon EC2 (geridos e auto-geridas) onde é responsável pelas configurações de segurançados componentes Kubernetes.

• Fornece uma forma padrão e aprovada pela comunidade para garantir que configurou o seu cluster enós de Kubernetes de forma segura quando utiliza Amazon EKS.

• Consiste em quatro secções; configuração de registo de plano de controlo, configurações de segurançade nó, políticas e serviços geridos.

• Suporta todas as versões Kubernetes atualmente disponíveis em Amazon EKS e pode ser executadoutilizando bancada-kube, uma ferramenta de fonte aberta padrão para verificar a configuração utilizandoa referência CIS nos clusters Kubernetes.

Para saber mais, consulte Introdução ao Índice de Referência da EKS da Amazon EKS.

As versões da plataforma do Amazon EKS representam os recursos do plano de controle do cluster,incluindo quais sinalizadores do servidor de API do Kubernetes estão habilitados e a versão de patch atualdo Kubernetes. Novos clusters são implantados com a versão mais recente da plataforma. Para obter maisdetalhes, consulte Versões da plataforma (p. 65).

291

Page 300: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPolítica de segurança de pods

Você pode atualizar um cluster do Amazon EKS (p. 37) para versões mais recentes do Kubernetes.Conforme novas versões do Kubernetes são disponibilizadas no Amazon EKS, recomendamos quevocê atualize proativamente seus clusters para usarem a versão mais recente disponível. Para obtermais informações sobre versões do Kubernetes no EKS, consulte Versões do Kubernetes do AmazonEKS (p. 61).

Rastreie eventos de segurança ou privacidade para o Amazon Linux 2 no Centro de segurança do AmazonLinux ou assine o feed RSS associado. Eventos de segurança e privacidade incluem uma visão geral doproblema afetado, pacotes e instruções para atualizar suas instâncias para corrigir o problema.

Pode usar Amazon Inspector para verificar a acessibilidade de rede não intencional dos seus nós e paravulnerabilidades nessas Amazon EC2 instâncias.

Política de segurança de podsA controlador de admissão de política de segurança de pods do Kubernetes valida a criação e atualizasolicitações em relação a um conjunto de regras. Por padrão, os clusters do Amazon EKS são fornecidoscom uma política de segurança totalmente permissiva e sem restrições. Para obter mais informações,consulte Políticas de segurança de pods na documentação do Kubernetes.

Note

O controlador de admissão da política de segurança de pods só é habilitado em clusters doAmazon EKS com o Kubernetes versão 1.13 ou posterior. É necessário atualizar a versão doKubernetes do cluster no mínimo para a versão 1.13 a fim de usar políticas de segurança depods. Para obter mais informações, consulte Atualizar uma versão do Kubernetes do cluster doAmazon EKS (p. 37).

Política de segurança de pods padrão do AmazonEKSOs clusters do Amazon EKS com o Kubernetes versão 1.13 e posterior têm uma política de segurançade pods chamada eks.privileged. Esta política não tem restrição sobre que tipo de pod pode seraceito no sistema, que é equivalente a executar Kubernetes com o controlador PodSecurityPolicydesativado.

Note

Essa política foi criada para manter a compatibilidade com versões anteriores de clusters que nãotinham o controlador PodSecurityPolicy habilitado. Você pode criar políticas mais restritivaspara o seu cluster e para namespaces individuais e contas de serviço, e depois excluir a políticapadrão para habilitar as políticas mais restritivas.

Você pode visualizar a política padrão com o seguinte comando.

kubectl get psp eks.privileged

Resultado:

NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMESeks.privileged true * RunAsAny RunAsAny RunAsAny RunAsAny false *

Para obter mais detalhes, você pode descrever a política com o comando a seguir.

292

Page 301: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPolítica de segurança de pods padrão do Amazon EKS

kubectl describe psp eks.privileged

Resultado:

Name: eks.privileged

Settings: Allow Privileged: true Allow Privilege Escalation: 0xc0004ce5f8 Default Add Capabilities: <none> Required Drop Capabilities: <none> Allowed Capabilities: * Allowed Volume Types: * Allow Host Network: true Allow Host Ports: 0-65535 Allow Host PID: true Allow Host IPC: true Read Only Root Filesystem: false SELinux Context Strategy: RunAsAny User: <none> Role: <none> Type: <none> Level: <none> Run As User Strategy: RunAsAny Ranges: <none> FSGroup Strategy: RunAsAny Ranges: <none> Supplemental Groups Strategy: RunAsAny Ranges: <none>

O exemplo a seguir mostra o arquivo YAML completo para a política de segurança de podseks.privileged, sua função de cluster e vinculação de função de cluster.

---apiVersion: policy/v1beta1kind: PodSecurityPolicymetadata: name: eks.privileged annotations: kubernetes.io/description: 'privileged allows full unrestricted access to pod features, as if the PodSecurityPolicy controller was not enabled.' seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyspec: privileged: true allowPrivilegeEscalation: true allowedCapabilities: - '*' volumes: - '*' hostNetwork: true hostPorts: - min: 0 max: 65535 hostIPC: true hostPID: true runAsUser: rule: 'RunAsAny' seLinux: rule: 'RunAsAny'

293

Page 302: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPolítica de segurança de pods padrão do Amazon EKS

supplementalGroups: rule: 'RunAsAny' fsGroup: rule: 'RunAsAny' readOnlyRootFilesystem: false

---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: eks:podsecuritypolicy:privileged labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyrules:- apiGroups: - policy resourceNames: - eks.privileged resources: - podsecuritypolicies verbs: - use

---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: eks:podsecuritypolicy:authenticated annotations: kubernetes.io/description: 'Allow all authenticated users to create privileged pods.' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:podsecuritypolicy:privilegedsubjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated

Como excluir a política de segurança de pods padrão

Depois de criar políticas de segurança de pods personalizadas para o seu cluster, você poderá excluir apolítica de segurança de pods padrão eks.privileged do Amazon EKS para habilitar suas políticaspersonalizadas.

1. Crie um arquivo chamado privileged-podsecuritypolicy.yaml e cole nele todo o conteúdo doarquivo YAML eks.privileged do exemplo anterior (isso permite excluir a política de segurança depods, ClusterRole, e o ClusterRoleBinding associado a ela).

2. Exclua o YAML com o comando a seguir.

kubectl delete -f privileged-podsecuritypolicy.yaml

Como instalar ou restaurar a política de segurança de pods padrão

Se você estiver fazendo a atualização de uma versão anterior do Kubernetes, modificou ou excluiu apolítica de segurança de pods eks.privileged padrão do Amazon EKS, você poderá restaurá-la com asetapas a seguir.

294

Page 303: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPolítica de segurança de pods padrão do Amazon EKS

1. Crie um arquivo chamado privileged-podsecuritypolicy.yaml e cole nele o conteúdo doarquivo YAML abaixo.

---apiVersion: policy/v1beta1kind: PodSecurityPolicymetadata: name: eks.privileged annotations: kubernetes.io/description: 'privileged allows full unrestricted access to pod features, as if the PodSecurityPolicy controller was not enabled.' seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyspec: privileged: true allowPrivilegeEscalation: true allowedCapabilities: - '*' volumes: - '*' hostNetwork: true hostPorts: - min: 0 max: 65535 hostIPC: true hostPID: true runAsUser: rule: 'RunAsAny' seLinux: rule: 'RunAsAny' supplementalGroups: rule: 'RunAsAny' fsGroup: rule: 'RunAsAny' readOnlyRootFilesystem: false

---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: eks:podsecuritypolicy:privileged labels: kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyrules:- apiGroups: - policy resourceNames: - eks.privileged resources: - podsecuritypolicies verbs: - use

---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: eks:podsecuritypolicy:authenticated annotations: kubernetes.io/description: 'Allow all authenticated users to create privileged pods.' labels:

295

Page 304: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPolítica de segurança de pods padrão do Amazon EKS

kubernetes.io/cluster-service: "true" eks.amazonaws.com/component: pod-security-policyroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: eks:podsecuritypolicy:privilegedsubjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated

2. Aplique o YAML com o comando a seguir.

kubectl apply -f privileged-podsecuritypolicy.yaml

296

Page 305: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar recursos no Amazon EKS com AWS CloudFormation

Serviços da AWS integrados com oAmazon EKS

O Amazon EKS funciona com outros serviços da AWS para fornecer soluções adicionais para os desafiosdo seu negócio. Este tópico identifica os serviços que usam o Amazon EKS para adicionar funcionalidadesou serviços que o Amazon EKS usa para executar tarefas.

Tópicos• Criar recursos no Amazon EKS com AWS CloudFormation (p. 297)• Registrar em log chamadas de API do Amazon EKS com o AWS CloudTrail (p. 298)• Amazon EKS no AWS Outposts (p. 301)• Contêineres do Deep Learning (p. 303)• Tutorial Configurar App Mesh integração com Kubernetes (p. 303)

Criar recursos no Amazon EKS com AWSCloudFormation

O Amazon EKS é integrado ao AWS CloudFormation, um serviço que ajuda você a modelar e configurarseus recursos da AWS, para que você possa passar menos tempo criando e gerenciando seus recursose sua infraestrutura. Crie um modelo que descreva todos os recursos da AWS que você deseja, porexemplo, um cluster do Amazon EKS, e o AWS CloudFormation cuidará do provisionamento e daconfiguração desses recursos para você.

Ao usar o AWS CloudFormation, você poderá reutilizar seu modelo para configurar seus recursosdo Amazon EKS de forma repetida e consistente. Basta descrever seus recursos uma vez e, depois,provisionar os mesmos recursos repetidamente em várias contas e regiões da AWS.

Modelos do Amazon EKS e AWS CloudFormationPara provisionar e configurar recursos para o Amazon EKS e serviços relacionados, você deveentender os modelos do AWS CloudFormation. Os modelos são arquivos de texto formatados emJSON ou YAML. Esses modelos descrevem os recursos que você deseja provisionar nas suas pilhasdo AWS CloudFormation. Se você não estiver familiarizado com JSON ou YAML, poderá usar o AWSCloudFormation Designer para ajudá-lo a começar a usar os modelos do AWS CloudFormation. Paraobter mais informações, consulte O que é o AWS CloudFormation Designer? no Guia do usuário do AWSCloudFormation.

O Amazon EKS oferece suporte à criação de clusters e grupos de nós no AWS CloudFormation. Paraobter mais informações, incluindo exemplos de modelos JSON e YAML para seus recursos do AmazonEKS, consulte Referência de tipo de recurso do Amazon EKS no Guia do usuário do AWS CloudFormation.

Saiba mais sobre o AWS CloudFormationPara saber mais sobre o AWS CloudFormation, consulte os seguintes recursos:

• AWS CloudFormation

297

Page 306: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioRegistrar em log chamadas de API doAmazon EKS com o AWS CloudTrail

• AWS CloudFormation Guia do usuário• AWS CloudFormation Guia do utilizador da interface da linha de comando

Registrar em log chamadas de API do Amazon EKScom o AWS CloudTrail

O Amazon EKS é integrado ao AWS CloudTrail, um serviço que fornece um registro de ações realizadaspor um usuário, uma função ou um serviço da AWS no Amazon EKS. O CloudTrail captura todas aschamadas de API do Amazon EKS como eventos, incluindo as chamadas do console do Amazon EKS edesde as chamadas de código até as operações de API do Amazon EKS.

Se você criar uma trilha, poderá habilitar a entrega contínua de eventos do CloudTrail a um bucket doAmazon S3, incluindo eventos do Amazon EKS. Se não configurar uma trilha, você ainda poderá visualizaros eventos mais recentes no console do CloudTrail em Event history. Usando as informações coletadaspelo CloudTrail, é possível determinar a solicitação que foi feita ao Amazon EKS, o endereço IP do qual asolicitação foi feita, quem a fez e quando ela foi feita, além de outros detalhes.

Para saber mais sobre CloudTrail, consulte o AWS CloudTrail User Guide.

Informações do Amazon EKS no CloudTrailO CloudTrail está habilitado na sua conta da AWS ao criá-la. Quando ocorre uma atividade no AmazonEKS, ela é registrada em um evento do CloudTrail junto com outros eventos de serviços da AWS noHistórico de eventos. Você pode visualizar, pesquisar e fazer download de eventos recentes em suaconta da AWS. Para obter mais informações, consulte Visualizar eventos com o histórico de eventos doCloudTrail.

Para obter um registro contínuo de eventos na conta da AWS, incluindo eventos do Amazon EKS, crieuma trilha. Uma trilha permite CloudTrail para fornecer arquivos de log a um bucket do Amazon S3.Por padrão, quando você cria uma trilha no console, ela é aplicada a todas as regiões da AWS. A trilharegistra eventos de todas as regiões na partição da AWS e fornece os arquivos de log para o bucket doAmazon S3 que você especificar. Além disso, é possível configurar outros serviços da AWS para analisarmais profundamente e agir sobre os dados de evento coletados nos logs do CloudTrail. Para obter maisinformações, consulte:

• Visão geral da criação de uma trilha• Serviços e integrações compatíveis com o CloudTrail• Configurar notificações do Amazon SNS para o CloudTrail• Receber arquivos de log do CloudTrail de várias regiões e Receber arquivos de log do CloudTrail de

várias contas

Todas as ações do Amazon EKS são registradas em log pelo CloudTrail e são documentadas em AmazonEKS API Reference. Por exemplo, as chamadas para as seções CreateCluster, ListClusters eDeleteCluster geram entradas nos arquivos de log do CloudTrail.

Cada entrada de log ou evento contém informações sobre quem gerou a solicitação. As informações deidentidade ajudam a determinar:

• Se a solicitação foi feita com credenciais de usuário da raiz ou do AWS Identity and Access Management(IAM).

• Se a solicitação foi feita com credenciais de segurança temporárias de uma função ou de um usuáriofederado.

298

Page 307: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioNoções básicas sobre entradas dearquivos de log do Amazon EKS

• Se a solicitação foi feita por outro serviço da AWS.

Para obter mais informações, consulte Elemento userIdentity do CloudTrail.

Noções básicas sobre entradas de arquivos de log doAmazon EKSUma trilha é uma configuração que permite a entrega de eventos como arquivos de log em um bucketdo Amazon S3 que você especificar. Os arquivos de log do CloudTrail contêm uma ou mais entradasde log. Um evento representa uma única solicitação de qualquer origem e inclui informações sobre aação solicitada, a data e hora da ação, parâmetros de solicitação, e assim por diante. arquivos de log doCloudTrail não são um rastreamento de pilha ordenada das chamadas da API pública. Assim, elas não sãoexibidas em nenhuma ordem específica.

O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstra a ação CreateCluster.

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::111122223333:user/username", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "username" }, "eventTime": "2018-05-28T19:16:43Z", "eventSource": "eks.amazonaws.com", "eventName": "CreateCluster", "awsRegion": "region-code", "sourceIPAddress": "205.251.233.178", "userAgent": "PostmanRuntime/6.4.0", "requestParameters": { "resourcesVpcConfig": { "subnetIds": [ "subnet-a670c2df", "subnet-4f8c5004" ] }, "roleArn": "arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonEKS-CAC1G1VH3ZKZ", "clusterName": "test" }, "responseElements": { "cluster": { "clusterName": "test", "status": "CREATING", "createdAt": 1527535003.208, "certificateAuthority": {}, "arn": "arn:aws:eks:region-code:111122223333:cluster/test", "roleArn": "arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonEKS-CAC1G1VH3ZKZ", "version": "1.10", "resourcesVpcConfig": { "securityGroupIds": [], "vpcId": "vpc-21277358", "subnetIds": [ "subnet-a670c2df", "subnet-4f8c5004" ] } } },

299

Page 308: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioNoções básicas sobre entradas dearquivos de log do Amazon EKS

"requestID": "a7a0735d-62ab-11e8-9f79-81ce5b2b7d37", "eventID": "eab22523-174a-499c-9dd6-91e7be3ff8e3", "readOnly": false, "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

Entradas de log para funções vinculadas ao serviço do AmazonEKSAs funções vinculadas ao serviço do Amazon EKS fazem chamadas de API para recursos da AWS. Vocêverá entradas de log do CloudTrail com username: AWSServiceRoleForAmazonEKS e username:AWSServiceRoleForAmazonEKSNodegroup para chamadas feitas pelas funções vinculadas ao serviçodo Amazon EKS. Para obter mais informações sobre o Amazon EKS e as funções vinculadas ao serviço,consulte the section called “Usar funções vinculadas a serviço” (p. 265).

O exemplo a seguir mostra uma entrada de log do CloudTrail que demonstrauma ação DeleteInstanceProfile feita pela função vinculada ao serviçoAWSServiceRoleForAmazonEKSNodegroup, anotada no sessionContext.

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROA3WHGPEZ7SJ2CW55C5:EKS", "arn": "arn:aws:sts::111122223333:assumed-role/AWSServiceRoleForAmazonEKSNodegroup/EKS", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA3WHGPEZ7SJ2CW55C5", "arn": "arn:aws:iam::111122223333:role/aws-service-role/eks-nodegroup.amazonaws.com/AWSServiceRoleForAmazonEKSNodegroup", "accountId": "111122223333", "userName": "AWSServiceRoleForAmazonEKSNodegroup" }, "webIdFederationData": {}, "attributes": { "mfaAuthenticated": "false", "creationDate": "2020-02-26T00:56:33Z" } }, "invokedBy": "eks-nodegroup.amazonaws.com" }, "eventTime": "2020-02-26T00:56:34Z", "eventSource": "iam.amazonaws.com", "eventName": "DeleteInstanceProfile", "awsRegion": "us-east-1", "sourceIPAddress": "eks-nodegroup.amazonaws.com", "userAgent": "eks-nodegroup.amazonaws.com", "requestParameters": { "instanceProfileName": "eks-11111111-2222-3333-4444-abcdef123456" }, "responseElements": null, "requestID": "11111111-2222-3333-4444-abcdef123456", "eventID": "11111111-2222-3333-4444-abcdef123456", "eventType": "AwsApiCall", "recipientAccountId": "111122223333"}

300

Page 309: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioAmazon EKS no AWS Outposts

Amazon EKS no AWS OutpostsA partir da versão 1.14.8 do Kubernetes com a versão de plataforma eks.5 do Amazon EKS e daversão 1.13.12 do Kubernetes com a versão de plataforma eks.6 do Amazon EKS, é possível criar eexecutar nós do Amazon EKS no AWS Outposts. O AWS Outposts ativa serviços, infraestrutura e modelosoperacionais nativos da AWS em instalações no local. Em AWS Outposts ambientais, pode utilizar asmesmas API, ferramentas e infraestruturas AWS que utiliza na AWS Cloud. Amazon EKS nós em AWSOutposts é ideal para volumes de trabalho de baixa latência que têm de ser executados na proximidade dedados e aplicações nas instalações. Para obter mais informações sobre o AWS Outposts, consulte o Guiado usuário do AWS Outposts.

PrerequisitesOs seguintes são os pré-requisitos para utilizar Amazon EKS nós em AWS Outposts:

• Um Outpost deve estar instalado e configurado no datacenter no local.• É necessário ter uma conexão de rede confiável entre o Outpost e a região da AWS.• A região da AWS do Outpost deve ser compatível com o Amazon EKS. Para obter uma lista das regiões

compatíveis, consulte Endpoints de serviço do Amazon EKS na AWS General Reference.

LimitationsVeja a seguir as limitações de uso do Amazon EKS no Outposts:

• O AWS Identity and Access Management, o Balanceador de carga de aplicações, o Load balancerde rede, o Classic Load Balancer e o Amazon Route 53 são executados na região da AWS, não noOutposts. Isso aumentará as latências entre os serviços e os contêineres.

• O AWS Fargate não está disponível no AWS Outposts.

Considerações sobre a conectividade de redeVeja a seguir as considerações sobre a conectividade de rede do Amazon EKS AWS Outposts:

• Se a conectividade de rede entre o Outpost e sua região da AWS for perdida, os nós continuarão emexecução. No entanto, não será possível criar outros nós para executar novas ações em implantaçõesexistentes até a conectividade ser restaurada. No caso de uma instância falhar, ela não será trocadaautomaticamente. O plano de controlo de Kubernetes funciona na região e falta de batimentos cardíacoscausados por coisas como uma perda de conectividade para o Zona de disponibilidade pode levar afalhas. As pulsações com falha farão com que os pods no Outposts sejam marcados como não íntegros.Por fim, o status do nó atingirá o tempo limite e os pods serão marcados para remoção. Para obter maisinformações, consulte Node Controller na documentação do Kubernetes.

• Recomendamos que você forneça conectividade confiável, altamente disponível e de baixa latênciaentre o Outpost e sua região da AWS.

Criar nós do Amazon EKS em um OutpostA criação de nós do Amazon EKS em um Outpost é semelhante à criação de nós do Amazon EKS naNuvem AWS. Ao criar um nó do Amazon EKS em um Outpost, é necessário especificar uma sub-redeassociada ao Outpost.

Um Outpost é uma extensão de uma região da AWS e é possível estender uma VPC em uma contapara abranger várias zonas de disponibilidade e qualquer local associado do Outpost. Ao configurar o

301

Page 310: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioCriar nós do Amazon EKS em um Outpost

Outpost, você associa uma sub-rede a ele para estender o ambiente regional da VPC à instalação nolocal. As instâncias em um Outpost aparecem como parte da VPC regional, semelhante a uma zona dedisponibilidade com sub-redes associadas.

Para criar nós do Amazon EKS em um Outpost com a AWS CLI, especifique um grupo de segurança euma sub-rede associada ao Outpost.

Como criar um grupo de nós do Amazon EKS em um Outpost

1. Crie uma VPC.

aws ec2 create-vpc --cidr-block 10.0.0.0/16

2. Criar sub-redes do Outpost O parâmetro --outpost-arn deve ser especificado para que a sub-redeseja criada para o Outpost. (Essa etapa é diferente para o AWS Outposts.)

aws ec2 create-subnet --vpc-id vpc-xxxxxxxx --cidr-block 10.0.3.0/24 \ –-outpost-arn arn:aws:outposts:us-west-2:123456789012:outpost/op-xxxxxxxxxxxxxxxx

3. Crie um cluster, especificando as sub-redes para o Outpost. (Essa etapa é diferente para o AWSOutposts.)

aws eks --region region-code create-cluster --name eks-outpost --role-arn \ arn:aws:iam::123456789012:role/eks-service-role-AWSServiceRoleForAmazonEKS-OUTPOST \ --resources-vpc-config subnetIds=subnet-xxxxxxxx,subnet-yyyyyyyy,securityGroupIds=sg-xxxxxxxx

4. Crie o grupo de nós. Especifique um tipo de instância que está disponível no Outpost. (Essa etapa édiferente para o AWS Outposts.)

302

Page 311: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioContêineres do Deep Learning

eksctl create nodegroup --cluster eks-outpost \ --version auto \ --name outpost-nodes \ --node-type c5.large \ --node-ami auto \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4

5. Implante aplicativos e serviços.

kubectl apply -f kubernetes/deployment.yaml

Contêineres do Deep LearningOs contêineres de aprendizagem profunda da AWS são um conjunto de imagens do Docker para treinare fornecer modelos em TensorFlow no Amazon EKS e no Amazon Elastic Container Service (AmazonECS). Os contêineres do Deep Learning fornecem ambientes otimizados com bibliotecas Intel MKL (parainstâncias de CPI), Nvidia CUDA (para instâncias de GPU) e TensorFlow e estão disponíveis no AmazonECR.

Para começar a usar os contêineres do AWS Deep Learning no Amazon EKS, consulte Contêineres doAWS Deep Learning no Amazon EKS no Guia do desenvolvedor do AWS Deep Learning AMI.

Tutorial Configurar App Mesh integração comKubernetes

Ao integrar o AWS App Mesh com o Kubernetes usando o controlador do App Mesh para Kubernetes,você gerencia recursos do App Mesh, como malhas, serviços virtuais, nós virtuais, roteadores virtuais erotas pelo Kubernetes. Também é possível adicionar automaticamente imagens de contêiner do arquivoassociado do App Mesh às especificações de pods do Kubernetes. Este tutorial orienta a instalação docontrolador do App Mesh para Kubernetes de forma a permitir essa integração.

O controlador é acompanhado pela implementação das seguintes definições de recursos personalizadosKubernetes: meshes, virtual services, virtual nodes, e virtual routers. Os relógios docontrolador para criação, modificação e eliminação dos recursos personalizados e fazem alterações aocorrespondente App Mesh mesh, virtual service, virtual node, virtual gateway, gatewayroute, e virtual router (incluindo route) recursos através do App Mesh API. Para saber mais oucontribuir para o controlador, consulte o projeto do GitHub.

O controlador também instala um webhook que injeta os seguintes contêineres em pods do Kubernetesetiquetados com um nome que você especificar.

• Proxy do App Mesh Envoy –O Envoy usa a configuração definida no plano de controle do App Meshpara determinar para onde enviar o tráfego do seu aplicativo.

• Gerenciador de rotas de proxy do App Mesh– Atualiza as regras iptables em um namespace derede do pod que roteia o tráfego de entrada e saída pelo Envoy. Esse contêiner é executado como umcontêiner de init do Kubernetes dentro do pod.

303

Page 312: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioPrerequisites

Prerequisites• Uma compreensão existente dos conceitos do App Mesh. Para obter mais informações, consulte O que

é o AWS App Mesh?• Um cluster do Kubernetes existente que execute a versão 1.13 ou posterior. Se você não tiver um

cluster, implante um usando o guia Conceitos básicos do Amazon EKS. Se estiver a executar o seupróprio grupo Kubernetes em Amazon EC2, depois certifique-se de que o acoplador é autenticadopara o Amazon ECR de que a imagem Envoy está em. Para mais informações, consulte Imagem deenvoy e Autenticação do registo na documentação AWS e Puxar uma imagem de um registo privado nadocumentação Kubernetes.

• A versão da AWS CLI 1.18.116 ou posterior, ou 2.0.38 e posterior instalada. Para instalar ou atualizar aAWS CLI, consulte Instalar a AWS CLI.

• Um cliente do kubectl que está configurado para se comunicar com o cluster do Kubernetes. Sevocê estiver usando o Amazon Elastic Kubernetes Service, use as instruções para instalar kubectl econfigurar um arquivo kubeconfig.

• Ter o Helm versão 3.0 ou posterior instalado. Se você não tiver o Helm instalado, poderá instalá-loseguindo as instruções em Usar o Helm com o Amazon EKS.

Etapa 1 Instalar os componentes de integraçãoInstale os componentes de integração uma vez em cada cluster que hospeda os pods a serem usadoscom o App Mesh.

Como instalar os componentes de integração

1. As etapas restantes deste procedimento exigem um cluster sem uma versão de pré-lançamento docontrolador instalada. Se você instalou uma versão de pré-lançamento ou não tem certeza se você atem, baixe e execute um script para verificar se uma versão de pré-lançamento está instalada no seucluster.

curl -o pre_upgrade_check.sh https://raw.githubusercontent.com/aws/eks-charts/master/stable/appmesh-controller/upgrade/pre_upgrade_check.sh./pre_upgrade_check.sh

Se o script retornar Your cluster is ready for upgrade. Please proceed to theinstallation instructions, você poderá avançar para a próxima etapa. Se for diferente, vocêprecisará concluir as etapas de atualização antes de continuar. Para obter mais informações sobrecomo atualizar uma versão de pré-lançamento, consulte Atualizar no GitHub.

2. Adicione o repositório eks-charts ao Helm.

helm repo add eks https://aws.github.io/eks-charts

3. Instale as definições de recursos personalizados (CRD) do App Mesh Kubernetes.

kubectl apply -k "https://github.com/aws/eks-charts/stable/appmesh-controller/crds?ref=master"

4. Crie um namespace do Kubernetes para o controlador.

kubectl create ns appmesh-system

5. Defina as seguintes variáveis para uso nas etapas mais adiante. Substitua cluster-name eregion-code pelos valores do cluster existente.

304

Page 313: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 1 Instalar os componentes de integração

export CLUSTER_NAME=cluster-nameexport AWS_REGION=region-code

6. (Opcional) Se você deseja executar o controlador no Fargate, é necessário criar um perfil do Fargate.Se não tiver eksctl instalado, pode instalá-lo com as instruções em Instalar ou atualizar eksctl. Sepreferir criar o perfil utilizando a consola, consulte Criar um perfil de Fargate.

eksctl create fargateprofile --cluster $CLUSTER_NAME --name appmesh-system --namespace appmesh-system

7. Crie um provedor de identidade OpenID Connect (OIDC) para o cluster. Se não tiver eksctlinstalado, pode instalá-lo com as instruções em Instalar ou atualizar eksctl. Se preferir criar ofornecedor utilizando a consola, consulte Activar funções IAM para contas de serviço no seu grupo.

eksctl utils associate-iam-oidc-provider \ --region=$AWS_REGION \ --cluster $CLUSTER_NAME \ --approve

8. Crie uma função do IAM, associe a ela as políticas gerenciadas da AWS AWSAppMeshFullAccess eAWSCloudMapFullAccess e vincule-a à conta do serviço appmesh-controller do Kubernetes. Afunção permite que o controlador adicione, remova e altere os recursos do App Mesh.

Note

O comando cria uma função do AWS IAM com um nome gerado automaticamente. Não épossível especificar o nome da função do IAM criada.

eksctl create iamserviceaccount \ --cluster $CLUSTER_NAME \ --namespace appmesh-system \ --name appmesh-controller \ --attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapFullAccess,arn:aws:iam::aws:policy/AWSAppMeshFullAccess \ --override-existing-serviceaccounts \ --approve

Se você preferir criar a conta de serviço usando o Console de gerenciamento da AWS ou a AWSCLI, consulte Criar uma função e política do IAM para a conta de serviço. Se você usar o Console degerenciamento da AWS ou a AWS CLI para criar a conta, também precisará mapear a função parauma conta de serviço do Kubernetes. Para obter mais informações, consulte Especificar uma funçãodo IAM para a conta de serviço.

9. Implante o controlador do App Mesh. Para obter uma lista de todas as opções de configuração,consulte Configuration no GitHub.

helm upgrade -i appmesh-controller eks/appmesh-controller \ --namespace appmesh-system \ --set region=$AWS_REGION \ --set serviceAccount.create=false \ --set serviceAccount.name=appmesh-controller

Important

Se o seu grupo estiver no me-south-1 ou ap-east-1 Regiões, então tem de adicionar aseguinte opção ao comando anterior:

305

Page 314: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Implementar App Mesh recursos

--set sidecar.image.repository=account-id.dkr.ecr.region-code.amazonaws.com/aws-appmesh-envoy

Substituir account-id e region-code com um dos conjuntos de valores apropriados.

• 772975370895.dkr.ecr.me-south-1.amazonaws.com/aws-appmesh-envoy:v1.15.0.0-prod• 856666278305.dkr.ecr.ap-east-1.amazonaws.com/aws-appmesh-envoy:v1.15.0.0-prod

10. Confirme se a versão do controlador é v1.0.0 ou posterior. É possível visualizar o log de alteraçõesno GitHub.

kubectl get deployment appmesh-controller \ -n appmesh-system \ -o json | jq -r ".spec.template.spec.containers[].image" | cut -f2 -d ':'

Note

Se visualizar o log para o contêiner em execução, você poderá ver uma linha que inclui oseguinte texto, que pode ser ignorado com segurança.

Neither -kubeconfig nor -master was specified. Using the inClusterConfig. This might not work.

Etapa 2. Implementar App Mesh recursosQuando você implanta um aplicativo no Kubernetes, você também cria os recursos personalizados doKubernetes para que o controlador possa criar os recursos do App Mesh correspondentes. O procedimentoa seguir ajuda a implantar recursos do App Mesh com algumas funcionalidades deles. Você podeencontrar exemplos de manifestos para implantar outras funcionalidades dos recursos do App Mesh nassubpastas da v1beta2, em muitas das pastas de recursos listadas em Demonstração do App Mesh noGitHub.

Important

Depois que o controlador criar um recurso do App Mesh, recomendamos fazer apenas alteraçõesou excluir o recurso do App Mesh usando o controlador. Se você fizer alterações ou excluiro recurso usando o App Mesh, o controlador não alterará nem recriará o recurso alterado ouexcluído do App Mesh por dez horas, por padrão. Você pode configurar essa duração para sermenor. Para obter mais informações, consulte Configuração no GitHub.

Como implantar recursos do App Mesh

1. Crie um namespace do Kubernetes no qual implantar recursos do App Mesh.

a. Salve o seguinte conteúdo no seu computador, em um arquivo chamado namespace.yaml.

apiVersion: v1kind: Namespacemetadata: name: my-apps labels: mesh: my-mesh appmesh.k8s.aws/sidecarInjectorWebhook: enabled

b. Crie o novo namespace.

306

Page 315: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Implementar App Mesh recursos

kubectl apply -f namespace.yaml

2. Crie uma função de serviço do App Mesh.

a. Salve o seguinte conteúdo no seu computador, em um arquivo chamado mesh.yaml. O ficheiroserá utilizado para criar um recurso de rede nomeado my-mesh. Uma rede de serviço é um limitelógico para tráfego de rede entre os serviços que residem dentro do mesmo.

apiVersion: appmesh.k8s.aws/v1beta2kind: Meshmetadata: name: my-meshspec: namespaceSelector: matchLabels: mesh: my-mesh

b. Crie a malha.

kubectl apply -f mesh.yaml

c. Veja os detalhes do recurso de malha do Kubernetes que foi criado.

kubectl describe mesh my-mesh

Resultado

Name: my-meshNamespace:Labels: <none>Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"appmesh.k8s.aws/v1beta2","kind":"Mesh","metadata":{"annotations":{},"name":"my-mesh"},"spec":{"namespaceSelector":{"matchLa...API Version: appmesh.k8s.aws/v1beta2Kind: MeshMetadata: Creation Timestamp: 2020-06-17T14:51:37Z Finalizers: finalizers.appmesh.k8s.aws/mesh-members finalizers.appmesh.k8s.aws/aws-appmesh-resources Generation: 1 Resource Version: 6295 Self Link: /apis/appmesh.k8s.aws/v1beta2/meshes/my-mesh UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711Spec: Aws Name: my-mesh Namespace Selector: Match Labels: Mesh: my-meshStatus: Conditions: Last Transition Time: 2020-06-17T14:51:37Z Status: True Type: MeshActive Mesh ARN: arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh Observed Generation: 1Events: <none>

d. Veja os detalhes sobre a malha de serviço do App Mesh que o controlador criou.

307

Page 316: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Implementar App Mesh recursos

aws appmesh describe-mesh --mesh-name my-mesh

Resultado

{ "mesh": { "meshName": "my-mesh", "metadata": { "arn": "arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh", "createdAt": "2020-06-17T09:51:37.920000-05:00", "lastUpdatedAt": "2020-06-17T09:51:37.920000-05:00", "meshOwner": "111122223333", "resourceOwner": "111122223333", "uid": "111a11b1-c11d-1e1f-gh1i-j11k1l111m711", "version": 1 }, "spec": {}, "status": { "status": "ACTIVE" } }}

3. Crie um nó virtual do App Mesh. Um nó virtual atua como um ponteiro lógico para uma implantação doKubernetes.

a. Salve o seguinte conteúdo no seu computador, em um arquivo chamado virtual-node.yaml.O ficheiro será utilizado para criar uma App Mesh nó virtual nomeado my-service-a no asminhas-aplicações namespace O nó virtual representa um serviço do Kubernetes criado emuma etapa posterior. O valor de hostname é o nome de hospedagem DNS totalmente qualificadodo serviço real que este nó virtual representa.

apiVersion: appmesh.k8s.aws/v1beta2kind: VirtualNodemetadata: name: my-service-a namespace: my-appsspec: podSelector: matchLabels: app: my-app-1 listeners: - portMapping: port: 80 protocol: http serviceDiscovery: dns: hostname: my-service-a.my-apps.svc.cluster.local

Os nós virtuais têm recursos, como criptografia de ponta a ponta e verificações de integridade,que não são abordados neste tutorial. Para obter mais informações, consulte Nós virtuais. Paraver todas as configurações disponíveis para um nó virtual que é possível definir na especificaçãoanterior, execute o comando a seguir.

aws appmesh create-virtual-node --generate-cli-skeleton yaml-input

b. Implante o nó virtual.

308

Page 317: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Implementar App Mesh recursos

kubectl apply -f virtual-node.yaml

c. Veja os detalhes do recurso de nó virtual do Kubernetes que foi criado.

kubectl describe virtualnode my-service-a -n my-apps

Resultado

Name: my-service-aNamespace: my-appsLabels: <none>Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"appmesh.k8s.aws/v1beta2","kind":"VirtualNode","metadata":{"annotations":{},"name":"my-service-a","namespace":"my-app-1"},"s...API Version: appmesh.k8s.aws/v1beta2Kind: VirtualNodeMetadata: Creation Timestamp: 2020-06-17T14:57:29Z Finalizers: finalizers.appmesh.k8s.aws/aws-appmesh-resources Generation: 2 Resource Version: 22545 Self Link: /apis/appmesh.k8s.aws/v1beta2/namespaces/my-apps/virtualnodes/my-service-a UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711Spec: Aws Name: my-service-a_my-apps Listeners: Port Mapping: Port: 80 Protocol: http Mesh Ref: Name: my-mesh UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711 Pod Selector: Match Labels: App: nginx Service Discovery: Dns: Hostname: my-service-a.my-apps.svc.cluster.localStatus: Conditions: Last Transition Time: 2020-06-17T14:57:29Z Status: True Type: VirtualNodeActive Observed Generation: 2 Virtual Node ARN: arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualNode/my-service-a_my-appsEvents: <none>

d. Veja os detalhes do nó virtual que o controlador criou no App Mesh.

Note

Embora o nome do nó virtual criado em Kubernetes seja my-service-a, o nome donó virtual criado na App Mesh é my-service-a_my-app-1. O controlador anexa onome do Kubernetes ao App Mesh nome do nó virtual quando cria o App Mesh recurso.O nome do namespace é adicionado porque no Kubernetes é possível criar nós virtuaiscom o mesmo nome em namespaces diferentes, mas no App Mesh, um nome de nóvirtual deve ser exclusivo em uma malha.

309

Page 318: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Implementar App Mesh recursos

aws appmesh describe-virtual-node --mesh-name my-mesh --virtual-node-name my-service-a_my-apps

Resultado

{ "virtualNode": { "meshName": "my-mesh", "metadata": { "arn": "arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualNode/my-service-a_my-apps", "createdAt": "2020-06-17T09:57:29.840000-05:00", "lastUpdatedAt": "2020-06-17T09:57:29.840000-05:00", "meshOwner": "111122223333", "resourceOwner": "111122223333", "uid": "111a11b1-c11d-1e1f-gh1i-j11k1l111m711", "version": 1 }, "spec": { "backends": [], "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ], "serviceDiscovery": { "dns": { "hostname": "my-service-a.my-apps.svc.cluster.local" } } }, "status": { "status": "ACTIVE" }, "virtualNodeName": "my-service-a_my-apps" }}

4. Crie um roteador virtual do App Mesh. Os roteadores virtuais cuidam do tráfego de um ou maisserviços virtuais dentro da malha.

a. Salve o seguinte conteúdo no seu computador, em um arquivo chamado virtual-router.yaml. O arquivo será usado para criar um tráfego de roteador a roteador virtual parao nó virtual chamado my-service-a que foi criado na etapa anterior. O controlador criaráo roteador virtual e os recursos de roteamento do App Mesh. Pode especificar muitas maiscapacidades para as suas rotas e utilizar protocolos para além de http. Para mais informações,consulte Routers virtuais e Rotas. Perceba que o nome do nó virtual referenciado é o nome donó virtual do Kubernetes, não o nome do nó virtual do App Mesh que foi criado no App Mesh pelocontrolador.

apiVersion: appmesh.k8s.aws/v1beta2kind: VirtualRoutermetadata: namespace: my-apps name: my-service-a-virtual-routerspec: listeners: - portMapping:

310

Page 319: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Implementar App Mesh recursos

port: 80 protocol: http routes: - name: my-service-a-route httpRoute: match: prefix: / action: weightedTargets: - virtualNodeRef: name: my-service-a weight: 1

(Opcional) Para ver todas as configurações disponíveis para roteador virtual que podem serdefinidas na especificação anterior, execute qualquer um dos comandos a seguir.

aws appmesh create-virtual-router --generate-cli-skeleton yaml-input

Para ver todas as configurações disponíveis para uma rota que podem ser definidas naespecificação anterior, execute o comando a seguir.

aws appmesh create-route --generate-cli-skeleton yaml-input

b. Implante o roteador virtual.

kubectl apply -f virtual-router.yaml

c. Veja o recurso de roteador virtual do Kubernetes que foi criado.

kubectl describe virtualrouter my-service-a-virtual-router -n my-apps

Saída abreviada

Name: my-service-a-virtual-routerNamespace: my-app-1Labels: <none>Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"appmesh.k8s.aws/v1beta2","kind":"VirtualRouter","metadata":{"annotations":{},"name":"my-service-a-virtual-router","namespac...API Version: appmesh.k8s.aws/v1beta2Kind: VirtualRouter...Spec: Aws Name: my-service-a-virtual-router_my-apps Listeners: Port Mapping: Port: 80 Protocol: http Mesh Ref: Name: my-mesh UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711 Routes: Http Route: Action: Weighted Targets: Virtual Node Ref: Name: my-service-a Weight: 1 Match:

311

Page 320: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Implementar App Mesh recursos

Prefix: / Name: my-service-a-routeStatus: Conditions: Last Transition Time: 2020-06-17T15:14:01Z Status: True Type: VirtualRouterActive Observed Generation: 1 Route AR Ns: My - Service - A - Route: arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualRouter/my-service-a-virtual-router_my-apps/route/my-service-a-route Virtual Router ARN: arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualRouter/my-service-a-virtual-router_my-appsEvents: <none>

d. Veja o recurso de roteador virtual que o controlador criou no App Mesh. Especifique my-service-a-virtual-router_my-app-1 para name, porque quando o controlador criou oroteador virtual no App Mesh, ele anexou o nome do namespace do Kubernetes ao nome doroteador virtual.

aws appmesh describe-virtual-router --virtual-router-name my-service-a-virtual-router_my-apps --mesh-name my-mesh

Resultado

{ "virtualRouter": { "meshName": "my-mesh", "metadata": { "arn": "arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualRouter/my-service-a-virtual-router_my-apps", "createdAt": "2020-06-17T10:14:01.547000-05:00", "lastUpdatedAt": "2020-06-17T10:14:01.547000-05:00", "meshOwner": "111122223333", "resourceOwner": "111122223333", "uid": "111a11b1-c11d-1e1f-gh1i-j11k1l111m711", "version": 1 }, "spec": { "listeners": [ { "portMapping": { "port": 80, "protocol": "http" } } ] }, "status": { "status": "ACTIVE" }, "virtualRouterName": "my-service-a-virtual-router_my-apps" }}

e. Veja o recurso de rota que o controlador criou no App Mesh. Um recurso de rota não foi criadono Kubernetes porque a rota faz parte da configuração do roteador virtual no Kubernetes. Ainformação do itinerário foi apresentada no detalhe do recurso de Kubernetes no subpasso c.O controlador não associou o nome do nome homónimo Kubernetes ao App Mesh nome docaminho quando criou a rota em App Mesh porque os nomes das rotas são únicos para um routervirtual.

312

Page 321: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Implementar App Mesh recursos

aws appmesh describe-route \ --route-name my-service-a-route \ --virtual-router-name my-service-a-virtual-router_my-apps \ --mesh-name my-mesh

Resultado

{ "route": { "meshName": "my-mesh", "metadata": { "arn": "arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualRouter/my-service-a-virtual-router_my-apps/route/my-service-a-route", "createdAt": "2020-06-17T10:14:01.577000-05:00", "lastUpdatedAt": "2020-06-17T10:14:01.577000-05:00", "meshOwner": "111122223333", "resourceOwner": "111122223333", "uid": "111a11b1-c11d-1e1f-gh1i-j11k1l111m711", "version": 1 }, "routeName": "my-service-a-route", "spec": { "httpRoute": { "action": { "weightedTargets": [ { "virtualNode": "my-service-a_my-apps", "weight": 1 } ] }, "match": { "prefix": "/" } } }, "status": { "status": "ACTIVE" }, "virtualRouterName": "my-service-a-virtual-router_my-apps" }}

5. Crie um serviço virtual do App Mesh. Um serviço virtual é uma abstração de um serviço real queé fornecido por um nó virtual direta ou indiretamente por meio de um roteador virtual. Os serviçosdependentes chamam o serviço virtual pelo nome. Embora o nome não seja importante para o AppMesh, recomendamos nomear o serviço virtual com o nome de domínio totalmente qualificado doserviço real que o serviço virtual representa. Ao nomear seus serviços virtuais dessa forma, você nãoprecisa alterar o código do aplicativo para fazer referência a um nome diferente. As solicitações sãoroteadas para o nó virtual ou o roteador virtual especificado como o provedor para o serviço virtual.

a. Salve o seguinte conteúdo no seu computador, em um arquivo chamado virtual-service.yaml. O arquivo será usado para criar um serviço virtual que usa um provedor deroteador virtual para direcionar o tráfego para o nó virtual chamado my-service-a criado emuma etapa anterior. O valor para awsName em spec é o nome de domínio totalmente qualificado(FQDN) do serviço do Kubernetes real extraído por este serviço virtual. O serviço Kubernetesé criado no the section called “Etapa 3 Criar ou atualizar serviços” (p. 315). Para obter maisinformações, consulte Serviços virtuais.

apiVersion: appmesh.k8s.aws/v1beta2

313

Page 322: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 2. Implementar App Mesh recursos

kind: VirtualServicemetadata: name: my-service-a namespace: my-appsspec: awsName: my-service-a.my-apps.svc.cluster.local provider: virtualRouter: virtualRouterRef: name: my-service-a-virtual-router

Para ver todas as configurações disponíveis para um serviço virtual que é possível definir naespecificação anterior, execute o comando a seguir.

aws appmesh create-virtual-service --generate-cli-skeleton yaml-input

b. Crie o serviço virtual .

kubectl apply -f virtual-service.yaml

c. Veja os detalhes do recurso de serviço virtual do Kubernetes que foi criado.

kubectl describe virtualservice my-service-a -n my-apps

Resultado

Name: my-service-aNamespace: my-app-1Labels: <none>Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"appmesh.k8s.aws/v1beta2","kind":"VirtualService","metadata":{"annotations":{},"name":"my-service-a","namespace":"my-app-1"}...API Version: appmesh.k8s.aws/v1beta2Kind: VirtualServiceMetadata: Creation Timestamp: 2020-06-17T15:48:40Z Finalizers: finalizers.appmesh.k8s.aws/aws-appmesh-resources Generation: 1 Resource Version: 13598 Self Link: /apis/appmesh.k8s.aws/v1beta2/namespaces/my-apps/virtualservices/my-service-a UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711Spec: Aws Name: my-service-a.my-apps.svc.cluster.local Mesh Ref: Name: my-mesh UID: 111a11b1-c11d-1e1f-gh1i-j11k1l111m711 Provider: Virtual Router: Virtual Router Ref: Name: my-service-a-virtual-routerStatus: Conditions: Last Transition Time: 2020-06-17T15:48:40Z Status: True Type: VirtualServiceActive Observed Generation: 1 Virtual Service ARN: arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualService/my-service-a.my-apps.svc.cluster.local

314

Page 323: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 3 Criar ou atualizar serviços

Events: <none>

d. Veja os detalhes do recurso de serviço virtual que o controlador criou no App Mesh. O controladordo Kubernetes não acrescentou o nome do namespace do Kubernetes ao nome do serviço virtualdo App Mesh ao criar o serviço virtual no App Mesh porque o nome do serviço virtual é um FQDNexclusivo.

aws appmesh describe-virtual-service --virtual-service-name my-service-a.my-apps.svc.cluster.local --mesh-name my-mesh

Resultado

{ "virtualService": { "meshName": "my-mesh", "metadata": { "arn": "arn:aws:appmesh:us-west-2:111122223333:mesh/my-mesh/virtualService/my-service-a.my-apps.svc.cluster.local", "createdAt": "2020-06-17T10:48:40.182000-05:00", "lastUpdatedAt": "2020-06-17T10:48:40.182000-05:00", "meshOwner": "111122223333", "resourceOwner": "111122223333", "uid": "111a11b1-c11d-1e1f-gh1i-j11k1l111m711", "version": 1 }, "spec": { "provider": { "virtualRouter": { "virtualRouterName": "my-service-a-virtual-router_my-apps" } } }, "status": { "status": "ACTIVE" }, "virtualServiceName": "my-service-a.my-apps.svc.cluster.local" }}

Apesar de não estar abrangido neste tutorial, o controlador também pode implementar App Meshgateways virtuais e rotas de gateway. Para uma demonstração da implementação destes recursos com ocontrolador, consulte Configurar entrada de entrada, ou um manifesto de amostra que inclui os recursos nogithub.

Etapa 3 Criar ou atualizar serviçosTodos os pods a serem usados com o App Mesh devem ter os contêineres associados do App Meshadicionados a eles. O injetor adiciona automaticamente os contêineres associados a qualquer podimplantado com uma etiqueta especificada.

1. Habilite a autorização de proxy. Recomendamos que você habilite cada implantação do Kubernetespara transmitir somente a configuração de seu próprio nó virtual do App Mesh.

a. Salve o seguinte conteúdo no seu computador, em um arquivo chamado proxy-auth.json.Certifique-se de que substitui o alternate-colored values com o seu próprio.

{ "Version": "2012-10-17", "Statement": [

315

Page 324: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 3 Criar ou atualizar serviços

{ "Effect": "Allow", "Action": "appmesh:StreamAggregatedResources", "Resource": [ "arn:aws:appmesh:region-code:111122223333:mesh/my-mesh/virtualNode/my-service-a_my-apps" ] } ]}

b. Crie a política.

aws iam create-policy --policy-name my-policy --policy-document file://proxy-auth.json

c. Crie uma função do IAM, associe a ela a política criada na etapa anterior, crie uma conta deserviço do Kubernetes e vincule a política à conta de serviço do Kubernetes. A função permiteque o controlador adicione, remova e altere os recursos do App Mesh.

eksctl create iamserviceaccount \ --cluster $CLUSTER_NAME \ --namespace my-apps \ --name my-service-a \ --attach-policy-arn arn:aws:iam::111122223333:policy/my-policy \ --override-existing-serviceaccounts \ --approve

Se você preferir criar a conta de serviço usando o Console de gerenciamento da AWS ou a AWSCLI, consulte Criar uma função e política do IAM para a conta de serviço. Se você usar o Consolede gerenciamento da AWS ou a AWS CLI para criar a conta, também precisará mapear a funçãopara uma conta de serviço do Kubernetes. Para obter mais informações, consulte Especificar umafunção do IAM para a conta de serviço.

2. (Opcional) Se você deseja fazer sua implantação em pods do Fargate, será necessário criar um perfildo Fargate. Se não tiver eksctl instalado, pode instalá-lo com as instruções em Instalar ou atualizareksctl. Se preferir criar o perfil utilizando a consola, consulte Criar um perfil de Fargate.

eksctl create fargateprofile --cluster my-cluster --region region-code --name my-service-a --namespace my-apps

3. Crie um serviço e uma implantação do Kubernetes. Se você tiver uma implantação existente coma qual deseja usar o App Mesh, precisará implantar um nó virtual, como fez na subetapa 3 em thesection called “Etapa 2. Implementar App Mesh recursos” (p. 306), e atualizar sua implantação paragarantir que sua etiqueta corresponda àquela definido no nó virtual, de modo que os contêineresassociados sejam adicionados automaticamente aos pods, e os pods sejam reimplantados.

a. Salve o seguinte conteúdo no seu computador, em um arquivo chamado example-service.yaml. Se você alterar o nome do namespace e estiver usando pods do Fargate,certifique-se de que nome do namespace corresponda ao àquele definido no seu perfil doFargate.

apiVersion: v1kind: Servicemetadata: name: my-service-a namespace: my-apps labels: app: my-app-1spec: selector:

316

Page 325: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 3 Criar ou atualizar serviços

app: my-app-1 ports: - protocol: TCP port: 80 targetPort: 80---apiVersion: apps/v1kind: Deploymentmetadata: name: my-service-a namespace: my-apps labels: app: my-app-1spec: replicas: 3 selector: matchLabels: app: my-app-1 template: metadata: labels: app: my-app-1 spec: serviceAccountName: my-service-a containers: - name: nginx image: nginx:1.19.0 ports: - containerPort: 80

Important

O valor para app matchLabels selector na especificação deve corresponder àqueleespecificado na criação do nó virtual na subetapa 3 em the section called “Etapa 2.Implementar App Mesh recursos” (p. 306), ou os contêineres associados não serãoinjetados no pod. No exemplo anterior, o valor da etiqueta é my-app-1. Se implementarum gateway virtual, em vez de um nó virtual, então o Deployment deve incluir apenas orecipiente Envoy. Para mais informações sobre a imagem a utilizar, consulte Imagem deenvoy. Para uma amostra de amostra, consulte o exemplo de implementação em github.

b. Implante o serviço.

kubectl apply -f example-service.yaml

c. Visualize o serviço e a implantação.

kubectl -n my-apps get pods

Resultado

NAME READY STATUS RESTARTS AGEmy-service-a-54776556f6-2cxd9 2/2 Running 0 10smy-service-a-54776556f6-w26kf 2/2 Running 0 18smy-service-a-54776556f6-zw5kt 2/2 Running 0 26s

d. Visualize os detalhes de um dos pods que foi implantado.

kubectl -n my-apps describe pod my-service-a-54776556f6-2cxd9

Saída abreviada

317

Page 326: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 3 Criar ou atualizar serviços

Name: my-service-a-54776556f6-2cxd9Namespace: my-app-1Priority: 0Node: ip-192-168-44-157.us-west-2.compute.internal/192.168.44.157Start Time: Wed, 17 Jun 2020 11:08:59 -0500Labels: app=nginx pod-template-hash=54776556f6Annotations: kubernetes.io/psp: eks.privilegedStatus: RunningIP: 192.168.57.134IPs: IP: 192.168.57.134Controlled By: ReplicaSet/my-service-a-54776556f6Init Containers: proxyinit: Container ID: docker://e0c4810d584c21ae0cb6e40f6119d2508f029094d0e01c9411c6cf2a32d77a59 Image: 111345817488.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-proxy-route-manager:v2 Image ID: docker-pullable://111345817488.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-proxy-route-manager Port: <none> Host Port: <none> State: Terminated Reason: Completed Exit Code: 0 Started: Fri, 26 Jun 2020 08:36:22 -0500 Finished: Fri, 26 Jun 2020 08:36:22 -0500 Ready: True Restart Count: 0 Requests: cpu: 10m memory: 32Mi Environment: APPMESH_START_ENABLED: 1 APPMESH_IGNORE_UID: 1337 APPMESH_ENVOY_INGRESS_PORT: 15000 APPMESH_ENVOY_EGRESS_PORT: 15001 APPMESH_APP_PORTS: 80 APPMESH_EGRESS_IGNORED_IP: 169.254.169.254 APPMESH_EGRESS_IGNORED_PORTS: 22 AWS_ROLE_ARN: arn:aws:iam::111122223333:role/eksctl-app-mesh-addon-iamserviceaccount-my-a-Role1-NMNCVWB6PL0N AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token ...Containers: nginx: Container ID: docker://be6359dc6ecd3f18a1c87df7b57c2093e1f9db17d5b3a77f22585ce3bcab137a Image: nginx:1.19.0 Image ID: docker-pullable://nginx Port: 80/TCP Host Port: 0/TCP State: Running Started: Fri, 26 Jun 2020 08:36:28 -0500 Ready: True Restart Count: 0 Environment: AWS_ROLE_ARN: arn:aws:iam::111122223333:role/eksctl-app-mesh-addon-iamserviceaccount-my-a-Role1-NMNCVWB6PL0N AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token ...

318

Page 327: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 3 Criar ou atualizar serviços

envoy: Container ID: docker://905b55cbf33ef3b3debc51cb448401d24e2e7c2dbfc6a9754a2c49dd55a216b6 Image: 840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.12.4.0-prod Image ID: docker-pullable://840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy Port: 9901/TCP Host Port: 0/TCP State: Running Started: Fri, 26 Jun 2020 08:36:36 -0500 Ready: True Restart Count: 0 Requests: cpu: 10m memory: 32Mi Environment: APPMESH_VIRTUAL_NODE_NAME: mesh/my-mesh/virtualNode/my-service-a_my-apps APPMESH_PREVIEW: 0 ENVOY_LOG_LEVEL: info AWS_REGION: us-west-2 AWS_ROLE_ARN: arn:aws:iam::111122223333:role/eksctl-app-mesh-addon-iamserviceaccount-my-a-Role1-NMNCVWB6PL0N AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token...Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Pulling 30s kubelet, ip-192-168-44-157.us-west-2.compute.internal Pulling image "111345817488.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-proxy-route-manager:v2" Normal Pulled 23s kubelet, ip-192-168-44-157.us-west-2.compute.internal Successfully pulled image "111345817488.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-proxy-route-manager:v2" Normal Created 21s kubelet, ip-192-168-44-157.us-west-2.compute.internal Created container proxyinit Normal Started 21s kubelet, ip-192-168-44-157.us-west-2.compute.internal Started container proxyinit Normal Pulling 20s kubelet, ip-192-168-44-157.us-west-2.compute.internal Pulling image "nginx:1.19.0" Normal Pulled 16s kubelet, ip-192-168-44-157.us-west-2.compute.internal Successfully pulled image "nginx:1.19.0" Normal Created 15s kubelet, ip-192-168-44-157.us-west-2.compute.internal Created container nginx Normal Started 15s kubelet, ip-192-168-44-157.us-west-2.compute.internal Started container nginx Normal Pulling 15s kubelet, ip-192-168-44-157.us-west-2.compute.internal Pulling image "840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.12.4.0-prod" Normal Pulled 8s kubelet, ip-192-168-44-157.us-west-2.compute.internal Successfully pulled image "840364872350.dkr.ecr.us-west-2.amazonaws.com/aws-appmesh-envoy:v1.12.4.0-prod" Normal Created 7s kubelet, ip-192-168-44-157.us-west-2.compute.internal Created container envoy Normal Started 7s kubelet, ip-192-168-44-157.us-west-2.compute.internal Started container envoy

Na saída anterior, é possível ver que os contêineres proxyinit e envoy foram adicionadosao pod pelo controlador. Se implementou o exemplo de serviço para Fargate, então, envoy orecipiente foi adicionado ao grupo pelo controlador, mas o proxyinit o recipiente não foi.

319

Page 328: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEtapa 4. Limpar

4. (Opcional) Instale complementos como Prometheus, Grafana, AWS X-Ray, Jaeger e Datadog. Paraobter mais informações, consulte Complementos do App Mesh no GitHub.

Etapa 4. LimparRemova todos os recursos de exemplo criados neste tutorial. O controlador também remove os recursoscriados na malha do serviço my-mesh do App Mesh.

kubectl delete namespace my-apps

Se criou um perfil de Fargate para o serviço de exemplo, remova-o.

eksctl delete fargateprofile --name my-service-a --cluster my-cluster --region region-code

Exclua a malha.

kubectl delete mesh my-mesh

(Opcional) É possível remover os componentes de integração do Kubernetes.

helm delete appmesh-controller -n appmesh-system

(Opcional) Se tiver implementado os componentes de integração Kubernetes para Fargate, elimine o perfilda Fargate.

eksctl delete fargateprofile --name appmesh-system --cluster my-cluster --region region-code

320

Page 329: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioInsufficient capacity (Capacidade insuficiente)

Solução de problemas do AmazonEKS

Este capítulo aborda alguns erros comuns que você pode encontrar ao usar Amazon EKS e como resolvê-los.

Insufficient capacity (Capacidade insuficiente)Se você receber o erro a seguir ao tentar criar um cluster do Amazon EKS, uma das zonas dedisponibilidade que você especificou não terá capacidade suficiente para oferecer suporte a um cluster.

Cannot create cluster 'example-cluster' because region-1d, the targeted Zonade disponibilidade, does not currently have sufficient capacity to supportthe cluster. Retry and choose from these Zona de disponibilidades: region-1a,region-1b, region-1c

Tente criar o cluster com sub-redes na VPC do cluster que são hospedadas nas zonas de disponibilidaderetornadas por essa mensagem de erro.

Os nós não conseguem aderir ao grupoExistem algumas razões comuns que impedem que os nós se juntem ao grupo:

• O aws-auth-cm.yaml o ficheiro não tem o IAM função ARN para os seus nós. Certifique-se de queo nó IAM função ARN (não o perfil da instância ARN) está especificado no seu aws-auth-cm.yamlficheiro. Para obter mais informações, consulte Iniciar auto-gestão Amazon Linux 2 nós (p. 101).

• O nome do edifício no seu nó AWS CloudFormation o modelo não corresponde exactamente ao nomedo grupo que pretende que os seus nós se juntem. Passar um valor incorreto para este campo resultanuma configuração incorreta do nó /var/lib/kubelet/kubeconfig e os nós não irão juntar-se aogrupo.

• O nó não está marcado como sendo proprietário pelo grupo. Os seus nós têm de ter a seguinte etiquetaaplicada, onde <cluster_name> é substituído pelo nome do seu grupo.

Chave Valor

kubernetes.io/cluster/<cluster-name> owned

• Os nós podem não conseguir aceder ao grupo utilizando um endereço IP público. Certifique-se deque os nós implementados em subredes públicas recebem um endereço IP público. Caso contrário,pode associar um endereço IP elástico a um nó depois de ser lançado. Para obter mais informações,consulte Associar um endereço IP elástico a uma instância em execução ou interface de rede. Se asub-rede pública não estiver definida para atribuir automaticamente endereços IP públicos a instânciasimplantadas nela, recomendamos ativar essa configuração. Para obter mais informações, consulteModificar o atributo de endereçamento IPv4 público para a sub-rede. Se o nó for expandido parauma sub-rede privada, então a subrede tem de ter um caminho para um gateway NAT que tenha umendereço IP público atribuído.

321

Page 330: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioUnauthorized or access denied (kubectl)

(Não autorizado ou acesso negado (kubectl))

• O parâmetro de avaliação STS para a região a que está a expandir os nós não está activado para a suaconta. Para habilitar a região, consulte Ativação e desativação do AWS STS em uma região da AWS.

Unauthorized or access denied (kubectl) (Nãoautorizado ou acesso negado (kubectl))

Se você recebe um dos seguintes erros ao executar comandos kubectl, é porque o comando kubectl nãoestá configurado corretamente para o Amazon EKS ou as credenciais de função ou usuário do IAM queestão sendo usadas não mapeiam para um usuário do RBAC do Kubernetes com permissões suficientesno cluster do Amazon EKS.

• could not get token: AccessDenied: Access denied

• error: You must be logged in to the server (Unauthorized)

• error: the server doesn't have a resource type "svc"

Isso pode ser porque o cluster foi criado com um conjunto de credenciais da AWS (de um usuário oufunção do IAM) e kubectl está usando um conjunto de credenciais diferente.

Quando um cluster do Amazon EKS é criado, a entidade (usuário ou função) do IAM que cria o clusteré adicionada à tabela de autorização de RBAC do Kubernetes como o administrador (com permissõessystem:masters). Inicialmente, apenas isso IAM o utilizador pode efectuar chamadas para o servidorAPI Kubernetes utilizando kubectl. Para mais informações, consulte Gerenciar usuários ou funções doIAM para o cluster (p. 229). Se usar o console para criar o cluster, você deverá verificar se as mesmascredenciais de usuário do IAM estão na cadeia de credenciais do SDK da AWS ao executar os comandoskubectl no cluster.

Se instalar e configurar o AWS CLI, pode configurar o IAM credenciais para o seu utilizador. Para obtermais informações, consulte Configurar a AWS CLI no Guia do usuário do AWS Command Line Interface.

Se assumir uma função para criar o cluster do Amazon EKS, você deverá certificar-se de que kubectlesteja configurado para assumir a mesma função. Use o comando a seguir para atualizar o arquivokubeconfig para usar uma função do IAM. Para obter mais informações, consulte Criar um kubeconfigpara o Amazon EKS (p. 226).

aws --region region-code eks update-kubeconfig --name cluster_name --role-arn arn:aws:iam::aws_account_id:role/role_name

Para mapear um usuário do IAM para um usuário RBAC do Kubernetes, consulte Gerenciar usuários oufunções do IAM para o cluster (p. 229) ou assista a um vídeo sobre como mapear um usuário.

aws-iam-authenticator Not found (aws-iam-authenticator não encontrado)

Se você receber o erro "aws-iam-authenticator": executable file not found in $PATH, okubectl não estará configurado para o Amazon EKS. Para obter mais informações, consulte Instalar aws-iam-authenticator (p. 222).

Note

O aws-iam-authenticator não será necessário se você tiver a AWS CLI versão 1.16.156 ouposterior instalada.

322

Page 331: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuáriohostname doesn't match

hostname doesn't matchA versão do Python do seu sistema deve ser 2.7.9 ou posterior. Caso contrário, você receberá errosde hostname doesn't match com chamadas da AWS CLI para o Amazon EKS. Para obter maisinformações, consulte What are "hostname doesn't match" errors? nas Perguntas frequentes sobresolicitações do Python.

getsockopt: no route to hostO Docker é executado no intervalo 172.17.0.0/16 do CIDR em clusters do Amazon EKS.Recomendamos que as sub-redes da VPC do cluster não sobreponham esse intervalo. Caso contrário,você receberá o seguinte erro:

Error: : error upgrading connection: error dialing backend: dial tcp 172.17.nn.nn:10250: getsockopt: no route to host

Managed node group errors (Erros de grupo de nósgerenciados)

Se você receber o erro "Instances failed to join the kubernetes cluster" (Instâncias falharam ao ingressarno cluster do kubernetes) no Console de gerenciamento da AWS, certifique-se de que o acesso a endpointprivado do cluster esteja habilitado ou que você configurou corretamente os blocos CIDR para acesso aoendpoint público. Para obter mais informações, consulte Controle de acesso ao endpoint do cluster doAmazon EKS (p. 49).

Se o grupo de nós gerenciados encontrar um problema de integridade, o Amazon EKS retornará umamensagem de erro para ajudar você a diagnosticar o problema. As mensagens de erro e as descriçõesrelacionadas estão mostradas abaixo.

• localizaçãode escalãoautomática: Não conseguimos encontrar o Auto Scaling grupo associado ao grupode nó gerido. Você pode recriar um grupo do Auto Scaling com as mesmas configurações para fazer arecuperação.

• Ec2seguraseguraencontrado: Não conseguimos encontrar o grupo de segurança do grupo para o grupo.Você deve recriar seu cluster.

• Falha de eliminação do sistema ec2segurança: Não foi possível eliminar o grupo de segurança deacesso remoto para o seu grupo de nó gerido. Remova quaisquer dependências do grupo de segurança.

• Ec2launchtemplatenotfound: Não conseguimos encontrar o Amazon EC2 modelo de lançamento para oseu grupo de nó gerido. Você pode recriar um modelo de execução com as mesmas configurações parafazer a recuperação.

• Falta de correspondência do sistema de controlo de glicemia: O Amazon EC2 a versão do modelo delançamento para o seu grupo de nó gerido não corresponde à versão que Amazon EKS criado. Vocêpode reverter para a versão criada pelo Amazon EKS para fazer a recuperação.

• iaminstancemassênciaencontrado: Não conseguimos encontrar o IAM perfil de instância para o seugrupo de nó gerido. Você pode recriar um perfil de instância com as mesmas configurações para fazer arecuperação.

• iamnoderolenotfound: Não conseguimos encontrar o IAM para o seu grupo de nó gerido. Você poderecriar uma função do IAM com as mesmas configurações para fazer a recuperação.

• falhas do asginstancelaunchfail: O seu Auto Scaling o grupo está a ter falhas ao tentar iniciar instâncias.

323

Page 332: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFerramenta de coleta de logs da CNI

• falha noredução: As suas instâncias iniciadas não conseguem registar-se no seu Amazon EKS grupo.As causas comuns desta falha são insuficientes nó IAM função (p. 271) permissões ou falta de acessoà Internet de saída para os nós. Os seus nós devem ter acesso à Internet utilizando um endereço IPpúblico para funcionar corretamente. Para obter mais informações, consulte ??? (p. 173). Os seus nóstambém têm de ter portas abertas à Internet. Para obter mais informações, consulte ??? (p. 175).

• memcelimitoriamente: A sua conta AWS não pode iniciar mais instâncias do tipo de instânciaespecificado. Você pode solicitar um aumento do limite de instâncias do Amazon EC2 para fazer arecuperação.

• endereços de inatividade: Uma ou mais das subredes associadas ao seu grupo de nó gerido não temendereços IP disponíveis suficientes para novos nós.

• AccessDenied: o Amazon EKS ou um ou mais dos seus nós gerenciados não conseguem se comunicarcom seu servidor de API do cluster.

• falha no local: Estes erros são normalmente causados por um Amazon EKS problema do lado doservidor.

Ferramenta de coleta de logs da CNIO Amazon VPC O plugin CNI para Kubernetes tem o seu próprio script de resolução de problemas(disponível nos nós em /opt/cni/bin/aws-cni-support.sh) que pode utilizar para recolher registosde diagnóstico para casos de suporte e resolução de problemas gerais.

Utilize o seguinte comando para executar o script no seu nó:

sudo bash /opt/cni/bin/aws-cni-support.sh

Note

Se o script não está presente no local, ocorreu uma falha na execução do contêiner do CNI. Vocêpode baixar e executar o script manualmente com o seguinte comando:

curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/log-collector-script/linux/eks-log-collector.shsudo bash eks-log-collector.sh

O script coleta as seguintes informações de diagnóstico. A versão da CNI que você implantou pode seranterior à versão do script.

This is version 0.6.1. New versions can be found at https://github.com/awslabs/amazon-eks-ami

Trying to collect common operating system logs... Trying to collect kernel logs... Trying to collect mount points and volume information... Trying to collect SELinux status... Trying to collect iptables information... Trying to collect installed packages... Trying to collect active system services... Trying to collect Docker daemon information... Trying to collect kubelet information... Trying to collect L-IPAMD information... Trying to collect sysctls information... Trying to collect networking information... Trying to collect CNI configuration information... Trying to collect running Docker containers and gather container data... Trying to collect Docker daemon logs...

324

Page 333: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioA rede de tempo de execução do contêiner não está pronta

Trying to archive gathered information...

Done... your bundled logs are located in /var/log/eks_i-0717c9d54b6cfaa19_2020-03-24_0103-UTC_0.6.1.tar.gz

As informações de diagnóstico são coletadas e armazenadas em

/var/log/eks_i-0717c9d54b6cfaa19_2020-03-24_0103-UTC_0.6.1.tar.gz

A rede de tempo de execução do contêiner nãoestá pronta

Você pode receber um erro Container runtime network not ready e erros de autorizaçãosemelhantes a:

4191 kubelet.go:2130] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized4191 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized4191 kubelet_node_status.go:106] Unable to register node "ip-10-40-175-122.ec2.internal" with API server: Unauthorized4191 reflector.go:205] k8s.io/kubernetes/pkg/kubelet/kubelet.go:452: Failed to list *v1.Service: Unauthorized

Os erros estão provavelmente relacionados com o AWS IAM Mapa de configuração do autenticadornão aplicado aos nós. O mapa de configuração fornece o system:bootstrappers e system:nodesKubernetes RBAC permissões para os nós se registarem no grupo. Para mais informações, consulte Parapermitir que os nós se juntem ao seu grupo no Nós autogerido separador de Iniciar auto-gestão AmazonLinux 2 nós (p. 101). Certifique-se de especificar o Role ARN (ARN da função) da função da instância nomapa de configuração, não o Instance Profile ARN (ARN do perfil de instância).

O autenticador não reconhecerá um Role ARN (ARN da função) se ele incluir um caminho em vez de /,conforme mostra o exemplo a seguir:

arn:aws:iam::111122223333:role/development/apps/prod-iam-role-NodeInstanceRole-621LVEXAMPLE

Ao especificar um Role ARN (ARN da função) no mapa de configuração que inclui um caminho diferentede /, é necessário remover o caminho. O ARN acima seria especificado da seguinte maneira:

arn:aws:iam::111122223333:role/prod-iam-role-NodeInstanceRole-621LVEXAMPLE

Tempo limite de handshake TLSQuando um nó não consegue estabelecer uma ligação ao parâmetro de avaliação do servidor API público,pode um erro semelhante ao seguinte erro.

server.go:233] failed to run Kubelet: could not init cloud provider "aws": error finding instance i-1111f2222f333e44c: "error listing AWS instances: \"RequestError: send request failed\\ncaused by: Post net/http: TLS handshake timeout\""

325

Page 334: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioIAM

O processo kubelet gerará e testará continuamente o endpoint do servidor de API. O erro também podeocorrer temporariamente durante algum procedimento que realize uma atualização contínua do cluster noplano de controle, como uma alteração de configuração ou atualização de versão.

Para resolver o problema, verifique a tabela de rotas e grupos de segurança para garantir que o tráfegodos nós pode chegar ao parâmetro de avaliação público.

Solução de problemas no IAMEste tópico aborda alguns erros comuns que você pode encontrar ao usar o Amazon EKS com o IAM ecomo resolvê-los.

AccessDeniedExceptionSe você recebe um AccessDeniedException ao chamar uma operação de API da AWS, é porque ascredenciais de função ou usuário do AWS Identity and Access Management (IAM) que estão sendo usadasnão têm as permissões necessárias para fazer essa chamada.

An error occurred (AccessDeniedException) when calling the DescribeCluster operation: User: arn:aws:iam::111122223333:user/user_name is not authorized to perform: eks:DescribeCluster on resource: arn:aws:eks:region:111122223333:cluster/cluster_name

No exemplo de mensagem acima, o usuário não tem permissões para chamar a operação da APIDescribeCluster do Amazon EKS. Para conceder permissões de administrador do Amazon EKS a umusuário, consulte Exemplos de políticas baseadas em identidade do Amazon EKS (p. 262).

Para obter mais informações gerais sobre o IAM, consulte Controlar o acesso usando políticas no Guia dousuário do IAM.

O aws-auth ConfigMap não concede acesso ao clusterO AWS IAM Authenticator não permite um caminho no ARN da função usada no mapa deconfiguração. Portanto, antes de especificar rolearn, remova o caminho. Por exemplo,altere arn:aws:iam::123456789012:role/team/developers/eks-admin paraarn:aws:iam::123456789012:role/eks-admin.

Não estou autorizado a executar iam:PassRoleSe você receber uma mensagem de erro informando que você não está autorizado a executar a açãoiam:PassRole, entre em contato com o administrador para obter assistência. O administrador é a pessoaque forneceu a você o seu nome de usuário e senha. Peça a essa pessoa para atualizar suas políticaspara permitir que você passe uma função para o Amazon EKS.

Alguns serviços da AWS permitem que você passe uma função existente para o serviço, em vez decriar uma nova função de serviço ou função vinculada ao serviço. Para fazer isso, um usuário deve terpermissões para passar a função para o serviço.

O erro de exemplo a seguir ocorre quando uma usuária do IAM chamada marymajor tenta usar o consolepara executar uma ação no Amazon EKS. No entanto, a ação exige que o serviço tenha permissõesconcedidas por uma função de serviço. Mary não tem permissões para passar a função para o serviço.

User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole

326

Page 335: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioQuero visualizar minhas chaves de acesso

Neste caso, Mary pede ao administrador para atualizar suas políticas para permitir que ela execute a açãoiam:PassRole.

Quero visualizar minhas chaves de acessoDepois de criar suas chaves de acesso de usuário do IAM, é possível visualizar seu ID de chave de acessoa qualquer momento. No entanto, você não pode visualizar sua chave de acesso secreta novamente. Sevocê perder sua chave secreta, crie um novo par de chaves de acesso.

As chaves de acesso consistem em duas partes: um ID de chave de acesso (por exemplo,AKIAIOSFODNN7EXAMPLE) e uma chave de acesso secreta (por exemplo, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY). Como um nome de usuário e uma senha, você deve usar o ID da chave deacesso e a chave de acesso secreta em conjunto para autenticar suas solicitações. Gerencie suas chavesde acesso de forma tão segura quanto você gerencia seu nome de usuário e sua senha.

Important

Não forneça as chaves de acesso a terceiros, mesmo que seja para ajudar a encontrar seu ID deusuário canônico. Ao fazer isso, você pode dar a alguém acesso permanente à sua conta.

Ao criar um par de chaves de acesso, você é solicitado a guardar o ID da chave de acesso e a chave deacesso secreta em um local seguro. A chave de acesso secreta só está disponível no momento em que écriada. Se você perder sua chave de acesso secreta, você deverá adicionar novas chaves de acesso paraseu usuário do IAM. Você pode ter no máximo duas chaves de acesso. Se você já tiver duas, você deveráexcluir um par de chaves para poder criar um novo. Para visualizar as instruções, consulte Gerenciarchaves de acesso no Guia do usuário do IAM.

Sou administrador e desejo conceder acesso aoAmazon EKS a outros usuáriosPara permitir que outros usuários acessem o Amazon EKS, é necessário criar uma entidade do IAM(usuário ou função) para a pessoa ou o aplicativo que precisa do acesso. Eles usarão as credenciaisdessa entidade para acessar a AWS. Você deve anexar uma política à entidade que concede a eles aspermissões corretas no Amazon EKS.

Para começar a usar imediatamente, consulte Criar os primeiros usuário e grupo delegados do IAM noGuia do usuário do IAM.

Desejo permitir que pessoas fora da minha conta daAWS acessem meus recursos do Amazon EKSVocê pode criar uma função que os usuários de outras contas ou pessoas fora da sua organização podemusar para acessar seus recursos. Você pode especificar quem é confiável para assumir a função. Paraserviços que oferecem suporte a políticas baseadas em recursos ou listas de controle de acesso (ACLs),você pode usar essas políticas para conceder às pessoas acesso a seus recursos.

Para saber mais, consulte o seguinte:

• Para saber se o Amazon EKS oferece suporte a esses recursos, consulte Como o Amazon EKSfunciona com o IAM (p. 260).

• Para saber como conceder acesso aos seus recursos em todas as contas da AWS pertencentes a você,consulte Conceder acesso a um usuário do IAM em outra conta da AWS pertencente a você no Guia dousuário do IAM.

• Para saber como conceder acesso aos seus recursos para contas da AWS de terceiros, consulteConceder acesso a contas da AWS pertencentes a terceiros no Guia do usuário do IAM.

327

Page 336: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioDesejo permitir que pessoas fora da minha conta

da AWS acessem meus recursos do Amazon EKS

• Para saber como fornecer acesso por meio de federação de identidades, consulte Fornecer acesso ausuários autenticados externamente (federação de identidades) no Guia do usuário do IAM.

• Para saber a diferença entre usar funções e políticas baseadas em recurso para acesso entre contas,consulte Como as funções do IAM diferem de políticas baseadas em recursos no Guia do usuário doIAM.

328

Page 337: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioFerramentas de gerenciamento

Projetos relacionadosEsses projetos de código aberto ampliam a funcionalidade de clusters do Kubernetes em execução naAWS, incluindo clusters gerenciados pelo Amazon EKS.

Ferramentas de gerenciamentoFerramentas de gerenciamento relacionadas para clusters do Amazon EKS e do Kubernetes.

eksctleksctl é uma simples ferramenta de CLI para criar clusters no Amazon EKS.

• URL do projeto: https://eksctl.io/• Documentação do projeto: https://eksctl.io/• Blog de código aberto da AWS: eksctl: cluster do Amazon EKS com um comando

Operador de serviço da AWSO operador de serviço da AWS permite criar recursos da AWS usando o kubectl.

• URL do projeto: https://github.com/aws/aws-service-operator-k8s• Documentação do projeto: https://github.com/aws/aws-service-operator-k8s/blob/master/README.md• Blog de código aberto da AWS: o operador de serviço da AWS para Kubernetes já está disponível

RedesProjetos de redes relacionados para clusters do Amazon EKS e do Kubernetes.

Plug-in CNI da Amazon VPC para KubernetesO Amazon EKS oferece suporte a redes de VPC nativas por meio do plug-in CNI da Amazon VPC parao Kubernetes. O uso desse plug-in CNI permite que os pods do Kubernetes tenham o mesmo endereçoIP dentro do pod como têm na rede da VPC. Para obter mais informações, consulte Redes de pods(CNI) (p. 179) e Variáveis de configuração do CNI (p. 180).

• URL do projeto: https://github.com/aws/amazon-vpc-cni-k8s• Documentação do projeto: https://github.com/aws/amazon-vpc-cni-k8s/blob/master/README.md

Controlador de entrada do AWS Balanceador de cargade aplicações (ALB) para KubernetesO controlador de entrada do AWS ALB atende aos recursos de entrada do Kubernetes provisionandoBalanceador de carga de aplicaçõess.

• URL do projeto: https://github.com/kubernetes-sigs/aws-alb-ingress-controller

329

Page 338: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioExternalDNS

• Documentação do projeto: https://github.com/kubernetes-sigs/aws-alb-ingress-controller/tree/master/docs

• Blog de código aberto da AWS: Entrada no Kubernetes com o controlador de entrada do AWS ALB

ExternalDNSO ExternalDNS sincroniza serviços expostos do Kubernetes e entra com provedores de DNS incluindo oAmazon Route 53 e a descoberta de serviço da AWS.

• URL do projeto: https://github.com/kubernetes-incubator/external-dns• Documentação do projeto: https://github.com/kubernetes-incubator/external-dns/blob/master/docs/

tutorials/aws.md

SegurançaProjetos de segurança relacionados para clusters do Amazon EKS e do Kubernetes.

Autenticador do AWS IAMUma ferramenta para usar credenciais do IAM da AWS para autenticar em um cluster do Kubernetes sevocê não estiver usando a AWS CLI versão 1.16.156 ou posterior. Para obter mais informações, consulteInstalar aws-iam-authenticator (p. 222).

• URL do projeto: https://github.com/kubernetes-sigs/aws-iam-authenticator• Documentação do projeto: https://github.com/kubernetes-sigs/aws-iam-authenticator/blob/master/

README.md• Blog de código aberto da AWS: Implantar o autenticador do AWS IAM no kops

Machine learningProjetos de machine learning relacionados para clusters do Amazon EKS e do Kubernetes.

KubeflowUm toolkit de machine learning para o Kubernetes.

• URL do projeto: https://www.kubeflow.org/• Documentação do projeto: https://www.kubeflow.org/docs/• Blog de código aberto da AWS: Kubeflow no Amazon EKS

Auto ScalingProjetos de Auto Scaling relacionados para clusters do Amazon EKS e do Kubernetes.

Cluster autoscalerO Autoscaler do cluster é uma ferramenta que ajusta automaticamente o tamanho do cluster doKubernetes com base na CPU e na pressão de memória.

330

Page 339: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuárioEscalator

• URL do projeto: https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler• Documentação do projeto: https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/

cloudprovider/aws/README.md• Workshop do Amazon EKS: https://eksworkshop.com/scaling/deploy_ca/

EscalatorO Escalator é um autoscaler horizontal otimizado para trabalho ou lote para o Kubernetes.

• URL do projeto: https://github.com/atlassian/escalator• Documentação do projeto: https://github.com/atlassian/escalator/blob/master/docs/README.md

MonitoramentoProjetos de monitoramento relacionados para clusters do Amazon EKS e do Kubernetes.

PrometheusO Prometheus é um toolkit de código aberto para alertas e monitoramento de sistemas.

• URL do projeto: https://prometheus.io/• Documentação do projeto: https://prometheus.io/docs/introduction/overview/• Workshop do Amazon EKS: https://eksworkshop.com/intermediate/240_monitoring/

Integração contínua/implantação contínuaProjetos de CI/CD relacionados para clusters do Amazon EKS e do Kubernetes.

Jenkins XSolução de CI/CD para aplicativos de nuvem modernos nos clusters do Amazon EKS e do Kubernetes.

• URL do projeto: https://jenkins-x.io/• Documentação do projeto: https://jenkins-x.io/docs/

331

Page 340: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Histórico de documentos dosAmazon EKS

A tabela a seguir descreve as principais atualizações e novos recursos para o Guia do usuário do AmazonEKS. Também atualizamos a documentação com frequência para abordar os comentários enviados porvocê.

update-history-change update-history-description update-history-date

Métricas de uso do Fargate AWS Fargate forneceCloudWatch métricas deutilização que fornecemvisibilidade sobre a utilização dassuas contas de Fargate Recursosmediante pedido.

August 3, 2020

Criar e gerenciar recursosdo App Mesh de dentro doKubernetes com o controlador doApp Mesh para Kubernetes

Você pode criar e gerenciarrecursos do App Mesh noKubernetes. O controladortambém injeta automaticamenteo proxy Envoy e os contêineresde init nos pods que vocêimplanta.

June 18, 2020

Amazon EKS agora suportaAmazon EC2 Nós Inf1

Pode adicionar Amazon EC2Omite os nós1 ao seu grupo.

June 4, 2020

Expansão da região do AmazonEKS (p. 332)

Agora o Amazon EKS estádisponível nas regiões AWSGovCloud (Leste dos EUA) (us-gov-east-1), AWS GovCloud(US-West) (us-gov-west-1).

May 13, 2020

O Kubernetes 1.12 está defasadono Amazon EKS

A versão 1.12 do Kubernetes nãoé mais compatível com o AmazonEKS. Atualize qualquer cluster1.12 para a versão 1.13 ouposterior para evitar a interrupçãodo serviço.

May 12, 2020

Kubernetes versão 1.16 Adição de suporte ao Kubernetesversão 1.16 para novos clusters eatualizações de versão.

April 30, 2020

Adicionou oAWSServiceRoleForAmazonEKSfunção associada ao serviço

Adicionada a funçãovinculada ao serviçoAWSServiceRoleForAmazonEKS.

April 16, 2020

Kubernetes versão 1.15 Adição de suporte ao Kubernetesversão 1.15 para novos clusters eatualizações de versão.

March 10, 2020

Expansão da região do AmazonEKS (p. 332)

O Amazon EKS agora estádisponível nas regiões Pequim

February 26, 2020

332

Page 341: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

(cn-north-1) e Ningxia (cn-northwest-1).

Driver da CSI do Amazon FSx forLustre

Tópico adicionado para instalaro driver de CSI do Amazon FSxfor Lustre em clusters do AmazonEKS do Kubernetes 1.14.

December 23, 2019

Restringir o acesso à rede aoendpoint de acesso público deum cluster

O Amazon EKS agora permiteque você restrinja os intervalosCIDR que podem se comunicarcom o endpoint de acessopúblico do servidor de API doKubernetes.

December 20, 2019

Resolver o endereço de endpointde acesso privado para umcluster de fora de uma VPC

O Amazon EKS agora permiteque você resolva o endpoint deacesso privado do servidor deAPI do Kubernetes de fora deuma VPC.

December 13, 2019

(Beta) Amazon EC2 R1 AmazonEC2 nós de instância

Iniciar Amazon EC2 R1 AmazonEC2 nós de instância que seregistem com o seu Amazon EKSgrupo.

December 4, 2019

Criar um cluster no AWSOutposts

Agora o Amazon EKS oferecesuporte à criação de clusters emum AWS Outpost.

December 3, 2019

AWS Fargate no Amazon EKS Agora os clusters de Kubernetesdo Amazon EKS oferecemsuporte à execução de pods noFargate.

December 3, 2019

Expansão da região do AmazonEKS (p. 332)

Agora o Amazon EKS estádisponível na região Canadá(Central) (ca-central-1).

November 21, 2019

Grupos de nós gerenciados Os grupos de nós gerenciadosdo Amazon EKS automatizamo provisionamento e ogerenciamento do ciclo devida dos nós (instâncias doAmazon EC2) para clusters deKubernetes no Amazon EKS.

November 18, 2019

Atualização de versão daplataforma do Amazon EKS

Novas versões de plataformapara resolver CVE-2019-11253.

November 6, 2019

O Kubernetes 1.11 ficoudefasado no Amazon EKS

A versão 1.11 do Kubernetes nãoé mais compatível com o AmazonEKS. Atualize qualquer cluster1.11 para a versão 1.12 ouposterior para evitar a interrupçãodo serviço.

November 4, 2019

Expansão da região do AmazonEKS (p. 332)

Agora o Amazon EKS estádisponível na região América doSul (São Paulo) (sa-east-1).

October 16, 2019

333

Page 342: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Suporte ao Windows Os clusters do Amazon EKS queexecutam o Kubernetes versão1.14 agora oferecem suporte acargas de trabalho do Windows.

October 7, 2019

Autoscaling Adicionado um capítulo paraabordar alguns dos diferentestipos de escalabilidadeautomática do Kubernetescompatíveis com clusters doAmazon EKS.

September 30, 2019

Atualização do painel doKubernetes

Tópico atualizado para instalar opainel do Kubernetes em clustersdo Amazon EKS para usar aversão beta 2.0.

September 28, 2019

Driver da CSI do Amazon EFS Tópico adicionado para instalaro driver de CSI do Amazon EFSem clusters do Amazon EKS doKubernetes 1.14.

September 19, 2019

Parâmetro do Amazon EC2Systems Manager para o ID daAMI otimizada para Amazon EKS

Tópico adicionado para recuperaro ID da AMI otimizada paraAmazon EKS usando umparâmetro do Amazon EC2Systems Manager. O parâmetroelimina a necessidade depesquisar IDs de AMIs.

September 18, 2019

Marcação de recursos doAmazon EKS

Gerencie a marcação dosclusters do Amazon EKS.

September 16, 2019

Driver da CSI do Amazon EBS Adicionado tópico para instalaro driver da CSI do Amazon EBSem clusters do Amazon EKS doKubernetes 1.14.

September 9, 2019

Nova AMI otimizada paraAmazon EKS com aplicação depatch para CVE-2019-9512 eCVE-2019-9514

O Amazon EKS atualizou a AMIotimizada para Amazon EKSpara abordar os CVE-2019-9512e CVE-2019-9514.

September 6, 2019

Anúncio de reprovação doKubernetes 1.11 no Amazon EKS

O Amazon EKS defasará oKubernetes versão 1.11 em 4de novembro de 2019. Nessedia, você não poderá mais criarnovos clusters 1.11, e todosos clusters do Amazon EKSem execução no Kubernetesversão 1.11 serão atualizadospara a versão mais recenteda plataforma disponível doKubernetes versão 1.12.

September 4, 2019

Kubernetes versão 1.14 Suporte ao Kubernetes versão1.14 adicionado para novosclusters e atualizações deversão.

September 3, 2019

334

Page 343: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Funções do IAM para contas deserviço

Com as funções do IAM paracontas de serviço em clusters doAmazon EKS, é possível associaruma função do IAM a uma contade serviço do Kubernetes. Comesta função, já não precisa defornecer permissões alargadaspara o nó IAM para que ascápsulas desse nó possam ligarAWS API.

September 3, 2019

Expansão da região do AmazonEKS (p. 332)

Agora o Amazon EKS estádisponível na região OrienteMédio (Bahrein) (me-south-1).

August 29, 2019

Atualização de versão daplataforma do Amazon EKS

Novas versões de plataformapara abordar CVE-2019-9512 eCVE-2019-9514.

August 28, 2019

Atualização de versão daplataforma do Amazon EKS

Novas versões de plataformapara abordar CVE-2019-11247 eCVE-2019-11249.

August 5, 2019

Expansão da região do AmazonEKS (p. 332)

Agora o Amazon EKS estádisponível na região Ásia-Pacífico (Hong Kong) (ap-east-1).

July 31, 2019

O Kubernetes 1.10 está defasadono Amazon EKS

O Kubernetes versão 1.10não é mais compatível com oAmazon EKS. Atualize qualquercluster 1.10 para a versão 1.11ou posterior a fim de evitar ainterrupção do serviço.

July 30, 2019

Adicionado tópico adicionadosobre o ALB Ingress Controller

O AWS ALB Ingress Controllerpara o Kubernetes é umcontrolador que aciona a criaçãode um Balanceador de carga deaplicações quando os recursosde entrada são criados.

July 11, 2019

Nova AMI otimizada para oAmazon EKS

A remoção de binários kubectldesnecessários das AMIs.

July 3, 2019

Kubernetes versão 1.13 Adição de suporte ao Kubernetesversão 1.13 para novos clusters eatualizações de versão.

June 18, 2019

Nova AMI com patch otimizadapara Amazon EKS paraAWS-2019-005

O Amazon EKS atualizou a AMIotimizada para Amazon EKSpara tratar das vulnerabilidadesdescritas no AWS-2019-005.

June 17, 2019

335

Page 344: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Atualização de versão daplataforma do Amazon EKS

Nova versão da plataforma paraclusters do Kubernetes 1.11 e1.10 para oferecer suporte anomes de DNS personalizadosno certificado do Kubelet emelhorar o desempenho doetcd.

May 21, 2019

Anúncio de suspensão doKubernetes 1.10 no Amazon EKS

O Amazon EKS defasará oKubernetes versão 1.10 em 22de julho de 2019. Nesse dia,você não poderá mais criarclusters 1.10 e todos os clustersdo Amazon EKS em execuçãono Kubernetes versão 1.10 serãoatualizados para a versão maisrecente da plataforma disponíveldo Kubernetes versão 1.11.

May 21, 2019

Conceitos básicos de eksctl Este guia de conceitos básicosajuda você a instalar todosos recursos necessários paracomeçar a usar o Amazon EKScom eksctl, um utilitário delinha de comando simples paracriar e gerenciar clusters deKubernetes no Amazon EKS.

May 10, 2019

AWS CLI get-tokencomando (p. 332)

O comando aws eks get-tokenfoi adicionado à AWS CLI paraque você não precise mais parainstalar o Authenticator paraKubernetes do AWS IAM paracriar tokens de segurança declientes para a comunicaçãocom servidor da API do cluster.Atualize a instalação daAWS CLI para a versão maisrecente e aproveite essa novafuncionalidade. Para obter maisinformações, consulte Instalar ainterface de linha de comando daAWS no Guia do usuário do AWSCommand Line Interface.

May 10, 2019

Atualização de versão daplataforma do Amazon EKS

Nova versão da plataforma paraclusters do Kubernetes 1.12para oferecer suporte a nomesde DNS personalizados nocertificado do Kubelet e melhoraro desempenho do etcd. Istocorrige um inseto que fez comque o nó Kubelet daemonssolicite um novo certificado acada dois segundos.

May 8, 2019

336

Page 345: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Tutorial do Prometheus Adição de tópico para implantarPrometeu ao seu Amazon EKScluster.

April 5, 2019

Registro em log do plano decontrole do Amazon EKS

O registro em log do planode controle do Amazon EKSfacilita a proteção e execuçãodos clusters fornecendo logsde auditoria e diagnósticodiretamente a partir do plano decontrole do Amazon EKS para oCloudWatch Logs em sua conta.

April 4, 2019

Kubernetes versão1.12 (p. 332)

Adição de suporte ao Kubernetesversão 1.12 para novos clusters eatualizações de versão.

March 28, 2019

Adicionado o Guia de conceitosbásicos do App Mesh

Adição de documentação para osconceitos básicos do App Mesh eKubernetes.

March 27, 2019

Acesso privado ao endpoint doservidor de API do Amazon EKS

Adição de documentação paradesabilitar o acesso público parao endpoint do servidor de APIdo Kubernetes do cluster doAmazon EKS.

March 19, 2019

Adicionado tópico sobre comoinstalar o servidor de métricas doKubernetes

O servidor de métricas doKubernetes é um agregador dedados de uso de recursos nocluster.

March 18, 2019

Adição da lista de projetos decódigo aberto relacionados

Esses projetos de código abertoampliam a funcionalidade declusters do Kubernetes emexecução na AWS, incluindoclusters gerenciados peloAmazon EKS.

March 15, 2019

Adição de tópico sobre comoinstalar Helm localmente

O gerenciador de pacotes helmpara Kubernetes ajuda a instalare gerenciar aplicativos no clusterdo Kubernetes. Este tópico ajudaa instalar e executar os binárioshelm e tiller localmentepara que você possa instalar egerenciar gráficos usando a CLIhelm no sistema local.

March 11, 2019

Atualização de versão daplataforma do Amazon EKS

Nova versão de plataformaatualizando os clusters doAmazon EKS do Kubernetes 1.11para o nível de patch 1.11.8 pararesolver o CVE-2019-1002100.

March 8, 2019

337

Page 346: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Expansão da região do AmazonEKS (p. 332)

Agora o Amazon EKS estádisponível nas regiões Europa(Londres) (eu-west-2),Europa (Paris) (eu-west-3)e Ásia Pacífico (Mumbai) (ap-south-1).

February 13, 2019

Aumento do limite de clusters O Amazon EKS aumentou onúmero de 3 para 50 os clustersque podem ser criados em umaregião.

February 13, 2019

Nova AMI com patch otimizadapara Amazon EKS paraALAS-2019-1156

O Amazon EKS atualizou a AMIotimizada para Amazon EKSpara resolver as vulnerabilidadesdescritas no ALAS-2019-1156.

February 11, 2019

Nova AMI com patch otimizadapara Amazon EKS paraALAS2-2019-1141

O Amazon EKS atualizouAMI otimizada para oAmazon EKS ara resolveros CVEs referenciados noALAS2-2019-1141.

January 9, 2019

Expansão da região do AmazonEKS (p. 332)

Agora o Amazon EKSestá disponível na regiãoÁsia-Pacífico (Seul) (ap-northeast-2).

January 9, 2019

Expansão da região AmazonEKS (p. 332)

Amazon EKS está agoradisponível nas seguintes regiõesadicionais: Europa (Frankfurt)(eu-central-1), Ásia-Pacífico(Tóquio) (ap-northeast-1),Ásia-Pacífico (Cingapura) (ap-southeast-1), e Ásia-Pacífico(Sydney) (ap-southeast-2).

December 19, 2018

Atualizações do cluster doAmazon EKS

Documentação adicionada paraAmazon EKS atualizações deversão de grupo Kubernetes esubstituição de nó.

December 12, 2018

Expansão da região do AmazonEKS (p. 332)

Agora o Amazon EKS estádisponível na região Europa(Estocolmo) (eu-north-1).

December 11, 2018

Atualização de versão daplataforma do Amazon EKS

Nova versão de plataformaatualizando o Kubernetes parao nível de patch 1.10.11 pararesolver CVE-2018-1002105.

December 4, 2018

Adição de suporte para a versão1.0.0 do controlador de entradado Balanceador de carga deaplicações

O controlador de entrada doBalanceador de carga deaplicações libera a versão 1.0.0com suporte formal à AWS.

November 20, 2018

338

Page 347: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Adicionado o suporte para aconfiguração de rede do CNI

O plug-in CNI da AmazonVPC para Kubernetes, versão1.2.1, agora oferece suporteà configuração de redepersonalizada para interfaces derede de pod secundária.

October 16, 2018

Adicionado suporte aMutatingAdmissionWebhook eValidatingAdmissionWebhook

A versão da plataforma doAmazon EKS 1.10-eks.2agora oferece suporte aoscontroladores de admissãoMutatingAdmissionWebhookeValidatingAdmissionWebhook.

October 10, 2018

Adicionadas informações deAMIs de parceiros

Canonical estabeleceu parceriascom Amazon EKS para criar amisde nó que pode utilizar nos seusgrupos.

October 3, 2018

Adicionadas instruções para ocomando update-kubeconfig daCLI da AWS

O Amazon EKS adicionouupdate-kubeconfig à AWSCLI para simplificar o processode criação de um arquivokubeconfig para acessar seucluster.

September 21, 2018

Novas AMIs otimizadas para oAmazon EKS

O Amazon EKS atualizou asAMIs otimizadas para o AmazonEKS (com e sem suporte a GPU)para fornecer várias correções desegurança e otimizações da AMI.

September 13, 2018

Expansão da região do AmazonEKS (p. 332)

Agora o Amazon EKS estádisponível na região Europa(Irlanda) (eu-west-1).

September 5, 2018

Atualização de versão daplataforma do Amazon EKS

Nova versão da plataformacom suporte a camada deagregação e Horizontal PodAutoscaler(HPA) do Kubernetes.

August 31, 2018

Novas AMIs otimizadas para oAmazon EKS e suporte a GPU

Amazon EKS atualizou o AmazonEKS-AMI otimizado para utilizarum novo AWS CloudFormationmodelo de nó e script bootstrap.Além disso, uma nova AMIotimizada para o AmazonEKS com suporte a GPU estádisponível.

August 22, 2018

Nova AMI com patch otimizadapara Amazon EKS paraALAS2-2018-1058

O Amazon EKS atualizouAMI otimizada para oAmazon EKS ara resolveros CVEs referenciados noALAS2-2018-1058.

August 14, 2018

339

Page 348: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Scripts de compilação de AMIotimizada para Amazon EKS

O Amazon EKS usa scripts decompilação de código abertopara criar a AMI otimizada parao Amazon EKS. Esses scriptsde compilação agora estãodisponíveis no GitHub.

July 10, 2018

Versão inicial do AmazonEKS (p. 332)

Documentação inicial para ainicialização do serviço

June 5, 2018

340

Page 349: Amazon EKS - Guia do usuário · Amazon EKS Guia do usuário Arquitetura do plano de controle do Amazon EKS O que é o Amazon EKS? O Amazon Elastic Kubernetes Service (Amazon EKS)

Amazon EKS Guia do usuário

Se fornecermos uma tradução da versão em inglês do guia, a versão em inglês prevalecerá caso hajaqualquer conflito entre as versões. A tradução é fornecida com o uso de tradução por máquina.

cccxli