Kubernetes with the local rocket storage
gridscale Managed Kubernetes (GSK) is a secure and fully-managed Kubernetes solution. All you need to do is to configure how powerful you wish your cluster to be. We take care of upgrades and OS maintenance.
GSK releases 1.26 and upward supports local rocket storage, which provides nodes with an additional high performance I/O storage, as described in the storage performance classes.
Management of local rocket storage in GSK:
- Adding or removing the rocket storage:
- impacts the workloads (e.g., rescheduling pods) as worker nodes will be replaced
- Increasing the size of the rocket storage:
- expands the rocket storage on-the-fly
- preserves data
- has no impact (e.g., rescheduling pods) on workloads that are not using the rocket storage
- Decreasing the size of the rocket storage:
- in order to decrease the size of the rocket storage, you MUST delete all workloads and PVCs that use the rocket storage
- recreates the rocket storage
- causes data loss
- has no impact (e.g., rescheduling pods) on workloads that are not using the rocket storage
- updating the worker nodes’ resources (e.g., ram, core, and the boot storage) preserves data of the rocket storage
How to use the local rocket storage to provision local PVCs
- Deploy local-path-provisioner
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.24/deploy/local-path-storage.yaml
- Patch the configmap of local-path-config where the local rocket storage is mounted to
/gs-pvc-data
path in the worker node
cat <<EOF>configmap_batch.yaml
data:
config.json: |-
{
"nodePathMap":[
{
"node":"DEFAULT_PATH_FOR_NON_LISTED_NODES",
"paths":["/gs-pvc-data"]
}
]
}
EOF
kubectl -n local-path-storage patch cm local-path-config --patch-file configmap_batch.yaml
- Print the supported
StorageClasses
, and you should seelocal-path
included inStorageClasses
kubectl get StorageClasses
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
block-storage (default) bs.csi.gridscale.io Delete WaitForFirstConsumer true 83m
block-storage-high bs.csi.gridscale.io Delete WaitForFirstConsumer true 83m
block-storage-insane bs.csi.gridscale.io Delete WaitForFirstConsumer true 83m
local-path rancher.io/local-path Delete WaitForFirstConsumer false 33m
- When the locally provisioned PVC reaches the maximum size of the local rocket storage, you might get
output: I/O error
in your pods- I/O error
kubectl logs -f cronjob-logs-28102376-f8qzk head: standard output: I/O error
- you can expand the local rocket storage by increasing the value of
k8s_worker_node_rocket_storage
. Then, the pods recover.
- I/O error
Limitations
- When decreasing the size of the rocket storage, all worker node rocket storages will be recreated. as such, you need to delete all workloads and PVCs that use the rocket storage first.
- As the rocket storage is local, it is bound to both the worker node and the underlying server’s compute node. As such
- your workloads using a
local-path-provisioner
PVC cannot be rescheduled to other worker nodes. - your worker node cannot be recovered, while the compute node is not available.
- your workloads using a
- The maximum supported size of the rocket storage is 5960GB
- Take care to only use the
local-path-provisioner
deployment (as described above) if local rocket storage is enabled. otherwise, thelocal-path-provisioner
will store its PVCs on the boot disk of the worker nodes. - The
local-path-provisioner
does not enforce volume capacity limits. The capacity limit will be ignored. - Although
ALLOWVOLUMEEXPANSION
is disabled, local volume PVCs can grow to the rocket storage size.