Cette page décrit les étapes de dépannage pour certains problèmes et erreurs courants.
Instance ÉCHOUÉE
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 Gérer les instances : supprimer une instance.
Dépassement du délai d'attente lors du montage dfuse ou des tests réseau
Si la commande dfuse -m
expire lors du montage de votre instance Parallelstore, ou si les 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 :
Il est possible que l'agent DAOS ait sélectionné la mauvaise interface réseau lors de la configuration.
Vous devrez peut-être exclure les interfaces réseau qui ne peuvent pas accéder aux adresses IP de la liste access_points
.
Exécutez
ifconfig
pour lister les interfaces réseau disponibles. Un exemple de résultat 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
et 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 et les clients Parallelstore ne peuvent pas utiliser d'adresse IP provenant 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 y a de la capacité inutilisée dans l'instance
Si votre instance utilise un striping 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 lors de l'écriture de fichiers volumineux (généralement supérieurs à 8 Gio) ou lors de l'importation de tels fichiers depuis Cloud Storage.
Utilisez le striping de fichier maximal pour réduire la probabilité de ces erreurs.
Dépannage de Google Kubernetes Engine
La section suivante liste 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 davantage de ressources au conteneur side-car Parallelstore. Vous pouvez définir gke-parallelstore/memory-limit: "0"
pour supprimer la limite de mémoire du side-car si vous ne savez pas quelle quantité de mémoire lui allouer. Notez que cela ne fonctionne qu'avec les clusters Standard. Avec les clusters Autopilot, vous ne pouvez pas utiliser la valeur 0
pour annuler la définition des limites et des 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 de 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 concernent les erreurs courantes.
Problèmes d'activation du pilote 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 n'est pas en cours d'exécution.
Si votre cluster vient d'être mis à l'échelle, mis à jour ou migré, cet avertissement est normal et devrait être temporaire. Il faut quelques minutes pour que les pods du pilote CSI soient fonctionnels après les opérations sur le cluster.
Sinon, vérifiez que le pilote CSI est activé sur votre cluster. Pour en savoir plus, consultez 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 y est associé et le pod de montage est créé si vous utilisez le montage de nœud.
Cela se produit sur le contrôleur et implique l'étape AttachVolume de attachdetach-controller.
Code d'erreur | Avertissement d'événement de pod | Solution |
InvalidArgument |
|
Des options d'installation non valides sont transmises à 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 MountVolume.MountDevice
Une fois le volume associé à un nœud, il est préparé pour ce nœud.
Cela se produit sur le nœud et implique l'étape MountVolume.MountDevice 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 consomment la PVC, puis redéployez-les. Un pod de montage est alors créé. |
DeadlineExceeded |
|
Un problème de connexion à l'instance Parallelstore est survenu. Vérifiez que votre réseau VPC et vos points d'accès sont correctement configurés. |
Échecs MountVolume.SetUp
Une fois le volume préparé 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 module
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 insuffisante (OOM). Envisagez d'augmenter la limite de mémoire du conteneur side-car à l'aide de l'annotation gke-parallelstore/memory-limit .
Si vous n'êtes pas sûr de la quantité de mémoire que vous souhaitez allouer au side-car parallelstore, nous vous recommandons de définir |
Abandon |
|
L'opération de montage de volume a été abandonnée en raison d'une limitation du débit ou d'opérations existantes. Cet avertissement est normal 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 contenant les arguments non valides. Pour le provisionnement dynamique, consultez la classe de stockage. Pour l'approvisionnement statique, cochez la case 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 side-car Parallelstore n'a pas été injecté. Vérifiez que l'annotation de 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 de montage du volume a été abandonnée en raison d'une limite de débit ou d'opérations existantes. Cet avertissement est normal 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 indiquera les champs contenant les arguments non valides. Pour le provisionnement dynamique, consultez la classe de stockage. Pour l'approvisionnement statique, consultez la section 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 programme de montage Parallelstore n'existe pas. Si le pod de montage a été supprimé par erreur, recréez toutes les charges de travail pour déclencher 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 n'a pas démarré. 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 le peering au 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
dans votre compte utilisateur.
Pour savoir comment ajouter l'un des rôles suivants à votre compte, consultez Contrôle des accès avec IAM :
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 peering VPC 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
La plage d'adresses IP est épuisée.
La création d'instance peut échouer avec l'erreur suivante indiquant que la plage est épuisée :
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 étendre la plage d'adresses IP existante.
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 se poursuivre, car un budget d'interruptions de pod (PDB) est configuré pour autoriser zéro é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 l'erreur.
Consultez la section Budgets d'interruptions de pods non permissifs pour connaître le nom du pod.
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.