Provisioning GCP Lustre
Overview
This guide explains how to provision a managed GCP Lustre instance.
Prerequisites
- Create a namespace for installation.
export NAMESPACE=llm-d-storage # or any other namespace (shorter names recommended)
kubectl create namespace ${NAMESPACE}
Cluster setup for provisioning a managed GCP Lustre instance (GKE cluster)
To create a new GKE cluster, you need to first set up a separate VPC for provisioning a managed GCP Lustre instance. Follow the steps from Lustre guide to setup a separate VPC network.
If you have an existing cluster, you can update the same VPC network to enable provisioning a managed GCP Lustre instance. Ensure you initialize the variable NETWORK_NAME with your existing network name and skip the network creation command in the setup above.
Please update the $NETWORK_NAME and $LOCATION variables in storage_class.yaml to match your cluster configuration.
Ensure Lustre CSI driver is enabled on the cluster, otherwise it would fail to provision a managed GCP Lustre instance.
Provisioning
GKE
1. Create a StorageClass for Lustre:
kubectl apply -f guides/tiered-prefix-cache/storage/manifests/backends/lustre/storage_class.yaml -n ${NAMESPACE}
2. Create a PVC:
Once the StorageClass is created, you can create a PVC and mount to your pod like so:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: lustre-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 18000Gi # Range from 18000Gi to 954000Gi, must be in multiples of 9000 Gi
storageClassName: lustre-class
Check the PVC
kubectl get pvc -n ${NAMESPACE}
Output should show the PVC as Bound:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
lustre-pvc Bound pvc-3c793698-XXXXXXX 36000Gi RWX lustre-class <unset> 6d
Cleanup
kubectl delete -f ./storage_class.yaml -n ${NAMESPACE}