Use local persistent volumes for embedded journal, single master local journal, off-heap metastore and tiered storage
See original GitHub issueIs your feature request related to a problem? Please describe. Local persistent volumes is the preferred way for storage to persist across restarts of a pod (ref: https://kubernetes.io/docs/concepts/storage/volumes/#local). We should use persistent volumes for the following:
- embedded journal volume for master pods
- single master journal volume for master pod
- off-heap metastore volume for master pods
- tiered storage for worker pods
Describe the solution you’d like Helm charts should be extended to support local persistent volumes w/ resource limits (e.g., size of journal / tiered storage). Documentation w/ and w/o helm should be added as part of this ask. Note: hostPath volumes cannot be provisioned with resource limits and require root user and are hence not desired for persistent local storage.
- embedded journal volume for master pods: restarts of the master pod w/o persistent volumes will lead to loosing metadata.
- The helm template
statefulset.yaml
should use persistentVolumeClaims instead ofemptyDir
volumes. journal-pvc.yaml
should createmasterCount
claim resourcesjournal-pv.yaml
should be changed to use local persistent volume instead ofhostPath
by default
- single master journal volume for master pod
- As part of pv for embedded journal we may choose to rename the claim from
alluxio-pv-claim
toalluxio-pv-claim-<i>
wherei=0
for a single master.
- off-heap metastore volume for master pods
- Switch from
emptyDir
volume to localPV with limits
- tiered storage for worker pods
- Switch from unbounded
hostPath
volume to localPV with limits
Describe alternatives you’ve considered Advanced end-user customizes the specs on their own
Urgency It would be painful w/o extensive knowledge of Alluxio to roll out raw specifications for these features to be production ready. This deployment will not be possible w/ helm (w/o this feature).
Additional context N/A
Issue Analytics
- State:
- Created 4 years ago
- Comments:7 (7 by maintainers)
Top GitHub Comments
@madanadit After some research, I think the best practice for using
local
PV is by declaring a PVC on the Pod side (in fact I don’t find anybody directly declaring alocal
PV in thevolumes
). There are 2 ways to satisfy the PVC:You can manually create local PV.
Use a provisioner to create local PVs for you like: https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/blob/master/docs/getting-started.md This is the static provisioner that K8s doc refers to.
In short, to use
local
PV, we need to support PVC for the declaration, and provide appropriate documentation for the user to provision the PVs for the PVCs.@cheyang FYI