TL;DR
helm repo add openebs https://openebs.github.io/openebs
helm repo update
# 以默认值安装
helm install openebs --namespace openebs openebs/openebs --create-namespace
# 禁用副本存储类型、lvm 本地存储、zfs本地存储,仅保留本地路径存储
helm install openebs --namespace openebs openebs/openebs --set engines.replicated.mayastor.enabled=false --set engines.local.lvm.enabled=false --set engines.local.zfs.enabled=fa
lse --create-namespace
E0311 06:22:00.794754 111105 round_tripper.go:63] CancelRequest not implemented by *kube.RetryingRoundTripper
NAME: openebs
LAST DEPLOYED: Tue Mar 11 06:21:28 2025
NAMESPACE: openebs
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Successfully installed OpenEBS.
Check the status by running: kubectl get pods -n openebs
The default values will install both Local PV and Replicated PV. However,
the Replicated PV will require additional configuration to be fuctional.
The Local PV offers non-replicated local storage using 3 different storage
backends i.e Hostpath, LVM and ZFS, while the Replicated PV provides one replicated highly-available
storage backend i.e Mayastor.
For more information,
- view the online documentation at https://openebs.io/docs
- connect with an active community on our Kubernetes slack channel.
- Sign up to Kubernetes slack: https://slack.k8s.io
- #openebs channel: https://kubernetes.slack.com/messages/openebs
实际使用需充分阅读官方文档。
Local PV Hostpath 用法
定义 StorageClass
以下内容写入local-hostpath-sc.yaml
,默认的openebs-hostpath
数据存放在主机的/var/openebs/local
路径下,可以像下面这样自己创建一个。默认使用kubernetes.io/hostname=<node-name>
来标记节点。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: openebs-local-hostpath
annotations:
openebs.io/cas-type: local
cas.openebs.io/config: |
- name: StorageType
value: hostpath
- name: BasePath
value: /var/openebs/local
provisioner: openebs.io/local
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
PersistentVolumes
可以有多种回收策略,包括 "Retain
"、"Recycle
" 和 "Delete
"。 对于动态配置的PersistentVolumes
来说,默认回收策略为 "Delete"。
这表示当用户删除对应的PersistentVolumeClaim
时,动态配置的volume
将被自动删除。 如果volume
包含重要数据时,这种自动行为可能是不合适的。 那种情况下,更适合使用 "Retain
" 策略。 使用 "Retain
" 时,如果用户删除PersistentVolumeClaim
,对应的PersistentVolume
不会被删除。 相反,它将变为Released
状态,表示所有的数据可以被手动恢复。
pvc
的迁移可以使用 pv-migrate
或 Velero
进行,实现在主机间迁移。
定义 PVC
local-hostpath-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: local-hostpath-pvc
spec:
storageClassName: openebs-hostpath
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5G
Pod
使用
local-hostpath-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: hello-local-hostpath-pod
spec:
volumes:
- name: local-storage
persistentVolumeClaim:
claimName: local-hostpath-pvc
containers:
- name: hello-container
image: busybox
command:
- sh
- -c
- 'while true; do echo "`date` [`hostname`] Hello from OpenEBS Local PV." >> /mnt/store/greet.txt; sleep $(($RANDOM % 5 + 300)); done'
volumeMounts:
- mountPath: /mnt/store
name: local-storage
清理
kubectl delete pod hello-local-hostpath-pod
kubectl delete pvc local-hostpath-pvc
kubectl delete sc local-hostpath
# 可验证动态创建的 pv 也被删除
kubectl get pv