Autoescalabilidade do CoreDNS - Amazon EKS

Ajudar a melhorar esta página

Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.

Autoescalabilidade do CoreDNS

Quando você executa um cluster do Amazon EKS com pelo menos um nó, uma Deployment de duas réplicas da imagem do CoreDNS é implantada por padrão, independentemente do número de nós implantados no seu cluster. Os pods do 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 autoescalabilidade para o CoreDNS O Amazon EKS pode gerenciar a autoescalabilidade da implantação do CoreDNS na versão do complemeno do EKS do CoreDNS. Esse mecanismo de autoescalabilidade 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 para o CoreDNS v1.9 e o release do EKS versão 1.25 e posteriores. Para obter mais informações sobre quais versões são compatíveis com a autoescalabilidade do CoreDNS, consulte a seção a seguir.

Recomendamos usar esse recurso em conjunto com outras práticas recomendadas de autoescalabilidade de clusters do EKS para melhorar a disponibilidade geral da aplicação e a escalabilidade do cluster.

Pré-requisitos

Para o Amazon EKS escalar sua implantação do CoreDNS, há três pré-requisitos:

  • É necessário usar o complemento do EKS versão CoreDNS.

  • Seu cluster deve executar pelo menos as versões mínimas do cluster e das versões da plataforma.

  • Seu cluster deve executar pelo menos a versão mínima do complemento do EKS do CoreDNS.

Versão mínima do cluster

A autoescalabilidade do CoreDNS é feita 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 Conceitos básicos do Amazon EKS. O cluster deve ser da versão 1.25 ou posterior do Kubernetes. O cluster deve executar uma das versões do Kubernetes e versões da plataforma listadas na tabela a seguir ou uma versão posterior. Observe que qualquer Kubernetes e da plataforma posteriores às versões listadas. Para verificar a versão atual do Kubernetes substitua my-cluster no comando a seguir pelo nome do 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

1.29.3

eks.7

1.28.8

eks.13

1.27.12

eks.17

1.26.15

eks.18

1.25.16

eks.19

nota

Todas as versões de plataforma ou versões posteriores do Kubernetes também são compatíveis, por exemplo, o Kubernetes versão 1.30 a partir de eks.1 e em diante.

Versão mínima do complemento do EKS

Versão do Kubernetes 1.29 1.28 1.27 1.26 1.25
v1.11.1-eksbuild.9 v1.10.1-eksbuild.11 v1.10.1-eksbuild.11 v1.9.3-eksbuild.15 v1.9.3-eksbuild.15

Configurar autoescalabilidade do CoreDNS no AWS Management Console

  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 clusters entre versões de plataforma da mesma versão do Kubernetes, e você não pode iniciar esse processo sozinho. Em vez disso, você pode atualizar seu cluster para a próxima versão do Kubernetes, e o cluster será atualizado para essa versão do K8s e a versão mais recente da plataforma. Por exemplo, se você fizer o upgrade de 1.25 para1.26, o cluster será atualizado para 1.26.15 eks.18.

    As 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 uma versão do Kubernetes do cluster do Amazon EKS.

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

    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 é devolvido, você tem o tipo de complemento do Amazon EKS instalado no cluster e pode 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 do Amazon EKS para substituir a versão autogerenciada pelo complemento do Amazon EKS.

  3. Certifique-se de que seu 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 AWS Management Console ou executando o seguinte comando:

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

    Veja um exemplo de saída abaixo.

    v1.10.1-eksbuild.11

    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 do Amazon EKS.

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

    1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

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

    3. Escolha a guia Add-ons (Complementos).

    4. Selecione a caixa no canto superior direito da caixa do complemento do CoreDNS e, em seguida, escolha Editar.

    5. Na página Configurar CoreDNS:

      1. Selecione a Version (Versão) que você deseja usar. Recomendamos manter a mesma versão da etapa anterior e atualizar a versão e a configuração em ações separadas.

      2. Expanda Definições de configuração opcionais.

      3. 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 } }
      4. (Opcional) É possível fornecer valores mínimos e máximos para os quais a autoescalabilidade 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 2 para fornecer resiliência ao serviço de DNS no cluster.

        { "autoScaling": { "enabled": true, "minReplicas": 2, "maxReplicas": 10 } }
    6. 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 AWS Management Console 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.

  5. Se a nova entrada no Histórico de atualizações tiver o status de Êxito, 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 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 autoescalabilidade do CoreDNS no AWS Command Line Interface

  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 clusters entre versões de plataforma da mesma versão do Kubernetes, e você não pode iniciar esse processo sozinho. Em vez disso, você pode atualizar seu cluster para a próxima versão do Kubernetes, e o cluster será atualizado para essa versão do K8s e a versão mais recente da plataforma. Por exemplo, se você fizer o upgrade de 1.25 para1.26, o cluster será atualizado para 1.26.15 eks.18.

    As 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 uma versão do Kubernetes do cluster do Amazon EKS.

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

    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 do Amazon EKS para substituir a versão autogerenciada pelo complemento do Amazon EKS.

  3. Certifique-se de que seu 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 AWS Management Console ou executando o seguinte comando:

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

    Veja um exemplo de saída abaixo.

    v1.10.1-eksbuild.11

    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 do Amazon EKS.

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

    Execute o seguinte comando 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 AWS Management Console 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.

  5. (Opcional) É possível fornecer valores mínimos e máximos para os quais a autoescalabilidade 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 2 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}'
  6. 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", o lançamento foi concluído 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 núcleos de CPU dos nós no cluster, o Amazon EKS escala o número de réplicas da implantação do CoreDNS.