Por que aparece o erro “ MetadataServiceNotEnabled ” ao acessar File Storage for VPC?

Nuvem Privada Virtual

Se o seu pod ou PVC apresentar uma falha com o erro “ MetadataServiceNotEnabled ” ao usar a criptografia em trânsito (EIT) com o File Storage for VPC, utilize este tópico para identificar e resolver a causa.

Ao usar a criptografia em trânsito (EIT) com o File Storage for VPC, seu pod ou PVC apresenta falha com o erro “ MetadataServiceNotEnabled ”.

Você vê uma mensagem de erro semelhante ao exemplo a seguir nos eventos do seu pod ou na saída do 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.

Esse erro significa que o processo de montagem do EIT tentou acessar o serviço de metadados da instância em 169.254.169.254, mas não recebeu resposta. Existem duas causas principais independentes — verifique ambas.

Resolvendo o problema

Verifique as seguintes causas principais.

Causa principal A — A versão do cluster está muito desatualizada

O EIT requer a versão 4.16 ou posterior do ROKS. Em clusters mais antigos, o ponto de conexão do serviço de metadados não está disponível para as cargas de trabalho.

Verifique a versão atual do cluster para confirmar se ele atende aos requisitos mínimos. A saída exibe o status “ Pending ” ou “ normal ” e a versão “ Kubernetes ”.

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

Solução: Atualize o cluster para a versão 4.16 do ROKS ou posterior.

Causa principal B — Falta a regra de metadados de saída no cluster “Secure by Default”

Para clusters com a configuração “Seguro por padrão”, o tráfego de saída para 169.254.169.254 é bloqueado, a menos que uma regra de saída explícita seja adicionada ao grupo de segurança kube-<clusterID>. Sem essa regra, o processo EIT não consegue acessar o serviço de metadados, mesmo em uma versão de cluster compatível.

Essa regra é adicionada automaticamente para clusters ROKS na versão 4.18 e posteriores. Para versões mais antigas do cluster, adicione a regra manualmente.

  1. Verifique se a regra de saída já existe. Se o comando retornar uma linha contendo “ 169.254.169.254 ”, a regra está presente e essa não é a causa.

    ibmcloud is sg kube-CLUSTER_ID | grep 169.254.169.254
    
  2. Se a regra não estiver presente, adicione-a.

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

    Como alternativa, adicione a regra na interface do usuário do IBM Cloud, em “VPC Infrastructure” > “Security groups” > “ kube-<clusterID> ” > “Outbound rules”, com os seguintes valores:

    Valores das regras de saída para acesso ao serviço de metadados
    Campo Valor
    Protocolo Qualquer
    Tipo de origem Qualquer
    Origem 0.0.0.0/0
    Destino 169.254.169.254
  3. Depois de adicionar a regra, tente novamente o pod que apresentou falha. Não é necessário reiniciar o nó.

Se o problema persistir após ambas as verificações, abra um ticket de suporte junto à equipe de Armazenamento em Contêineres do IBM Cloud.