Détection de services et DNS


Cette page explique comment Google Kubernetes Engine (GKE) met en œuvre la détection de services et le service DNS de cluster.

Détection de services

Dans Kubernetes, la détection de services est mise en œuvre avec des noms de service générés automatiquement correspondant à l'adresse IP du service. Les noms de service suivent la spécification standard suivante : my-svc.my-namespace.svc.cluster-domain.example. Les pods peuvent également accéder à des services externes, tels que example.com, via leur nom. Pour en savoir plus sur le fonctionnement du DNS dans Kubernetes, consultez la page DNS pour les services et les pods.

Service DNS de cluster dans GKE

Les nouveaux clusters Autopilot utilisent Cloud DNS, et vous ne pouvez pas modifier le fournisseur DNS.

Pour les clusters Standard, GKE fournit les options DNS de cluster suivantes pour résoudre les noms de service et les noms externes :

  • kube-dns : module complémentaire de cluster déployé par défaut dans tous les clusters GKE.
  • Cloud DNS : infrastructure DNS de cluster gérée dans le cloud exploitant Cloud DNS et ne nécessitant pas la gestion des serveurs DNS dans les clusters, comme kube-dns.

Vous pouvez également enregistrer vos services dans l'annuaire des services pour GKE.

GKE fournit également le module complémentaire facultatif NodeLocal DNSCache pouvant être utilisé avec kube-dns ou Cloud DNS.

kube-dns

kube-dns est le fournisseur DNS par défaut pour les clusters Standard et le seul fournisseur DNS pour les clusters Autopilot exécutant des versions antérieures aux versions 1.25.9-gke.400 et 1.26.4-gke.500.

kube-dns s'exécute comme un déploiement qui programme les pods kube-dns sur les nœuds du cluster.

Pour en savoir plus sur kube-dns, consultez la page Utiliser kube-dns.

Cloud DNS

Cloud DNS est le seul fournisseur DNS pour les clusters Autopilot exécutant les versions 1.25.9-gke.400 et ultérieures, ou 1.26.4-gke.500 et ultérieure.

Cloud DNS fournit la résolution DNS des pods et des services, sans nécessiter de fournisseur DNS hébergé par le cluster tel que kube-dns. Le contrôleur Cloud DNS provisionne automatiquement les enregistrements DNS des pods et des services dans Cloud DNS pour les adresses ClusterIP, les services sans adresse IP de cluster et les services de noms externes.

Pour savoir comment configurer Cloud DNS, consultez la page Utiliser Cloud DNS pour GKE.

NodeLocal DNSCache

NodeLocal DNSCache s'exécute en tant que DaemonSet qui programme un pod de cache DNS sur chaque nœud de cluster. Ce cache DNS améliore la latence de la résolution DNS, harmonise les délais des résolutions DNS, et peut réduire le nombre de requêtes DNS adressées à kube-dns ou Cloud DNS.

Pour savoir comment configurer NodeLocal DNSCache, consultez la page Configurer NodeLocal DNSCache.

Détection de services en dehors d'un cluster

Vous pouvez configurer la détection de services sur plusieurs clusters à l'aide de l'une des méthodes suivantes.

Champ d'application d'un VPC Cloud DNS

Un cluster qui utilise Cloud DNS pour les services DNS de cluster doit s'exécuter dans l'un des deux modes disponibles : champ d'application de cluster GKE ou champ d'application de cloud privé virtuel (VPC).

Lorsque vous configurez un cluster avec un champ d'application de cluster, les enregistrements DNS ne peuvent être résolus que dans le cluster à l'aide du schéma <svc>.<ns>.svc.cluster.local. Ce comportement est le même que celui de kube-dns.

Lorsque vous configurez un cluster avec un champ d'application de VPC, les enregistrements DNS des services du cluster peuvent être résolus dans l'ensemble du VPC. Cela signifie que les clients du même VPC ou connectés à celui-ci via Cloud VPN ou Cloud Interconnect peuvent résoudre directement les enregistrements DNS des services du cluster GKE. Vous pouvez également configurer des noms DNS de cluster uniques afin que les clients non-GKE puissent résoudre les enregistrements DNS. Par exemple, un client non-GKE peut résoudre gke-svc.ns.svc.cluster1 à partir de gke-svc.ns.svc.cluster2.

Pour en savoir plus sur le champ d'application DNS à l'échelle d'un VPC, consultez la page Utiliser Cloud DNS pour GKE.

Services multiclusters

Les services multiclusters fournissent la détection de services et l'équilibrage de charge multiclusters pour GKE qui exploite l'objet Service existant. Les services multiclusters sont visibles et accessibles sur n'importe quel cluster GKE doté d'une seule adresse IP virtuelle. Ce comportement est identique à celui d'un service ClusterIP accessible dans un seul cluster.

Les services multiclusters agrègent les services entre les clusters et les rendent adressables sous la forme d'un seul enregistrement DNS multicluster à l'aide du schéma <svc>.<ns>.svc.clusterset.local. Un service donné dispose ainsi d'un nom unique qui est cohérent et adressable à partir de n'importe quel cluster GKE utilisant des services multiclusters.

Pour en savoir plus sur les services multiclusters, consultez la page Services multiclusters.

Annuaire des services pour GKE

L'annuaire des services pour GKE fournit une visibilité globale sur les services de tous vos déploiements Kubernetes. L'annuaire des services peut enregistrer des services GKE et non-GKE dans un seul registre. L'annuaire des services est particulièrement utile si vous souhaitez :

  • un registre unique permettant aux applications Kubernetes et non-Kubernetes de se détecter ;
  • un outil de détection de services géré ;
  • stocker des métadonnées sur votre service auxquelles d'autres clients peuvent accéder ;
  • définir des autorisations d'accès par service.

Les services de l'annuaire peuvent être résolus via DNS, HTTP et gRPC. L'annuaire des services est intégré à Cloud DNS et peut remplir les enregistrements Cloud DNS correspondant aux services de l'annuaire.

Pour en savoir plus, consultez la page Configurer l'annuaire des services pour GKE.

/etc/resolv.conf

Pour les pods utilisant la règle DNS ClusterFirst, la valeur de /etc/resolv.conf dépend des fonctionnalités activées sur le cluster :

Cloud DNS pour GKE NodeLocal DNSCache Valeur /etc/resolv.conf
Activé Enabled 169.254.20.10
Activé Désactivé 169.254.169.254
Désactivé Activé Adresse IP du service kube-dns
Désactivé Désactivé Adresse IP du service kube-dns

Étape suivante

  • Découvrez comment utiliser Cloud DNS pour GKE.
  • Découvrez comment effectuer une résolution DNS évolutive pour les clusters nécessitant un volume élevé de requêtes DNS à l'aide de NodeLocal DNSCache.