This guide gives a simple example on how to provision zonal and regional PDs in single-zone and regional clusters.
Note: Regional PD support is available in beta starting with Kubernetes 1.14 and GA starting with 1.17.
See instructions
This example provisions a zonal PD in both single-zone and regional clusters.
- Create example Zonal Storage Class
$ kubectl apply -f ./examples/kubernetes/demo-zonal-sc.yaml
- Create example PVC and Pod For Linux cluster,
$ kubectl apply -f ./examples/kubernetes/demo-pod.yaml
For Windows cluster,
$ kubectl apply -f ./examples/kubernetes/demo-windows.yaml
- Verify PV is created and bound to PVC
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
podpvc Bound pvc-e36abf50-84f3-11e8-8538-42010a800002 10Gi RWO csi-gce-pd 9s
- Verify pod is created and in
RUNNING
state (it may take a few minutes to get to running state)
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
web-server 1/1 Running 0 1m
This example provisions a regional PD in either zonal or regional clusters.
-
Create example Regional Storage Class. For zonal clusters,
allowedTopologies
must be specified with two zones where one of the zones must be the cluster's zone. For regional clusters this configuration can also be used to make sure that regional PD is provisioned in those two zones.- Restricted zones
$ kubectl apply -f ./examples/kubernetes/demo-regional-restricted-sc.yaml
For regional clusters it is also possible to not specify
allowedTopologies
, in which case two zones will be picked from the available zones in the cluster's region.- Unrestricted zones
$ kubectl apply -f ./examples/kubernetes/demo-regional-sc.yaml
- Restricted zones
-
Create example PVC and Pod
$ kubectl apply -f ./examples/kubernetes/demo-pod.yaml
- Verify PV is created and bound to PVC
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
podpvc Bound pvc-e36abf50-84f3-11e8-8538-42010a800002 10Gi RWO csi-gce-pd 9s
- Verify pod is created and in
RUNNING
state (it may take a few minutes to get to running state)
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
web-server 1/1 Running 0 1m
The list of recognized StorageClass parameters
is the same as the list of CSI CreateVolume parameters.
Additional provisioning parameters are described
here, for
example the following StorageClass
will format provisioned volumes as XFS.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-gce-pd-xfs
provisioner: pd.csi.storage.gke.io
parameters:
type: pd-standard
csi.storage.k8s.io/fstype: xfs
volumeBindingMode: WaitForFirstConsumer
The list of recognized topology keys in allowedTopologies
is listed here