Changes

Jump to navigation Jump to search
Reading/writing the contents of a persistent volume
Since the claim has not been used by a container yet, it is not yet bound to a persitent volume (PV). The contents of the PV can be accessed like any other PV, see previous tutorial.
== Reading/writing the contents of a persistent volume Logging to Tensorboard from within your container ==
You can access a PV which is bound In your job file, make sure both PVC are mounted to a PVC by mounting it into a the container. For a demonstration, we We use the simple container image "ubuntu:18.04/mnt/tensorboard", which runs a minimalistic Ubuntu, and keep it in a very long wait after container startupas the mount point for the tensorboard log directory.
<syntaxhighlight lang="yaml">
# Test pod to mount a PV bound to a PVC into a container# Before starting this pod, apply the PVC with kubectl apply -f pvc.yaml..apiVersion containers: v1kind: Podmetadata: - name: your-username-pvctf-accessmnist-podtbspec volumeMounts: containers - mountPath:"/tmp/data" - name: pvc-access-containermnist  # we use a small ubuntu base to access the PVC image: ubuntu:18.04 # make sure that we have some time until the container quits by itself command: ['sleep', '6h']  # list of mount paths within the container which will be # bound to persistent volumes. volumeMounts: - mountPath: "/mnt/pvc-mnisttensorboard" # name of the volume for this path (from the below list) name: pvc-mnist-tb... volumes: # User-defined name of the persistent volume within this configuration. # This can be different from the name of the PVC. - name: pvc-mnist persistentVolumeClaim: # name of the PVC this volume binds to claimName: yourtest-usernameuser-tf-mnist-pvc</syntaxhighlight> - name: pvc-mnist-tb persistentVolumeClaim:After the PVC is applied, spin up the claimName: test pod with <syntaxhighlight lang="yaml">> kubectl apply -f pvcuser-tf-mnist-accesstb-podpvc...yaml
</syntaxhighlight>
 
You now have several options to get data to and from the container.
 
=== 1. Copying data from within the container ===
 
You can get a root shell inside the container as usual (insert the correct pod name you used below):
 
<syntaxhighlight lang="yaml">
> kubectl exec -it pvc-access-pod /bin/bash
</syntaxhighlight>
 
Your pod has internet access. Thus, an option to get data to/from the pod, in particular into the persistent volume, is to use scp, which first needs to be installed inside the pod:
 
<syntaxhighlight lang="yaml">
# apt-get update && apt install openssh-client rsync
# cd /my-pvc-mount-path
# scp your.username@external-server:/path/to/data/. ./
</syntaxhighlight>
 
An even better variant would be "rsync -av" instead of scp, as this only copies files which are different or do not exist in the destination. By reversing source and destination, you can also copy data out of the container this way.
 
=== 2. Copying data from the outside ===
 
From the outside world, you can directly copy data to and from the container using kubectl cp, which has a very similar syntax as scp:
 
<syntaxhighlight lang="yaml">
# to get data into the container, substitute name with correct id obtained from kubectl get pods
> kubectl cp /path/to/data/. pvc-access-pod:/my-pvc-mount/path/data
# to get data from the container
> kubectl cp pvc-access-pod:/my-pvc-mount/path/. /path/to/output/
</syntaxhighlight>
 
 
 
 
TODO: Will finish this part soon, for now, read up on Kubernetes "kubectl cp" documentation to copy stuff to/from a PV.

Navigation menu