使用KPFS文件存储

最近更新时间:2021-04-14 15:41:29

查看PDF

您可以在金山云容器服务Kubernetes集群中使用金山云KPFS存储卷。

可以通过以下两种方式使用KPFS文件存储卷:

背景

KPFS(Kingsoft cloud Performance File Storage),是金山云应对高性能计算场景,定制优化开发的高性能文件存储系统,解决高聚合带宽、高IOPS业务应用毫秒级读写访问要求的问题,提供高吞吐、高IOPS的高性能文件存储,迅捷弹性扩展、全托管设计;帮助用户快速开展业务应用,专注业务创新。

前提

挂载文件系统(KPFS)的前提是您有创建好的文件系统。如果您还未创建文件系统,您需要先创建文件系统

说明

  1. 金山云KPFS为共享存储,可以同时为多个 Pod 提供共享存储服务,即一个PVC可以同时被多个Pod 使用。
  2. 使用KPFS文件存储,您需要提前在节点上安装KPFS的客户端,详见:安装客户端
  3. 创建时间在2020-12-15之后的集群可以直接使用KPFS,创建时间在2020-12-15前的集群,请用户手动将集群内的ksc-flexvolume-ds组件的镜像更新为hub.kce.ksyun.com/ksyun/ksc-flexvolume:v1.8.2-mp,方可使用。
    更新镜像版本命令行如下:
kubectl set image ds/ksc-flexvolume-ds ksc-flexvolume-ds=hub.kce.ksyun.com/ksyun/ksc-flexvolume:v1.8.2-mp --record -n kube-system 
  1. KPFS动态存储卷能力,集群创建时间在2021-2-24及之后的集群可以直接使用,创建时间在2021-2-24之前需要更新集群中Kube-system命名空间下disk-provisioner组件,YAML见这里

查看文件系统

image.png

如上图所示:

文件系统名称:kpfs-xxxxwxxxxx

Sever:10.0.1.xx

静态存储卷

参数说明

参数 描述
server 配置为KPFS文件系统的挂载点
fileSystem 配置为KPFS文件系统的名称
subPath 配置为期望挂载的KPFS子目录,相对于文件系统根目录

直接通过Volume使用

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: static-kpfs-dep
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx-flexvolume-kpfs
          image: nginx
          volumeMounts:
            - name: kpfs-test
              mountPath: "/data"
      volumes:
        - name: kpfs-test
          flexVolume:
            driver: "ksc/kpfs"
            options:
              server: 10.0.1.xx
              fileSystem: kpfs-xxxxxxx
              subPath: /test-dep  # 选填项

通过PV/PVC使用

创建PV:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: static-kpfs-pv
spec:
  capacity:
    storage: 5Gi
  storageClassName: static-kpfs-pv
  accessModes:
    - ReadWriteMany
  flexVolume:
    driver: "ksc/kpfs"
    options:
      server: 10.0.1.47
      fileSystem: kpfs-xxxxxx
      subPath: /test1-dep

创建PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: static-kpfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: static-kpfs-pv
  resources:
    requests:
      storage: 5Gi

创建Deployment:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: static-kpfs-dep
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx-flexvolume-disk
          image: nginx
          volumeMounts:
            - name: kpfs-test
              mountPath: "/data"
      volumes:
        - name: kpfs-test
          persistentVolumeClaim:
            claimName: static-kpfs-pvc

动态存储卷

参数说明

参数 说明
server 配置为KPFS文件系统的挂载点(必填)
fileSystem 指定kpfs文件系统(必填)
subPath 配置为期望挂载的KPFS子目录,相对于文件系统根目录(选填)
archiveOnDelete 表示删除PVC、PV时候,处理kpfs子目录的方式:如果reclaimPolicy为Delete,且archiveOnDelete为false:会直接删除远端目录和数据,请谨慎使用。如果reclaimPolicy为Delete,且archiveOnDelete为true:会将远端的目录更新为其他名字备份。如果reclaimPolicy为Retain,远端的目录不作处理。(选填,默认为false)
storageType ksc/kpfs,指定使用kpfs存储(必填)

创建Storageclass:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ksc-kpfs
parameters:
  server: "10.0.1.xx"
  fileSystem: "kpfs-xxxxx"
  subPath: provisioner-kpfs
  archiveOnDelete: "true"
  storageType: ksc/kpfs
provisioner: ksc/storage

创建StatefulSet:

apiVersion:  apps/v1
kind: StatefulSet
metadata:
  name: test-sts
spec:
  serviceName: test
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          volumeMounts:
            - name: pvc-disk
              mountPath: "/data"
  volumeClaimTemplates:
  - metadata:
      name: pvc-disk
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: ksc-kpfs
      resources:
        requests:
          storage: 10Gi

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

  • 内容不全,不深入
  • 内容更新不及时
  • 描述不清晰,比较混乱
  • 系统或功能太复杂,缺乏足够的引导
  • 内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈