web-dev-qa-db-fra.com

Kubernetes - Comment télécharger le contenu d'un volume persistant

J'ai un exécuteur de test Pod dans le cluster K8s créé via helm, qui demande un PersistentVolume créé dynamiquement où il stocke les résultats du test.

J'aimerais maintenant obtenir le contenu de ce volume. Cela semble tout à fait naturel. Je m'attendrais à quelque kubectl download pv <id>. Mais je ne peux rien chercher sur Google.

Comment puis-je obtenir le contenu d'un PersistentVolume?

Je suis dans AWS EKS; l'API AWS est donc également une option. Je peux également accéder à ECR, alors je pourrais peut-être le stocker sous forme d'image et le télécharger?

Ou, en général, je cherche un moyen de transférer un répertoire, peut-être même dans une archive. Mais Cela devrait être après le conteneur a terminé et ne fonctionne plus.

10
Ondra Žižka

Je peux penser à deux options pour répondre à vos besoins:

1) créez un module auquel le PV est attaché et utilisez kubectl cp pour copier le contenu où vous en avez besoin. Vous pouvez par exemple utiliser un PodSpec similaire au suivant:

apiVersion: v1
kind: Pod
metadata:
  name: dataaccess
spec:
  containers:
  - name: Alpine
    image: Alpine:latest
    command:
    - sleep
    - 999999
    volumeMounts:
    - name: mypvc
      mountPath: /data
  volumes:
  - name: mypvc
    persistentVolumeClaim:
      claimName: mypvc

Veuillez noter que mypvc doit être le nom du PersistentVolumeClaim lié au PV à partir duquel vous souhaitez copier les données.

Une fois le pod en cours d'exécution, vous pouvez exécuter quelque chose comme ceci pour copier les données à partir de n'importe quelle machine sur laquelle kubectl est configuré pour se connecter à votre cluster:

kubectl cp dataaccess:/data data/

2) montez le volume EBS du PV dans une instance EC2 et copiez les données à partir de là. Ce cas est moins simple à expliquer en détail car il a besoin d'un peu plus de contexte sur ce que vous essayez de réaliser.

15
whites11