Configurazione del DNS per un cluster

Questo documento mostra come configurare le opzioni del provider DNS (Domain Name System) per Google Distributed Cloud. La configurazione DNS per un cluster è contenuta in una risorsa personalizzata ClusterDNS denominata default. Questa risorsa è a livello di cluster, il che significa che non è con spazio dei nomi. La risorsa personalizzata ClusterDNS si applica a tutti i tipi di cluster.

Creare la risorsa ClusterDNS

Crea un manifest per una risorsa ClusterDNS denominata default. Compila spec per configurare le impostazioni delle risorse che preferisci. Ad esempio:

apiVersion: networking.gke.io/v1alpha1
kind: ClusterDNS
metadata:
  name: default
spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 8.8.4.4
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: default

Per salvare il manifest in un file denominato my-dns.yaml e applicare la risorsa al cluster, esegui questo comando:

kubectl --kubeconfig KUBECONFIG apply -f my-dns.yaml

Sostituisci KUBECONFIG con il percorso del file kubeconfig del cluster.

Visualizzare la risorsa ClusterDNS

Per visualizzare la risorsa ClusterDNS, esegui questo comando:

kubectl --kubeconfig KUBECONFIG get clusterdns default --output yaml

Sostituisci KUBECONFIG con il percorso del file kubeconfig del cluster.

La specifica ClusterDNS

Le sezioni seguenti descrivono le parti della definizione della risorsa personalizzata ClusterDNS che utilizzi per configurare il DNS per i tuoi cluster. Puoi aggiornare la risorsa ClusterDNS per un cluster in qualsiasi momento.

spec.upstreamNameservers

Utilizza il campo spec.upstreamNameservers per specificare i server dei nomi upstream predefiniti con un array di oggetti. Ogni oggetto ha un indirizzo IP del server e, facoltativamente, una porta del server. Il valore predefinito per la porta del server è 53. Per impostazione predefinita, le richieste per i domini non cluster vengono inoltrate a questo insieme di server.

Ecco un esempio di configurazione di upstreamNameservers:

spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 1.2.3.4
    serverPort: 54

Se non specifichi alcun valore per upstreamNameservers, il provider DNS utilizza il file /etc/resolv.conf sul nodo per trovare l'elenco dei server dei nomi upstream.

spec.domains

Utilizza il campo spec.domains per configurare diversi server dei nomi upstream per domini specifici. Queste impostazioni dei server dei nomi specifici del dominio sostituiscono la configurazione in upstreamNameservers.

Puoi anche attivare la registrazione delle query per un dominio. Puoi attivare la registrazione delle query per qualsiasi dominio specificato o per il dominio del cluster, cluster.local.

Ecco un esempio di configurazione di spec.domains:

spec:
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 50000
  - name: cluster.local
    queryLogging: true

spec.googleAccess

Il campo spec.googleAccess è una stringa che configura la risoluzione DNS per i domini utilizzati dalle API e dai servizi Google globali. Questo campo accetta i seguenti valori:

  • default: per impostazione predefinita, la risoluzione DNS mappa i domini delle API Google globali agli indirizzi IP predefiniti. Il cluster non personalizza la risoluzione DNS per i domini delle API Google globali. Per saperne di più, consulta Indirizzi IP per i domini predefiniti. Se non specifichi un valore nel campo googleAccess, il sistema utilizza default.

  • private: mappa la risoluzione DNS per i domini delle API Google globali agli indirizzi IP utilizzati da private.googleapis.com.

  • restricted: mappa la risoluzione DNS per i domini delle API Google globali agli indirizzi IP utilizzati da restricted.googleapis.com.

L'esempio seguente mostra come impostare la risoluzione DNS per utilizzare private.googleapis.com:

spec:
  googleAccess: private

Per saperne di più, consulta Configurare l'accesso privato Google per gli host on-premise.

spec.orderPolicy

Il campo spec.orderPolicy è una stringa. Utilizza questo campo per specificare il criterio di ordinamento in base al quale vengono selezionati i server upstream.

  • Il valore predefinito è random.
  • I tipi supportati sono random, round_robin e sequential.
  • Questo criterio di ordinamento si applica anche ai domini definiti.

Per saperne di più su policy e su cosa fa ogni configurazione, consulta la documentazione di coredns.

Ecco un esempio di configurazione di spec.orderPolicy:

spec:
  orderPolicy: sequential