Tous les produits
Search
Centre de documentation

Container Compute Service:DNS policies and domain name resolution

Dernière mise à jour :Aug 12, 2026

Utilisez le paramètre dnsPolicy pour configurer les politiques DNS des pods d'un cluster Container Compute Service (ACS).

Fonctionnement de la résolution DNS dans ACS

Dans un cluster ACS, CoreDNS est déployé sur le cloud. Le cluster s'appuie sur le Service kube-dns pour exposer CoreDNS. Les requêtes DNS des pods sont ainsi transmises au serveur DNS défini dans la configuration du pod CoreDNS. Pour obtenir des détails sur le Service kube-dns, exécutez la commande suivante :

kubectl get svc kube-dns -n kube-system

Pour plus d'informations sur la résolution DNS dans les clusters Kubernetes, consultez Présentation du DNS.

Politiques DNS

Les clusters ACS prennent en charge quatre valeurs pour dnsPolicy :

Politique Description
ClusterFirst Par défaut. Achemine les requêtes DNS via CoreDNS. Le fichier /etc/resolv.conf du pod contient l'adresse kube-dns.
None Ignore tous les paramètres DNS du cluster. Requiert un bloc dnsConfig pour définir une configuration DNS personnalisée. Sans dnsConfig, le pod ne peut résoudre aucun nom de domaine.
Default Utilise Alibaba Cloud DNS pour la résolution. CoreDNS n'est pas sollicité.
ClusterFirstWithHostNet Les pods ACS ne prenant pas en charge le réseau hôte, cette politique équivaut à ClusterFirst. Pour plus de détails, consultez Limites des applications Kubernetes.

Configurer une politique DNS

Utiliser CoreDNS (ClusterFirst)

Définissez dnsPolicy: ClusterFirst pour acheminer les requêtes DNS des pods via le CoreDNS du cluster. Adoptez cette politique lorsque les pods doivent résoudre des Services déployés dans le même cluster ACS.

apiVersion: v1
kind: Pod
metadata:
  name: alpine
  namespace: default
spec:
  containers:
  - image: alpine # Replace with the actual image you use.
    command:
      - sleep
      - "10000"
    imagePullPolicy: Always
    name: alpine
  dnsPolicy: ClusterFirst

Vérification : après le démarrage du pod, vérifiez sa configuration DNS :

kubectl exec alpine -- cat /etc/resolv.conf

La sortie doit afficher l'IP de cluster kube-dns comme serveur de noms.

Utiliser une configuration DNS personnalisée (None)

Définissez dnsPolicy: None et ajoutez un bloc dnsConfig pour contrôler intégralement la résolution DNS du pod. Ce mode convient aux pods nécessitant un serveur DNS spécifique externe au cluster.

apiVersion: v1
kind: Pod
metadata:
  name: alpine
  namespace: default
spec:
  containers:
  - image: alpine # Replace with the actual image you use.
    command:
      - sleep
      - "10000"
    imagePullPolicy: Always
    name: alpine
  dnsPolicy: None
  dnsConfig:
    nameservers: ["169.254.xxx.xxx"]
    searches:
    - default.svc.cluster.local
    - svc.cluster.local
    - cluster.local
    options:
    - name: ndots
      value: "2"

Champs de dnsConfig :

Champ Description
nameservers Adresses IP des serveurs DNS pour le pod. Accepte jusqu'à trois adresses. Si dnsPolicy vaut None, au moins une adresse est requise. Ces adresses fusionnent dans le fichier /etc/resolv.conf du pod, sans doublons.
searches Domaines de recherche DNS pour la résolution des noms d'hôte. Champ facultatif acceptant jusqu'à six domaines. Ces domaines s'ajoutent à la liste de recherche de base générée par la politique DNS, sans doublons.
options Liste d'options du résolveur DNS. Chaque élément comprend un champ name (obligatoire) et une value facultative. Ces options s'intègrent à la liste générée, les doublons étant automatiquement éliminés.

Vérification : une fois le pod démarré, confirmez la configuration DNS écrite dans le conteneur :

kubectl exec alpine -- cat /etc/resolv.conf

Avec la configuration ci-dessus, la sortie ressemble à ceci :

nameserver 169.254.xxx.xxx
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:2

Pour consulter la spécification complète de dnsConfig, reportez-vous à DNS for Services and Pods.

Utiliser Alibaba Cloud DNS (Default)

Définissez dnsPolicy: Default si les pods n'ont pas besoin d'accéder à d'autres Services du cluster ACS. Alibaba Cloud DNS assure alors la résolution DNS, sans passer par CoreDNS.

apiVersion: v1
kind: Pod
metadata:
  name: alpine
  namespace: default
spec:
  containers:
  - image: alpine # Replace with the actual image you use.
    command:
      - sleep
      - "10000"
    imagePullPolicy: Always
    name: alpine
  dnsPolicy: Default

Vérification : après le démarrage du pod, assurez-vous que le serveur de noms pointe vers Alibaba Cloud DNS plutôt que vers kube-dns :

kubectl exec alpine -- cat /etc/resolv.conf

Étapes suivantes