Se a versão atual do CoreDNS estiver desatualizada e o botão Upgrade não aparecer na página Add-ons do console do Container Service for Kubernetes (ACK), não será possível configurar a atualização automática do CoreDNS no cluster ACK. Nesse caso, atualize o CoreDNS manualmente. Este tópico descreve como executar esse procedimento.
Pré-requisitos
Você precisa de:
Observações sobre a atualização
-
Se o modo de balanceamento de carga do kube-proxy estiver definido como IP Virtual Server (IPVS), todas as consultas DNS no cluster poderão falhar ou atingir o tempo limite após a atualização do CoreDNS. Essa situação dura cerca de 5 minutos. Use um dos métodos a seguir para evitar esse problema:
Modifique o tempo limite das sessões UDP do IPVS na configuração do kube-proxy. Para mais informações, consulte Atualizar manualmente o CoreDNS não gerenciado.
Use o NodeLocal DNSCache para otimizar a resolução de DNS. Para mais informações, consulte Usar o NodeLocal DNSCache.
A atualização leva aproximadamente 2 minutos, mas a duração real pode variar conforme o número de réplicas do CoreDNS no cluster. As réplicas existentes não são encerradas durante o processo; portanto, não há impacto na resolução de serviços.
Consultar a versão do CoreDNS
Console
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Deployments, defina o Namespace como kube-system e verifique a versão do CoreDNS na coluna Image.

kubectl
Execute o comando a seguir para consultar a versão do CoreDNS:
kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"
Saída esperada:
registry-vpc.cn-hangzhou.aliyuncs.com/acs/coredns:1.6.2 # Version 1.6.2 is used in this example.
Confirmar a versão de atualização
Confirme a versão do CoreDNS para a qual deseja atualizar. A tabela a seguir descreve as versões do Kubernetes compatíveis com o CoreDNS. Recomendamos usar a versão mais recente do CoreDNS compatível com a sua versão do Kubernetes.
Faixa de versão do Kubernetes | Versão(ões) do CoreDNS |
1,11 a 1,16 | 1.6.2 (descontinuada) |
1,14.8 a 1,22 | 1.6.7 (descontinuada) e 1.7.0 |
1,20.4 e posteriores | 1.8.4 e 1.9.3 Importante As versões v1.8.4 e v1.9.3 possuem múltiplas subversões, como |
1,21 e posteriores | 1.11.3 |
Atualizar manualmente
Console
-
(Opcional) Substitua o campo
proxypelo campoforward.O plug-in Proxy foi descontinuado no CoreDNS v1.6.2. Ao atualizar de uma versão anterior à v1.6.2, execute as etapas a seguir para modificar manualmente a configuração do CoreDNS.
-
Altere a versão da imagem do CoreDNS.
Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.
Na parte superior da página Deployments, defina o Namespace como kube-system. Em seguida, localize o coredns e escolha na coluna Actions.
Na caixa de diálogo Edit YAML, altere o número da versão no campo
image. Depois, clique em Update.
-
Verifique a atualização.
-
Execute o comando a seguir para consultar a versão do CoreDNS:
kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"Saída esperada:
registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-5e7ba42d-aliyun -
Execute o comando a seguir para verificar se todos os pods do CoreDNS no cluster estão no estado Running:
kubectl get pods -n kube-system | grep corednsSaída esperada:
coredns-78d4b8****-6g62w 1/1 Running 0 9d coredns-78d4b8****-n6wjm 1/1 Running 0 9d
-
kubectl
-
(Opcional) Substitua o campo
proxypelo campoforward.O plug-in Proxy foi descontinuado no CoreDNS v1.6.2. Ao atualizar de uma versão anterior à v1.6.2 para a v1.6.2 ou posterior, execute as etapas a seguir para modificar manualmente a configuração do CoreDNS.
-
Execute o comando a seguir para alterar o número da versão no campo
imageno arquivo de configuração do CoreDNS, salve o arquivo e saia.kubectl edit deployment/coredns -n kube-system -
Verifique a atualização.
-
Execute o comando a seguir para consultar a versão do CoreDNS:
kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"Saída esperada:
registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-5e7ba42d-aliyun -
Execute o comando a seguir para verificar se todos os pods do CoreDNS no cluster estão no estado Running:
kubectl get pods -n kube-system | grep corednsSaída esperada:
coredns-78d4b8****-6g62w 1/1 Running 0 9d coredns-78d4b8****-n6wjm 1/1 Running 0 9d
-
Próximos passos
Após atualizar o CoreDNS, otimize as configurações dele com base nos requisitos do seu negócio. Consulte Otimizar configurações do CoreDNS.
