找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1072

积分

0

好友

153

主题
发表于 前天 07:32 | 查看: 5| 回复: 0

在上一篇文章中,我们完成了CubeFS集群的安装。本文将继续深入,介绍如何操作CubeFS集群,并重点讲解如何通过CSI(Container Storage Interface)驱动将CubeFS与Kubernetes集成,实现动态存储卷供给。

1. 客户端部署与配置

首先,需要部署并配置CubeFS命令行客户端,以便管理集群。

下载与您CubeFS集群版本匹配的客户端安装包:

wget https://github.com/cubefs/cubefs/releases/download/v3.5.2/cubefs-3.5.2-linux-amd64.tar.gz
# 解压
tar -xvf cubefs-3.5.2-linux-amd64.tar.gz
# 移动至可执行目录
cp cubefs/build/bin/cfs-cli /usr/local/bin
# 查看版本
cfs-cli --version

配置客户端连接信息。初始状态下,直接查询集群会因域名解析失败而报错:

# 直接查询集群信息会报错
cfs-cli cluster info
# 错误信息:lookup master.cube.io ... no such host

需要先获取master-service的集群IP地址,并更新客户端配置:

# 查找master-service对应的IP
kubectl get svc -n cubefs
# 输出示例:
# NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)
# master-service      ClusterIP   10.224.31.26    <none>        17010/TCP

# 编辑客户端连接配置文件
vim ~/.cfs-cli.json
# 将 `masterAddr` 修改为上面获取的IP和端口,例如:
{
  "masterAddr": [
    "10.224.31.26:17010"
  ],
  "timeout": 60
}

# 再次查看集群信息,此时应成功
cfs-cli cluster info

CubeFS集群信息截图

成功连接后,即可使用cfs-cli进行各类管理操作,主要命令分类如下:

命令类别 描述
cfs-cli cluster 集群管理
cfs-cli metanode/datanode 元数据/数据节点管理
cfs-cli metapartition/datapartition 元数据/数据分片管理
cfs-cli config 配置管理
cfs-cli volume/vol 卷管理
cfs-cli user 用户管理
cfs-cli quota 目录配额管理

具体命令使用方法,请参考CubeFS官方文档。

2. 部署CubeFS CSI驱动

为了让Kubernetes节点能够使用CubeFS存储,首先需要为节点添加标签:

kubectl label node component.cubefs.io/csi=enabled --all

若通过Helm安装CubeFS,则需在values.yaml配置文件中启用CSI组件并配置资源:

# 启用CSI
component:
  ...
  csi: true
    # 资源配置
    requests:
      memory: "512Mi"
      cpu: "200m"
    limits:
      memory: "1024Mi"
      cpu: "1000m"

更新Helm Release以应用配置:

cd cubefs-helm/cubefs
helm upgrade cubefs -n cubefs .

部署完成后,验证CSI驱动及存储类:

# 查看StorageClass,将默认创建一个名为cfs-sc的存储类
kubectl get sc
# 输出示例:
# NAME         PROVISIONER      RECLAIMPOLICY ... AGE
# cfs-sc (default) csi.cubefs.com Delete    ... 76s

# 查看CSI相关的Pod,需全部处于Running状态
kubectl get po -n cubefs | grep cfs-csi

CSI Pod状态截图

3. 使用CubeFS存储类进行动态供给

CSI驱动就绪后,即可使用cfs-sc存储类动态创建存储卷。下面通过一个Nginx示例演示如何使用,这也是在Kubernetes环境中集成云原生/IaaS存储方案的常见实践。

首先,创建一个PersistentVolumeClaim (PVC):

# cubefs-nginx-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cubefs-nginx
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: cfs-sc
  volumeMode: Filesystem

应用该PVC:

kubectl apply -f cubefs-nginx-pvc.yaml

查看PVC及其自动创建的PV:

kubectl get pvc
kubectl get pv

接下来,创建一个Nginx Deployment,并将上述PVC挂载到容器中:

# 生成一个基础的Nginx部署模板
kubectl create deploy nginx --image=nginx:1.27 --dry-run=client -oyaml > nginx-cubefs-deploy.yaml

编辑nginx-cubefs-deploy.yaml,在Pod模板中添加volume和volumeMounts配置:

# nginx-cubefs-deploy.yaml (部分内容)
spec:
  containers:
  - image: nginx:1.27
    name: nginx
    volumeMounts:
      - mountPath: "/usr/local/nginx" # 挂载路径
        name: nginx-pvc
  volumes:
    - name: nginx-pvc
      persistentVolumeClaim:
        claimName: cubefs-nginx # 使用前面创建的PVC

部署应用并检查状态:

kubectl apply -f nginx-cubefs-deploy.yaml
kubectl get po
kubectl describe po <nginx-pod-name>

Pod挂载PVC成功截图

从Pod事件描述中可以看到,在启动前已成功将CubeFS提供的PVC挂载到指定路径,这标志着运维/DevOps流程中的动态存储供给功能已正常运作。至此,Kubernetes中的应用即可像使用本地目录一样,使用CubeFS提供的分布式存储空间。




上一篇:Python fsutil文件操作库详解:简化os与shutil,提升开发效率
下一篇:JavaScript动态导入与图片懒加载巧妙结合:实现资源按需加载
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 18:07 , Processed in 0.107420 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表