

 **Ajudar a melhorar esta página** 

Para contribuir com este guia de usuário, escolha o link **Editar esta página no GitHub**, disponível no painel direito de cada página.

# Dimensione pods do CoreDNS para alto tráfego de DNS
<a name="coredns-autoscaling"></a>

Quando você executa um cluster do Amazon EKS com pelo menos um nó, uma implantação de duas réplicas da imagem do CoreDNS é feita por padrão, independentemente do número de nós implantados no cluster. Os pods CoreDNS fornecem resolução de nomes para todos os pods no cluster. As aplicações usam a resolução de nomes para se conectar a pods e serviços no cluster, bem como para se conectar a serviços fora do cluster. À medida que o número de solicitações de resolução de nomes (consultas) dos pods aumenta, os pods do CoreDNS podem ficar sobrecarregados, se tornar lentos e rejeitar solicitações que não conseguem atender.

Para lidar com o aumento da carga nos pods do CoreDNS considere um sistema de ajuste de escala automático para o CoreDNS. O Amazon EKS pode gerenciar o ajuste de escala automático da implantação do CoreDNS na versão do complemento do EKS do CoreDNS. Esse autoscaler do CoreDNS monitora continuamente o estado do cluster, incluindo o número de nós e núcleos de CPU. Com base nessas informações, o controlador adaptará dinamicamente o número de réplicas da implantação do CoreDNS em um cluster do EKS. Esse recurso funciona no CoreDNS `v1.9` e versões posteriores. Para obter mais informações sobre quais versões são compatíveis com o ajuste de escala automático do CoreDNS, consulte a seção a seguir.

O sistema gerencia automaticamente as réplicas do CoreDNS usando uma fórmula dinâmica baseada no número de nós e núcleos de CPU no cluster, calculada como o máximo de (númeroDeNós dividido por 16) e (númeroDeNúcleosDeCPU dividido por 256). Ele avalia a demanda em períodos de pico de 10 minutos, aumentando a escala verticalmente quando necessário para lidar com o aumento da carga de consultas ao DNS, enquanto reduz a escala verticalmente de forma gradual, reduzindo as réplicas em 33% a cada 3 minutos para manter a estabilidade do sistema e evitar interrupções.

Recomendamos usar esse recurso em conjunto com outras [práticas recomendadas de autoescalabilidade de clusters do EKS](https://aws.github.io/aws-eks-best-practices/cluster-autoscaling/) para melhorar a disponibilidade geral da aplicação e a escalabilidade do cluster.

## Pré-requisitos
<a name="coredns-autoscaling-prereqs"></a>

Para o Amazon EKS escalar a implantação do CoreDNS, há três pré-requisitos:
+ É necessário usar a versão do *complemento do EKS* do CoreDNS.
+ Seu cluster dove executar pelo menos as versões mínimas do cluster e das versões da plataforma.
+ Seu cluster dove executar pelo menos a versão mínima do complemento do EKS do CoreDNS.

### Versão mínima do cluster
<a name="coredns-autoscaling-cluster-version"></a>

O ajuste de escala automático do CoreDNS é feito por um novo componente no ambiente de gerenciamento do cluster, gerenciado pelo Amazon EKS. Por isso, você deve atualizar seu cluster para uma versão do EKS que ofereça suporte à versão mínima da plataforma que tem o novo componente.

Um novo cluster do Amazon EKS. Para implantar, consulte [Começar a usar o Amazon EKS](getting-started.md). O cluster dove executar uma das versões do Kubernetes e as versões da plataforma listadas na tabela a seguir, ou uma versão mais recente. Observe que qualquer versão da plataforma e do Kubernetes posterior às versões listadas também é compatível. Para verificar a versão atual do Kubernetes, substitua *my-cluster* no comando a seguir pelo nome do seu cluster e execute o comando modificado:

```
aws eks describe-cluster --name my-cluster --query cluster.version --output text
```


| Versão do Kubernetes | Versão da plataforma | 
| --- | --- | 
|  Não listado  |  Todas as versões da plataforma  | 
|   `1.29.3`   |   `eks.7`   | 
|   `1.28.8`   |   `eks.13`   | 
|   `1.27.12`   |   `eks.17`   | 
|   `1.26.15`   |   `eks.18`   | 

**nota**  
Todas as versões da plataforma ou versões mais recentes do Kubernetes também são compatíveis, por exemplo, a versão `1.30` do Kubernetes, da `eks.1` em diante.

### Versão mínima do complemento do EKS
<a name="coredns-autoscaling-coredns-version"></a>


| Versão do Kubernetes | 1.29 | 1.28 | 
| --- | --- | --- | 
|  |   `v1.11.1-eksbuild.9`   |   `v1.10.1-eksbuild.11`   | 

#### Configurar o ajuste de escala automático do CoreDNS no Console de gerenciamento da AWS
<a name="coredns-autoscaling-console"></a>

1. Certifique-se de que a versão do seu cluster seja igual ou superior à versão mínima do cluster.

   O Amazon EKS atualiza automaticamente os clusters entre versões da plataforma da mesma versão do Kubernetes, e você não pode iniciar esse processo sozinho. Em vez disso, você pode atualizar o cluster para a próxima versão do Kubernetes, e o cluster será atualizado para essa versão K8s e a versão mais recente da plataforma.

   Novas versões do Kubernetes às vezes introduzem alterações significativas. Portanto, recomendamos testar o comportamento das aplicações usando um cluster separado da nova versão do Kubernetes antes de atualizar os clusters de produção.

   Para atualizar um cluster para uma nova versão do Kubernetes, siga o procedimento em [Atualizar o cluster existente para uma nova versão do Kubernetes](update-cluster.md).

1. Certifique-se de ter o complemento do EKS para CoreDNS, e não a implantação autogerenciada do CoreDNS.

   Dependendo da ferramenta com a qual você criou o cluster, talvez você não tenha o tipo de complemento do Amazon EKS instalado em seu cluster atualmente. Para ver qual tipo de complemento está instalado no cluster, execute o comando a seguir. Substitua o `my-cluster` pelo nome do cluster.

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text
   ```

   Se um número de versão for devolvido, você terá o tipo de complemento do Amazon EKS instalado no cluster e poderá prosseguir para a próxima etapa. Se um erro for retornado, você não tem o tipo de complemento do Amazon EKS instalado no cluster. Conclua as etapas restantes do procedimento [Criar o complemento CoreDNS do Amazon EKS](coredns-add-on-create.md) para substituir a versão autogerenciada pelo complemento do Amazon EKS.

1. Certifique-se de que o complemento do EKS para CoreDNS seja de uma versão igual ou superior à versão mínima do complemento do EKS.

   Veja qual versão do complemento está atualmente instalada no cluster. É possível verificá-la no Console de gerenciamento da AWS ou executando o seguinte comando:

   ```
   kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3
   ```

   Veja abaixo um exemplo de saída.

   ```
   v1.10.1-eksbuild.13
   ```

   Compare esta versão à versão mínima do complemento do EKS na seção anterior. Se necessário, atualize o complemento do EKS para uma versão superior seguindo o procedimento [Atualizar o complemento CoreDNS do Amazon EKS](coredns-add-on-update.md).

1. Adicione a configuração de autoescalabilidade às **Configurações opcionais** do complemento do EKS.

   1. Abra o [console do Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

   1. No painel de navegação esquerdo, selecione **Clusters** e depois o nome do cluster para o qual você deseja configurar o complemento.

   1. Escolha a guia **Complementos**.

   1. Selecione a caixa no canto superior direito da caixa do complemento CoreDNS e depois escolha **Editar**.

   1. Na página **Configurar CoreDNS**:

      1. Selecione a **Versão** que você deseja usar. Recomendamos que você mantenha a mesma versão da etapa anterior, e atualize a mesma e a sua configuração em ações separadas.

      1. Expanda **Definições de configuração opcionais**.

      1. Insira a chave JSON `"autoscaling":` e o valor de um objeto JSON aninhado com uma chave `"enabled":` e o valor `true` em **Valores de configuração**. O texto resultante deve ser um objeto JSON válido. Se esse par de chave e valor for o único dado na caixa de texto, coloque-o entre colchetes `{ }`. O seguinte exemplo mostra a autoescalabilidade habilitada:

         ```
         {
           "autoScaling": {
             "enabled": true
           }
         }
         ```

      1. (Opcional) Você pode fornecer valores mínimos e máximos para os quais o ajuste de escala automático pode escalar o número de pods do CoreDNS.

         O exemplo a seguir mostra que a autoescalabilidade está habilitada e todas as chaves opcionais têm valores. Recomendamos que o número mínimo de pods do CoreDNS seja sempre maior que dois para fornecer resiliência ao serviço de DNS no cluster.

         ```
         {
           "autoScaling": {
             "enabled": true,
             "minReplicas": 2,
             "maxReplicas": 10
           }
         }
         ```

   1. Para aplicar a nova configuração substituindo os pods do CoreDNS, escolha **Salvar alterações**.

      O Amazon EKS aplica alterações nos complementos do EKS usando uma *distribuição* da implantação do Kubernetes para CoreDNS. É possível acompanhar o status da implantação no **Histórico de atualizações** do complemento no Console de gerenciamento da AWS e com `kubectl rollout status deployment/coredns --namespace kube-system`.

       `kubectl rollout` oferece os seguintes comandos:

      ```
      kubectl rollout
      
      history  -- View rollout history
      pause    -- Mark the provided resource as paused
      restart  -- Restart a resource
      resume   -- Resume a paused resource
      status   -- Show the status of the rollout
      undo     -- Undo a previous rollout
      ```

      Se a distribuição demorar muito, o Amazon EKS desfará a distribuição e uma mensagem com o tipo **Atualização do complemento** e o status **Falha** será adicionada ao **Histórico de atualizações** do complemento. Para investigar qualquer problema, comece com o histórico da distribuição e execute `kubectl logs` em um pod do CoreDNS para ver os logs do CoreDNS.

1. Se a nova entrada no **Histórico de atualizações** tiver o status de **Êxito**, então a distribuição foi concluída e o complemento está usando a nova configuração em todos os pods do CoreDNS. Conforme você altera o número de nós e os núcleos de CPU dos nós no cluster, o Amazon EKS escala o número de réplicas da implantação do CoreDNS.

#### Configurar o ajuste de escala automático do CoreDNS na AWS Command Line Interface
<a name="coredns-autoscaling-cli"></a>

1. Certifique-se de que a versão do seu cluster seja igual ou superior à versão mínima do cluster.

   O Amazon EKS atualiza automaticamente os clusters entre versões da plataforma da mesma versão do Kubernetes, e você não pode iniciar esse processo sozinho. Em vez disso, você pode atualizar o cluster para a próxima versão do Kubernetes, e o cluster será atualizado para essa versão K8s e a versão mais recente da plataforma.

   Novas versões do Kubernetes às vezes introduzem alterações significativas. Portanto, recomendamos testar o comportamento das aplicações usando um cluster separado da nova versão do Kubernetes antes de atualizar os clusters de produção.

   Para atualizar um cluster para uma nova versão do Kubernetes, siga o procedimento em [Atualizar o cluster existente para uma nova versão do Kubernetes](update-cluster.md).

1. Certifique-se de ter o complemento do EKS para CoreDNS, e não a implantação autogerenciada do CoreDNS.

   Dependendo da ferramenta com a qual você criou o cluster, talvez você não tenha o tipo de complemento do Amazon EKS instalado em seu cluster atualmente. Para ver qual tipo de complemento está instalado no cluster, execute o comando a seguir. Substitua o `my-cluster` pelo nome do cluster.

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text
   ```

   Se receber um número de versão, você tem o tipo de complemento do Amazon EKS instalado no cluster. Se um erro for retornado, você não tem o tipo de complemento do Amazon EKS instalado no cluster. Conclua as etapas restantes do procedimento [Criar o complemento CoreDNS do Amazon EKS](coredns-add-on-create.md) para substituir a versão autogerenciada pelo complemento do Amazon EKS.

1. Certifique-se de que o complemento do EKS para CoreDNS seja de uma versão igual ou superior à versão mínima do complemento do EKS.

   Veja qual versão do complemento está atualmente instalada no cluster. É possível verificá-la no Console de gerenciamento da AWS ou executando o seguinte comando:

   ```
   kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3
   ```

   Veja abaixo um exemplo de saída.

   ```
   v1.10.1-eksbuild.13
   ```

   Compare esta versão à versão mínima do complemento do EKS na seção anterior. Se necessário, atualize o complemento do EKS para uma versão superior seguindo o procedimento [Atualizar o complemento CoreDNS do Amazon EKS](coredns-add-on-update.md).

1. Adicione a configuração de autoescalabilidade às **Configurações opcionais** do complemento do EKS.

   Execute o seguinte comando da AWS CLI. Substitua `my-cluster` pelo nome do cluster e o ARN do perfil do IAM pelo perfil que você está usando.

   ```
   aws eks update-addon --cluster-name my-cluster --addon-name coredns \
       --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true}}'
   ```

   O Amazon EKS aplica alterações nos complementos do EKS usando uma *distribuição* da implantação do Kubernetes para CoreDNS. É possível acompanhar o status da implantação no **Histórico de atualizações** do complemento no Console de gerenciamento da AWS e com `kubectl rollout status deployment/coredns --namespace kube-system`.

    `kubectl rollout` oferece os seguintes comandos:

   ```
   kubectl rollout
   
   history  -- View rollout history
   pause    -- Mark the provided resource as paused
   restart  -- Restart a resource
   resume   -- Resume a paused resource
   status   -- Show the status of the rollout
   undo     -- Undo a previous rollout
   ```

   Se a distribuição demorar muito, o Amazon EKS desfará a distribuição e uma mensagem com o tipo **Atualização do complemento** e o status **Falha** será adicionada ao **Histórico de atualizações** do complemento. Para investigar qualquer problema, comece com o histórico da distribuição e execute `kubectl logs` em um pod do CoreDNS para ver os logs do CoreDNS.

1. (Opcional) Você pode fornecer valores mínimos e máximos para os quais o ajuste de escala automático pode escalar o número de pods do CoreDNS.

   O exemplo a seguir mostra que a autoescalabilidade está habilitada e todas as chaves opcionais têm valores. Recomendamos que o número mínimo de pods do CoreDNS seja sempre maior que dois para fornecer resiliência ao serviço de DNS no cluster.

   ```
   aws eks update-addon --cluster-name my-cluster --addon-name coredns \
       --resolve-conflicts PRESERVE --configuration-values '{"autoScaling":{"enabled":true,"minReplicas":2,"maxReplicas":10}}'
   ```

1. Verifique o status da atualização do complemento executando o seguinte comando:

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name coredns
   ```

   Se você vir esta linha: `"status": "ACTIVE"`, a distribuição foi concluída e o complemento está usando a nova configuração em todos os pods do CoreDNS. Conforme você altera o número de nós e os núcleos de CPU dos nós no cluster, o Amazon EKS escala o número de réplicas da implantação do CoreDNS.