Bonjour.
Je rencontre un problème tout en essayant de déployer une pod qui a été configuré pour utiliser un volume persistant. Mon installation est hébergée sur Hetzner Cloud et Kubettes a été configurée conformément aux instructions disponibles par le fournisseur. La configuration de base semble ok car je peux déployer par exemple. PORTAINER de l'une des manifestations fournies: il monte correctement le PVC et fonctionne. Étant donné que la configuration par défaut ne crée pas de stockage persistant, chaque fois que je n'enlève pas et que je redéploie Portainer toutes les données sont perdues.
J'ai donc procédé à la création d'un PersistentVolume
, mais la dernière étape ne fonctionne pas. Je ne peux pas dire si le problème est un kubettes générique un ou c'est avec mon intégration avec Hetzner - mais je pense qu'il est logique de vérifier d'abord la première hypothèse. Donc, je demande ici avant d'aller au forum Hetzner.
Pas:
J'ai créé un volume à l'aide de l'interface utilisateur de Hetzner Cloud.
Ensuite, j'ai déployé un PV:
apiVersion: v1
kind: Namespace
metadata:
name: portainer
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-portainer-test
namespace: portainer
labels:
env: test
spec:
storageClassName: portainer-test
accessModes:
- ReadWriteOnce
capacity:
storage: 10Gi
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
csi:
driver: csi.hetzner.cloud
fsType: ext4
volumeHandle: "pv_id"
pv_id
Est l'ID de volume que je peux voir avec l'interface utilisateur Hetzner.
Je peux voir le PV avec kubelet get pv -A
:
NAMESPACE NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/pv-portainer-test 10Gi RWO Retain Available portainer-test 71s
Notez que l'espace de noms n'a pas été défini ... mais je suppose que ce n'est pas un problème grave. J'ai peut-être tort.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: portainer
namespace: portainer
spec:
storageClassName: portainer-test
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "10Gi"
Maintenant avec kubectl get pvc,pv -A
Je vois que le PVC a été lié au PV:
NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
portainer persistentvolumeclaim/portainer Bound pv-portainer-test 10Gi RWO portainer-test 16m
NAMESPACE NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/pv-portainer-test 10Gi RWO Retain Bound portainer/portainer portainer-test 17m
ContainerCreating
pour toujours. Avec kubectl describe
Je vois la raison:Warning FailedAttachVolume 2s (x7 over 38s) attachdetach-controller AttachVolume.Attach failed for volume "pv-portainer-test" : rpc error: code = FailedPrecondition desc = failed to publish volume: volume is attached
Il semble donc qu'il se plaint car le PV est déjà attaché ... mais en effet, il aurait dû être joint précisément à ce pod.
Le problème n'était pas lié aux K8, mais spécifique à Hetzner. Dans la configuration du projet, j'avais laissé le volume attaché à un serveur fixe, ce qui l'a évidemment rendue indisponible pour la fixation via le pilote CSI. Un utilisateur au Hetzner Cloud Forum m'a signalé cela.
J'aimerais remercier Bazhikov de toute façon, comme il m'a donné des indices utiles pour la fixation d'autres problèmes.