为k8s部署openebs的cstor分布式存储及nfs实现rwx
OpenEBS 是一款使用 Go 语言编写的基于容器的块存储开源软件。OpenEBS 使得在容器中运行关键性任务和需要数据持久化的负载变得更可靠。
·
- OpenEBS 是一款使用 Go 语言编写的基于容器的块存储开源软件。
- OpenEBS 使得在容器中运行关键性任务和需要数据持久化的负载变得更可靠。
一、部署
1. 下载iscsi
# 在需要作为存储的机器
yum install iscsi-initiator-utils -y
cat /etc/iscsi/initiatorname.iscsi
sudo systemctl enable --now iscsid
systemctl status iscsid
2.安装openebs
- 由于官方openebs的镜像在国外(下载速度慢),且会用到k8s.gcr.io的镜像(无法下载)
- 我已经将安装的yaml文件内的镜像改为了我的阿里云(替换openebs)和lank8s.cn(替换k8s.gcr.io),对应的yaml文件在daoc目录
- openebs官网可自行选择安装类型,并根据所选类型进行安装
我这里选择的是cstor
kubectl apply -f openebs-operator.yaml
kubectl apply -f cstor-operator.yaml
# 在node01和node02检测到两个blockdevice
[root@k8s-master yaml]# kubectl get bd -n openebs
NAME NODENAME SIZE CLAIMSTATE STATUS AGE
blockdevice-04f302ffe61688e8c529923714c791ef k8s-node02 10736352768 Unclaimed Active 14s
blockdevice-c797122b11695c427d6ef7793d270ff7 k8s-node01 21473771008 Unclaimed Active 19m
# Creating cStor storage pools
# 根据刚才的两个bd创建storage pools
# Stripe(条带化)提供了高性能,但没有数据冗余和故障恢复能力。
# Mirror(镜像)提供了数据冗余和故障恢复能力,但需要更多的存储空间。
kubectl apply -f cstor-pool.yaml
[root@k8s-master yaml]# kubectl get cspc -n openebs
NAME HEALTHYINSTANCES PROVISIONEDINSTANCES DESIREDINSTANCES AGE
cstor-disk-pool 2 2 4m51s
[root@k8s-master yaml]# kubectl get cspi -n openebs
NAME HOSTNAME FREE CAPACITY READONLY PROVISIONEDREPLICAS HEALTHYREPLICAS STATUS AGE
cstor-disk-pool-bsr2 k8s-node02 9630M 9630262k false 1 1 ONLINE 50m
cstor-disk-pool-qzxn k8s-node01 19300M 19300096500 false 1 0 ONLINE 50m
如果证书问题报错的话,issues地址
[root@k8s-master yaml]# kubectl get ValidatingWebhookConfiguration -A NAME WEBHOOKS AGE openebs-cstor-validation-webhook 1 86m [root@k8s-master yaml]# kubectl delete ValidatingWebhookConfiguration openebs-cstor-validation-webhook
[root@k8s-master yaml]# kubectl apply -f cstor-sc.yaml
storageclass.storage.k8s.io/cstor-csi-disk created
[root@k8s-master yaml]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
cstor-csi-disk cstor.csi.openebs.io Delete Immediate true 3s
openebs-device openebs.io/local Delete WaitForFirstConsumer false 31m
openebs-hostpath openebs.io/local Delete WaitForFirstConsumer false 31m
3. 安装nfs
- 由于openebs时块存储,不支持ReadWriteOnce(RWX),无法满足同一个deploy的多个pod(不在同一个node)共享一个pvc
- 官方提供了一种方案,即在openebs之上配置NFS
# 所有节点
sudo yum install nfs-utils -y
kubectl apply -f nfs-operator.yaml
二、文档链接
所有用到的文档,都放在我的仓库里了,已经将国外的镜像源替换为了国内的阿里云和lank8s.cn,可放心食用
更多推荐
已为社区贡献5条内容
所有评论(0)