Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Atualizar manualmente o CoreDNS não gerenciado

Última atualização: Aug 26, 2026

Atualize o CoreDNS manualmente quando a opção Upgrade não estiver disponível na página Add-ons do console ACK.

Pré-requisitos

Você precisa de:

Observações sobre a atualização

  • Se o kube-proxy usar o modo IP Virtual Server (IPVS), as consultas DNS poderão falhar ou atingir o tempo limite por cerca de 5 minutos após a atualização do CoreDNS. Evite esse problema com um dos métodos a seguir:

  • A atualização leva aproximadamente 2 minutos, dependendo do número de réplicas do CoreDNS. As réplicas existentes não são encerradas; portanto, a resolução de services não é afetada.

Visualizar a versão do CoreDNS

Console

  1. Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

  3. Na página Deployments, defina o Namespace como kube-system e verifique a versão do CoreDNS na coluna Image. dns

kubectl

Consulte 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

A tabela a seguir lista as versões do CoreDNS compatíveis com cada versão do Kubernetes. Utilize sempre a versão compatível mais recente.

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 v1.8.4.3-644f4735-aliyun e v1.9.3.1-5e7ba42d-aliyun. Consulte CoreDNS.

1.21 e posteriores

1.11.3

Atualizar manualmente

Console

  1. (Opcional) Substitua o campo proxy pelo campo forward.

    O plugin Proxy foi descontinuado no CoreDNS v1.6.2. Caso esteja atualizando de uma versão anterior, modifique a configuração do CoreDNS conforme descrito abaixo.

    Modificar a configuração do CoreDNS

    1. Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.

    2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Configurations > ConfigMaps.

    3. Na página ConfigMap, defina o Namespace como kube-system. Localize o ConfigMap coredns e clique em Edit YAML na coluna Actions.

    4. No painel View in YAML, substitua proxy por forward e clique em OK. forward

      No editor YAML do ConfigMap coredns, localize a linha do plugin forward e modifique-a conforme necessário. O ConfigMap completo é mostrado abaixo:

      apiVersion: v1
      data:
        Corefile: |-
          .:53 {
            autopath @kubernetes
            cache 30
            errors
            forward . /etc/resolv.conf
            health
            kubernetes cluster.local in-addr.arpa ip6.arpa {
                pods verified
                fallthrough in-addr.arpa ip6.arpa
            }
            loadbalance
            loop
            prometheus :9153
            ready
            reload
          }
      kind: ConfigMap
  2. Altere a versão da imagem do CoreDNS.

    1. Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.

    2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

    3. Na página Deployments, defina o Namespace como kube-system. Encontre o coredns e escolha image.png > Edit YAML na coluna Actions.

    4. Na caixa de diálogo Edit YAML, altere o número da versão no campo image e clique em Update. image

      Na caixa de diálogo de edição YAML, localize a configuração do Deployment do CoreDNS e confirme a versão da imagem no campo image (por exemplo, 1.6.2). Trecho principal do YAML:

      labelSelector:
                matchExpressions:
                  - key: k8s-app
                    operator: In
                    values:
                      - kube-dns
              topologyKey: kubernetes.io/hostname
            weight: 100
        containers:
        - args:
          - '-conf'
          - /etc/coredns/Corefile
          image: 'registry-vpc.cn-hangzhou.aliyuncs.com/acs/coredns:1.6.2'
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 5
            httpGet:
              ...
  3. Verifique a atualização.

    1. Consulte 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
    2. Verifique se todos os pods do CoreDNS estão no estado Running:

      kubectl get pods -n kube-system | grep coredns

      Saída esperada:

      coredns-78d4b8****-6g62w                           1/1     Running   0          9d
      coredns-78d4b8****-n6wjm                           1/1     Running   0          9d

kubectl

  1. (Opcional) Substitua o campo proxy pelo campo forward.

    O plugin Proxy foi descontinuado no CoreDNS v1.6.2. Caso esteja atualizando de uma versão anterior, modifique a configuração do CoreDNS conforme descrito abaixo.

    Modificar a configuração do CoreDNS

    1. Substitua proxy por forward no ConfigMap do CoreDNS, salve e saia:

      kubectl edit configmap/coredns -n kube-system
    2. Verifique o log do pod do CoreDNS para confirmar que a nova configuração foi carregada:

      kubectl logs coredns-78d4b8bd88-n6wjm -n kube-system

      Se a saída incluir plugin/reload, a configuração do CoreDNS foi carregada. Saída esperada:

      .:53
      [INFO] plugin/reload: Running configuration MD5 = 71c5f1ff539d304c630521f315dc2ac2
      CoreDNS-1.6.7
      linux/amd64, go1.13.6, da7f65b
      [INFO] 127.0.0.1:48329 - 42313 "HINFO IN 1108347002237365533.4506541768939609094. udp 57 false 512" NXDOMAIN qr,rd,ra 132 0.008874794s
  2. Altere o número da versão no campo image do Deployment do CoreDNS, salve e saia:

    kubectl edit deployment/coredns -n kube-system
  3. Verifique a atualização.

    1. Consulte 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
    2. Verifique se todos os pods do CoreDNS estão no estado Running:

      kubectl get pods -n kube-system | grep coredns

      Saída esperada:

      coredns-78d4b8****-6g62w                           1/1     Running   0          9d
      coredns-78d4b8****-n6wjm                           1/1     Running   0          9d

Configurar o tempo limite UDP para um cluster IPVS

Se o seu cluster utilizar kube-proxy no modo IPVS, reduza o tempo limite de persistência de sessão UDP do IPVS para 10 segundos a fim de limitar falhas de DNS pós-atualização.

Caso seu cluster possua services baseados em UDP, avalie o impacto da redução do tempo limite UDP antes de prosseguir.

Kubernetes 1.18 ou posterior

Pelo console

  1. Faça login no console ACK e clique em Clusters no painel de navegação à esquerda.

  2. Na página Clusters, clique no nome do cluster. Escolha Configurations > ConfigMaps no painel de navegação à esquerda.

  3. Na página ConfigMaps, selecione o namespace kube-system, encontre kube-proxy-worker e clique em Edit YAML na coluna Actions.

  4. No painel Edit YAML, adicione udpTimeout: 10s sob o campo ipvs e clique em OK.

    apiVersion: v1
    data:
      config.conf: |
        apiVersion: kubeproxy.config.k8s.io/v1alpha1
        kind: KubeProxyConfiguration
        # Other irrelevant fields are omitted.
        mode: ipvs
        # If the ipvs key does not exist, add it.
        ipvs:
          udpTimeout: 10s
  5. Recrie todos os Pods kube-proxy-worker.

    1. Na página de detalhes do cluster, escolha Workloads > DaemonSets no painel de navegação à esquerda.

    2. Na lista de DaemonSets, clique em kube-proxy-worker.

    3. Na página kube-proxy-worker, clique na aba Pods. Para cada Pod, escolha More > Delete e clique em OK. O sistema os recriará automaticamente.

  6. Verifique a configuração do tempo limite UDP.

    1. Instale o ipvsadm:

      sudo yum install -y ipvsadm
    2. Em qualquer nó ECS do cluster, execute:

      sudo ipvsadm -L --timeout

      Se o terceiro número na saída for 10, o tempo limite UDP está configurado corretamente.

      Important: Após configurar o tempo limite, aguarde pelo menos cinco minutos antes de atualizar o CoreDNS.

Pela linha de comando

  1. Edite o ConfigMap kube-proxy-worker:

    kubectl -n kube-system edit configmap kube-proxy-worker
  2. Adicione udpTimeout: 10s sob o campo ipvs, salve e saia.

    apiVersion: v1
    data:
      config.conf: |
        apiVersion: kubeproxy.config.k8s.io/v1alpha1
        kind: KubeProxyConfiguration
        # Other irrelevant fields are omitted.
        mode: ipvs
        # If the ipvs key does not exist, add it.
        ipvs:
          udpTimeout: 10s
  3. Recrie todos os Pods kube-proxy-worker.

    1. Liste os Pods kube-proxy-worker:

      kubectl -n kube-system get pod -o wide | grep kube-proxy-worker
    2. Exclua cada Pod. O sistema os recriará automaticamente.

      kubectl -n kube-system delete pod <kube-proxy-worker-****>

      Substitua <kube-proxy-worker-****> pelos nomes dos Pods obtidos na etapa anterior.

  4. Verifique a configuração do tempo limite UDP.

    1. Instale o ipvsadm:

      sudo yum install -y ipvsadm
    2. Em qualquer nó ECS do cluster, execute:

      sudo ipvsadm -L --timeout

      Se o terceiro número na saída for 10, o tempo limite UDP está configurado corretamente.

      Important: Após configurar o tempo limite, aguarde pelo menos cinco minutos antes de atualizar o CoreDNS.

Kubernetes 1.16 ou anterior

O kube-proxy em clusters executando Kubernetes 1.16 ou anterior não suporta o parâmetro udpTimeout. Utilize o Operation Orchestration Service (OOS) para executar estes comandos ipvsadm em lote em todos os nós do cluster:

sudo yum install -y ipvsadm
sudo ipvsadm -L --timeout > /tmp/ipvsadm_timeout_old
sudo ipvsadm --set 900 120 10
sudo ipvsadm -L --timeout > /tmp/ipvsadm_timeout_new
diff /tmp/ipvsadm_timeout_old /tmp/ipvsadm_timeout_new

Consulte Batch operation instances para executar operações em lote no OOS.

Próximos passos

Após a atualização, optimize CoreDNS configurations para sua carga de trabalho.