Various apps in the fabric8  platform require persistence (e.g.gogs, nexus, jenkins). The apps use the kubernetes resource PersistentVolumeClaim to specify their needs for a PersistentVolume
So when you deploy fabric8 via gofabric8 by default this will create a number (5-6) of PersistentVolumeClaim resources.
To see the current PersistentVolumeClaim and PersistentVolume resources use the following commands:
kubectl get pvc
kubectl get pv
When things are working correctly you should see all the PersistentVolumeClaim resources are Bound to some PersistentVolume resource. When thats true then all the various persistent apps in fabric8 will startup.
If you are using minikube or minishift then gofabric8 automatically spins up the equivalent PersistentVolume resources for you using HostPath based PersistentVolumes - so things should just work!
Though if you create new apps on the fly that uses persistence after you have ran the gofabric8 start command then you may have PersistentVolumeClaim resources which are stuck Pending.
If so then you can dynamically create new PersistentVolume resources for any pending PersistentVolumeClaim resources via the command:
gofabric8 volumes
Ultimately we will enable dynamic PersistentVolume creation in minikube and minishift to avoid this command being necessary.    
We use Kubernetes dynamic PersistentVolume provisioning to automatically create PVs when a PersistentVolumeClaim needs one.
This is done by creating a StorageClass which is configured to point to cloud persistence implementations like EBS, GlusterFS, Cinder etc
All fabric8 related PersistentVolumeClaim resources have a volume.beta.kubernetes.io/storage-class=standard annotation that is used to match which StorageClass to use.
Example:
apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
annotations:
    volume.beta.kubernetes.io/storage-class: "standard"
name: "jenkins-jobs"
spec:
accessModes:
- "ReadWriteOnce"
resources:
    requests:
    storage: "100Mi"
So when setting up a cluster we just need to choose which PV implemenation to use and add it to your StorageClass e.g.
GKE
cat <<EOF | kubectl create -f -
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  name: standard
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
EOF
AWS
  cat <<EOF | kubectl create -f -
  kind: StorageClass
  apiVersion: storage.k8s.io/v1beta1
  metadata:
    name: standard
  provisioner: kubernetes.io/aws-ebs
  parameters:
    type: gp2
  EOF
For a full list of StorageClass examples take a look at the kubernetes docs http://kubernetes.io/docs/user-guide/persistent-volumes/#parameters
If you want to try out fabric8 without setting up all the PersistentVolume instances for your cluster you can just disable persistence
To disable persistence just add the --pv=false command argument when using gofabric8 deploy
gofabric8 deploy -y --pv=false
Then all PersistentVolumeClaim volumes will be converted to EmptyDir volumes instead to avoid needing any PersistentVolume resources to be created.
If you hit any issues with this please create up an issue immediately and we'll do our best to get you going.
Or please join us in the community on IRC/slack/stackoverflow!