Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Manually update unmanaged CoreDNS

Última actualización: Sep 04, 2026

Actualice CoreDNS manualmente cuando la opción Upgrade no esté disponible en la página Add-ons de la consola de ACK.

Requisitos previos

Necesita:

Notas sobre la actualización

  • Si kube-proxy utiliza el modo IP Virtual Server (IPVS), es posible que todas las consultas DNS fallen o se agote su tiempo de espera durante aproximadamente 5 minutos después de actualizar CoreDNS. Evite este problema con uno de los siguientes métodos:

  • La actualización tarda aproximadamente 2 minutos, según el número de réplicas de CoreDNS. Las réplicas existentes no se terminan, por lo que la resolución del servicio no se ve afectada.

Consultar la versión de CoreDNS

Consola

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Workloads > Deployments.

  3. En la página Deployments, establezca Namespace en kube-system y compruebe la versión de CoreDNS en la columna Image. dns

kubectl

Consulte la versión de CoreDNS:

kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"

Salida esperada:

registry-vpc.cn-hangzhou.aliyuncs.com/acs/coredns:1.6.2 # Version 1.6.2 is used in this example.

Confirmar la versión de actualización

La siguiente tabla enumera las versiones de CoreDNS compatibles con cada versión de Kubernetes. Utilice la versión compatible más reciente.

Rango de versiones de Kubernetes

Versiones de CoreDNS

1.11 a 1.16

1.6.2 (descontinuada)

1.14.8 a 1.22

1.6.7 (descontinuada) y 1.7.0

1.20.4 y posteriores

1.8.4 y 1.9.3

Importante

v1.8.4 y v1.9.3 tienen varias versiones menores, como v1.8.4.3-644f4735-aliyun y v1.9.3.1-5e7ba42d-aliyun. Consulte CoreDNS.

1.21 y posteriores

1.11.3

Actualizar manualmente

Consola

  1. (Opcional) Reemplace el campo proxy por el campo forward.

    El plugin Proxy quedó obsoleto en CoreDNS v1.6.2. Si actualiza desde una versión anterior, modifique la configuración de CoreDNS de la siguiente manera.

    Modificar la configuración de CoreDNS

    1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

    2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Configurations > ConfigMaps.

    3. En la página ConfigMap, establezca Namespace en kube-system. Busque el ConfigMap coredns y haga clic en Edit YAML en la columna Actions.

    4. En el panel View in YAML, reemplace proxy por forward y haga clic en OK. forward

      En el editor YAML del ConfigMap coredns, localice la línea del plugin forward y modifíquela según sea necesario. El ConfigMap completo se muestra a continuación:

      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. Cambie la versión de la imagen de CoreDNS.

    1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

    2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Workloads > Deployments.

    3. En la página Deployments, establezca Namespace en kube-system. Busque coredns y elija image.png > Edit YAML en la columna Actions.

    4. En el cuadro de diálogo Edit YAML, cambie el número de versión en el campo image y haga clic en Update. image

      En el cuadro de diálogo de edición YAML, localice la configuración del Deployment de CoreDNS y confirme la versión de la imagen en el campo image (por ejemplo, 1.6.2). Fragmento clave de 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. Compruebe la actualización.

    1. Consulte la versión de CoreDNS:

      kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"

      Salida esperada:

      registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-5e7ba42d-aliyun
    2. Compruebe si todos los pods de CoreDNS están en estado Running:

      kubectl get pods -n kube-system | grep coredns

      Salida esperada:

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

kubectl

  1. (Opcional) Reemplace el campo proxy por el campo forward.

    El plugin Proxy quedó obsoleto en CoreDNS v1.6.2. Si actualiza desde una versión anterior, modifique la configuración de CoreDNS de la siguiente manera.

    Modificar la configuración de CoreDNS

    1. Reemplace proxy por forward en el ConfigMap de CoreDNS; luego guarde y salga:

      kubectl edit configmap/coredns -n kube-system
    2. Revise el registro del pod de CoreDNS para comprobar que se cargó la nueva configuración:

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

      Si la salida incluye plugin/reload, significa que la configuración de CoreDNS se ha cargado. Salida 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. Cambie el número de versión en el campo image del Deployment de CoreDNS; luego guarde y salga:

    kubectl edit deployment/coredns -n kube-system
  3. Compruebe la actualización.

    1. Consulte la versión de CoreDNS:

      kubectl get deployment coredns -n kube-system -o jsonpath="{.spec.template.spec.containers[0].image}"

      Salida esperada:

      registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-5e7ba42d-aliyun
    2. Compruebe si todos los pods de CoreDNS están en estado Running:

      kubectl get pods -n kube-system | grep coredns

      Salida esperada:

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

Configurar el tiempo de espera UDP para un clúster IPVS

Si su clúster utiliza kube-proxy en modo IPVS, reduzca el tiempo de espera de persistencia de sesión UDP de IPVS a 10 segundos para limitar los fallos de DNS posteriores a la actualización.

Si su clúster tiene servicios basados en UDP, evalúe el impacto de reducir el tiempo de espera UDP antes de continuar.

Kubernetes 1.18 o posterior

Mediante la consola

  1. Inicie sesión en la consola de ACK y haga clic en Clusters en el panel de navegación izquierdo.

  2. En la página Clusters, haga clic en el nombre del clúster. Elija Configurations > ConfigMaps en el panel de navegación izquierdo.

  3. En la página ConfigMaps, seleccione el namespace kube-system, busque kube-proxy-worker y haga clic en Edit YAML en la columna Actions.

  4. En el panel Edit YAML, agregue udpTimeout: 10s debajo del campo ipvs y haga clic en 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. Vuelva a crear todos los pods de kube-proxy-worker.

    1. En la página de detalles del clúster, elija Workloads > DaemonSets en el panel de navegación izquierdo.

    2. En la lista de DaemonSet, haga clic en kube-proxy-worker.

    3. En la página kube-proxy-worker, haga clic en la pestaña Pods. Para cada pod, elija More > Delete y haga clic en OK. El sistema los vuelve a crear automáticamente.

  6. Compruebe la configuración del tiempo de espera UDP.

    1. Instale ipvsadm:

      sudo yum install -y ipvsadm
    2. En cualquier nodo ECS del clúster, ejecute:

      sudo ipvsadm -L --timeout

      Si el tercer número en la salida es 10, el tiempo de espera UDP está configurado correctamente.

      Important: Después de configurar el tiempo de espera, espere como mínimo cinco minutos antes de actualizar CoreDNS.

Mediante la línea de comandos

  1. Edite el ConfigMap kube-proxy-worker:

    kubectl -n kube-system edit configmap kube-proxy-worker
  2. Agregue udpTimeout: 10s debajo del campo ipvs; luego guarde y salga.

    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. Vuelva a crear todos los pods de kube-proxy-worker.

    1. Liste los pods de kube-proxy-worker:

      kubectl -n kube-system get pod -o wide | grep kube-proxy-worker
    2. Elimine cada pod. El sistema los vuelve a crear automáticamente.

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

      Reemplace <kube-proxy-worker-****> con los nombres de los pods del paso anterior.

  4. Compruebe la configuración del tiempo de espera UDP.

    1. Instale ipvsadm:

      sudo yum install -y ipvsadm
    2. En cualquier nodo ECS del clúster, ejecute:

      sudo ipvsadm -L --timeout

      Si el tercer número en la salida es 10, el tiempo de espera UDP está configurado correctamente.

      Important: Después de configurar el tiempo de espera, espere como mínimo cinco minutos antes de actualizar CoreDNS.

Kubernetes 1.16 o anterior

kube-proxy en clústeres que ejecutan Kubernetes 1.16 o anterior no admite el parámetro udpTimeout. Utilice Operation Orchestration Service (OOS) para ejecutar estos comandos de ipvsadm en lotes en todos los nodos del clúster:

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 ejecutar operaciones por lotes en OOS.

Pasos siguientes

Después de la actualización, optimize CoreDNS configurations para su carga de trabajo.