Esta página inclui etapas de solução de problemas para alguns problemas e erros comuns.
Instância `FAILED`
O status FAILED significa que os dados da instância foram perdidos e ela precisa ser excluída.
As instâncias do 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 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 poderá 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, dois motivos possíveis são:
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 consigam alcançar os IPs
na lista access_points.
Execute
ifconfigpara listar as interfaces de rede disponíveis. Um exemplo de saída pode mostrar várias interfaces de rede, comoeth0,docker0,ens8,loetc.Interrompa o daos_agent.
Edite
/etc/daos/daos_agent.ymlpara excluir as interfaces de rede indesejadas. Remova a marca de comentário da linhaexclude_fabric_ifacese 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 (o padrão), você poderá encontrar erros ENOSPC mesmo que os arquivos atuais não estejam usando toda a capacidade da instância. Isso provavelmente 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 secundário do Parallelstore. É possível definir
gke-parallelstore/memory-limit: "0" para remover a limitação de memória do contêiner secundário
se você não souber quanta memória quer alocar para ele. Observe que 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 secundário. É necessário definir explicitamente um limite de recursos maior para o contêiner secundário.
Depois de modificar as anotações, reinicie 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 alocação de recursos.
Avisos de eventos de pod
Se os pods de carga de trabalho não puderem ser iniciados, verifique os eventos de 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
Os erros comuns de ativação do driver CSI são os seguintes:
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 não está em execução.
Se o cluster acabou de ser escalonado, atualizado ou feito upgrade, esse aviso é normal e deve ser temporário. Leva alguns minutos para que os pods do driver CSI fiquem 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 de AttachVolume.Attach
Depois que o pod for programado para um nó, o volume será anexado ao nó e o pod do montador será criado se estiver usando a montagem do nó.
Isso acontece no controlador e envolve a etapa AttachVolume de attachdetach-controller.
| Código do erro | Aviso de evento de pod | Solução |
| InvalidArgument |
|
Flags de montagem inválidas são transmitidas para PersistentVolume ou StorageClass. Consulte Opções de montagem de 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 for anexado a um nó, ele será preparado para o nó.
Isso acontece no nó e envolve a etapa MountVolume.MountDevice de kubelet.
| Código do erro | Aviso de evento de pod | Solução |
| FailedPrecondition |
|
Esse erro geralmente é causado pela exclusão manual do pod do montador. Exclua todas as cargas de trabalho que consomem o PVC e reimplemente-as. Isso vai criar um novo pod do montador. |
| DeadlineExceeded |
|
Há problemas de conexão com a 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 for preparado para o nó, ele será montado e fornecido ao contêiner no pod. Isso acontece no nó e envolve a etapa MountVolume.SetUp no kubelet.
Montagem de pod
| Código do erro | Aviso de evento de pod | Solução |
| ResourceExhausted |
|
O processo de dfuse terminou, o que geralmente é causado por uma
condição de falta de memória (OOM). Considere
aumentar o limite de memória do contêiner secundário usando a
gke-parallelstore/memory-limit anotação.
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 às operações atuais. 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 PersistentVolume, o registro de erros indica os campos com os argumentos inválidos. Para provisionamento dinâmico, verifique a classe de armazenamento. Para 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 secundário 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 de pod | Solução |
| Cancelado |
|
A operação de montagem de volume foi cancelada devido à limitação de taxa ou às operações atuais. 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 PersistentVolume, o registro de erros indica os campos com os argumentos inválidos. Para provisionamento dinâmico, verifique a classe de armazenamento. Para 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 montador do Parallelstore não existe. Se o pod do montador 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 montador não foi iniciado. Verifique se há erros nos registros do pod do montador. |
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 servicenetworking.services.addPeering do IAM 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.networkAdminouroles/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ê receber 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, será necessário recriar o intervalo de IP em vez de estendê-lo.
Manutenção bloqueada devido ao orçamento de interrupção de pods restritivo
O Google Cloud console 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 informações sobre 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 impede a manutenção. Para qualquer outro pod, examine o PDB.