

 **Contribuisci a migliorare questa pagina** 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub ** link ** Modifica questa pagina su che si trova nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Risolvi i problemi relativi alle funzionalità kro
<a name="kro-troubleshooting"></a>

**Nota**  
Le funzionalità EKS sono completamente gestite ed eseguite all'esterno del cluster. Non hai accesso diretto ai namespace dei controller. È possibile configurare la distribuzione dei log del controller per la visibilità del comportamento del controller. Consulta [Accedi ai registri del controller EKS Capabilities](capabilities-controller-logs.md). La risoluzione dei problemi si concentra sullo stato delle funzionalità, sulla configurazione RBAC e sullo stato delle risorse.

## La funzionalità è ATTIVA ma non funziona ResourceGraphDefinitions
<a name="_capability_is_active_but_resourcegraphdefinitions_arent_working"></a>

Se la tua capacità kro mostra `ACTIVE` lo stato ma ResourceGraphDefinitions non sta creando risorse sottostanti, controlla lo stato della funzionalità, le autorizzazioni RBAC e lo stato delle risorse.

 **Verifica lo stato della funzionalità: **

È possibile visualizzare i problemi relativi all'integrità e allo stato delle funzionalità nella console EKS o utilizzando la AWS CLI.

 **Console**:

1. Apri la console Amazon EKS all'indirizzo https://console.aws.amazon.com/eks/home \#/clusters.

1. Seleziona il nome del cluster.

1. Scegli la scheda **Osservabilità**.

1. Scegli **Monitora cluster**.

1. Scegli la ** scheda ** Funzionalità per visualizzare lo stato e lo stato di tutte le funzionalità.

 ** AWS CLI: **

```
# View capability status and health
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-kro

# Look for issues in the health section
```

 Cause comuni:
+  **Autorizzazioni RBAC mancanti**: kro non dispone delle autorizzazioni per creare le risorse Kubernetes sottostanti
+  **Espressioni CEL non valide**: errori di sintassi in ResourceGraphDefinition
+  **Dipendenze tra le risorse**: risorse dipendenti non pronte
+  **Convalida dello schema**: l'istanza non soddisfa i requisiti dello schema RGD

 **Verifica le autorizzazioni RBAC: **

```
# Check if capability has cluster admin policy
kubectl get accessentry -A | grep kro
```

Se la funzionalità non dispone delle autorizzazioni richieste, associale alla voce di accesso della `AmazonEKSClusterAdminPolicy` funzionalità kro o crea politiche RBAC più restrittive per l'uso in produzione. Per informazioni dettagliate, vedi [Configura le autorizzazioni kro](kro-permissions.md).

 **Verifica lo stato: ResourceGraphDefinition **

```
# List all RGDs
kubectl get resourcegraphdefinition

# Describe specific RGD
kubectl describe resourcegraphdefinition my-rgd

# Check for validation errors
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions}'
```

ResourceGraphDefinitions hanno tre condizioni di stato chiave:
+  `ResourceGraphAccepted`- Se l'RGD ha superato la convalida (sintassi CEL, controllo del tipo, esistenza del campo)
+  `KindReady`- Se il CRD per la tua API personalizzata è stato generato e registrato
+  `ControllerReady`- Se kro sta controllando attivamente le istanze della tua API personalizzata

In caso `ResourceGraphAccepted` `False` affermativo, controlla il messaggio di condizione per individuare eventuali errori di convalida, ad esempio campi sconosciuti, mancata corrispondenza tra i tipi o dipendenze circolari.

## Istanze create ma le risorse sottostanti non vengono visualizzate
<a name="_instances_created_but_underlying_resources_not_appearing"></a>

Se esistono istanze di risorse personalizzate ma le risorse Kubernetes sottostanti (Deployments, Services ConfigMaps) non vengono create, verifica che kro disponga delle autorizzazioni e verifica la presenza di errori di composizione.

 **Controlla lo stato dell'**istanza:

```
# Describe the instance (replace with your custom resource kind and name)
kubectl describe {{custom-kind my-instance}}

# View instance events
kubectl get events --field-selector involvedObject.name={{my-instance}}

# Check instance status conditions
kubectl get {{custom-kind my-instance}} -o jsonpath='{.status.conditions}'

# Check instance state
kubectl get {{custom-kind my-instance}} -o jsonpath='{.status.state}'
```

Le istanze hanno un `state` campo che mostra lo stato di alto livello:
+  `ACTIVE`- L'istanza è in esecuzione correttamente
+  `IN_PROGRESS`- L'istanza è in fase di elaborazione o riconciliazione
+  `FAILED`- La riconciliazione dell'istanza non è riuscita
+  `DELETING`- L'istanza viene eliminata
+  `ERROR`- Si è verificato un errore durante l'elaborazione

Le istanze hanno anche quattro condizioni di stato:
+  `InstanceManaged`- I finalizzatori e le etichette sono impostati correttamente
+  `GraphResolved`- Creazione del grafico di runtime e risoluzione delle risorse
+  `ResourcesReady`- Tutte le risorse create e pronte
+  `Ready`- Lo stato generale dell'istanza (lo diventa solo `True` quando tutte le condizioni secondarie lo sono`True`)

Concentrati sulla `Ready` condizione per determinare lo stato dell'istanza. In caso `Ready` `False` affermativo, controlla le condizioni secondarie per identificare quale fase non è riuscita.

 **Verifica le autorizzazioni RBAC: **

La funzionalità kro necessita delle autorizzazioni per creare le risorse Kubernetes sottostanti definite nel tuo. ResourceGraphDefinitions

```
# Check if the capability has the AmazonEKSClusterAdminPolicy
kubectl get accessentry -A | grep kro
```

Se mancano le autorizzazioni, associale alla voce di accesso della `AmazonEKSClusterAdminPolicy` funzionalità kro o crea politiche RBAC più restrittive per l'uso in produzione. Per informazioni dettagliate, vedi [Configura le autorizzazioni kro](kro-permissions.md).

## Errori di espressione CEL
<a name="_cel_expression_errors"></a>

Gli errori di espressione CEL vengono rilevati al momento ResourceGraphDefinition della creazione, non quando vengono create le istanze. kro convalida tutta la sintassi CEL, verifica i tipi delle espressioni rispetto agli schemi Kubernetes e verifica l'esistenza dei campi quando si crea l'RGD.

 ****Errori di convalida CEL comuni:
+  **Riferimento al campo non definito**: riferimento a un campo che non esiste nello schema o nella risorsa
+  **Tipo non corrispondente**: l'espressione restituisce un tipo errato (ad esempio, una stringa in cui è previsto un numero intero)
+  **Sintassi non valida**: parentesi, virgolette o operatori mancanti nell'espressione CEL
+  **Tipo di risorsa sconosciuto**: riferimento a un CRD che non esiste nel cluster

 **Verifica lo stato di convalida RGD: **

```
# Check if RGD was accepted
kubectl get resourcegraphdefinition {{my-rgd}} -o jsonpath='{.status.conditions[?(@.type=="ResourceGraphAccepted")]}'

# View detailed validation errors
kubectl describe resourcegraphdefinition {{my-rgd}}
```

In caso `ResourceGraphAccepted` `False` affermativo, il messaggio di condizione contiene l'errore di convalida.

 **Esempio di espressioni ** CEL valide:

```
# Reference schema field
${schema.spec.appName}

# Conditional expression
${schema.spec.replicas > 1}

# String template (expressions must return strings)
name: "${schema.spec.appName}-service"

# Standalone expression (can be any type)
replicas: ${schema.spec.replicaCount}

# Resource reference
${deployment.status.availableReplicas}

# Optional field access (returns null if field doesn't exist)
${configmap.data.?DATABASE_URL}
```

## Le dipendenze delle risorse non si risolvono
<a name="_resource_dependencies_not_resolving"></a>

kro deduce automaticamente le dipendenze dalle espressioni CEL e crea le risorse nell'ordine corretto. Se le risorse non vengono create come previsto, controlla l'ordine delle dipendenze e la disponibilità delle risorse.

 **Visualizza l'ordine di creazione calcolato: **

```
# See the order kro will create resources
kubectl get resourcegraphdefinition {{my-rgd}} -o jsonpath='{.status.topologicalOrder}'
```

Questo mostra l'ordine calcolato in base ai riferimenti alle espressioni CEL tra le risorse.

 **Verifica la disponibilità ** delle risorse:

```
# View instance status to see which resources are ready
kubectl get {{custom-kind my-instance}} -o jsonpath='{.status}'

# Check specific resource status
kubectl get deployment {{my-deployment}} -o jsonpath='{.status.conditions}'
```

 **Verifica le condizioni ReadyWhen (se utilizzate): **

Il campo `readyWhen` è facoltativo. Se non specificate, le risorse sono considerate pronte subito dopo la creazione. Se hai definito `readyWhen` delle condizioni, verifica che controllino correttamente la disponibilità delle risorse:

```
resources:
  - id: deployment
    readyWhen:
      - ${deployment.status.availableReplicas == deployment.spec.replicas}
```

 **Controlla gli eventi ** delle risorse:

```
# View events for the underlying resources
kubectl get events -n {{namespace}} --sort-by='.lastTimestamp'
```

## Errori di convalida dello schema
<a name="_schema_validation_failures"></a>

Se le istanze non vengono create a causa di errori di convalida dello schema, verificate che l'istanza soddisfi i requisiti dello schema RGD.

 **Controlla gli errori di convalida: **

```
# Attempt to create instance and view error
kubectl apply -f instance.yaml

# View existing instance validation status
kubectl describe {{custom-kind my-instance}} | grep -A 5 "Validation"
```

 **Problemi di convalida comuni: **
+  **Campi obbligatori mancanti**: l'istanza non fornisce tutti i campi dello schema obbligatori
+  **Mancata corrispondenza del tipo**: fornisce una stringa in cui è previsto un numero intero
+  **Valore enum non valido**: utilizzo di un valore non presente nell'elenco consentito
+  **Mancata corrispondenza del modello**: la stringa non corrisponde al modello regex

 **Rivedi lo schema RGD: **

```
# View the schema definition
kubectl get resourcegraphdefinition {{my-rgd}} -o jsonpath='{.spec.schema}'
```

Assicurati che la tua istanza fornisca tutti i campi obbligatori con i tipi corretti.

## Fasi successive
<a name="_next_steps"></a>
+  [considerazioni kro per EKS](kro-considerations.md)- considerazioni e migliori pratiche
+  [Configura le autorizzazioni kro](kro-permissions.md)- Configura RBAC per i team di piattaforma e applicazione
+  [concetti kro](kro-concepts.md)- Comprendi i concetti di Kro e il ciclo di vita delle risorse
+  [Risoluzione dei problemi relativi alle funzionalità EKS](capabilities-troubleshooting.md)- Guida generale alla risoluzione dei problemi relativi alle funzionalità