Risolvere i problemi relativi a ServiceInstances di Kf

Segui questi passaggi per risolvere i vari problemi che possono verificarsi durante l'utilizzo di ServiceInstances di Kf.

L'eliminazione dell'oggetto è bloccata

Esegui il seguente comando per ottenere le informazioni sulla risorsa, quindi controlla le cause elencate di seguito:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

L'interfaccia a riga di comando kf può aiutarti a verificare alcuni dei problemi:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Possibile causaSoluzione
Il timestamp di eliminazione è nel futuro.

Con lo sfasamento dell'orologio, il valore metadata.deletionTimestamp potrebbe essere ancora nel futuro. Attendi qualche minuto per vedere se l'oggetto è stato eliminato.

Nell'oggetto esistono finalizzatori.

I finalizzatori sono presenti nell'oggetto e devono essere rimossi dal controller che li ha impostati prima dell'eliminazione dell'oggetto.

Se vuoi forzare un'eliminazione senza attendere i finalizzatori, modifica l'oggetto per rimuoverli dall'array metadata.finalizers.

Avviso: la rimozione dei finalizzatori senza consentire il completamento dei controller può causare errori, problemi di sicurezza, perdita di dati o risorse orfane.

Possono esistere oggetti dipendenti.

L'oggetto potrebbe essere in attesa dell'eliminazione degli elementi dipendenti prima di essere eliminato. Per saperne di più, consulta la guida garbage collection Kubernetes. Chiedi a un amministratore di controllare tutti gli oggetti nello spazio dei nomi e nel cluster per verificare se uno di questi blocca l'eliminazione.

Se devi rimuovere l'oggetto senza attendere i componenti dipendenti, utilizza kubectl delete con il flag cascade impostato su: --cascade=orphan.

Deviazione dello stato di generazione degli oggetti

Esegui il seguente comando per ottenere le informazioni sulla risorsa, quindi controlla le cause elencate di seguito:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

L'interfaccia a riga di comando kf può aiutarti a verificare alcuni dei problemi:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Possibile causaSoluzione
L'oggetto presenta una discrepanza nella versione di generazione.

Questo errore si verifica in genere quando il controller Kf non ha letto la versione più recente dell'oggetto. Di solito questo errore viene recuperato automaticamente quando le repliche Kubernetes raggiungono la coerenza finale e in genere non richiede alcuna azione da parte degli utenti.

La riconciliazione degli oggetti non è riuscita

Esegui il seguente comando per ottenere le informazioni sulla risorsa, quindi controlla le cause elencate di seguito:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

L'interfaccia a riga di comando kf può aiutarti a verificare alcuni dei problemi:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Possibile causaSoluzione
L'oggetto ha un errore del modello

Questo errore si verifica in genere se l'utente ha inserito una proprietà non valida nella specifica della risorsa personalizzata o se la configurazione nello spazio/nel cluster non è corretta.

Per comprendere la causa principale, l'utente può leggere il messaggio di errore più lungo in status.conditions dell'oggetto utilizzando il comando:kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. Ad esempio: kubectl describe serviceinstance my-service -n my-space.

Nell'oggetto è presente l'errore ChildNotOwned (conflitti di nomi)

In genere questo errore indica che gli oggetti che il controller sta tentando di creare esistono già. Questo accade se l'utente ha creato una risorsa K8s con lo stesso nome di quella che il controller sta tentando di creare; tuttavia, più spesso si verifica se l'utente elimina una risorsa e il controller Kf tenta di ricrearla. Se una risorsa secondaria è ancora presente, il relativo proprietario sarà la vecchia risorsa che non esiste più.

Per risolvere il problema, è consigliabile che l'utente elimini la risorsa interessata e la ricrei. Per eliminare l'oggetto, utilizza un comando di eliminazione Kf o il comando kubectl delete RESOURCE_TYPE RESOURCE_NAME -n SPACE. Ad esempio, kf delete-space my-space o kubectl delete space my-space.

Per ricreare una risorsa, utilizza un comando Kf. Ad esempio: kf create-space my-space.

L'oggetto ha ReconciliationError

In genere, questo errore indica che si è verificato un problema con la chiamata HTTP effettuata (dal controller Kf) al servizio API Kubernetes per creare/aggiornare la risorsa.

Per comprendere la causa principale, l'utente può leggere il messaggio di errore più lungo in status.conditions dell'oggetto utilizzando il comando:kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. Ad esempio: kubectl describe serviceinstance my-service -n my-space.

La riconciliazione delle risorse di backup non è riuscita

Esegui il seguente comando per ottenere le informazioni sulla risorsa, quindi controlla le cause elencate di seguito:

kubectl get serviceinstances.kf.dev -n SPACE_NAME SERVICEINSTANCE_NAME -o yaml

L'interfaccia a riga di comando kf può aiutarti a verificare alcuni dei problemi:

kf doctor --space SPACE_NAME serviceinstance/SERVICEINSTANCE_NAME
Possibile causaSoluzione
Errore DeprovisionFailed della risorsa di supporto.

Questo errore si verifica in genere quando non è possibile eseguire il deprovisioning delle risorse di supporto (database MySQL ospitato su un server OSB esterno). Kf non può determinare in modo sicuro se la risorsa dipendente è stata eliminata.

Per risolvere l'errore, è consigliabile che l'utente legga il messaggio di errore dettagliato in status.conditions dell'oggetto utilizzando il comando:kubectl describe RESOURCE_TYPE RESOURCE_NAME -n space. Ad esempio: kubectl describe servipropogatesceinstance my-service -n my-space.

Una volta confermato il messaggio di errore, chiedi a un amministratore di controllare la risorsa di supporto e di eliminarla manualmente. Una volta stabilito che la risorsa di supporto è stata rilasciata in sicurezza, la risorsa Kf interessata può essere riconciliata correttamente rimuovendo manualmente Finalizer dalla specifica dell'oggetto, utilizzando il comando kubectl edit serviceinstance my-service -n my-space.