Resolução de problemas

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

Instância com FALHA

O estado FAILED significa que os dados da instância foram perdidos e que a instância tem de ser eliminada.

As instâncias do Parallelstore num estado FAILED continuam a ser faturadas até serem eliminadas.

Para obter o estado de uma instância, siga as instruções em Gerir instâncias: obtenha uma instância.

Para eliminar uma instância, leia o artigo Gerir instâncias: elimine uma instância.

Tempos limite durante a montagem do dfuse ou os testes de rede

Se, ao montar a instância do Parallelstore, o comando dfuse -m exceder o tempo limite; ou se os comandos de teste de rede, como self_test ou daos health net-test, excederem o tempo limite, isto pode dever-se a um problema de conetividade de rede.

Para validar a conetividade aos servidores da Parallelstore, execute o seguinte comando:

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

Se o teste comunicar um problema de ligação, existem dois motivos possíveis:

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

Pode ter de 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 resultado 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. Descomente a linha exclude_fabric_ifaces e atualize os valores. As entradas que inclui são específicas da sua situação. Por 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 os endereços IP internos

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

ENOSPC quando existe capacidade não utilizada na instância

Se a sua instância usar a divisão em faixas mínima ou (a predefinição de) equilibrada, pode deparar-se com erros ENOSPC, mesmo que os ficheiros existentes não estejam a usar toda a capacidade da instância. É provável que isto aconteça quando escreve ficheiros grandes que são geralmente superiores a 8 GiB ou quando importa esses ficheiros do Cloud Storage.

Use a divisão máxima de ficheiros para reduzir a probabilidade destes erros.

Resolução de problemas do Google Kubernetes Engine

A secção seguinte apresenta alguns problemas comuns e os passos para os resolver.

Transport endpoint is not connected em agrupamentos de cargas de trabalho

Este erro deve-se à rescisão do dfuse. Na maioria dos casos, o dfuse foi terminado devido a falta de memória. Use as anotações de Pod gke-parallelstore/[cpu-limit|memory-limit] para atribuir mais recursos ao contentor auxiliar Parallelstore. 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 atribuir-lhe. Tenha em atenção que isto só funciona com clusters padrão. Com clusters do Autopilot, não pode usar o valor 0 para anular a definição dos limites e dos pedidos de recursos do contentor sidecar. Tem de definir explicitamente um limite de recursos maior para o contentor sidecar.

Depois de modificar as anotações, tem de reiniciar 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 atribuição de recursos.

Avisos de eventos de pods

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

kubectl describe pod POD_NAME -n NAMESPACE

As soluções seguintes destinam-se a erros comuns.

Problemas de ativação do controlador CSI

Seguem-se os erros de ativação do controlador de CSI comuns:

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

Estes avisos indicam que o controlador CSI não está ativado ou não está em execução.

Se o seu cluster tiver sido dimensionado, atualizado ou melhorado recentemente, este aviso é normal e deve ser transitório. Os pods do controlador CSI demoram alguns minutos a ficar funcionais após as operações do cluster.

Caso contrário, confirme se o controlador CSI está ativado no cluster. Consulte o artigo Ative o controlador CSI para ver detalhes. Se a CSI estiver ativada, cada nó mostra um pod denominado parallelstore-csi-node-id em funcionamento.

AttachVolume.Attach failures

Depois de o pod ser agendado para um nó, o volume é anexado ao nó e o pod de montagem é criado se estiver a usar a montagem de nós.

Isto acontece no comando e envolve o passo AttachVolume de attachdetach-controller.

Código de erro Aviso de evento de cápsula Solução
InvalidArgument
  • AttachVolume.Attach failed for volume "volume" : rpc error: code = InvalidArgument desc = an error occurred while preparing mount options: invalid mount options
São transmitidas flags de montagem inválidas para PersistentVolume ou StorageClass. Consulte as opções de montagem do dfuse suportadas para ver 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 de o volume ser anexado a um nó, o volume é preparado para o nó.

Isto acontece no nó e envolve o passo MountVolume.MountDevice do kubelet.

Código de erro Aviso de evento de cápsula Solução
FailedPrecondition
  • MountVolume.MountDevice failed for volume "volume" : rpc error: code = FailedPrecondition desc = mounter pod "pod" expected to exist but was not found
Normalmente, este erro é causado pela eliminação manual do pod de montagem. Elimine todas as cargas de trabalho que consomem o PVC e volte a implementá-las. Esta ação cria um novo pod de montagem.
DeadlineExceeded
  • MountVolume.MountDevice failed for volume "volume": rpc error: code = DeadlineExceeded desc = context deadline exceeded
Existem problemas ao estabelecer ligação à instância do Parallelstore. Verifique se a sua rede VPC e os seus pontos de acesso estão configurados corretamente.

Falhas MountVolume.SetUp

Depois de o volume ser preparado para o nó, o volume é montado e fornecido ao contentor no pod. Isto acontece no nó e envolve o passo MountVolume.SetUp no kubelet.

Montagem de agrupamento

Código de erro Aviso de evento de cápsula 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 terminou, o que é normalmente causado por uma condição de falta de memória (OOM). Pondere aumentar o limite de memória do contentor auxiliar usando a anotação gke-parallelstore/memory-limit.

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

Interrompido
  • 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 interrompida devido à limitação de taxa ou a operações existentes. Este aviso é normal e deve ser transitório.
InvalidArgument MountVolume.SetUp failed for volume "volume" : rpc error: code = InvalidArgument desc = Se tiver fornecido argumentos inválidos em StorageClass ou PersistentVolume, o registo de erros indica os campos com os argumentos inválidos. Para o aprovisionamento dinâmico, verifique a classe de armazenamento. Para o aprovisionamento estático, verifique o Volume persistente.
FailedPrecondition MountVolume.SetUp failed for volume "volume" : rpc error: code = FailedPrecondition desc = can not find the sidecar container in Pod spec O contentor sidecar do Parallelstore não foi injetado. Verifique se a anotação de gke-parallelstore/volumes: "true"pod está definida corretamente.

Montagem de nós

Código de erro Aviso de evento de cápsula Solução
Interrompido
  • 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 interrompida devido ao limite de taxa ou a operações existentes. Este aviso é normal e deve ser transitório.
InvalidArgument MountVolume.SetUp failed for volume "volume" : rpc error: code = InvalidArgument desc = Se tiver fornecido argumentos inválidos na StorageClass ou no volume persistente, o registo de erros indica os campos com os argumentos inválidos. Para o aprovisionamento dinâmico, verifique a classe de armazenamento. Para o aprovisionamento estático, verifique o Volume persistente.
FailedPrecondition MountVolume.SetUp failed for volume "volume" : rpc error: code = FailedPrecondition desc = mounter pod expected to exist but was not found O pod do Parallelstore mounter não existe. Se o pod de montagem foi eliminado 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 de montagem não foi iniciado. Verifique se existem erros nos registos do pod de montagem.

Resolução de problemas de redes VPC

Autorização recusada para adicionar intercâmbio de tráfego para o 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'.

Este erro significa que não tem servicenetworking.services.addPeeringautorização da IAM na sua conta de utilizador.

Consulte o artigo Controlo de acesso com a IAM para ver instruções sobre como adicionar uma das seguintes funções à sua conta:

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

Não é possível modificar intervalos atribuídos 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.

Este erro é devolvido quando já criou uma interligação de VPC nesta rede com intervalos de IP diferentes. Existem duas soluções possíveis:

Substituir os intervalos de IP existentes:

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

Em alternativa, adicione o novo intervalo de IPs à associação existente:

  1. Apresente a lista de intervalos de IP existentes para a interligação:

    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
    

O intervalo de endereços IP está 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 vir esta mensagem de erro, siga o guia da VPC para recriar o intervalo de IPs ou expandir o intervalo de IPs existente.

Se estiver a recriar uma instância do Parallelstore, tem de recriar o intervalo de IPs em vez de o expandir.

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

A consola Google Cloud pode apresentar a seguinte mensagem de erro a indicar que não é possível continuar a manutenção porque está configurado um orçamento de interrupção de pods (PDB) para permitir zero despejos de pods:

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

Se vir esta mensagem de erro, identifique o Pod com problemas seguindo os passos abaixo:

  1. Clique na mensagem de erro para abrir o painel de estatísticas de erros.

  2. Verifique a secção Orçamentos de interrupção de pods não permissivos para ver o nome do pod.

  3. Se o Pod estiver parallelstorecsi-mount, pode ignorar este erro, uma vez que não impede a manutenção. Para qualquer outro Pod, examine o PDB.