Risolvere i problemi del motore del servizio Azure Kubernetes nell'hub di Azure Stack

È possibile che si verifichi un problema durante la distribuzione o l'uso del motore del servizio Azure Kubernetes nell'hub di Azure Stack. Questo articolo illustra i passaggi per risolvere i problemi di distribuzione del motore del servizio Azure Kubernetes. Raccogliere informazioni sul motore del servizio Azure Kubernetes, raccogliere i log di Kubernetes ed esaminare i codici di errore dell'estensione dello script personalizzati. È anche possibile aprire un problema di GitHub per il motore del servizio Azure Kubernetes.

Nota

Per AKSe versione 0.75.3 e successive, i aks-engine comandi seguenti inizieranno con aks-engine-azurestack anziché aks-engine.

Risolvere i problemi di installazione del motore del servizio Azure Kubernetes

Se i passaggi di installazione precedenti non sono riusciti, è possibile installare il motore del servizio Azure Kubernetes usando gestione pacchetti GoFish. GoFish si descrive come una Homebrew multipiattaforma.

Le istruzioni per l'uso di GoFish per installare il motore del servizio Azure Kubernetes sono disponibili qui.

Raccogliere log di nodi e cluster

È possibile trovare le istruzioni sulla raccolta di log di nodi e cluster in Recupero di log di nodi e cluster.

Prerequisiti

Questa guida presuppone che l'interfaccia della riga di comando di Azure e il motore del servizio Azure Kubernetes siano già stati scaricati.

Questa guida presuppone anche che sia stato distribuito un cluster usando il motore del servizio Azure Kubernetes. Per altre informazioni, vedere Distribuire un cluster Kubernetes con il motore del servizio Azure Kubernetes nell'hub di Azure Stack .

Recupero dei log

Il aks-engine get-logs comando può essere utile per risolvere i problemi relativi al cluster. Il comando genera, raccoglie e scarica un set di file nella workstation. I file includono la configurazione del nodo, lo stato e la configurazione del cluster e configurare i file di log.

A livello generale: il comando funziona stabilendo una sessione SSH in ogni nodo, eseguendo uno script di raccolta log che raccoglie e comprime i file pertinenti e scarica il file .ZIP nel computer locale.

Autenticazione SSH

Per stabilire una sessione SSH ai nodi Linux del cluster, è necessaria una chiave privata SSH valida. Le credenziali di Windows vengono archiviate nel modello API e verranno caricate da questa posizione. Impostare windowsprofile.sshEnabled su true per abilitare SSH nei nodi di Windows.

Caricare i log in un contenitore dell'account di archiviazione

Dopo aver recuperato correttamente i log del cluster, il motore del servizio Azure Kubernetes può salvarli in un contenitore dell'account di archiviazione di Azure se è impostato un parametro facoltativo --upload-sas-url . Il motore del servizio Azure Kubernetes prevede che il nome del contenitore faccia parte dell'URL di firma di accesso condiviso fornito. Il formato previsto è https://{blob-service-uri}/{container-name}?{sas-token}.

Nota

Gli account di archiviazione nei cloud personalizzati che usano il provider di identità AD FS non sono ancora supportati.

Nodi non in grado di aggiungere il cluster

Per impostazione predefinita, aks-engine get-logs raccoglie i log dai nodi che sono stati aggiunti correttamente al cluster. Per raccogliere i log dalle macchine virtuali che non sono state in grado di aggiungere il cluster, impostare il flag --vm-names:

--vm-name k8s-pool-01,k8s-pool-02

Utilizzo per get-logs del motore del servizio Azure Kubernetes

Supponendo che sia stato distribuito un cluster e che il modello API usato originariamente per distribuire tale cluster sia archiviato in _output/<dnsPrefix>/apimodel.json, è quindi possibile raccogliere i log che eseguono un comando simile al seguente:

aks-engine get-logs \
    --location <location> \
    --api-model _output/<dnsPrefix>/apimodel.json \
    --ssh-host <dnsPrefix>.<location>.cloudapp.azure.com \
    --linux-ssh-private-key ~/.ssh/id_rsa

Parametri

Parametro Obbligatorio Descrizione
--location Posizione di Azure del gruppo di risorse del cluster.
--api-model Percorso del modello API generato per il cluster.
--ssh-host FQDN, o indirizzo IP, di un listener SSH in grado di raggiungere tutti i nodi del cluster.
--linux-ssh-private-key Percorso di una chiave privata SSH che può essere usata per creare una sessione remota nei nodi Linux del cluster.
--output-directory No Directory di output, derivata da --api-model se mancante.
--control-plane-only No Raccoglie solo i log dai nodi del piano di controllo.
--vm-names No Raccoglie solo i log dalle macchine virtuali specificate (nomi delimitati da virgole).
--upload-sas-url No URL di firma di accesso condiviso dell'account di archiviazione di Azure per caricare i log raccolti.

Esaminare i codici di errore dell'estensione dello script personalizzato

Il motore del servizio Azure Kubernetes produce uno script per ogni server Ubuntu come risorsa per l'estensione dello script personalizzato (CSE) per eseguire attività di distribuzione. Se lo script genera un errore, verrà registrato un errore in /var/log/azure/cluster-provision.log. Gli errori vengono visualizzati nel portale. Il codice di errore può essere utile per capire il caso del problema. Per altre informazioni sui codici di uscita cse, vedere cse_helpers.sh.

Fornire i log di Kubernetes a un tecnico del supporto Tecnico Microsoft

Se dopo aver raccolto ed esaminato i log non è ancora possibile risolvere il problema, è possibile avviare il processo di creazione di un ticket di supporto e fornire i log raccolti.

L'operatore può combinare i log prodotti insieme ad altri log di sistema che potrebbero essere necessari al supporto tecnico Microsoft. L'operatore può renderli disponibili a Microsoft.

È possibile fornire i log di Kubernetes in diversi modi:

  • È possibile contattare l'operatore dell'hub di Azure Stack. L'operatore usa le informazioni dei log archiviati nel file .ZIP per creare il caso di supporto.
  • Se si dispone dell'URL di firma di accesso condiviso per un account di archiviazione in cui è possibile caricare i log di Kubernetes, è possibile includere il comando e il flag seguenti con l'URL di firma di accesso condiviso per salvare i log nell'account di archiviazione:
    aks-engine get-logs -upload-sas-url <SAS-URL>
    
    Per istruzioni, vedere Caricare i log in un contenitore dell'account di archiviazione.
  • Se si è un operatore cloud, è possibile:

Aprire i problemi di GitHub

Se non è possibile risolvere l'errore di distribuzione, è possibile aprire un problema di GitHub.

  1. Aprire un problema di GitHub nel repository del motore del servizio Azure Kubernetes.

  2. Aggiungere un titolo usando il formato seguente: Errore CSE: exit code <INSERT_YOUR_EXIT_CODE>.

  3. Includere le informazioni seguenti nel problema:

    • File di configurazione del cluster, apimodel.json, usato per distribuire il cluster. Rimuovere tutti i segreti e le chiavi prima di pubblicarlo in GitHub.

    • Output del comando get nodeskubectl seguente.

    • Contenuto di /var/log/azure/cluster-provision.log da un nodo non integro.

Passaggi successivi