Adding a Compute Engine Disk to Container Engine as persistent volume

4/10/2017

I have a PersistentVolumeClaim that looks like the following:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gitlab-config-storage
  namespace: gitlab
  annotations:
    volume.beta.kubernetes.io/storage-class: fast
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi

This created a Disk in Google Compute Engine, I then deleted the claim and reapplied it, but this created a new Disk, I would like to attach the original Disk to my claim as this had data in it I've already created, is there a way to force GKE to use a specific Disk?

-- Simon I
google-cloud-platform
google-compute-engine
google-kubernetes-engine
kubernetes

2 Answers

4/10/2017

By using a persistent volume claim, you are asking GKE to use a persistent disk, and then always use the same volume.

However, by deleting the claim, you've essentially destroyed it.

Don't delete the claim, ever, if you want to continue using it.

You can attach a claim to a multiple pods over its lifetime, and the disk will remain the same. As soon as you delete the claim, it will disappear.

Take a look here for more in.formation

-- jaxxstorm
Source: StackOverflow

2/7/2018

You can re-attach a GCE disk to a PersistantVolumeClaim by first creating the PersistantVolume. Create a yaml file and set the proper values, e.g.:

---
apiVersion: v1
kind: PersistentVolume
  name: pvc-gitlab-config-storage
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 25Gi
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: gitlab-config-storage
    namespace: gitlab
  gcePersistentDisk:
    pdName: <name_of_the_gke_disk>
  persistentVolumeReclaimPolicy: Delete
  storageClassName: fast

Create this with kubectl apply -f filename.yaml and then re-create your PersistantVolumeClaim with matching values to the spec and claimRef. The PVC should find the matching PV and bind to it & the existing GCE disk.

-- Brint E. Kriebel
Source: StackOverflow