Skip to content

Latest commit

 

History

History
101 lines (78 loc) · 3.56 KB

File metadata and controls

101 lines (78 loc) · 3.56 KB

Kubernetes Basic User Guide

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.

Install Driver

See instructions

Zonal PD example for Linux or Windows cluster

This example provisions a zonal PD in both single-zone and regional clusters.

  1. Create example Zonal Storage Class
$ kubectl apply -f ./examples/kubernetes/demo-zonal-sc.yaml
  1. 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
  1. 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
  1. 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

Regional PD example

This example provisions a regional PD in either zonal or regional clusters.

  1. 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
      
  2. Create example PVC and Pod

$ kubectl apply -f ./examples/kubernetes/demo-pod.yaml
  1. 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
  1. 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

StorageClass Fields

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