Solução de problemas

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

Instância COM FALHA

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

As instâncias do Parallelstore no 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 pode 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, há duas causas possíveis:

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

Talvez seja necessário excluir 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. 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 (padrão), você poderá encontrar erros ENOSPC, mesmo que os arquivos atuais não estejam usando toda a capacidade da instância. Isso provavelmente vai 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 de arquivo secundário do Parallelstore. Você pode definir gke-parallelstore/memory-limit: "0" para remover a limitação de memória do sidecar se não souber quanta memória quer alocar para ele. Isso só funciona com clusters Standard. Em clusters do Autopilot, não é possível usar o valor 0 para cancelar a definição de limites e solicitações de recursos do contêiner sidecar. Você precisa definir explicitamente um limite de recursos maior para o contêiner 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 sua carga de trabalho não puderem ser iniciados, verifique os eventos do pod:

kubectl describe pod POD_NAME -n NAMESPACE

Confira a seguir soluções para erros comuns.

Problemas de ativação do driver CSI

Confira alguns 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 tiver sido escalonado, atualizado ou feito upgrade recentemente, esse aviso é normal e temporário. Os pods de driver do CSI levam alguns minutos para ficar 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ó vai mostrar um pod chamado parallelstore-csi-node-id em execução.

Falhas de AttachVolume.Attach

Depois que o pod é programado para um nó, o volume é anexado a ele e o pod de montagem é criado se a montagem de nó for usada.

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

Código do erro Aviso de evento do 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. Confira as opções de montagem do 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 é anexado a um nó, ele é armazenado em etapas no nó.

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

Código do erro Aviso de evento do 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 de montagem. Exclua e reimplante todas as cargas de trabalho que consomem a PVC. Isso vai criar um novo pod de montagem.
DeadlineExceeded
  • MountVolume.MountDevice failed for volume "volume": rpc error: code = DeadlineExceeded desc = context deadline exceeded
Há um problema ao se conectar à 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 é armazenado no nó, ele é montado e fornecido ao contêiner no pod. Isso acontece no nó e envolve a etapa MountVolume.SetUp no kubelet.

Suporte para pod

Código do erro Aviso 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 uma condição de falta de memória (OOM). Considere aumentar o limite de memória do contêiner 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 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 a operações em andamento. 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 no PersistentVolume, o registro de erros indica os campos com os argumentos inválidos. Para o provisionamento dinâmico, verifique a classe de armazenamento. Para o 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 sidecar 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 do 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 ao limite de taxa ou a operações em andamento. Esse aviso é normal e deve ser temporário.
InvalidArgument MountVolume.SetUp failed for volume "volume" : rpc error: code = InvalidArgument desc = Se você tiver fornecido argumentos inválidos na StorageClass ou no volume permanente, o registro de erros vai indicar os campos com os argumentos inválidos. Para o provisionamento dinâmico, verifique a classe de armazenamento. Para o 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 mounter do Parallelstore não existe. Se o pod do mounter foi excluído por engano, 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 de montagem não foi iniciado. Verifique se há erros nos registros do pod mounter.

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. 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ê vir 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, recrie o intervalo de IP em vez de estendê-lo.

Manutenção bloqueada devido a um orçamento de interrupção de pod restritivo

O console Google Cloud 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 insights de erros.

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

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