Tous les produits
Search
Centre de documentation

Enterprise Distributed Application Service:Configure DNS settings for application Pods

Dernière mise à jour :Aug 10, 2026

Lorsque les pods d'application doivent résoudre à la fois les noms de service internes au cluster et les noms de domaine externes, la configuration DNS détermine le fonctionnement de la résolution de noms. Enterprise Distributed Application Service (EDAS) vous permet de définir des politiques DNS, des paramètres DNS personnalisés et des alias d'hôte lors de la création de l'application afin de contrôler la manière dont les pods résolvent les noms de domaine.

Fonctionnement de la résolution DNS dans les pods

Chaque pod d'un cluster Kubernetes dispose d'un fichier /etc/resolv.conf qui contrôle la résolution des noms de domaine. EDAS expose trois champs de configuration via le panneau DNS Settings :

  • dnsPolicy -- Définit la stratégie de base de résolution DNS pour le pod.

  • dnsConfig -- Ajoute des serveurs de noms personnalisés, des domaines de recherche ou des options de résolution. Ces paramètres sont fusionnés avec la configuration générée par la politique DNS sélectionnée. Les doublons sont automatiquement supprimés.

  • hostAliases -- Injecte des entrées dans le fichier /etc/hosts du pod pour la résolution locale des noms d'hôte.

Utilisez toujours le champ hostAliases pour ajouter des entrées /etc/hosts . Le kubelet gère le fichier /etc/hosts pour chaque conteneur et écrase les modifications manuelles effectuées via des conteneurs d'initialisation ou des scripts de démarrage lorsque le pod démarre ou redémarre.

Options de politique DNS

Le champ dnsPolicy prend en charge quatre valeurs. Choisissez celle qui correspond à vos besoins en matière de résolution :

Politique Comportement Cas d'utilisation
ClusterFirst (par défaut) Achemine les requêtes DNS via CoreDNS. Le fichier /etc/resolv.conf du pod pointe vers le serveur DNS du cluster (kube-dns). Les domaines de recherche incluent <namespace>.svc.cluster.local, svc.cluster.local et cluster.local. Définit ndots:5 par défaut. Les pods doivent résoudre à la fois les noms de service internes au cluster et les noms de domaine externes. Ce choix convient à la plupart des charges de travail.
ClusterFirstWithHostNet Identique à ClusterFirst, mais pour les pods s'exécutant avec hostNetwork: true. Les pods utilisent la mise en réseau hôte et nécessitent toujours l'accès au DNS du cluster. Sans cette politique, les pods en réseau hôte se rabattent sur les paramètres DNS du nœud.
Default Hérite de la configuration DNS du nœud du cluster. Le pod utilise le fichier /etc/resolv.conf de l'instance Elastic Compute Service (ECS) sous-jacente, qui contient l'adresse du serveur DNS Alibaba Cloud. Les pods n'ont besoin de résoudre que des noms de domaine externes et ne nécessitent pas de découverte de service interne au cluster.
None Ignore tous les paramètres DNS du cluster et du nœud. La configuration DNS provient entièrement du champ dnsConfig. Un contrôle manuel total de la résolution DNS est requis. Vous devez spécifier au moins un serveur de noms dans le champ dnsConfig.
La politique nommée Default n'est pas la politique par défaut. Si dnsPolicy n'est pas explicitement défini, Kubernetes utilise ClusterFirst .

Considérations de performance : parcours des domaines de recherche

Avec ClusterFirst, le paramètre par défaut ndots:5 amène le résolveur à traiter tout nom de domaine contenant moins de cinq points comme un nom relatif. Pour chaque requête DNS sur un domaine externe (tel que api.example.com, qui comporte deux points), le résolveur ajoute chaque suffixe de domaine de recherche avant d'essayer le nom original. Cela génère plusieurs requêtes DNS supplémentaires avant une résolution réussie.

Pour les charges de travail sensibles à la latence qui accèdent principalement à des domaines externes, envisagez l'une des approches suivantes :

  • Définissez ndots sur une valeur inférieure (par exemple 2) via dnsConfig afin de réduire les requêtes inutiles.

  • Utilisez des noms de domaine complets (FQDN) avec un point final (par exemple api.example.com.) pour contourner complètement l'expansion des domaines de recherche.

Sortie attendue de /etc/resolv.conf selon la politique

Les exemples suivants illustrent le contenu typique de /etc/resolv.conf pour chaque politique. Les adresses IP réelles varient selon le cluster.

ClusterFirst ou ClusterFirstWithHostNet :

nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

Default:

nameserver 100.100.2.136
nameserver 100.100.2.138

Les adresses des serveurs de noms correspondent à celles du fichier /etc/resolv.conf du nœud, fournies par Alibaba Cloud DNS.

None avec dnsConfig personnalisé :

nameserver 192.0.2.1
search ns1.svc.cluster-domain.example my.dns.search.suffix
options ndots:2 edns0

Le contenu reflète uniquement ce qui est spécifié dans dnsConfig.

Paramètres DNS personnalisés (dnsConfig)

Le champ dnsConfig permet d'affiner la résolution DNS. Les valeurs spécifiées sont fusionnées avec les paramètres générés par la politique DNS sélectionnée ; elles ne les remplacent pas. L'exception est dnsPolicy: None, où dnsConfig constitue la seule source de configuration DNS.

Paramètre Description Limites
nameserver Adresses IP des serveurs DNS pour le pod. Jusqu'à 3 adresses IP. Obligatoire (au moins 1) lorsque dnsPolicy est défini sur None ; facultatif dans les autres cas.
searches Domaines de recherche DNS pour les recherches de noms d'hôte. Lorsqu'un pod résout un nom d'hôte court, ces domaines sont ajoutés en tant que suffixes. Jusqu'à 6 domaines de recherche.
options Options du résolveur sous forme de paires nom-valeur. Chaque option nécessite un Name ; la Variable Value est facultative. Fusionné avec les options générées par la politique. Les doublons sont supprimés.

Exemple : ajout d'un serveur de noms personnalisé tout en conservant le DNS du cluster

Définissez dnsPolicy sur ClusterFirst et ajoutez un serveur de noms personnalisé via dnsConfig. Le serveur de noms personnalisé gère les requêtes pour vos zones DNS privées, tandis que CoreDNS continue de résoudre les noms de domaine internes au cluster et publics :

apiVersion: v1
kind: Pod
metadata:
  name: dns-example
  namespace: default
spec:
  containers:
    - name: app
      image: nginx:alpine
  dnsPolicy: ClusterFirst
  dnsConfig:
    nameservers:
      - 192.0.2.1
    options:
      - name: ndots
        value: "2"

Le fichier /etc/resolv.conf résultant contient à la fois le serveur DNS du cluster et le serveur de noms personnalisé :

nameserver 10.96.0.10
nameserver 192.0.2.1
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:2

Exemple : DNS entièrement personnalisé (dnsPolicy: None)

Lorsque vous avez besoin d'un contrôle total sur la résolution DNS, par exemple pour utiliser uniquement vos serveurs DNS d'entreprise, définissez dnsPolicy sur None et définissez tous les paramètres DNS dans dnsConfig :

apiVersion: v1
kind: Pod
metadata:
  name: custom-dns
  namespace: default
spec:
  containers:
    - name: app
      image: nginx:alpine
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 192.0.2.1
      - 198.51.100.1
    searches:
      - example.local
      - corp.example.com
    options:
      - name: ndots
        value: "1"
      - name: edns0

Alias d'hôte (hostAliases)

Le champ hostAliases ajoute des entrées au fichier /etc/hosts du pod. Utilisez cette fonction pour mapper des noms d'hôte à des adresses IP spécifiques sans modifier l'infrastructure DNS, par exemple pour pointer un nom d'hôte de service vers une adresse IP interne spécifique lors de tests ou d'une migration.

Paramètre Description
IP Address Adresse IP vers laquelle les noms d'hôte spécifiés résolvent.
Hostname Un ou plusieurs noms d'hôte qui résolvent vers l'adresse IP. Séparez plusieurs noms d'hôte par des virgules (,).

Exemple

spec:
  hostAliases:
    - ip: "10.1.2.3"
      hostnames:
        - "svc.internal"
        - "api.internal"
    - ip: "10.1.2.4"
      hostnames:
        - "db.internal"

Entrées /etc/hosts résultantes :

10.1.2.3  svc.internal  api.internal
10.1.2.4  db.internal

Configuration des paramètres DNS lors de la création de l'application

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Accès à la console EDAS

  • Un cluster Kubernetes enregistré auprès d'EDAS

Procédure

  1. Connectez-vous à la console EDAS. Dans le volet de navigation de gauche, choisissez Application Management > Applications.

  2. Dans la barre de navigation supérieure, sélectionnez une région. Dans la partie supérieure de la page, sélectionnez un namespace.

  3. Cliquez sur Create Application.

  4. À l'étape Basic Information, configurez les paramètres requis et cliquez sur Next.

  5. À l'étape Configurations, configurez l'environnement, la méthode de déploiement et les paramètres de ressources, puis cliquez sur Next.

  6. À l'étape Advanced Settings, développez DNS Settings et configurez les champs suivants :

    • dnsPolicy -- Sélectionnez une politique DNS. Consultez la section Options de politique DNS pour obtenir des indications sur chaque valeur.

    • dnsConfig -- (Facultatif) Ajoutez des serveurs de noms personnalisés, des domaines de recherche et des options de résolution. Consultez la section Paramètres DNS personnalisés pour plus de détails.

    • hostAliases -- (Facultatif) Ajoutez des mappages IP-nom d'hôte. Consultez la section Alias d'hôte pour plus de détails.

  7. Cliquez sur Next, puis sur Create Application.

  8. Dans la boîte de dialogue Confirm Application Change Precheck, cliquez sur Start Precheck.

  9. Vérifiez les résultats de la prévérification et cliquez sur Continue.

    Si vous modifiez des éléments de la prévérification, cliquez sur Check Again avant de continuer.

Le déploiement de l'application s'effectue en quelques minutes. Suivez la progression sur la page Change List. Une fois le déploiement terminé, consultez la page Application Overview : les pods dont l'état est running indiquent un déploiement réussi. Vous pouvez cliquer sur l'état d'exécution des pods pour consulter les Deployments, les Pods et les configurations avancées des instances d'application.

Vérification de la configuration DNS

Après le déploiement, confirmez que les paramètres DNS sont correctement appliqués au pod :

  1. Sur la page Application Overview, cliquez sur Click View à côté de Running Status dans la section Basic Information.

  2. Dans la section Pod, localisez le pod cible et cliquez sur Terminal dans la colonne Actions.

  3. Exécutez la commande suivante dans le terminal :

    cat /etc/resolv.conf
  4. Comparez la sortie avec le contenu attendu pour votre politique DNS. Consultez la section Sortie attendue de /etc/resolv.conf selon la politique.

Informations connexes