web-dev-qa-db-fra.com

Revendication de volume sur erreur GKE / Multi-Attach pour le volume Le volume est déjà exclusivement attaché

Le problème semble avoir été résolu depuis longtemps , comme la réponse et les commentaires ne fournissent pas de vraies solutions, je voudrais obtenir de l'aide d'utilisateurs expérimentés

L'erreur est la suivante (lors de la description du pod, qui conserve l'état ContainerCreating):

Multi-Attach error for volume "pvc-xxx" Volume is already exclusively attached to one node and can't be attached to another 

Tout cela fonctionne sur GKE. J'avais un cluster précédent et le problème ne s'est jamais produit. J'ai réutilisé le même disque lors de la création de ce nouveau cluster - je ne sais pas s'il est lié

Voici les fichiers de configuration complets de yaml (Je laisse la partie de code concernée commentée pour la mettre en évidence; ce n'est pas lorsqu'elle est utilisée efficacement)

Merci à l'avance si des solutions de contournement évidentes

10
Ben

D'après votre description, ce que vous vivez est exactement ce qui est censé se produire.

Vous utilisez gcePersistentDisk dans votre définition PV/PVC . accessMode est ReadWriteOnce - cela signifie que ce PV ne peut être attaché qu'à un seul Node (stressing Noeud ici, il peut y avoir plusieurs Pods fonctionnant sur le même Noeud utilisant le même PV). Vous ne pouvez pas faire grand-chose à ce sujet; gcePersistentDisk est comme un périphérique de bloc distant, il n'est pas possible de le monter sur plusieurs nœuds simultanément (sauf lecture seule).

Il y a un bon tableau qui montre quels PVs supportent ReadWriteMany (c'est-à-dire, accès en écriture sur plusieurs nœuds en même temps):

Important! Un volume ne peut être monté qu'en utilisant un mode d'accès à la fois, même s'il en prend en charge plusieurs. Par exemple, un GCEPersistentDisk peut être monté en tant que ReadWriteOnce par un seul nœud ou ReadOnlyMany par plusieurs nœuds, mais pas en même temps.

11
Janos Lenart

Votre yaml de déploiement affiche 5 répliques, qui ne fonctionneront pas avec GCE PD en mode ReadWriteOnce. GCE PD ne peut être attaché qu'à plusieurs nœuds) en mode ReadOnlyMany.

Si vous avez besoin d'un stockage partagé et accessible en écriture sur toutes les répliques, alors vous devriez rechercher une solution multi-écrivain comme NFS ou Gluster.

Si vous souhaitez que chaque réplique ait son propre disque, vous pouvez utiliser des StatefulSets, qui auront un PVC par réplique.

3
Michelle