Skip to main content
AI Data Engine
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Configura Kerberos per le condivisioni SMB/CIFS in una distribuzione AI Data Engine multi-node

Collaboratori netapp-dbagwell

Esegui la scansione delle condivisioni SMB/CIFS da una distribuzione multi-node di AI Data Engine (AIDE) utilizzando l'autenticazione Kerberos, in modo che nessuna password venga memorizzata nell'origine dati. Ogni nodo utilizza la stessa configurazione Kerberos e AI Data Engine aggiorna automaticamente il ticket Kerberos.

Prima di iniziare

Permessi e accesso
  • Hai i privilegi di amministratore di AI Data Engine.

  • Hai access root a ogni nodo e all'admin host. L'admin host è l'host su cui monti l'export NFS e crei il keytab. Può essere uno qualsiasi dei nodi.

  • Hai kubectl accesso con privilegi cluster-admin al tuo cluster Kubernetes dall'admin host. Se utilizzi un file kubeconfig, imposta la `KUBECONFIG`variabile d'ambiente sul relativo percorso.

Sincronizzazione di rete e dell'ora
  • Hai esaminato "requisiti di rete" e "Requisiti di Kerberos e Active Directory", inclusi la sincronizzazione dell'ora e il DNS.

  • Hai verificato che ogni nodo può raggiungere il server NFS sulla porta TCP 2049, il KDC sulla porta 88, il file server sulla porta 445 e il tuo DNS server sulla porta 53.

  • Hai verificato che NTP sia attivo su ogni nodo e che ogni orologio sia sincronizzato con i domain controller. Per verificare, esegui timedatectl.

Active Directory
  • Hai un account del servizio di scansione in Active Directory con accesso in lettura alle SMB/CIFS share che vuoi analizzare. L'account deve supportare la crittografia AES256.

Informazioni da raccogliere
  • Hai a disposizione le seguenti informazioni:

    Articolo Descrizione Esempio

    Indirizzo IP del KDC

    Indirizzo IP del domain controller che funge da centro di distribuzione delle chiavi Kerberos (KDC)

    10.0.1.50

    FQDN del KDC

    domain name pienamente qualificato (FQDN) dello stesso domain controller

    dc.corp.example.com

    Dominio

    Dominio di Active Directory, in minuscolo

    corp.example.com

    Realm

    realm Kerberos, che è il dominio in maiuscolo

    CORP.EXAMPLE.COM

    Utente di scansione

    Account di servizio con accesso in lettura alla condivisione

    svc-aide

    Scansiona la password

    Password dell'utente di scansione. La inserisci solo quando crei il file keytab.

    Non applicabile

    FQDN del file server

    Nome di dominio pienamente qualificato (FQDN) del file server che ospita la condivisione. Non usare un indirizzo IP.

    filer.corp.example.com

    Nome condiviso

    Nome della SMB/CIFS share

    sharename

File Kerberos utilizzati da AI Data Engine

Crei i seguenti file nell'esportazione NFS che contiene la configurazione di AI Data Engine. Nella tabella seguente, <export> è la radice di tale esportazione.

File Posizione sull'export

Configurazione Kerberos

<export>/kerberos/krb5.conf

Keytab

<export>/kerberos/kerberos_refresher/datasense.keytab

File principale

<export>/kerberos/kerberos_refresher/kerberos_creds.env

Directory della cache dei ticket

<export>/kerberos/kerberos_ccache

Installa i pacchetti necessari

La scansione Kerberos di una CIFS share non riesce su qualsiasi nodo che non dispone di cifs-utils. Il mount SMB/CIFS viene eseguito all'interno di AI Data Engine, ma il sistema operativo del nodo chiama un cifs-utils componente per configurare la sessione Kerberos. Installare il pacchetto solo sull'admin host non basta.

Pacchetto admin host Ogni nodo

krb5-user (Ubuntu o Debian) oppure krb5-workstation (RHEL, CentOS o Rocky Linux)

Richiesto

Non richiesto

cifs-utils

Richiesto

Richiesto

Gli strumenti client Kerberos forniscono i comandi ktutil, kinit e klist che utilizzi per creare e testare il keytab.

Passaggi
  1. Sull'admin host, installa gli strumenti client Kerberos e cifs-utils.

    1. Su Ubuntu o Debian, esegui i seguenti comandi.

      apt-get update -qq
      apt-get install -y krb5-user cifs-utils
    2. Su RHEL, CentOS o Rocky Linux, esegui il seguente comando.

      dnf -y install krb5-workstation cifs-utils
  2. Su ogni altro nodo, installa cifs-utils.

    1. Su Ubuntu o Debian, esegui i seguenti comandi.

      apt-get update -qq
      apt-get install -y cifs-utils
    2. Su RHEL, CentOS o Rocky Linux, esegui il seguente comando.

      dnf -y install cifs-utils
  3. Su ogni nodo, verifica l'installazione.

    which cifs.upcall

Monta l'export NFS sull'admin host

Ottieni l'accesso all'esportazione della configurazione condivisa dall'admin host in modo da poter creare i file Kerberos che ogni nodo potrà leggere.

Passaggi
  1. Imposta lo spazio dei nomi in cui viene eseguito AI Data Engine e verifica che la richiesta di volume di configurazione sia associata. Lo spazio dei nomi predefinito è aide.

    export NAMESPACE="<namespace>"
    kubectl -n "${NAMESPACE}" get pvc aide-config-pvc

    Lo stato deve essere Bound.

  2. Recupera il server NFS e il percorso di esportazione del volume di configurazione. Hai specificato questi valori quando hai distribuito AI Data Engine.

    kubectl get pv aide-config-pv -o jsonpath='NFS server: {.spec.nfs.server}{"\n"}Export path: {.spec.nfs.path}{"\n"}'
  3. Monta l'esportazione. Sostituisci <nfs_server> e <export_path> con i valori del passaggio precedente. I comandi utilizzano /mnt/aide-config come punto di montaggio. Puoi utilizzare qualsiasi directory vuota.

    mkdir -p /mnt/aide-config
    mount -t nfs <nfs_server>:<export_path> /mnt/aide-config
  4. Crea le directory Kerberos.

    export AIDE_CONFIG_ROOT="/mnt/aide-config"
    mkdir -p "${AIDE_CONFIG_ROOT}/kerberos/kerberos_refresher"
    mkdir -p "${AIDE_CONFIG_ROOT}/kerberos/kerberos_ccache"

Crea i file Kerberos

Fornisci ad AI Data Engine la configurazione e le credenziali necessarie per ottenere i ticket Kerberos per l'account del servizio di scansione. Esegui i seguenti passaggi sull'admin host.

Passaggi
  1. Imposta le variabili utilizzate dai seguenti comandi. Sostituisci ogni valore tra parentesi angolari con il tuo valore e non includere le parentesi angolari. Inserisci il realm in maiuscolo e il dominio in minuscolo.

    export KDC_IP="<kdc_ip>"
    export KDC_FQDN="<kdc_fqdn>"
    export AD_DOMAIN="<domain>"
    export REALM="<REALM>"
    export SCAN_USER="<scan_user>"
    export FILE_SERVER_FQDN="<file_server_fqdn>"
    export SHARE_NAME="<share_name>"
    export KRB5_CONF_SOURCE="${AIDE_CONFIG_ROOT}/kerberos/krb5.conf"
    export KRB5_KEYTAB="${AIDE_CONFIG_ROOT}/kerberos/kerberos_refresher/datasense.keytab"
    export KRB5_CREDS="${AIDE_CONFIG_ROOT}/kerberos/kerberos_refresher/kerberos_creds.env"
    1. Verifica che le variabili siano impostate.

      echo "NAMESPACE=[${NAMESPACE}] AIDE_CONFIG_ROOT=[${AIDE_CONFIG_ROOT}] KDC_IP=[${KDC_IP}] REALM=[${REALM}] SCAN_USER=[${SCAN_USER}]"
      Nota Le variabili esistono solo nella sessione corrente della shell. Se apri una nuova shell, dovrai impostarle nuovamente.
  2. Crea il file di configurazione Kerberos sull'esportazione NFS. AI Data Engine legge questo file dall'esportazione. Non crearlo in /etc/krb5.conf sui nodi.

    tee "${KRB5_CONF_SOURCE}" >/dev/null <<EOF
    [libdefaults]
        default_realm = ${REALM}
        dns_lookup_realm = false
        dns_lookup_kdc = false
        rdns = false
        ticket_lifetime = 24h
        renew_lifetime = 7d
        forwardable = true
    
    [realms]
        ${REALM} = {
            kdc = ${KDC_IP}:88
            admin_server = ${KDC_IP}:749
        }
    
    [domain_realm]
        .${AD_DOMAIN} = ${REALM}
        ${AD_DOMAIN} = ${REALM}
    EOF
    chmod 644 "${KRB5_CONF_SOURCE}"

    Il file utilizza l'indirizzo IP del KDC in modo che l'autenticazione Kerberos non dipenda dal DNS.

  3. Crea un file keytab per l'account del servizio di scansione.

    1. Esegui ktutil.

    2. Al ktutil`prompt, inserisci il seguente comando. Sostituisci `<scan_user> e <REALM> con i tuoi valori. Il `ktutil`prompt non utilizza le variabili di shell.

      addent -password -p <scan_user>@<REALM> -k 1 -e aes256-cts-hmac-sha1-96
    3. Quando `ktutil`ti chiede una password, inserisci la password dell'utente di scansione.

    4. Al ktutil prompt, inserisci i seguenti comandi.

      wkt /tmp/krb5.keytab
      quit
  4. Verifica il file keytab. La KRB5_CONFIG variabile indirizza gli strumenti Kerberos al file nell'export.

    export KRB5_CONFIG="${KRB5_CONF_SOURCE}"
    klist -kt /tmp/krb5.keytab
    kinit -kt /tmp/krb5.keytab "${SCAN_USER}@${REALM}"
    klist
    kdestroy

    Il secondo klist comando deve mostrare un ticket valido per l'utente di scansione. Un ticket conferma che il keytab e la connessione al KDC funzionano. Se kinit non riesce, fai riferimento a Risoluzione dei problemi di autenticazione Kerberos.

  5. Installa il file keytab, quindi elimina la copia temporanea.

    install -m 640 -g 4321 /tmp/krb5.keytab "${KRB5_KEYTAB}"
    rm -f /tmp/krb5.keytab
  6. Rendi la directory della cache dei ticket scrivibile per il sistema di aggiornamento dei ticket.

    chown root:4321 "${AIDE_CONFIG_ROOT}/kerberos/kerberos_ccache"
    chmod 770 "${AIDE_CONFIG_ROOT}/kerberos/kerberos_ccache"

    Il programma di aggiornamento dei ticket viene eseguito come utente root con ID di gruppo 4321. Deve poter leggere il file keytab e il file principal, e deve poter scrivere nella directory della cache dei ticket.

  7. Crea il file principal. Il KRB5_RENEW_INTERVAL_H valore corrisponde all'intervallo di rinnovo del ticket in ore.

    tee "${KRB5_CREDS}" >/dev/null <<EOF
    KRB5_USER=${SCAN_USER}
    KRB5_REALM=${REALM}
    KRB5_RENEW_INTERVAL_H=3
    EOF
    chmod 640 "${KRB5_CREDS}"
    chgrp 4321 "${KRB5_CREDS}"
  8. Verifica che i file siano nella posizione corretta.

    ls -l "${KRB5_CONF_SOURCE}" "${KRB5_KEYTAB}" "${KRB5_CREDS}"

Verifica la risoluzione dei nomi

AI Data Engine risolve il file server e il KDC utilizzando le impostazioni DNS di ciascun nodo. Verifica prima la risoluzione dei nomi e modifica le impostazioni DNS solo se un nome non si risolve su un nodo.

Passaggi
  1. Su ogni nodo, verifica che il file server e il KDC vengano risolti tramite FQDN. Sostituisci i valori con l'FQDN del tuo file server e l'FQDN del tuo KDC.

    nslookup <file_server_fqdn>
    nslookup <kdc_fqdn>
  2. Verifica il risultato.

    1. Se entrambi i nomi si risolvono negli indirizzi IP corretti su ogni nodo, continua con Avvia il primo aggiornamento del ticket.

    2. Se un nome non viene risolto su alcun nodo, completa Correggi la risoluzione dei nomi, quindi torna a questa procedura.

Avvia il primo aggiornamento del ticket

AI Data Engine aggiorna il ticket Kerberos per l'account del servizio di scansione ogni tre ore. Avvia il primo aggiornamento per poter iniziare subito la scansione delle condivisioni.

Nota Non aggiungere una kinit voce al crontab dell'host. AI Data Engine aggiorna automaticamente i ticket.
Passaggi
  1. Sull'admin host, avvia un job di refresh, attendi che venga completato e visualizzane il log.

    JOB="kerberos-refresh-$(date +%s)"
    kubectl -n "${NAMESPACE}" create job "${JOB}" --from=cronjob/ds-krb5-ticket-refresher
    kubectl -n "${NAMESPACE}" wait --for=condition=complete "job/${JOB}" --timeout=120s
    kubectl -n "${NAMESPACE}" logs "job/${JOB}"
  2. Verifica che la cache condivisa dei ticket esista e abbia un timestamp recente.

    ls -l "${AIDE_CONFIG_ROOT}/kerberos/kerberos_ccache/krb5cc_shared"
Risultato

Il log del job mostra che è stato acquisito un ticket per l'utente di scansione.

Verifica la configurazione di Kerberos

Prima di aggiungere la condivisione, verifica che AI Data Engine possa utilizzare i file Kerberos e risolvere i nomi. Poiché il servizio di montaggio può essere eseguito su più nodi, ripeti i controlli per un pod su ciascun nodo. Se hai aperto una nuova shell, imposta nuovamente le variabili NAMESPACE, FILE_SERVER_FQDN e SHARE_NAME.

Passaggi
  1. Elenca i pod del servizio di mount e i nodi su cui vengono eseguiti.

    kubectl -n "${NAMESPACE}" get pods -l app.kubernetes.io/name=ds-mount-server -o wide
  2. Per ogni pod, esegui i seguenti comandi. Sostituisci <pod_name> con il nome del pod.

    POD=<pod_name>
    kubectl -n "${NAMESPACE}" exec "${POD}" -- nslookup "${FILE_SERVER_FQDN}"
    kubectl -n "${NAMESPACE}" exec "${POD}" -- klist
    kubectl -n "${NAMESPACE}" exec "${POD}" -- cat /etc/krb5.conf
  3. (Facoltativo) Verifica il montaggio della condivisione utilizzando Kerberos.

    kubectl -n "${NAMESPACE}" exec "${POD}" -- sh -c "mount -t cifs -o sec=krb5,multiuser //${FILE_SERVER_FQDN}/${SHARE_NAME} /mnt && ls -l /mnt && umount /mnt"
Risultato

Su ogni nodo, il file server risolve l'indirizzo IP corretto, klist mostra un ticket per l'utente di scansione e /etc/krb5.conf mostra il contenuto del file di configurazione Kerberos.

Aggiungi un'origine dati SMB/CIFS che utilizza Kerberos

Aggiungi la condivisione come origine dati e avvia le scansioni in modo che AI Data Engine possa iniziare ad analizzare i dati.

Passaggi
  1. Dall'interfaccia di AI Data Engine, seleziona Configurazione.

  2. Nella scheda Sistemi scansionati, seleziona Aggiungi sistema.

  3. Seleziona File shares group.

  4. Inserisci un nome per il gruppo.

  5. Inserisci il percorso di condivisione nel formato <file_server_fqdn>/<share_name>. Sostituisci i segnaposto con i tuoi valori. Non usare un indirizzo IP.

  6. Per il metodo di autenticazione, seleziona Kerberos. Lascia vuoti i campi nome utente e password.

  7. Rivedi le tue selezioni e seleziona Conferma.

  8. Seleziona Attiva scansioni per il nuovo sistema.

Per ulteriori informazioni su come collegare le origini dati, consulta "Collega un'origine dati ad AI Data Engine".

Correggi la risoluzione dei nomi

Completa questa procedura solo se, su un nodo, il file server o il KDC non si risolvono tramite FQDN. Imposta il tuo DNS server Active Directory come unico name server su ogni nodo.

Avvertenza Rendi il tuo DNS server Active Directory l'unico name server su ogni nodo. Il cluster sceglie casualmente uno dei name server elencati, quindi un name server che non riesce a risolvere i nomi di Active Directory causa errori intermittenti.
Passaggi
  1. Verifica che il tuo DNS server di Active Directory risolva anche i nomi esterni.

    1. Esegui il seguente comando. Sostituisci <external_fqdn> con un nome esterno al tuo dominio che AI Data Engine deve raggiungere. Ad esempio, usa un endpoint elencato in "Accesso Internet outbound".

      nslookup <external_fqdn> "${KDC_IP}"
    2. Se il comando non riesce, chiedi all'amministratore di Active Directory di abilitare l'inoltro DNS e poi ripeti questo passaggio.

  2. Su ogni nodo, esegui il backup /etc/resolv.conf e imposta il tuo DNS server di Active Directory come unico name server. Se apri una nuova shell su un nodo, imposta di nuovo la variabile KDC_IP.

    export KDC_IP="<kdc_ip>"
    cp /etc/resolv.conf /etc/resolv.conf.bak
    ORIG_SEARCH=$(grep '^search' /etc/resolv.conf.bak | head -1 | cut -d' ' -f2-)
    printf 'search %s\nnameserver %s\n' "${ORIG_SEARCH}" "${KDC_IP}" > /etc/resolv.conf
  3. Su ogni nodo, impedisci al gestore di rete di sovrascrivere le impostazioni DNS dopo un riavvio.

    1. Su RHEL con NetworkManager, esegui i seguenti comandi.

      mkdir -p /etc/NetworkManager/conf.d
      printf '[main]\ndns=none\n' > /etc/NetworkManager/conf.d/90-dns-none.conf
      systemctl reload NetworkManager
    2. Su Ubuntu con systemd-resolved, esegui i seguenti comandi. Sostituisci <domain> con il tuo dominio.

      export AD_DOMAIN="<domain>"
      mkdir -p /etc/systemd/resolved.conf.d
      printf '[Resolve]\nDNS=%s\nDomains=%s\n' "${KDC_IP}" "${AD_DOMAIN}" > /etc/systemd/resolved.conf.d/ad-dns.conf
      systemctl restart systemd-resolved
  4. Dall'admin host, riavvia CoreDNS in modo che AI Data Engine utilizzi le nuove impostazioni DNS. Esegui questo passaggio una sola volta per il cluster. CoreDNS inoltra le query per i nomi esterni al cluster ai name server nel /etc/resolv.conf file del nodo, quindi deve essere riavviato per recepire la modifica.

    1. Individua l'implementazione di CoreDNS.

      kubectl -n kube-system get deployments | grep -i coredns
    2. Riavvia la distribuzione. Sostituisci <coredns_deployment> con il nome del comando precedente.

      kubectl -n kube-system rollout restart deployment <coredns_deployment>
      kubectl -n kube-system rollout status deployment <coredns_deployment> --timeout=120s
  5. Verifica nuovamente la risoluzione dei nomi. Fai riferimento a Verifica la risoluzione dei nomi.

Aggiorna il file di configurazione di Kerberos

Se sostituisci krb5.conf nell'esportazione NFS dopo la configurazione, ad esempio copiandovi sopra un nuovo file, AI Data Engine continua a usare il file precedente finché non riavvii i servizi interessati.

Passaggi
  1. Sull'admin host, riavvia il servizio di montaggio ed elimina i precedenti processi di aggiornamento dei ticket.

    kubectl -n "${NAMESPACE}" rollout restart daemonset ds-mount-server
    kubectl -n "${NAMESPACE}" delete job -l app.kubernetes.io/name=ds-krb5-ticket-refresher --ignore-not-found
  2. Avvia un nuovo aggiornamento del ticket. Fai riferimento a Avvia il primo aggiornamento del ticket.

Risoluzione dei problemi di autenticazione Kerberos

Individua la causa di un errore Kerberos e ripristina la scansione delle tue condivisioni SMB/CIFS.

Sintomo Possibile causa Risoluzione

L'errore IP non consentito con Kerberos compare quando aggiungi una condivisione.

Il percorso di condivisione utilizza un indirizzo IP.

Inserisci il percorso di condivisione come FQDN.

kinit non riesce quando testi il keytab oppure non viene emesso alcun ticket.

La password o il realm non sono corretti, il realm non è in maiuscolo, l'account di scansione non supporta la crittografia AES256, l'admin host o un nodo non riesce a raggiungere il KDC sulla porta 88 oppure l'orologio di un nodo differisce da quello del KDC di una quantità superiore allo scarto consentito.

Verifica la password e il realm e conferma che l'account supporti la crittografia AES256. Apri la porta 88 verso il KDC e verifica che NTP sia attivo su ogni nodo. Quindi crea nuovamente il keytab.

L'operazione di aggiornamento del ticket non riesce oppure non viene creata alcuna cache dei ticket.

Il file keytab, il file principal o krb5.conf manca o è vuoto, oppure la proprietà del gruppo e le autorizzazioni non sono corrette.

Verifica che i file esistano nelle posizioni elencate in File Kerberos utilizzati da AI Data Engine. Verifica che il file keytab e il file del principal abbiano i permessi 640 e il gruppo 4321. Verifica che la directory della cache dei ticket sia di proprietà di root:4321 con permessi 770.

A volte i nomi non vengono risolti, oppure vengono risolti su un nodo ma non all'interno di AI Data Engine.

Un nodo elenca più di un name server e uno di essi non riesce a risolvere i nomi di Active Directory oppure CoreDNS non è stato riavviato dopo che hai modificato /etc/resolv.conf.

Rimuovi tutti i name server tranne il tuo DNS server Active Directory su ogni nodo e riavvia CoreDNS. Fai riferimento a Correggi la risoluzione dei nomi.

I nomi esterni non vengono risolti all'interno di AI Data Engine dopo che hai impostato il tuo Active Directory DNS server.

Il DNS server Active Directory non inoltra le query esterne.

Verifica che nslookup <external_fqdn> "${KDC_IP}" restituisca un risultato. In caso contrario, chiedi all'amministratore di Active Directory di abilitare l'inoltro DNS.

La scansione Kerberos funziona da un nodo ma non dagli altri. Viene visualizzato l'errore mount error(2) e dmesg sul nodo compare failed to create a new SMB session with Kerberos.

cifs-utils non è installato su ogni nodo.

Installa cifs-utils su ogni nodo. Per verificare l'installazione, esegui which cifs.upcall.

Compare l'errore mount error(126).

AI Data Engine non riesce a leggere krb5.conf dall'esportazione NFS.

Verifica che <export>/kerberos/krb5.conf esista e che kubectl -n "${NAMESPACE}" exec <pod_name> -- cat /etc/krb5.conf ne visualizzi il contenuto.

Le modifiche a krb5.conf non hanno effetto.

Il file è stato sostituito dopo l'installazione e AI Data Engine continua a utilizzare il file precedente.

Fai riferimento a Aggiorna il file di configurazione di Kerberos.

Il comando ktutil, kinit o klist non è stato trovato.

Gli strumenti client Kerberos non sono installati sull'admin host.

Installa gli strumenti client Kerberos. Fai riferimento a Installa i pacchetti necessari.

Il /etc/resolv.conf file su un nodo torna alle impostazioni precedenti dopo un riavvio.

Il gestore di rete sovrascrive il file.

Impedisci al gestore di rete di sovrascrivere le impostazioni DNS. Fai riferimento a Correggi la risoluzione dei nomi.

Rimuovi la configurazione Kerberos

Se non esegui più la scansione delle condivisioni SMB/CIFS con Kerberos, rimuovi l'origine dati e i file Kerberos.

Passaggi
  1. Dall'interfaccia utente di AI Data Engine, elimina l'origine dati SMB/CIFS che utilizza Kerberos.

  2. Sull'admin host, con l'esportazione NFS montata in /mnt/aide-config, elimina i file Kerberos.

    rm -f /mnt/aide-config/kerberos/kerberos_refresher/datasense.keytab
    rm -f /mnt/aide-config/kerberos/kerberos_refresher/kerberos_creds.env
    rm -f /mnt/aide-config/kerberos/krb5.conf
    rm -f /mnt/aide-config/kerberos/kerberos_ccache/krb5cc_shared
    umount /mnt/aide-config
  3. Se hai modificato le impostazioni DNS, ripristina le impostazioni originali.

    1. Su ogni nodo, ripristina il backup di /etc/resolv.conf.

      cp /etc/resolv.conf.bak /etc/resolv.conf
    2. Sui nodi RHEL in cui hai aggiunto una configurazione di NetworkManager, rimuovila.

      rm -f /etc/NetworkManager/conf.d/90-dns-none.conf
      systemctl reload NetworkManager
    3. Sui nodi Ubuntu in cui hai aggiunto una configurazione systemd-resolved, rimuovila.

      rm -f /etc/systemd/resolved.conf.d/ad-dns.conf
      systemctl restart systemd-resolved
    4. Dall'admin host, riavvia CoreDNS. Sostituisci <coredns_deployment> con il nome del deployment di CoreDNS.

      kubectl -n kube-system rollout restart deployment <coredns_deployment>