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
.
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.Pare 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 que você incluir 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 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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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
|
Cancelado |
|
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 |
|
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
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:
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())" )
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:
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 for
parallelstorecsi-mount
, ignore esse erro, porque ele não vai impedir a manutenção. Para qualquer outro pod, examine o PDB.