In my humble opinion, Google Kubernetes Engine (previously known as Google Container Engine) is the best kubernetes implementation among all the cloud providers. It is THE easiest to set up as well. Because of that, we’ve been using GKE extensively on many of our projects. And recently, I came across a use case that is not documented at all (at least I couldn’t find any documentation) - Using an SSD with Persistent Volume (PV) in GKE
Turns out, it is not very straight forward. So, I decided to write a blog post explaining just that.
Creating an SSD persistent volume in GKE
First of all, we need to add the SSD storage class so that you can start creating PVs from SSD.
ssd-storage-class.yml with the following content
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ssd provisioner: kubernetes.io/gce-pd parameters: type: pd-ssd
Create the storage class
kubectl create -f ssd-storage-class.yml
Once that is done, make sure that the new storage class is created and ready to use
kubectl get sc
You should see something like below
➜ kubectl get sc NAME TYPE ssd kubernetes.io/gce-pd standard (default) kubernetes.io/gce-pd
Great. We have created the storage class. Now all we can easily create persistent volumes using the newly created storage class
ssd-pv-demo.yml with the following contents
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ssd-pv-demo labels: name: ssd-pv-demo spec: accessModes: [ "ReadWriteOnce" ] storageClassName: ssd resources: requests: storage: 10Gi
storageClassName is what defines whether the disk is an SSD or a standard drive.
Alright, that’s all.