Cette page décrit les étapes de dépannage pour certains problèmes et erreurs courants.
Instance FAILED
L'état FAILED
signifie que les données de l'instance ont été perdues et que l'instance doit être supprimée.
Les instances Parallelstore à l'état FAILED
continuent d'être facturées jusqu'à leur suppression.
Pour récupérer l'état d'une instance, suivez les instructions de la section Gérer les instances: récupérer une instance.
Pour supprimer une instance, consultez la section Gérer les instances: supprimer une instance.
Dépassement du délai d'expiration lors de l'installation dfuse ou des tests réseau
Si, lors du montage de votre instance Parallelstore, la commande dfuse -m
expire ou si des commandes de test réseau telles que self_test
ou daos health net-test
expirent, cela peut être dû à un problème de connectivité réseau.
Pour vérifier la connectivité aux serveurs Parallelstore, exécutez
self_test --use-daos-agent-env -r 1
Si le test signale un problème de connexion, deux raisons sont possibles:
L'agent DAOS a peut-être sélectionné la mauvaise interface réseau lors de la configuration
Vous devrez peut-être exclure les interfaces réseau qui ne peuvent pas atteindre les adresses IP de la liste access_points
.
Exécutez
ifconfig
pour obtenir la liste des interfaces réseau disponibles. Un exemple de sortie peut afficher plusieurs interfaces réseau telles queeth0
,docker0
,ens8
,lo
, etc.Arrêtez daos_agent.
Modifiez
/etc/daos/daos_agent.yml
pour exclure les interfaces réseau indésirables. Annulez la mise en commentaire de la ligneexclude_fabric_ifaces
, puis mettez à jour les valeurs. Les entrées que vous incluez sont spécifiques à votre situation. Exemple :exclude_fabric_ifaces: ["docker0", "ens8", "lo"]
Redémarrez daos_agent.
L'adresse IP de l'instance ou du client est en conflit avec des adresses IP internes
Les instances Parallelstore et les clients ne peuvent pas utiliser d'adresse IP de la plage de sous-réseau 172.17.0.0/16. Pour en savoir plus, consultez la section Problèmes connus.
ENOSPC
lorsqu'il existe une capacité inutilisée dans l'instance
Si votre instance utilise un fractionnement minimal ou équilibré (par défaut), vous pouvez rencontrer des erreurs ENOSPC
même si les fichiers existants n'utilisent pas toute la capacité de l'instance. Cela se produit généralement lorsque vous écrivez des fichiers volumineux, généralement supérieurs à 8 Go, ou lorsque vous importez de tels fichiers depuis Cloud Storage.
Utilisez le striping de fichiers maximal pour réduire la probabilité de ces erreurs.
Résoudre les problèmes liés à Google Kubernetes Engine
La section suivante présente certains problèmes courants et les étapes à suivre pour les résoudre.
Transport endpoint is not connected
dans les pods de charge de travail
Cette erreur est due à l'arrêt de dfuse. Dans la plupart des cas, dfuse a été arrêté en raison d'un manque de mémoire. Utilisez les annotations de pod gke-parallelstore/[cpu-limit|memory-limit]
pour allouer plus de ressources au conteneur sidecar Parallelstore. Vous pouvez définir gke-parallelstore/memory-limit: "0"
pour supprimer la limite de mémoire du sidecar si vous ne savez pas quelle quantité de mémoire vous souhaitez lui allouer. Notez que cette opération ne fonctionne que avec les clusters Standard. Avec les clusters Autopilot, vous ne pouvez pas utiliser la valeur 0
pour annuler les limites et les requêtes de ressources du conteneur side-car. Vous devez définir explicitement une limite de ressources plus élevée pour le conteneur side-car.
Une fois les annotations modifiées, vous devez redémarrer le pod de votre charge de travail. L'ajout d'annotations à une charge de travail en cours d'exécution ne modifie pas dynamiquement l'allocation des ressources.
Avertissements d'événements de pod
Si les pods de votre charge de travail ne peuvent pas démarrer, vérifiez les événements des pods:
kubectl describe pod POD_NAME -n NAMESPACE
Les solutions suivantes s'appliquent aux erreurs courantes.
Problèmes d'activation des pilotes CSI
Voici les erreurs courantes d'activation du pilote 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
Ces avertissements indiquent que le pilote CSI n'est pas activé ou qu'il ne s'exécute pas.
Si votre cluster vient d'être mis à l'échelle, mis à jour ou mis à niveau, cet avertissement est normal et devrait être temporaire. Les pods du pilote CSI prennent quelques minutes à être opérationnels après les opérations de cluster.
Sinon, vérifiez que le pilote CSI est activé sur votre cluster. Pour en savoir plus, consultez la section Activer le pilote CSI. Si le CSI est activé, chaque nœud affiche un pod nommé parallelstore-csi-node-id
en cours d'exécution.
Échecs AttachVolume.Attach
Une fois le pod planifié sur un nœud, le volume sera associé au nœud et le pod d'installation sera créé si vous utilisez l'installation sur le nœud.
Cela se produit sur le contrôleur et implique l'étape AttachVolume à partir de attachdetach-controller.
Code d'erreur | Avertissement d'événement de pod | Solution |
InvalidArgument |
|
Des indicateurs d'installation incorrects sont transmis à PersistentVolume ou StorageClass. Pour en savoir plus, consultez les options de montage dfuse compatibles. |
NotFound |
|
L'instance Parallelstore n'existe pas. Vérifiez que le volumeHandle du PersistentVolume est au bon format. |
Échecs de MountVolume.MountDevice
Une fois le volume associé à un nœud, il est mis en scène sur ce nœud.
Cela se produit sur le nœud et implique l'étape MountVolume.MountDevice à partir de kubelet.
Code d'erreur | Avertissement d'événement de pod | Solution |
FailedPrecondition |
|
Cette erreur est généralement due à la suppression manuelle du pod de montage. Supprimez toutes les charges de travail qui utilisent la PVC, puis redéployez-les. Un pod de montage est alors créé. |
DeadlineExceeded |
|
Impossible de se connecter à l'instance Parallelstore. Vérifiez que votre réseau VPC et vos points d'accès sont correctement configurés. |
Échecs de MountVolume.SetUp
Une fois le volume mis en scène sur le nœud, il est installé et fourni au conteneur sur le pod. Cela se produit sur le nœud et implique l'étape MountVolume.SetUp dans kubelet.
Support de pod
Code d'erreur | Avertissement d'événement de pod | Solution |
ResourceExhausted |
|
Le processus dfuse s'est terminé, ce qui est généralement dû à une condition de mémoire saturée (OOM). Envisagez d'augmenter la limite de mémoire du conteneur side-car à l'aide de l'annotation gke-parallelstore/memory-limit .
Si vous ne savez pas quelle quantité de mémoire vous souhaitez allouer au sidecar parallelstore, nous vous recommandons de définir |
Abandon |
|
L'opération d'installation du volume a été interrompue en raison de la limitation de débit ou d'opérations existantes. Cette mise en garde est normale et devrait être temporaire. |
InvalidArgument |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = InvalidArgument desc =
|
Si vous avez fourni des arguments non valides dans StorageClass ou PersistentVolume, le journal des erreurs indique les champs avec les arguments non valides. Pour le provisionnement dynamique, vérifiez la classe de stockage. Pour le provisionnement statique, consultez la section Volume persistant. |
FailedPrecondition |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = FailedPrecondition desc = can not find the sidecar
container in Pod spec
|
Le conteneur sidecar Parallelstore n'a pas été injecté. Vérifiez que l'annotation du pod gke-parallelstore/volumes: "true" est correctement définie.
|
Support de nœud
Code d'erreur | Avertissement d'événement de pod | Solution |
Abandon |
|
L'opération d'installation du volume a été interrompue en raison de la limite de débit ou d'opérations existantes. Cette mise en garde est normale et devrait être temporaire. |
InvalidArgument |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = InvalidArgument desc =
|
Si vous avez fourni des arguments non valides dans StorageClass ou dans le volume persistant, le journal des erreurs indiquera les champs contenant les arguments non valides. Pour le provisionnement dynamique, vérifiez la classe de stockage. Pour le provisionnement statique, vérifiez le volume persistant. |
FailedPrecondition |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = FailedPrecondition desc = mounter pod expected to exist but was not found
|
Le pod du monteur Parallelstore n'existe pas. Si le pod de montage a été supprimé par erreur, recréez toutes les charges de travail pour lancer la recréation. |
DeadlineExceeded |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = DeadlineExceeded desc = timeout waiting for mounter pod gRPC server to become available
|
Le serveur gRPC du pod de montage ne s'est pas lancé. Recherchez d'éventuelles erreurs dans les journaux du pod de montage. |
Résoudre les problèmes liés aux réseaux VPC
Autorisation refusée pour ajouter un peering pour le service 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'.
Cette erreur signifie que vous ne disposez pas de l'autorisation IAM servicenetworking.services.addPeering
sur votre compte utilisateur.
Consultez Contrôle des accès avec IAM pour savoir comment ajouter l'un des rôles suivants à votre compte:
roles/compute.networkAdmin
ouroles/servicenetworking.networksAdmin
Impossible de modifier les plages allouées dans 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.
Cette erreur est renvoyée lorsque vous avez déjà créé un vpc-peering sur ce réseau avec des plages d'adresses IP différentes. Il existe deux solutions :
Remplacez les plages d'adresses IP existantes:
gcloud services vpc-peerings update \
--network=NETWORK_NAME \
--ranges=IP_RANGE_NAME \
--service=servicenetworking.googleapis.com \
--force
Vous pouvez également ajouter la nouvelle plage d'adresses IP à la connexion existante:
Récupérez la liste des plages d'adresses IP existantes pour l'appairage:
EXISTING_RANGES=$( gcloud services vpc-peerings list \ --network=NETWORK_NAME \ --service=servicenetworking.googleapis.com \ --format="value(reservedPeeringRanges.list())" )
Ajoutez ensuite la nouvelle plage au peering:
gcloud services vpc-peerings update \ --network=NETWORK_NAME \ --ranges=$EXISTING_RANGES,IP_RANGE_NAME \ --service=servicenetworking.googleapis.com
Plage d'adresses IP épuisée
La création d'instance peut échouer avec l'erreur d'épuisement de la plage suivante:
ERROR: (gcloud.alpha.Parallelstore.instances.create) FAILED_PRECONDITION: Invalid
resource state for "NETWORK_RANGES_NOT_AVAILABLE": IP address range exhausted
Si ce message d'erreur s'affiche, suivez le guide VPC pour recréer la plage d'adresses IP ou l'étendre.
Si vous recréez une instance Parallelstore, vous devez recréer la plage d'adresses IP au lieu de l'étendre.
Maintenance bloquée en raison d'un budget d'interruption de pod restrictif
La console Google Cloud peut afficher le message d'erreur suivant, indiquant que la maintenance ne peut pas être effectuée, car un budget d'interruptions de pod (PDB) est configuré pour n'autoriser aucune éviction de pod:
GKE can't perform maintenance because the Pod Disruption Budget allows for 0 Pods evictions.
Si ce message d'erreur s'affiche, identifiez le pod problématique en procédant comme suit:
Cliquez sur le message d'erreur pour ouvrir le panneau d'informations sur les erreurs.
Recherchez le nom du pod dans la section Budgets d'interruptions de pods non permissifs.
Si le pod est
parallelstorecsi-mount
, vous pouvez ignorer cette erreur, car elle n'empêchera pas la maintenance. Pour tout autre pod, examinez votre PDB.