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
.
Execute
ifconfig
para listar as interfaces de rede disponíveis. Um exemplo de resultado 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. Descomente a linhaexclude_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"]
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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
|
Interrompido |
|
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 |
|
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.addPeering
autorizaçã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
ouroles/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:
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())" )
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:
Clique na mensagem de erro para abrir o painel de estatísticas de erros.
Verifique a secção Orçamentos de interrupção de pods não permissivos para ver o nome do pod.
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.