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, 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 possíveis razões:

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 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.

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 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 abaixo 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 em AttachVolume.Attach

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

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

Código do erro Alerta 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
As flags de montagem inválidas são transmitidas para PersistentVolume ou StorageClass. Confira as opções de montagem do dfuse 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 em 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 do kubelet.

Código do erro Alerta 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 do mounter. Exclua todas as cargas de trabalho que consomem o PVC e reimplante-as. Isso vai criar um novo pod de montagem.
DeadlineExceeded
  • MountVolume.MountDevice failed for volume "volume": rpc error: code = DeadlineExceeded desc = context deadline exceeded
Há problemas para se conectar à instância do Parallelstore. Verifique se a rede VPC e os pontos de acesso estão configurados corretamente.

Falhas do MountVolume.SetUp

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

Montagem de pods

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 uma condição de falta de memória (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 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 do volume foi interrompida devido à limitação de taxa ou 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 PersistentVolume, 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, marque 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 do pod gke-parallelstore/volumes: "true" está definida corretamente.

Montagem do nó

Código do erro Alerta 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 do volume foi interrompida 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, marque 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 de montagem 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 mounter não foi iniciado. Verifique se há erros nos registros do pod do 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. 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

A criação de instâncias pode falhar com o seguinte 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

Se essa mensagem de erro aparecer, siga o guia da VPC para recriar ou estender o intervalo de IP.

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

Manutenção bloqueada devido ao orçamento de interrupção de pod restrito

O console do Google Cloud pode mostrar a seguinte mensagem de erro, indicando que a manutenção não pode prosseguir porque um orçamento de interrupção de pods (PDB) está configurado para permitir zero expulsõ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 for parallelstorecsi-mount, ignore esse erro, porque ele não vai impedir a manutenção. Para qualquer outro pod, examine o PDB.