暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Curve Operator 上手初体验

OpenCurve 2023-04-19
71

背景

Curve 是云原生计算基金会 (CNCF) Sandbox 项目,是网易主导自研和开源的高性能、易运维、云原生的分布式存储系统。

目前 Curve Operator 已支持 CurveBS 集群部署和删除功能,本文我们对 curve-operator 项目的使用以及如何配合 curve-csi,使用 Curve 为后端 Pod 提供存储系统的能力做一个简单介绍。

另外,社区目前在进主要围绕 Curve Operator 的开发者活动;欢迎感兴趣的朋友报名,有礼包和开发者证书哦~ 2023 Curve 开发者活动来了!


部署 Curve Cluster

环境要求

  • 三个节点(目前不支持单机部署,该功能正在开发中)

  • Kubernetes 1.19+

安装 curve-operator

第一步是部署 Curve Operator,只需要克隆下 Operator 仓库,然后安装即可:

git clone https://github.com/opencurve/curve-operator.git
cd curve-operator/config
kubectl apply -f deploy/manifests.yaml

执行完上述命令之后,你可以执行以下命令验证 curve-operator 处于 running 状态:

kubectl get pod -n curvebs

NAME                              READY   STATUS    RESTARTS   AGE
curve-operator-69bc69c75d-jfsjg   1/1     Running   0          7s

部署 Curve Cluster

经过上述第一步的操作,Curve Operator 处于 running 状态,下一步我们就需要部署一个 CurveBS 后端集群,在部署之前,需要有几项内容需要配置。

完整的配置文件在 config/samples/cluster.yaml

apiVersion: operator.curve.io/v1
kind: CurveCluster
metadata:
  name: my-cluster
  namespace: curvebs
spec:
  curveVersion:
    image: opencurvedocker/curvebs:v1.2
  nodes:
  - curve-operator-node1
  - curve-operator-node2
  - curve-operator-node3
  dataDirHostPath: /curvebs/data
  logDirHostPath: /curvebs/log
  etcd:
    port: 23880
    listenPort: 23890
  mds:
    port: 23970
    dummyPort: 23960
  storage:
    useSelectedNodes: false
    nodes:
    - curve-operator-node1
    - curve-operator-node2
    - curve-operator-node3
    port: 8200
    copysets: 100
    devices:
    - name: /dev/vdc
      mountPath: /data/chunkserver0
      percentage: 80
  snapShotClone:
    enablefalse
    port: 5555
    dummyPort: 8083
    proxyPort: 8084
    s3Config:
      ak: minioadmin
      sk: minioadmin
      nosAddress: http://10.219.196.145:9000
      bucketName: curvebs

需要注意的一下几个字段:

  • curveVersion:CurveBS 集群版本;

  • nodes:这里需要配置集群中的三个节点,后续在这三个节点上会部署 etcd,mds 和 snapshotclone (可选)

  • 各个服务的 port 端口:这些端口需要保证不能与节点上的其他服务产生冲突,否则会部署失败;

  • storage:配置存储节点,即 chunkserver。这里 storage.nodes 是需要部署 chunkserver 的所有节点,devices 是配置存储设备,要求上述配置的所有节点都要存在该磁盘,否则会部署失败。

  • snapShotClone:快照克隆服务,该服务是可选部署,如果不想要部署该服务,将 snapShotClone.enable 设置为 false 即可。

在修改完成上述内容之后,使用如下命令部署 Curve cluster:

kubectl apply -f config/samples/cluster.yaml

随后,可以使用去查看 curvebs 命名空间下的所有的 pod,应该能到类似下面的几个 pod 处于 running 状态。

chunkserver 服务需要等待 prepare-chunkfile job 执行结束后才会创建运行,格式化的时间根据盘符大小确定,所以可以需要等待一段时间才能看到配置的若干 curve-chunkserver pod 处于 running 状态。

root@curve-operator-node1:~/curve-operator# kubectl get pod -n curvebs
NAME                                                          READY   STATUS      RESTARTS   AGE
curve-chunkserver-curve-operator-node1-vdc-556fc99467-5nx9q   1/1     Running     0          5m45s
curve-chunkserver-curve-operator-node2-vdc-7cf89768f9-hmcrs   1/1     Running     0          5m45s
curve-chunkserver-curve-operator-node3-vdc-f77dd85dc-z5bws    1/1     Running     0          5m45s
curve-etcd-a-d5bbfb755-lzgrm                                  1/1     Running     0          41m
curve-etcd-b-66c5b54f75-6nnnt                                 1/1     Running     0          41m
curve-etcd-c-86b7964f87-cj8zk                                 1/1     Running     0          41m
curve-mds-a-7b5989bddd-ln2sm                                  1/1     Running     0          40m
curve-mds-b-56d8f58645-gv6pd                                  1/1     Running     0          40m
curve-mds-c-997c7fd-vt5hw                                     1/1     Running     0          40m
gen-logical-pool-rzhlz                                        0/1     Completed   0          5m15s
gen-physical-pool-chnw8                                       0/1     Completed   0          5m45s
prepare-chunkfile-curve-operator-node1-vdc-znb66              0/1     Completed   0          40m
prepare-chunkfile-curve-operator-node2-vdc-6gf2z              0/1     Completed   0          40m
prepare-chunkfile-curve-operator-node3-vdc-2bkxm              0/1     Completed   0          40m
read-config-k272k                                             0/1     Completed   0          41m

至此整个集群已经部署完成。


部署 curve-csi

在完成 Curve 后端集群部署之后,需要部署 curve-csi 进一步验证集群的正确性。

1. curve-csi 的部署流程参考:
https://ask.opencurve.io/t/topic/89
在部署完成之后,可以在 csi-system 命名空间中看到如下 pod 处于 running 状态:
root@curve-operator-node1:~/code/curve-csi/deploy# kubectl get pod -n csi-system
NAME                                            READY   STATUS    RESTARTS   AGE
csi-curve-plugin-9lx6f                          2/2     Running   0          4s
csi-curve-plugin-pjd42                          2/2     Running   0          4s
csi-curve-plugin-provisioner-744d477fc7-blgvd   5/5     Running   0          5s
csi-curve-plugin-provisioner-744d477fc7-gqm2l   5/5     Running   0          5s
csi-curve-plugin-vqpbz                          2/2     Running   0          4s

2. 创建 StorageClass 以及 PVC 看是否可以创建 Curve volume

kubectl apply -f example/storageclass.yaml
kubectl apply -f example/pvc.yaml

可以使用 kubectl 工具查看 PVC/PV 是否处于 bound 状态:
kubectl get pvc

NAME             STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
curve-test-pvc   Bound    pvc-119ca0e2-259f-4c29-8399-8899e1f7b96e   20Gi       RWO            curve          3s

kubectl get pv

NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                    STORAGECLASS   REASON   AGE
pvc-119ca0e2-259f-4c29-8399-8899e1f7b96e   20Gi       RWO            Delete           Bound    default/curve-test-pvc   curve                   78s

可以看到 PV 和 PVC 创建成功,并已经成功绑定。

3. 创建使用该 PVC 的 pod
kubectl apply -f example/pod.yaml

NAME               READY   STATUS    RESTARTS   AGE
csi-curve-test     1/1     Running   0          20s

小结
Curve Operator 项目以 Curve 为核心,通过 Operator 模式实现 Curve 在 Kubernetes 环境下的管理和运维。Operator 本质是一个简单的容器应用可以用于构建以及管理 Curve 集群,使得 Curve 存储系统集成于云原生环境,最终目标是构建一个自动化部署和运维工具,提升 Curve 集群的易用性与稳定性。

------ END. ------



🔥 火爆报名中:

2023 Curve 开发者活动来了!

2023 开源之夏 | Curve 邀你与中国存储软件共成长,赢万元奖金

Curve丨Google 编程之夏 2023 招募中

🔥 推荐用户案例:
Curve 文件存储在 Elasticsearch 冷热数据存储中的应用实践
扬州万方:基于申威平台的 Curve 块存储在高性能和超融合场景下的实践
创云融达:基于 Curve 块存储的超融合场景实践 
🔥 推荐硬核技术解析:
ChunkServer 优化使用 bthread 的思考
通过 Samba 来使用 CurveFS 
Curve 块存储 IO 链路零拷贝



关于 Curve 

Curve 是一款高性能、易运维、云原生的开源分布式存储系统。可应用于主流的云原生基础设施平台:对接 OpenStack 平台为云主机提供高性能块存储服务;对接 Kubernetes 为其提供 RWO、RWX 等类型的持久化存储卷;对接 PolarFS 作为云原生数据库的高性能存储底座,完美支持云原生数据库的存算分离架构。

Curve 亦可作为云存储中间件使用 S3 兼容的对象存储作为数据存储引擎,为公有云用户提供高性价比的共享文件存储。

  • GitHub:https://github.com/opencurve/curve
  • 官网https://opencurve.io/
  • 用户论坛:https://ask.opencurve.io/
    微信群:搜索群助手微信号 OpenCurve_bot

文章转载自OpenCurve,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论