Solução de problemas

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

Instância `FAILED`

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

As instâncias do 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 do dfuse ou testes de rede

Se, ao montar a instância do Parallelstore, o comando dfuse -m atingir o tempo limite ou se comandos de teste de rede, como self_test ou daos health net-test, atingirem o tempo limite, isso poderá ser devido a um problema de conectividade de rede.

Para verificar a conectividade com os servidores do Parallelstore, execute

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

Se o teste informar um problema de conexão, dois motivos possíveis são:

O agente DAOS pode ter selecionado a interface de rede errada durante a configuração

Talvez seja necessário excluir interfaces de rede que não consigam 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. Interrompa 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 incluídas são específicas para sua situação. Exemplo:

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

O endereço IP da instância ou do cliente entra em conflito com endereços IP internos

As instâncias e os clientes do Parallelstore não podem usar um endereço IP do intervalo de sub-rede 172.17.0.0/16. Consulte Problemas conhecidos para mais informações.

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

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

Use o striping máximo 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 etapas para resolvê-los.

Transport endpoint is not connected em pods de carga de trabalho

Esse erro ocorre devido ao encerramento do dfuse. Na maioria dos casos, o dfuse foi encerrado devido à falta de memória. Use as anotações de pod gke-parallelstore/[cpu-limit|memory-limit] para alocar mais recursos ao contêiner secundário do Parallelstore. É possível definir gke-parallelstore/memory-limit: "0" para remover a limitação de memória do contêiner secundário se você não souber quanta memória quer alocar para ele. Observe que 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 secundário. É necessário definir explicitamente um limite de recursos maior para o contêiner secundário.

Depois de modificar as anotações, reinicie o pod de carga de trabalho. A adição de 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 de carga de trabalho não puderem ser iniciados, verifique os eventos de 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

Os erros comuns de ativação do driver CSI são os seguintes:

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 não está em execução.

Se o cluster acabou de ser escalonado, atualizado ou feito upgrade, esse aviso é normal e deve ser temporário. Leva alguns minutos para que os pods do driver CSI fiquem 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 de AttachVolume.Attach

Depois que o pod for programado para um nó, o volume será anexado ao nó e o pod do montador será criado se estiver usando a montagem do nó.

Isso acontece no controlador e envolve a etapa AttachVolume de attachdetach-controller.

Código do erro Aviso de evento de pod Solução
InvalidArgument
  • AttachVolume.Attach failed for volume "volume" : rpc error: code = InvalidArgument desc = an error occurred while preparing mount options: invalid mount options
Flags de montagem inválidas são transmitidas para PersistentVolume ou StorageClass. Consulte Opções de montagem de dfuse compatíveis para mais detalhes.
NotFound
  • AttachVolume.Attach failed for volume "volume" : rpc error: code = NotFound desc = failed to get instance "instance"
A instância do Parallelstore não existe. Verifique se o volumeHandle do PersistentVolume tem o formato correto.

Falhas de MountVolume.MountDevice

Depois que o volume for anexado a um nó, ele será preparado para o nó.

Isso acontece no nó e envolve a etapa MountVolume.MountDevice de kubelet.

Código do erro Aviso de evento de pod Solução
FailedPrecondition
  • MountVolume.MountDevice failed for volume "volume" : rpc error: code = FailedPrecondition desc = mounter pod "pod" expected to exist but was not found
Esse erro geralmente é causado pela exclusão manual do pod do montador. Exclua todas as cargas de trabalho que consomem o PVC e reimplemente-as. Isso vai criar um novo pod do montador.
DeadlineExceeded
  • MountVolume.MountDevice failed for volume "volume": rpc error: code = DeadlineExceeded desc = context deadline exceeded
Há problemas de conexão com a instância do Parallelstore. Verifique se a rede VPC e os pontos de acesso estão configurados corretamente.

Falhas de MountVolume.SetUp

Depois que o volume for preparado para o nó, ele será montado e fornecido ao contêiner no pod. Isso acontece no nó e envolve a etapa MountVolume.SetUp no kubelet.

Montagem de pod

Código do erro Aviso de evento de 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 de dfuse terminou, o que geralmente é causado por uma condição de falta de memória (OOM). Considere aumentar o limite de memória do contêiner secundário usando a gke-parallelstore/memory-limit anotação.

Se você não tiver certeza da quantidade de memória que quer alocar para o parallelstore-sidecar, 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 de volume foi cancelada devido à limitação de taxa ou às operações atuais. Esse aviso é normal e deve ser temporário.
InvalidArgument MountVolume.SetUp failed for volume "volume" : rpc error: code = InvalidArgument desc = Se você forneceu argumentos inválidos na StorageClass ou PersistentVolume, o registro de erros indica 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 secundário do Parallelstore não foi injetado. Verifique se a anotação do pod gke-parallelstore/volumes: "true" está definida corretamente.

Montagem de nó

Código do erro Aviso de evento de pod Solução
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 de volume foi cancelada devido à limitação de taxa ou às operações atuais. Esse aviso é normal e deve ser temporário.
InvalidArgument MountVolume.SetUp failed for volume "volume" : rpc error: code = InvalidArgument desc = Se você forneceu argumentos inválidos na StorageClass ou PersistentVolume, o registro de erros indica 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 = mounter pod expected to exist but was not found O pod do montador do Parallelstore não existe. Se o pod do montador foi excluído acidentalmente, recrie todas as cargas de trabalho para solicitar a recriação.
DeadlineExceeded MountVolume.SetUp failed for volume "volume" : rpc error: code = DeadlineExceeded desc = timeout waiting for mounter pod gRPC server to become available O servidor gRPC do pod do montador não foi iniciado. Verifique se há erros nos registros do pod do montador.

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 servicenetworking.services.addPeering do IAM 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. Recupere a lista de intervalos de IP atuais 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

A criação da instância pode falhar com o seguinte erro de intervalo esgotado:

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

Se você receber essa mensagem de erro, siga o guia da VPC para recriar ou estender o intervalo de IP atual.

Se você estiver recriando uma instância do Parallelstore, será necessário recriar o intervalo de IP em vez de estendê-lo.

Manutenção bloqueada devido ao orçamento de interrupção de pods restritivo

O Google Cloud console pode mostrar a seguinte mensagem de erro indicando que a manutenção não pode continuar porque um orçamento de interrupção de pods (PDB) está configurado para permitir zero remoções de pods:

GKE can't perform maintenance because the Pod Disruption Budget allows for 0 Pods evictions.

Se você receber essa mensagem de erro, identifique o pod problemático seguindo estas etapas:

  1. Clique na mensagem de erro para abrir o painel de informações sobre erros.

  2. Verifique o nome do pod na seção Orçamentos de interrupção de pods não permissivos.

  3. Se o pod for parallelstorecsi-mount, ignore esse erro, porque ele não impede a manutenção. Para qualquer outro pod, examine o PDB.