Storage overview

This page describes the available storage configurations for GKE on Bare Metal. GKE on Bare Metal provides block and file storage interfaces through the following resources:

Ephemeral Storage through Kubernetes volumes

Kubernetes volumes are storage units accessible to containers in a Pod. Some volume types are backed by ephemeral storage, such as emptyDir, ConfigMap, and Secrets. Ephemeral Storage types do not persist after the Pod ceases to exist. They are useful for storing configuration information and as cache space for applications.

Ephemeral storage types share and consume resources from the node's boot disk. You can manage your local ephemeral storage resources in the same way as your CPU and memory resources.

Persistent Storage through PersistentVolume

A Kubernetes PersistentVolume (PV) is a resource that Pods can use for durable storage. A PV's lifetime is independent from a Pod's lifetime. This means that the disk and data represented by a PV continue to exist as the cluster changes and as Pods are deleted and recreated. PV resources can be provisioned dynamically through PersistentVolumeClaims PVCs, or they can be explicitly created by a cluster administrator.

Persistent storage in GKE Enterprise can be backed by a variety of storage systems, including Container Storage Interface (CSI) drivers and local volumes.

Container Storage Interface (CSI) drivers

GKE Enterprise is compatible with Container Storage Interface (CSI) v1.0 drivers. CSI is an open standard API that many major storage vendors support. For production storage, we recommend installing a CSI driver from an GKE Enterprise Ready storage partner. For the full listing of GKE Enterprise Ready storage partners, see GKE Enterprise Ready Storage Partners.

To use CSI in your cluster, deploy the CSI driver provided by your storage vendor. Then, configure workloads to use the driver's StorageClass, or set the StorageClass as the default StorageClass.

Local volumes

For proof of concept and advanced use cases, you can use local PVs. GKE on Bare Metal bundles the sig-storage-local-static-provisioner, which discovers mount points on each node and creates a local PV for each mount point.

GKE on Bare Metal cluster uses the local volume provisioner (LVP) to manage local persistent volumes. There are three types of storage classes for local PVs in an GKE on Bare Metal cluster:

  • LVP share
  • LVP node mounts
  • GKE Enterprise system

LVP share

This option creates a local PV backed by subdirectories in a local, shared file system. These subdirectories are automatically created during cluster creation. Workloads using this storage class will share capacity and IOPS since the PVs are backed by the same shared file system. For better isolation, we recommend configuring disks through LVP node mounts.

See Configuring an LVP Share for detailed instructions.

LVP node mounts

This option creates a local PV for each mounted disk in the configured directory. Each disk needs to be formatted and mounted by the user, which can be done before or after cluster creation.

See Configuring LVP node mounts for detailed instructions.

GKE Enterprise system

This storage class creates preconfigured local PVs during cluster creation that is used by GKE Enterprise system pods. The storage class name is anthos-system. Do not change or delete this storage class and do not use this stoage class for stateful apps.

What's next