= k8s/StudyNotes/Storage =

 * Docker storage - Storage drivers[aufs,btrfs,etc.] and volume's [Local,VMware,rexray/ebs]
   * /var/lib/docker/ [aufs, containers, image, volumes]
   * Create persistent storage for docker container {{{
     docker volume create data_vol
     docker run -v data_vol:/var/lib/mysql mysql
     # if no pre-created volume docker creates it on the fly
     
     docker run --mount type=bind,source=/data/mysql,target=/varlib/mysql mysql 
  
     }}}
   * Bind mount form anywhere,  volume mount from /var/lib/docker/volumes/

 * '''k8s''' - Was just docker, now CRI container runtime interface to support docker,rkt, cri-o
   * Same for network CNI Container network interface
   * Same for storage CSI Container Storage Interface - Amazon EBS, PureStorage 
      * CSI spec https://github.com/container-storage-interface

 * k8s volume options [hostPath:, nfs, awsElasticBlockStore:, etc]

 * k8s centralize storage with PersistentVolume, then pods claim matching pv with VolumeClaims.

 * PV(PersistenVolume) on cloud provider still has to manually created.
   * Automate this with Dynamic Provisioning using '''StorageClass''' object
   * e.g. SC auto creates PV(PersistVol) and PVC(PVclaim) grabs disk from SC {{{
apiVersion: storage.k8s.io/v1
kind: storageClass
metadata:
  name: google-storage
provisioner: kubernetes.io/gce-pd
parameters:
  type: pd-standard
  replication-type: none
     }}}
     * In the PVC obj we now refer to the '''storageClassName: google-storage''' defined in SC