In questa pagina viene descritto come risolvere i problemi che potrebbero verificarsi durante l'installazione o l'upgrade della modalità privata Anthos.
Risoluzione dei problemi relativi ai prerequisiti
Per avviare la risoluzione dei problemi, la modalità privata di Anthos richiede l'accesso a una workstation amministrativa. Per accedere alla workstation amministrativa, esegui questo comando:
ssh <USERNAME>@<WORKSTATION>
cd ./anthos-baremetal-private-mode
export PATH=$PWD/bin:$PATH
Crea cluster
Questa sezione spiega come risolvere i problemi di creazione dei cluster in modalità privata di Anthos.
Errore di creazione del cluster di amministrazione
Questa sezione elenca la configurazione comune dei cluster di amministrazione e gli errori di preflight e suggerimenti per risolverli.
Errori di configurazione
I problemi comuni di configurazione del cluster di amministrazione includono un'annotazione mancante nella configurazione, nessuna configurazione di autenticazione per il registro e un errore nella creazione del cluster di bootstrap.
Annotazione mancante nella configurazione
Se durante la creazione delle risorse del pool di nodi il file di configurazione non include un'annotazione, potresti visualizzare il seguente errore:
Cluster.baremetal.cluster.gke.io "admin" is invalid: [Spec.LoadBalancer.AddressPools: Forbidden: Field not allowed for admin clusters, Spec.GKEConnect: Required value: Field is required].
Per risolvere questo problema, aggiungi un'annotazione al file di configurazione del cluster di amministrazione e impostala su true
:
annotations:
baremetal.cluster.gke.io/private-mode: "true"
Vedi Cluster di amministrazione e pool di nodi per un esempio di annotazione applicata in un file di configurazione del cluster di amministrazione.
Configurazione di autenticazione mancante per il registro
Se manca la configurazione di autenticazione, potresti riscontrare l'errore no auth config found for the registry
.
Assicurati che il pullCredentialConfigPath
specificato nel file admin.yaml
contenga la configurazione dell'autenticazione per l'endpoint.
Ad esempio, se l'endpoint è https://10.200.0.2
e pullCredentialConfigPath
è /root/.docker/config.json
, il file config.json
contiene la seguente voce di autenticazione:
{
"auths": {
"10.200.0.2": {
"auth": "<base64 encoded auth>"
}
}
}
Se la voce di autenticazione per il Registro di sistema non è presente, aggiorna il file config.json
accedendo al Registro di sistema:
docker login <registry> -u <username> -p <password>
Creazione dell'errore del cluster di bootstrap
Potresti riscontrare il seguente errore durante la creazione del cluster:
failed: error creating bootstrap cluster: failed to pull kind image kindest/node:v0.11.1-gke.7-v1.20.9-gke.101 from registry mirror(s)
Se viene visualizzato l'errore di creazione del cluster di bootstrap, assicurati che tutte le immagini siano caricate nel registro privato:
actl images push --private-registry=<registry>
Un comando di esempio ha il seguente aspetto:
actl images push --private-registry=10.200.0.2/library
Errori preflight
Quando crei il cluster di amministrazione in modalità privata di Anthos, potrebbe essere necessario correggere un errore di creazione del cluster con errori preliminari, bloccare un cluster o eseguire alcuni passaggi generali per la risoluzione dei problemi.
Errore di creazione del cluster con errori preflight
Se la verifica preflight non è riuscita, potresti vedere il seguente messaggio di errore:
unable to create cluster: unable to create cluster: preflight check failed
La modalità privata di Anthos raccoglie i log degli errori corrispondenti nella directory actl-workspace/admin/log/preflight-<timestamp>/
, ad esempio actl-workspace/admin/log/preflight-20210907-205726/
.
Per risolvere il problema, controlla quanto segue:
- ogni log del nodo non riuscito nel file denominato indirizzo IP del nodo
- log relativi alla rete nel file
node-network
In base ai dati dei log, verifica se sono presenti errori evidenti come requisiti minimi delle macchine non soddisfatti o porte in conflitto. Aggiorna i computer e riprova.
Creazione cluster bloccata
Se la creazione del cluster richiede più tempo, ad esempio più di 30 minuti per un cluster a tre nodi, controlla il cluster bootstrap locale per verificare se sono presenti errori durante il pull dell'immagine:
kubectl --kubeconfig actl-workspace/.kindkubeconfig get pods -A
Se i pod hanno lo stato ImagePullErr
, assicurati che tali immagini siano caricate nel Registro di sistema:
actl images push --private-registry=<registry>
Un comando di esempio ha il seguente aspetto:
actl images push --private-registry=10.200.0.2/library
Se un job di creazione cluster specifico ha lo stato Error
, controlla i log del pod corrispondente:
kubectl --kubeconfig actl-workspace/.kindkubeconfig get pods -n cluster-admin
kubectl --kubeconfig actl-workspace/.kindkubeconfig logs <pod-name> -n cluster-admin
Esamina i log per vedere se è possibile correggere manualmente eventuali errori sul computer. Puoi ottenere ulteriori errori dalla macchina utilizzando SSH per accedere al computer ed eseguire journalctl --no-pager -l
.
Per assicurarti che i servizi importanti funzionino, esegui il comando seguente:
service containerd status
service kubelet status
journalctl -u containerd
journalctl -u kubelet
# If needed sudo systemctl restart <service> to fix issues.
# sudo service <service> restart
# e.g.,
# sudo service containerd restart
Problemi generici
Per risolvere i problemi di un nodo in generale, utilizza SSH per la connessione a un nodo ed esegui il seguente comando:
journalctl --no-pager -l
Verifica se nei log sono presenti errori.
Errore di creazione del cluster
Utilizza SSH per connetterti alla macchina del piano di controllo e visualizzare i pod nel cluster:
sudo kubectl --kubeconfig /etc/kubernetes/admin.conf get po -A
Problemi di rete
Questa sezione spiega i problemi più comuni relativi alla rete in modalità privata di Anthos ed elenca i passaggi per risolverli.
- Per vedere la connessione tra ciascun nodo e controllare gli errori relativi alla rete, utilizza
ip route
. Quando il VIP del piano di controllo non è raggiungibile, utilizza SSH per connetterti a un nodo del piano di controllo ed esegui:
journalctl -u containerd --no-pager -l # Check the logs of those pods as well. sudo kubectl --kubeconfig /etc/kubernetes/admin.conf -n kube-system get po | grep -E "haproxy|keepalived" sudo crictl logs `sudo crictl ps | grep anthos-baremetal-haproxy | awk '{print $1}'` sudo crictl logs `sudo crictl ps | grep anthos-baremetal-keepalived | awk '{print $1}'`
Questo problema può verificarsi se le immagini
keepalived
ehaproxy
non vengono caricate in un registro privato.Da utilizzare solo dopo la creazione riuscita del cluster di amministrazione. Se gli IP di servizio non sono raggiungibili, controlla i log per i pod
metallb
:kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig logs -l app=metallb -l component=controller -n kube-system kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig logs -l app=metallb -l component=speaker -n kube-system
Se tutti i pod sono bloccati nella creazione del contenitore, procedi in uno dei seguenti modi:
- Controlla il deployment dell'operatore anetd e i log del daemonset anetd.
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get pods -l name=cilium-operator -n kube-system kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig logs -l name=cilium-operator -n kube-system kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get pods -l k8s-app=cilium -n kube-system kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig logs -l k8s-app=cilium -n kube-system
- Se non è definito un gateway predefinito, iptables potrebbe non funzionare correttamente, quindi l'operatore anetd potrebbe non riuscire a raggiungere il server kube-api.
ip route add default via <some-ip> iptables-save -t nat iptables-save -t filter
Prova a riavviare il nodo per vedere se il problema si risolve.
Errori comuni
I comandi kubectl non funzionano
Se non hai configurato lo strumento a riga di comando kubectl per la connessione a un server API Kubernetes remoto, verrà visualizzato il seguente messaggio di errore:
$ kubectl ...
The connection to the server localhost:8080 was refused - did you specify the right host or port?
Assicurati di aver impostato un kubeconfig. A tale scopo, imposta la variabile di ambiente KUBECONFIG o esegui i comandi con il flag --kubeconfig
.
Ad esempio, per impostare la console di amministrazione, procedi in uno dei seguenti modi:
- Imposta la variabile di ambiente sul criterio kubeconfig:
export KUBECONFIG=$HOME/anthos-baremetal-private-mode/actl-workspace/admin/admin-kubeconfig
- Utilizza l'opzione della riga di comando kubeconfig:
kubectl --kubeconfig=$HOME/anthos-baremetal-private-mode/actl-workspace/admin/admin-kubeconfig
Per ulteriori dettagli, consulta Organizzazione dell'accesso ai cluster utilizzando i file kubeconfig.
Errore durante la creazione del cluster utente
Sulla workstation, per accedere al cluster di amministrazione e visualizzare i pod correlati ai cluster utente, utilizza il comando seguente:
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get po -n cluster-CLUSTER_NAME
Sostituisci CLUSTER_NAME
con il nome del tuo cluster.
Se il cluster utente continua a non riuscire, prova a eliminare un cluster utente e applica nuovamente la seguente configurazione:
# Delete user cluster export ADMIN_KUBECONFIG=$(pwd)/actl-workspace/admin/admin-kubeconfig export USER_CLUSTER_NAME=user-1 kubectl -n cluster-${USER_CLUSTER_NAME} delete Cluster $USER_CLUSTER_NAME --kubeconfig=${ADMIN_KUBECONFIG} # Re-apply the user cluster YAML file KUBECONFIG=${ADMIN_KUBECONFIG} kubectl apply -f user.yaml # Wait until client config ready and stored in the path "$(pwd)/${USER_CLUSTER_NAME}-kubeconfig" export USER_KUBECONFIG=$(pwd)/${USER_CLUSTER_NAME}-kubeconfig waittime="5 minutes" endtime=$(date -ud "$waittime" +%s) while ! KUBECONFIG=${ADMIN_KUBECONFIG} actl clusters baremetal get-credentials -c "${USER_CLUSTER_NAME}" -o "${USER_KUBECONFIG}"; do if [[ $endtime -le $(date -u +%s) ]]; then echo "Client config not ready in $waittime, terminating" exit 1 fi echo "client config not ready, sleeping 30s" sleep 30 done # Check the user cluster status until all nodes are ready KUBECONFIG=${USER_KUBECONFIG} kubectl get nodes
Creazione di Anthos Management Center
Risorse insufficienti sul cluster di amministrazione
La risorsa personalizzata AdminOperator
configura l'installazione di Anthos Management Center. Per verificare se il controller ha riscontrato problemi durante l'installazione di Management Center, consulta gli eventi e i log di Google Kubernetes Engine di questa risorsa e del controller personalizzati:
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig describe adminoperator admin-operator
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig logs -n anthos-management-center-operator -l control-plane=admin-operator
Errori di pull delle immagini
L'avvio di pod nel cluster potrebbe causare problemi che impediscono a AdminOperator
di segnalare l'esito positivo.
# Get all pods that aren't in a Running state or have succeeded.
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get pods --field-selector=status.phase!=Running,status.phase!=Succeeded -A
# Examine the pods of interest that are failing...
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig describe pod --namespace [NAMESPACE] [POD_OF_INTEREST]
Upgrade
Anthos su Bare Metal
Per maggiori dettagli sulla risoluzione dei problemi relativi a un upgrade in Anthos su Bare Metal, consulta la pagina relativa al recupero di un upgrade non riuscito in Anthos su Bare Metal.
Centro di gestione Anthos
Per verificare la versione del componente installata, utilizza:
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get adminoperator admin-operator -o yaml
Ecco un esempio di risultato:
apiVersion: managementcenter.anthos.cloud.google.com/v1
kind: AdminOperator
spec:
updateConfigOverride:
policies:
- name: anthos-config-management
versionConstraint: <=1.8.0-gke.0
status:
components:
- name: anthos-bare-metal
version: 1.8.0-gke.0
versionConstraint: <=1.8.0-gke.0
- name: anthos-config-management
version: 1.8.0-gke.0
versionConstraint: <=1.8.0-gke.0
- name: anthos-service-mesh
version: 1.8.0-gke.0
versionConstraint: <=1.8.0-gke.0
version: 1.8.0-gke.0
In un ambiente Anthos in modalità privata di cui è stato eseguito il deployment, l'oggetto status.version
nell'oggetto AdminOperator
indica la versione della release in modalità privata di Anthos.
Ad esempio, 1.8.0-gke.0
. status.components
mostra lo stato della versione per ciascun componente. Nel file sono elencate la versione osservata e il vincolo di versione per ciascun componente di cui è stato eseguito il deployment.
Sia status.version
sia status.components
devono essere sempre disponibili, altrimenti l'installazione è danneggiata.
Il valore spec.updateConfigOverride
è facoltativo, È presente solo se gli operatori infrastrutturali impostano manualmente il campo per eseguire l'upgrade di un componente specifico. Se il campo viene omesso, tutti i componenti vengono eseguiti sulla stessa versione di AdminOperator
.
Controllare i pacchetti nel Centro aggiornamenti
Solo i pacchetti offerti nel Centro aggiornamenti vengono sottoposti a deployment nel Centro gestione.
Ad esempio, se inizialmente installi il cluster di amministrazione con 1.8.0-gke.0
release e successivamente esegui l'upgrade a 1.8.1-gke.0
, il Centro aggiornamenti contiene due gruppi di pacchetti. L'eliminazione della risorsa UpdateItem
per un componente utilizzato attivamente potrebbe danneggiare l'installazione in modalità privata di Anthos.
kubectl --kubeconfig ./actl-workspace/admin/admin-kubeconfig get updateitems -n anthos-management-center
Ecco un esempio di risultato:
NAME AGE
anthos-config-management-1.8.0-gke.0 13d
anthos-service-mesh-1.8.0-gke.0 13d