Service Discovery e DNS

Questa pagina descrive il modo in cui Google Kubernetes Engine (GKE) implementa il rilevamento di servizi e il DNS del cluster.

Service Discovery

In Kubernetes, il rilevamento dei servizi viene implementato con nomi di servizio generati automaticamente e mappati all'indirizzo IP del servizio. I nomi dei servizi seguono una specifica standard: come segue: my-svc.my-namespace.svc.cluster-domain.example. I pod possono anche accedere a servizi esterni tramite i loro nomi, ad esempio example.com. Per ulteriori informazioni sul funzionamento del DNS in Kubernetes, consulta DNS per servizi e pod.

DNS del cluster in GKE

GKE fornisce le seguenti opzioni DNS cluster per risolvere i nomi di servizio e i nomi esterni:

  • kube-dns: un componente aggiuntivo del cluster di cui viene eseguito il deployment per impostazione predefinita in tutti i cluster GKE.
  • Cloud DNS: un'infrastruttura DNS basata su cloud gestita dal cloud che sfrutta Cloud DNS e non richiede la gestione di server DNS nel cluster come kube-dns.

Puoi anche registrare i tuoi servizi con Service Directory for GKE.

GKE fornisce anche NodeLocal DNSCache come componente aggiuntivo facoltativo che può essere utilizzato con kube-dns o Cloud DNS.

kube-dns

kube-dns è il provider DNS predefinito del cluster per i cluster GKE. Viene eseguito come deployment che pianifica i pod kube-dns nei nodi del cluster.

Per ulteriori informazioni su kube-dns, consulta Utilizzo di kube-dns.

Cloud DNS

Cloud DNS offre una risoluzione DNS per pod e servizi senza un provider DNS ospitato nel cluster come kube-dns. Il controller Cloud DNS esegue automaticamente il provisioning di record DNS per pod e servizi in Cloud DNS per ClusterIP, servizi dei nomi headless ed esterni.

Per informazioni su come configurare Cloud DNS, consulta Utilizzo di Cloud DNS per GKE.

NodeLocal DNSCache

NodeLocal DNSCache viene eseguito come un DaemonSet che pianifica un pod di cache DNS su ogni nodo del cluster. Questa cache DNS migliora la latenza di ricerca DNS, rende i tempi di ricerca DNS più coerenti e può ridurre il numero di query DNS a kube-dns o Cloud DNS.

Per informazioni su come configurare NodeLocal DNSCache, consulta la pagina Configurare NodeLocal DNSCache.

Service Discovery al di fuori di un singolo cluster

Puoi configurare il rilevamento di servizi oltre l'ambito di un singolo cluster utilizzando uno dei seguenti metodi.

Ambito VPC di Cloud DNS

Un cluster che utilizza Cloud DNS per DNS del cluster deve operare in una delle due modalità disponibili: ambito cluster GKE o ambito Virtual Private Cloud (VPC).

Quando configuri un cluster nell'ambito del cluster, i record DNS sono risolvibili solo all'interno del cluster, utilizzando lo schema <svc>.<ns>.svc.cluster.local. Si tratta dello stesso comportamento di kube-dns.

Quando configuri un cluster nell'ambito VPC, i record DNS per i servizi cluster possono essere risolti all'interno dell'intero VPC. Questo significa che i client nello stesso VPC o connessi alla VPC tramite Cloud VPN o Cloud Interconnect possono risolvere direttamente i record DNS per Servizi nel cluster GKE. Puoi anche configurare nomi DNS univoci dei cluster in modo che i client non GKE possano risolvere i record DNS. Ad esempio, un client non GKE potrebbe risolvere gke-svc.ns.svc.cluster1 da gke-svc.ns.svc.cluster2.

Per ulteriori informazioni sul DNS dell'ambito VPC, consulta Utilizzo di Cloud DNS per GKE.

Servizi multi-cluster

Servizi multi-cluster fornisce il rilevamento di servizi multi-cluster e il bilanciamento del carico per GKE che sfrutta l'oggetto Service esistente. I servizi multi-cluster sono rilevabili e accessibili su qualsiasi cluster GKE con un unico indirizzo IP virtuale. Si tratta dello stesso comportamento di un servizio ClusterIP accessibile in un singolo cluster.

I servizi multi-cluster aggregano i servizi su cluster e li rendono indirizzabili come singolo record DNS multi-cluster utilizzando lo schema <svc>.<ns>.svc.clusterset.local. Specifica un nome univoco per un determinato servizio, coerente e indirizzabile da qualsiasi cluster GKE che utilizza servizi multi-cluster.

Per ulteriori informazioni sui servizi multi-cluster, vedi Servizi multi-cluster.

Service Directory per GKE

Service Directory per GKE fornisce una singola visualizzazione dei servizi in tutti i deployment Kubernetes. Service Directory può registrare sia i servizi GKE che non GKE in un unico registro. Service Directory è particolarmente utile se vuoi:

  • Un unico registro per le applicazioni Kubernetes e non Kubernetes al fine di scoprire ogni altro.
  • Uno strumento di rilevamento dei servizi gestiti.
  • Per archiviare i metadati relativi al tuo servizio, a cui possono accedere altri clienti.
  • Per impostare le autorizzazioni di accesso a livello di servizio.

I servizi di Service Directory possono essere risolti tramite DNS, HTTP e gRPC. Service Directory è integrato con Cloud DNS e può completare i record Cloud DNS corrispondenti ai servizi di Service Directory.

Per ulteriori informazioni, consulta la pagina sulla configurazione di Service Directory per GKE.

/etc/resolv.conf

Per i pod che utilizzano ClusterFirst criteri DNS, il valore di /etc/resolv.conf dipende dalle funzionalità abilitate nel cluster:

Cloud DNS per GKE NodeLocal DNSCache Valore /etc/resolv.conf
Abilitato Abilitato 169.254.20.10
Abilitato Disabilitato 169.254.169.254
Disabilitato Abilitato Indirizzo IP del servizio kube-dns
Disabilitato Disabilitato Indirizzo IP del servizio kube-dns

Passaggi successivi

  • Scopri come utilizzare Cloud DNS per GKE.
  • Scopri come fornire una risoluzione DNS scalabile per i cluster che richiedono volumi elevati di query DNS utilizzando NodeLocal DNSCache.