Atualizar o complemento autogerenciado CoreDNS do Amazon EKS - Amazon EKS

Atualizar o complemento autogerenciado CoreDNS do Amazon EKS

Importante

Recomendamos adicionar o tipo Amazon EKS do complemento ao seu cluster em vez de usar o tipo autogerenciado do complemento. Se você não estiver familiarizado com a diferença entre os tipos, consulte Complementos do Amazon EKS. Para obter mais informações sobre como adicionar um complemento do Amazon EKS ao cluster, consulte Criar um complemento do Amazon EKS. Se você não conseguir usar o complemento do Amazon EKS, recomendamos que você envie um problema sobre o motivo pelo qual não pode usar o repositório GitHub para roteiro de contêineres.

Antes de começar, reveja as considerações sobre o upgrade. Para ter mais informações, consulte Considerações importantes sobre o upgrade do CoreDNS.

  1. Confirme que tem o tipo autogerenciado de complemento instalado em seu cluster. Substitua my-cluster pelo nome do cluster.

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

    Se receber uma mensagem de erro, você tem o tipo autogerenciado do complemento instalado no cluster. Conclua as etapas restantes neste procedimento. Se receber um número de versão, você tem o tipo de complemento do Amazon EKS instalado no cluster. Para atualizar o tipo de Amazon EKS do complemento, use o procedimento em Atualizar o complemento CoreDNS do Amazon EKS em vez de usar este procedimento. Se não estiver familiarizado com a diferença entre os tipos de complemento, consulte Complementos do Amazon EKS.

  2. Veja qual versão da imagem do contêiner está atualmente instalada em seu cluster.

    kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

    Veja um exemplo de saída abaixo.

    v1.8.7-eksbuild.2
  3. Se sua versão atual do CoreDNS for v1.5.0 ou posterior, mas anterior à versão listada na tabela de versões do CoreDNS, pule esta etapa. Se a sua versão atual for anterior à 1.5.0, você precisa modificar o ConfigMap para que o CoreDNS use o complemento de encaminhamento, em vez do complemento de proxy.

    1. Abra o ConfigMap com o comando a seguir.

      kubectl edit configmap coredns -n kube-system
    2. Substitua proxy na linha a seguir pelo forward. Salve o arquivo e saia do editor.

      proxy . /etc/resolv.conf
  4. Se você implantou originalmente o cluster no Kubernetes 1.17 ou anterior, talvez seja necessário remover uma linha descontinuada do manifesto do CoreDNS.

    Importante

    Você deve concluir essa etapa antes de atualizar para o CoreDNS versão 1.7.0, mas é recomendável concluir essa etapa mesmo se estiver atualizando para uma versão anterior.

    1. Verifique se o manifesto do CoreDNS tem a linha.

      kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream

      Se nenhum resultado for retornado, o manifesto não terá a linha e você poderá prosseguir para a próxima etapa para atualizar o CoreDNS. Se um resultado for retornado, você precisará remover a linha.

    2. Edite o ConfigMap com o comando a seguir, removendo a linha no arquivo que inclui a palavra upstream em seu nome. Não altere mais nada no arquivo. Depois que a linha for removida, salve as alterações.

      kubectl edit configmap coredns -n kube-system -o yaml
  5. Recupere a imagem atual do CoreDNS:

    kubectl describe deployment coredns -n kube-system | grep Image

    Veja um exemplo de saída abaixo.

    602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
  6. Se você estiver atualizando para o CoreDNS 1.8.3 ou posterior, será necessário adicionar a permissão de endpointslices à clusterrole do system:coredns do Kubernetes.

    kubectl edit clusterrole system:coredns -n kube-system

    Adicione as linhas a seguir abaixo das linhas de permissões existentes na seção rules do arquivo.

    [...] - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch [...]
  7. Atualize o complemento CoreDNS substituindo 602401143452 e region-code pelos valores da saída retornada em uma etapa anterior. Substitua v1.11.3-eksbuild.1 pela versão CoreDNS listada na tabela de versões mais recentes para sua versão do Kubernetes.

    kubectl set image deployment.apps/coredns -n kube-system coredns=602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.11.3-eksbuild.1

    Veja um exemplo de saída abaixo.

    deployment.apps/coredns image updated
  8. Verifique a versão da imagem do contêiner novamente para confirmar que ela foi atualizada para a versão que você especificou na etapa anterior.

    kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

    Veja um exemplo de saída abaixo.

    v1.11.3-eksbuild.1