

 **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.

# Gerenciar o CoreDNS para DNS em clusters do Amazon EKS
<a name="managing-coredns"></a>

**dica**  
Com o Modo automático do Amazon EKS, você não precisa instalar ou atualizar complementos de rede. O Modo automático inclui recursos de rede de pods e balanceamento de carga.  
Para obter mais informações, consulte [Automatizar a infraestrutura de clusters com o Modo Automático do EKS](automode.md).

O CoreDNS é um servidor DNS flexível e extensível que pode servir como DNS de cluster do Kubernetes. Quando você executa um cluster do Amazon EKS com pelo menos um nó, duas réplicas da imagem do CoreDNS são implantadas por padrão, independentemente do número de nós implantados em seu cluster. Os Pods CoreDNS fornecem resolução de nomes para todos os Pods no cluster. Os pods do CoreDNS poderão ser implantados em nós do Fargate se o cluster incluir um [Perfil do Fargate](fargate-profile.md) com um namespace que corresponda ao namespace para o CoreDNS `deployment`. Para obter mais informações sobre o CoreDNS, consulte [Usar o CoreDNS para descoberta de serviços](https://kubernetes.io/docs/tasks/administer-cluster/coredns/) na documentação do Kubernetes.

## Versões do CoreDNS
<a name="coredns-versions"></a>

A tabela a seguir lista a versão mais recente do tipo de complemento do Amazon EKS para cada versão do Kubernetes.


| Versão do Kubernetes | Versão do CoreDNS | 
| --- | --- | 
| 1,35 | v1.13.2-eksbuild.4 | 
| 1,34 | v1.13.2-eksbuild.4 | 
| 1,33 | v1.13.2-eksbuild.4 | 
| 1,32 | v1.11.4-eksbuild.33 | 
| 1,31 | v1.11.4-eksbuild.33 | 
| 1,30 | v1.11.4-eksbuild.33 | 

**Importante**  
Se você estiver gerenciando esse complemento automaticamente, as versões na tabela poderão não ser as mesmas que as versões autogerenciadas disponíveis. Para obter mais informações sobre como atualizar o tipo autogerenciado desse complemento, consulte [Atualizar o complemento autogerenciado CoreDNS do Amazon EKS](coredns-add-on-self-managed-update.md).

## Considerações importantes sobre a atualização do CoreDNS
<a name="coredns-upgrade"></a>
+ As atualizações do CoreDNS usam um PodDisruptionBudget para ajudar a manter a disponibilidade do serviço DNS durante o processo de atualização.
+ Para melhorar a estabilidade e a disponibilidade do CoreDNS Deployment, as versões `v1.9.3-eksbuild.6` e mais recentes e o `v1.10.1-eksbuild.3` são implantados com um `PodDisruptionBudget`. Se você implantou um `PodDisruptionBudget` existente, sua atualização para essas versões pode falhar. Se a atualização falhar, concluir uma das seguintes tarefas deve resolver o problema:
  + Ao fazer a atualização do complemento do Amazon EKS, opte por substituir as configurações existentes como sua opção de resolução de conflitos. Se você fez outras configurações personalizadas no Deployment, certifique-se de fazer backup delas antes de atualizar para poder reaplicar as demais configurações personalizadas após a atualização.
  + Remova o `PodDisruptionBudget` existente e tente fazer a atualização novamente.
+ Nas versões `v1.9.3-eksbuild.3` e mais recentes e `v1.10.1-eksbuild.6` e mais recentes do complemento do EKS, o CoreDNS Deployment define `readinessProbe` para usar o endpoint `/ready`. Esse endpoint está habilitado no arquivo de configuração `Corefile` do CoreDNS.

  Caso use um `Corefile` personalizado, é necessário adicionar o plug-in `ready` à configuração para que o endpoint `/ready` fique ativo no CoreDNS para a sonda ser usada.
+ Nas versões complementares do EKS `v1.9.3-eksbuild.7` e superiores e `v1.10.1-eksbuild.4` e superiores, você pode alterar o `PodDisruptionBudget`. É possível editar o complemento e alterar essas configurações nas **configurações opcionais** usando os campos no exemplo a seguir. Este exemplo mostra o padrão `PodDisruptionBudget`.

  ```
  {
      "podDisruptionBudget": {
          "enabled": true,
          "maxUnavailable": 1
          }
  }
  ```

  É possível definir `maxUnavailable` ou `minAvailable`, mas não pode definir os dois em um único `PodDisruptionBudget`. Para obter mais informações sobre `PodDisruptionBudgets`, consulte [Especificação de um PodDisruptionBudget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget) na *Documentação do Kubernetes*.

  Observe que se você definir `enabled` como `false`, o `PodDisruptionBudget` não será removido. Depois de definir esse campo como `false`, é necessário excluir o `PodDisruptionBudget` objeto. Da mesma forma, se você editar o complemento para usar uma versão mais antiga do complemento (rebaixar o complemento) depois de atualizar para uma versão com um `PodDisruptionBudget`, o não será removido `PodDisruptionBudget`. Para excluir o `PodDisruptionBudget`, você pode executar o comando a seguir:

  ```
  kubectl delete poddisruptionbudget coredns -n kube-system
  ```
+ No complemento do EKS versão `v1.10.1-eksbuild.5` e superiores, altere a tolerância padrão de `node-role.kubernetes.io/master:NoSchedule` para `node-role.kubernetes.io/control-plane:NoSchedule` para manter a conformidade com o KEP 2067. Para obter mais informações sobre o KEP 2067, consulte [KEP-2067: Rename the kubeadm "master" label and taint](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/kubeadm/2067-rename-master-label-taint#renaming-the-node-rolekubernetesiomaster-node-taint) em *Kubernetes Enhancement Proposals (KEPs)* no GitHub.

  Nas versões `v1.8.7-eksbuild.8` e mais recentes e `v1.9.3-eksbuild.9` e mais recentes do complemento do EKS, ambas as tolerâncias são configuradas para serem compatíveis com todas as versões do Kubernetes.
+ Nas versões `v1.9.3-eksbuild.11` e mais recentes e `v1.10.1-eksbuild.7` e mais recentes do complemento do EKS, o CoreDNS Deployment define um valor padrão para `topologySpreadConstraints`. O valor padrão garante que os pods do CoreDNS estejam espalhados pelas zonas de disponibilidade se houver nós em várias zonas de disponibilidade disponíveis. É possível definir um valor personalizado que será usado em vez do valor padrão. O valor padrão é:

  ```
  topologySpreadConstraints:
    - maxSkew: 1
      topologyKey: topology.kubernetes.io/zone
      whenUnsatisfiable: ScheduleAnyway
      labelSelector:
        matchLabels:
          k8s-app: kube-dns
  ```

### Considerações sobre a atualização do CoreDNS `v1.11`
<a name="coredns-upgrade-1"></a>
+ No complemento do EKS versão `v1.11.1-eksbuild.4` e superiores, a imagem de contêiner é baseada em uma [imagem de base mínima](https://gallery.ecr.aws/eks-distro-build-tooling/eks-distro-minimal-base) mantida pelo Amazon EKS Distro, que contém pacotes mínimos e não tem shells. Para obter mais informações, consulte [Amazon EKS Distro](https://distro.eks.amazonaws.com/). O uso e a solução de problemas da imagem do CoreDNS permanecem os mesmos.