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
.
Execute
ifconfig
para listar as interfaces de rede disponíveis. Um exemplo de saída pode mostrar várias interfaces de rede, comoeth0
,docker0
,ens8
,lo
etc.Interrompa o daos_agent.
Edite
/etc/daos/daos_agent.yml
para excluir as interfaces de rede indesejadas. Remova a marca de comentário da linhaexclude_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"]
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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
|
Cancelado |
|
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 |
|
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
ouroles/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:
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())" )
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:
Clique na mensagem de erro para abrir o painel de insights de erros.
Verifique o nome do pod na seção Orçamentos de interrupção de pods não permissivos.
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.