¿Por qué aparece el error « MetadataServiceNotEnabled » al acceder a File Storage for VPC?

Nube privada virtual

Si tu pod o PVC presenta un error « MetadataServiceNotEnabled » al utilizar el cifrado en tránsito (EIT) con File Storage for VPC, consulta este tema para identificar y resolver la causa.

Cuando utilizas el cifrado en tránsito (EIT) con File Storage for VPC, tu pod o PVC falla con un error de « MetadataServiceNotEnabled ».

Aparece un mensaje de error similar al del siguiente ejemplo en los eventos de tu pod o en la salida del comando «describe»:

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.

Este error significa que el proceso de montaje de EIT intentó acceder al servicio de metadatos de la instancia en 169.254.169.254, pero no recibió respuesta. Hay dos causas fundamentales independientes: comprueba ambas.

Resolución del problema

Comprueba las siguientes causas fundamentales.

Causa principal A: la versión del clúster es demasiado antigua

EIT requiere la versión 4.16 o posterior de ROKS. En los clústeres más antiguos, el punto final del servicio de metadatos no está disponible para las cargas de trabajo.

Comprueba la versión actual del clúster para confirmar si cumple los requisitos mínimos. La salida muestra el estado « Pending » o « normal » y la versión « Kubernetes ».

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

Solución: Actualizar el clúster a la versión 4.16 de ROKS o posterior.

Causa raíz B: al clúster «Secure by Default» le falta la regla de metadatos de salida

En el caso de los clústeres «Secure by Default», el tráfico saliente hacia 169.254.169.254 queda bloqueado a menos que se añada una regla de salida explícita al grupo de seguridad « kube-<clusterID> ». Sin esta regla, el proceso EIT no puede acceder al servicio de metadatos, ni siquiera en una versión del clúster compatible.

Esta regla se añade automáticamente en los clústeres de ROKS a partir de la versión 4.18 y posteriores. En el caso de versiones anteriores del clúster, añade la regla manualmente.

  1. Comprueba si la regla de salida ya existe. Si el comando devuelve una línea que contenga « 169.254.169.254 », la regla está presente y este no es el motivo.

    ibmcloud is sg kube-CLUSTER_ID | grep 169.254.169.254
    
  2. Si no existe la regla, añádela.

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

    También puedes añadir la regla desde la interfaz de usuario de IBM Cloud, en «VPC Infrastructure» > «Security groups» > « kube-<clusterID> » > «Outbound rules», con los siguientes valores:

    Valores de las reglas de salida para el acceso al servicio de metadatos
    Campo Valor
    Protocolo Cualquiera
    Tipo de origen Cualquiera
    Origen 0.0.0.0/0
    Destino 169.254.169.254
  3. Una vez añadida la regla, vuelve a intentar ejecutar el pod que fallaba. No es necesario reiniciar el nodo.

Si el problema persiste tras realizar ambas comprobaciones, abre un ticket de asistencia con el equipo de IBM Cloud Container Storage.