Dans certains scénarios spécifiques, les exigences métier fortement personnalisées imposent une gestion et une maintenance manuelles de CoreDNS. Les clusters Alibaba Cloud Container Compute Service (ACS) prennent en charge CoreDNS non managé, ce qui permet d'appliquer des configurations CoreDNS personnalisées. Cette rubrique explique comment utiliser le plug-in CoreDNS non managé dans un cluster ACS.
Prérequis
Un cluster ACS est créé. Pour plus d'informations, consultez Créer un cluster ACS. Si le plug-in CoreDNS est déjà installé dans le cluster ACS, désinstallez le plug-in CoreDNS managé en suivant la procédure d'installation décrite dans cette rubrique.
Lors de la création d'un nouveau cluster, accédez à Component Configurations > Service Discovery et sélectionnez Disable.
Le plug-in CoreDNS non managé est un plug-in standard open source. Vous assumez la responsabilité des coûts de ressources ainsi que des opérations et de la maintenance (O&M) du plug-in. Il vous incombe également de résoudre les problèmes susceptibles de survenir lors de l'utilisation du plug-in CoreDNS.
Par défaut, le modèle de plug-in fourni par ACS utilise un mécanisme d'anti-affinité pour répartir les pods entre les zones. Si vous avez configuré une seule zone pour votre cluster ACS, un seul réplica de CoreDNS peut s'exécuter correctement. Nous vous recommandons de configurer plusieurs zones afin de garantir la reprise après sinistre et la disponibilité du service.
Procédure d'installation
Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, cliquez sur Add-ons.
-
(Facultatif) Sous l'onglet Networking, localisez CoreDNS (portant le libellé
Managed) et cliquez sur Uninstall. Si CoreDNS (Managed) n'apparaît pas dans la liste des composants, ignorez cette étape.AvertissementLa désinstallation de CoreDNS (Managed) rend indisponible la fonctionnalité de résolution DNS (Domain Name System) du cluster. Avant de procéder à cette désinstallation, assurez-vous qu'aucun trafic métier ne transite par le cluster.
Toujours sous l'onglet Networking, recherchez CoreDNS (sans le libellé
Managed) puis cliquez sur Install.-
Configurez les paramètres selon vos besoins. Une fois les paramètres validés, cliquez sur OK pour installer le composant.
ImportantSi le paramètre CpuRequest n'est pas défini lors de l'installation, le pod correspondant dans le cluster ACS ne disposera que de 250m de ressources CPU. Afin d'éviter des dysfonctionnements du cluster dus à une charge excessive sur le pod, il est recommandé de définir une valeur appropriée pour CpuRequest.
Le formulaire de configuration comprend les paramètres suivants : MemoryRequest (par défaut :
100Mi), CpuRequest (par défaut :100m), MemoryLimit (par défaut :2Gi) et CpuLimit (par défaut : vide). Pour NodeSelector, la clé par défaut estkubernetes.io/oset la valeur estlinux. Le champ Tolerations est vide par défaut et peut être configuré selon vos besoins. -
Connectez-vous au cluster via kubectl et exécutez la commande suivante pour interroger les pods :
kubectl get po -n kube-system|grep corednsSortie attendue :
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-85dc775876-sh558 1/1 Running 0 3m35s kube-system coredns-85dc775876-xzcpp 1/1 Running 0 3m35sLe démarrage du pod CoreDNS confirme que le plug-in CoreDNS non managé est bien installé.
-
Exécutez la commande suivante depuis un pod du cluster ACS afin de vérifier le bon fonctionnement de la résolution DNS :
nslookup kubernetesSortie attendue :
Server: 10.0.0.10 Address: 10.0.0.10#53 Name: kubernetes.default.svc.cluster.local Address: 10.0.0.1Cette sortie indique que la résolution de noms de domaine fonctionne correctement et que CoreDNS s'exécute comme prévu.
Configurations CoreDNS personnalisées
Il est possible de personnaliser CoreDNS en modifiant la configuration Corefile, stockée sous forme de ConfigMap dans le cluster ACS. Modifiez directement ce fichier Corefile pour ajuster le comportement de CoreDNS. Exemple :
-
Exécutez la commande suivante pour modifier la configuration Corefile de CoreDNS :
kubectl -n kube-system edit cm coredns -
Modifiez la configuration Corefile de CoreDNS en vous basant sur le contenu suivant :
Corefile: | .:53 { errors health { lameduck 15s } ready kubeapi k8s_event { level info error warning } kubernetes cluster.local in-addr.arpa ip6.arpa { pods verified ttl 30 fallthrough in-addr.arpa ip6.arpa } prometheus :9153 # forward . /etc/resolv.conf { # Change the forward DNS server from the default in resolv.conf to 192.168.1.10. forward . 192.168.1.10 { prefer_udp } cache 30 log loop reload loadbalance }Suite à cette modification, CoreDNS transfère automatiquement les requêtes pour les noms de domaine externes au cluster vers le serveur DNS dont l'adresse IP est
192.168.1.10. Adaptez cette adresse IP à celle de votre serveur DNS selon vos besoins métier.
Références
Adaptez la configuration du plug-in CoreDNS non managé à vos exigences métier. Pour plus de détails, consultez Configurer CoreDNS non managé.
Pour en savoir plus sur la configuration des politiques DNS et de la résolution DNS pour les pods d'un cluster ACS, reportez-vous à Politiques de résolution DNS et de mise en cache.
Concernant le dépannage des problèmes liés à CoreDNS, consultez Dépannage DNS.