Perché mi compare l'errore " MetadataServiceNotEnabled " quando accedo a File Storage for VPC?

Cloud privato virtuale

Se il pod o il PVC generano un errore " MetadataServiceNotEnabled " durante l'utilizzo della crittografia in transito (EIT) con File Storage for VPC, utilizzare questa guida per identificare e risolvere la causa.

Quando si utilizza la crittografia in transito (EIT) con File Storage for VPC, il pod o il PVC genera un errore " MetadataServiceNotEnabled ".

Negli eventi del pod o nell'output del comando describe viene visualizzato un messaggio di errore simile a quello riportato nell'esempio seguente:

Code: MetadataServiceNotEnabled,
Description: Failed to mount target.,
Action: Metadata service might not be enabled for worker node.
  Make sure to use IKS>=1.30 or ROKS>=4.16 cluster.

Questo errore indica che il processo di montaggio EIT ha tentato di accedere al servizio dei metadati dell'istanza all'indirizzo 169.254.169.254, ma non ha ricevuto alcuna risposta. Ci sono due cause alla radice indipendenti: controllale entrambe.

Risoluzione del problema

Verificare le seguenti cause alla radice.

Causa principale A — La versione del cluster è troppo vecchia

EIT richiede la versione 4.16 o successiva di ROKS. Nei cluster meno recenti, l'endpoint del servizio dei metadati non è disponibile per i carichi di lavoro.

Verifica la versione attuale del cluster per accertarti che soddisfi i requisiti minimi. L'output mostra lo stato " Pending " o " normal " e la versione " Kubernetes ".

ibmcloud ks cluster get --cluster CLUSTER_ID | grep "Version"

Risoluzione: aggiornare il cluster alla versione 4.16 o successive di ROKS.

Causa principale B — Nel cluster "Secure by Default" manca la regola relativa ai metadati in uscita

Per i cluster “Secure by Default”, il traffico in uscita verso 169.254.169.254 viene bloccato a meno che non venga aggiunta una regola di uscita esplicita al gruppo di sicurezza “ kube-<clusterID> ”. Senza questa regola, il processo EIT non può accedere al servizio dei metadati nemmeno su una versione del cluster supportata.

Questa regola viene aggiunta automaticamente per i cluster ROKS a partire dalla versione 4.18 e successive. Per le versioni precedenti di Cluster, aggiungere la regola manualmente.

  1. Verifica se la regola in uscita esiste già. Se il comando restituisce una riga contenente " 169.254.169.254", la regola è presente e non è questa la causa.

    ibmcloud is sg kube-CLUSTER_ID | grep 169.254.169.254
    
  2. Se la regola non è presente, aggiungila.

    ibmcloud is sg-rulec kube-CLUSTER_ID outbound \
      --protocol all \
      --remote 169.254.169.254
    

    In alternativa, aggiungere la regola dall'interfaccia utente di IBM Cloud alla voce " VPC Infrastructure" > "Security groups" > " kube-<clusterID> " > "Outbound rules " con i seguenti valori:

    Valori delle regole in uscita per l'accesso al servizio di metadati
    Campo Valore
    Protocollo Qualsiasi
    Tipo di origine Qualsiasi
    Source 0.0.0.0/0
    Destinazione 169.254.169.254
  3. Dopo aver aggiunto la regola, riprova a eseguire il pod che non funzionava. Non è necessario riavviare il nodo.

Se il problema persiste dopo aver effettuato entrambi i controlli, apri un ticket di assistenza rivolgendoti al team di IBM Cloud Container Storage.