Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Mettre à jour manuellement CoreDNS non géré

Dernière mise à jour :Aug 26, 2026

Mettez à jour CoreDNS manuellement lorsque l'option Upgrade n'est pas disponible sur la page Add-ons de la console ACK.

Prérequis

Assurez-vous de disposer des éléments suivants :

Notes relatives à la mise à jour

  • Si kube-proxy utilise le mode IP Virtual Server (IPVS), toutes les requêtes DNS peuvent échouer ou expirer pendant environ 5 minutes après la mise à jour de CoreDNS. Évitez ce problème en appliquant l'une des méthodes suivantes :

  • La mise à jour dure environ 2 minutes, selon le nombre de réplicas CoreDNS. Les réplicas existants ne sont pas arrêtés ; la résolution des services n'est donc pas affectée.

Interroger la version de CoreDNS

Console

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workloads > Deployments.

  3. Sur la page Deployments, définissez Namespace sur kube-system et vérifiez la version de CoreDNS dans la colonne Image. dns

kubectl

Interrogez la version de CoreDNS :

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

Sortie attendue :

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

Confirmer la version de mise à jour

Le tableau suivant répertorie les versions de CoreDNS compatibles avec chaque version de Kubernetes. Utilisez la dernière version compatible.

Plage de versions Kubernetes

Versions CoreDNS

1.11 à 1,16

1.6.2 (obsolète)

1.14.8 à 1.22

1.6.7 (obsolète) et 1.7.0

1.20.4 et versions ultérieures

1.8.4 et 1.9.3

Important

Les versions v1.8.4 et v1.9.3 comportent plusieurs versions mineures, telles que v1.8.4.3-644f4735-aliyun et v1.9.3.1-5e7ba42d-aliyun. Consultez CoreDNS.

1.21 et versions ultérieures

1.11.3

Effectuer une mise à jour manuelle

Console

  1. (Facultatif) Remplacez le champ proxy par le champ forward.

    Le plug-in Proxy a été déprécié dans CoreDNS v1.6.2. Si vous effectuez une mise à niveau depuis une version antérieure, modifiez la configuration CoreDNS comme suit.

    Modifier la configuration CoreDNS

    1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

    2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Configurations > ConfigMaps.

    3. Sur la page ConfigMap, définissez Namespace sur kube-system. Recherchez le ConfigMap coredns et cliquez sur Edit YAML dans la colonne Actions.

    4. Dans le panneau View in YAML, remplacez proxy par forward et cliquez sur OK. forward

      Dans l'éditeur YAML du ConfigMap coredns, localisez la ligne du plug-in forward et modifiez-la si nécessaire. Le ConfigMap complet est présenté ci-dessous :

      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. Modifiez la version de l'image de CoreDNS.

    1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

    2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workloads > Deployments.

    3. Sur la page Deployments, définissez Namespace sur kube-system. Recherchez coredns et choisissez image.png > Edit YAML dans la colonne Actions.

    4. Dans la boîte de dialogue Edit YAML, modifiez le numéro de version dans le champ image et cliquez sur Update. image

      Dans la boîte de dialogue d'édition YAML, localisez la configuration du déploiement CoreDNS et confirmez la version de l'image dans le champ image (par exemple, 1.6.2). Extrait YAML clé :

      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. Vérifiez la mise à jour.

    1. Interrogez la version de CoreDNS :

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

      Sortie attendue :

      registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-5e7ba42d-aliyun
    2. Vérifiez que tous les pods CoreDNS sont dans l'état Running :

      kubectl get pods -n kube-system | grep coredns

      Sortie attendue :

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

kubectl

  1. (Facultatif) Remplacez le champ proxy par le champ forward.

    Le plug-in Proxy a été déprécié dans CoreDNS v1.6.2. Si vous effectuez une mise à niveau depuis une version antérieure, modifiez la configuration CoreDNS comme suit.

    Modifier la configuration CoreDNS

    1. Remplacez proxy par forward dans le ConfigMap CoreDNS, puis enregistrez et quittez :

      kubectl edit configmap/coredns -n kube-system
    2. Vérifiez le journal du pod CoreDNS pour confirmer que la nouvelle configuration est chargée :

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

      Si la sortie inclut plugin/reload, la configuration CoreDNS est chargée. Sortie attendue :

      .: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. Modifiez le numéro de version dans le champ image du déploiement CoreDNS, puis enregistrez et quittez :

    kubectl edit deployment/coredns -n kube-system
  3. Vérifiez la mise à jour.

    1. Interrogez la version de CoreDNS :

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

      Sortie attendue :

      registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/coredns:v1.9.3.10-5e7ba42d-aliyun
    2. Vérifiez que tous les pods CoreDNS sont dans l'état Running :

      kubectl get pods -n kube-system | grep coredns

      Sortie attendue :

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

Configurer le délai d'expiration UDP pour un cluster IPVS

Si votre cluster utilise kube-proxy en mode IPVS, réduisez le délai d'expiration de persistance de session UDP IPVS à 10 secondes afin de limiter les échecs DNS après la mise à niveau.

Si votre cluster exécute des services basés sur UDP, évaluez l'impact de la réduction du délai d'expiration UDP avant de poursuivre.

Kubernetes 1.18 ou version ultérieure

Utilisation de la console

  1. Connectez-vous à la console ACK et cliquez sur Clusters dans le volet de navigation de gauche.

  2. Sur la page Clusters, cliquez sur le nom du cluster. Choisissez Configurations > ConfigMaps dans le volet de navigation de gauche.

  3. Sur la page ConfigMaps, sélectionnez le namespace kube-system, recherchez kube-proxy-worker et cliquez sur Edit YAML dans la colonne Actions.

  4. Dans le panneau Edit YAML, ajoutez udpTimeout: 10s sous le champ ipvs et cliquez sur 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. Recréez tous les pods kube-proxy-worker.

    1. Sur la page des détails du cluster, choisissez Workloads > DaemonSets dans le volet de navigation de gauche.

    2. Dans la liste DaemonSet, cliquez sur kube-proxy-worker.

    3. Sur la page kube-proxy-worker, cliquez sur l'onglet Pods. Pour chaque pod, choisissez More > Delete et cliquez sur OK. Le système les recrée automatiquement.

  6. Vérifiez la configuration du délai d'expiration UDP.

    1. Installez ipvsadm :

      sudo yum install -y ipvsadm
    2. Sur n'importe quel nœud ECS du cluster, exécutez :

      sudo ipvsadm -L --timeout

      Si le troisième chiffre de la sortie est 10, le délai d'expiration UDP est correctement configuré.

      Important: Après avoir configuré le délai d'expiration, attendez au moins cinq minutes avant de mettre à niveau CoreDNS.

Utilisation de la ligne de commande

  1. Modifiez le ConfigMap kube-proxy-worker :

    kubectl -n kube-system edit configmap kube-proxy-worker
  2. Ajoutez udpTimeout: 10s sous le champ ipvs, puis enregistrez et quittez.

    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. Recréez tous les pods kube-proxy-worker.

    1. Répertoriez les pods kube-proxy-worker :

      kubectl -n kube-system get pod -o wide | grep kube-proxy-worker
    2. Supprimez chaque pod. Le système les recrée automatiquement.

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

      Remplacez <kube-proxy-worker-****> par les noms des pods obtenus à l'étape précédente.

  4. Vérifiez la configuration du délai d'expiration UDP.

    1. Installez ipvsadm :

      sudo yum install -y ipvsadm
    2. Sur n'importe quel nœud ECS du cluster, exécutez :

      sudo ipvsadm -L --timeout

      Si le troisième chiffre de la sortie est 10, le délai d'expiration UDP est correctement configuré.

      Important: Après avoir configuré le délai d'expiration, attendez au moins cinq minutes avant de mettre à niveau CoreDNS.

Kubernetes 1.16 ou version antérieure

kube-proxy dans les clusters exécutant Kubernetes 1.16 ou une version antérieure ne prend pas en charge le paramètre udpTimeout. Utilisez Operation Orchestration Service (OOS) pour exécuter ces commandes ipvsadm par lots sur tous les nœuds du 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

Consultez la rubrique Instances d'opération par lot pour exécuter des opérations par lots dans OOS.

Étapes suivantes

Après la mise à jour, optimisez les configurations CoreDNS pour votre charge de travail.