• 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,可放心食用

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐