Solução de problemas

Esta página inclui etapas de solução de problemas para alguns erros e problemas comuns.

Instância FALHOU

O status FAILED significa que os dados da instância foram perdidos e que ela precisa ser excluída.

As instâncias de Parallelstore em um estado FAILED continuam sendo cobradas até serem excluídas.

Para recuperar o estado de uma instância, siga as instruções em Gerenciar instâncias: recuperar uma instância.

Para excluir uma instância, leia Gerenciar instâncias: excluir uma instância.

Tempos limite durante a montagem de dfuse ou testes de rede

Se, ao montar a instância do Parallelstore, o comando dfuse -m expirar ou se comandos de teste de rede, como self_test ou daos health net-test, expirarem, o agente DAOS pode ter selecionado a interface de rede errada durante a configuração.

Para verificar o agente DAOS, execute

self_test --use-daos-agent-env -r 1

Se o teste informar um problema de conexão, talvez seja necessário excluir as interfaces de rede que não conseguem alcançar os IPs na lista access_points.

  1. Execute ifconfig para listar as interfaces de rede disponíveis. Um exemplo de saída pode mostrar várias interfaces de rede, como eth0, docker0, ens8, lo etc.

  2. Pare o daos_agent.

  3. Edite /etc/daos/daos_agent.yml para excluir as interfaces de rede indesejadas. Remova a marca de comentário da linha exclude_fabric_ifaces e atualize os valores. As entradas que você incluir são específicas para sua situação. Exemplo:

    exclude_fabric_ifaces: ["docker0", "ens8", "lo"]
    
  4. Reinicie o daos_agent.

ENOSPC quando há capacidade não utilizada na instância

Se a instância usar o mínimo ou o balanceamento de faixas (padrão), você poderá encontrar erros ENOSPC, mesmo que os arquivos não estejam usando toda a capacidade da instância. Isso provavelmente vai acontecer ao gravar arquivos grandes que geralmente são maiores que 8 GiB ou ao importar esses arquivos do Cloud Storage.

Use o máximo de remoção de arquivos para reduzir a probabilidade desses erros.

Solução de problemas do Google Kubernetes Engine

A seção a seguir lista alguns problemas comuns e as etapas para resolvê-los.

Transport endpoint is not connected em pods de carga de trabalho

Esse erro ocorre devido à interrupção do dfuse. Na maioria dos casos, o dfuse foi encerrado por falta de memória. Use as anotações do pod gke-parallelstore/[cpu-limit|memory-limit] para alocar mais recursos ao contêiner de sidecar da Parallelstore. É possível definir gke-parallelstore/memory-limit: "0" para remover a limitação de memória do sidecar se você não souber quanta memória quer alocar. Isso só funciona com clusters padrão. Com clusters do Autopilot, não é possível usar o valor 0 para cancelar a definição dos limites e das solicitações de recursos do contêiner sidecar. É preciso definir explicitamente um limite de recursos maior para o contêiner de arquivo secundário.

Depois de modificar as anotações, reinicie o pod da carga de trabalho. Adicionar anotações a uma carga de trabalho em execução não modifica dinamicamente a alocação de recursos.

Avisos de eventos de pod

Se os pods da carga de trabalho não puderem ser iniciados, verifique os eventos do pod:

kubectl describe pod POD_NAME -n NAMESPACE

As soluções a seguir são para erros comuns.

Problemas de ativação do driver CSI

Confira a seguir os erros comuns de ativação do driver CSI:

MountVolume.MountDevice failed for volume "volume" : kubernetes.io/csi:
attacher.MountDevice failed to create newCsiDriverClient:
driver name parallelstore.csi.storage.gke.io not found in the list of registered CSI drivers
MountVolume.SetUp failed for volume "volume" : kubernetes.io/csi:
mounter.SetUpAt failed to get CSI client:
driver name parallelstore.csi.storage.gke.io not found in the list of registered CSI drivers

Esses avisos indicam que o driver CSI não está ativado ou em execução.

Se o cluster acabou de ser escalonado, atualizado ou atualizado, esse aviso é normal e temporário. Os pods do driver CSI levam alguns minutos para ficarem funcionais após as operações do cluster.

Caso contrário, confirme se o driver CSI está ativado no cluster. Consulte Ativar o driver CSI para mais detalhes. Se o CSI estiver ativado, cada nó mostrará um pod chamado parallelstore-csi-node-id em execução.

Falhas do MountVolume.SetUp

Código do erro Alerta de evento do pod Solução
ResourceExhausted
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = ResourceExhausted desc = the sidecar container failed with error: signal: killed
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = ResourceExhausted desc = the sidecar container terminated due to OOMKilled, exit code: 137
O processo dfuse foi encerrado, o que geralmente é causado por OOM. Considere aumentar o limite de memória do contêiner do sidecar usando a anotação gke-parallelstore/memory-limit.

Se você não tiver certeza da quantidade de memória que quer alocar para o sidecar de parallelstore, recomendamos definir gke-parallelstore/memory-limit: "0" para eliminar a restrição de memória imposta pelo Parallelstore.

Cancelado
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = Aborted desc = NodePublishVolume request is aborted due to rate limit
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = Aborted desc = An operation with the given volume key key already exists
A operação de montagem do volume foi abortada devido ao limite de taxa ou a operações existentes. Esse aviso é normal e temporário.
InvalidArgument MountVolume.SetUp failed for volume "volume" : rpc error: code = InvalidArgument desc = Se você tiver fornecido argumentos inválidos no StorageClass ou no volume persistente, o registro de erros vai indicar os campos com os argumentos inválidos. Para provisionamento dinâmico, verifique a Classe de armazenamento. Para provisionamento estático, verifique o Volume permanente.
FailedPrecondition MountVolume.SetUp failed for volume "volume" : rpc error: code = FailedPrecondition desc = can not find the sidecar container in Pod spec O contêiner do sidecar do Parallelstore não foi injetado. Verifique se a anotação gke-parallelstore/volumes: "true" do pod está definida corretamente.

Solução de problemas de redes VPC

Permissão negada para adicionar peering ao serviço servicenetworking.googleapis.com

ERROR: (gcloud.services.vpc-peerings.connect) User [$(USER)] does not have 
permission to access services instance [servicenetworking.googleapis.com]
(or it may not exist): Permission denied to add peering for service
'servicenetworking.googleapis.com'.

Esse erro significa que você não tem a permissão do IAM servicenetworking.services.addPeering na sua conta de usuário.

Consulte Controle de acesso com o IAM para instruções sobre como adicionar um dos seguintes papéis à sua conta:

  • roles/compute.networkAdmin ou
  • roles/servicenetworking.networksAdmin

Não é possível modificar intervalos alocados em CreateConnection

ERROR: (gcloud.services.vpc-peerings.connect) The operation
"operations/[operation_id]" resulted in a failure "Cannot modify allocated
ranges in CreateConnection. Please use UpdateConnection.

Esse erro é retornado quando você já criou um peering de VPC nessa rede com intervalos de IP diferentes. Há duas soluções possíveis:

Substitua os intervalos de IP atuais:

gcloud services vpc-peerings update \
  --network=NETWORK_NAME \
  --ranges=IP_RANGE_NAME \
  --service=servicenetworking.googleapis.com \
  --force

Ou adicione o novo intervalo de IP à conexão atual:

  1. Extraia a lista de intervalos de IP existentes para o peering:

    EXISTING_RANGES=$(
      gcloud services vpc-peerings list \
        --network=NETWORK_NAME \
        --service=servicenetworking.googleapis.com \
        --format="value(reservedPeeringRanges.list())"
    )
    
  2. Em seguida, adicione o novo intervalo ao peering:

    gcloud services vpc-peerings update \
      --network=NETWORK_NAME \
      --ranges=$EXISTING_RANGES,IP_RANGE_NAME \
      --service=servicenetworking.googleapis.com
    

Intervalo de endereços IP esgotado

Problema: a criação da instância falha com o erro de esgotamento de intervalo:

ERROR: (gcloud.alpha.Parallelstore.instances.create) FAILED_PRECONDITION: Invalid
resource state for "NETWORK_RANGES_NOT_AVAILABLE": IP address range exhausted

Solução: siga o guia da VPC para recriar ou estender o intervalo de IP atual.

Se você estiver recriando uma instância do Parallelstore, recrie o intervalo de IP em vez de estendê-lo.