阿里云Kubernetes CSI实践—CPFS存储卷使用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 1. 前言 CPFS(Cloud Paralleled File System)是一种并行文件系统。CPFS 的数据存储在集群中的多个数据节点,并可由多个客户端同时访问,从而能够为大型高性能计算机集群提供高 IOPS、高吞吐、低时延的数据存储服务。

1. 前言

CPFS(Cloud Paralleled File System)是一种并行文件系统。CPFS 的数据存储在集群中的多个数据节点,并可由多个客户端同时访问,从而能够为大型高性能计算机集群提供高 IOPS、高吞吐、低时延的数据存储服务。
阿里云Kubernetes CSI支持静态存储卷挂载动态存储卷挂载2种方式挂载CPFS存储卷, 在静态存储卷挂载的方式中,通常需要手动编辑和创建一个pv/pvc进行挂载,当需要的pv/pvc数量很大的时候,手动创建就显得非常繁琐了,这时动态存储卷挂载的功能可以满足您的需求。本文演示如何在ACK集群中使用alibaba-cloud-csi-driver挂载CPFS存储卷。

2. 部署csi-cpfs组件

如果您需要挂载cpfs存储卷,首先需要按照以下步骤在ACK集群中部署cpfs-provisionercpfs-plugin:

2.1 部署cpfs-provisioner

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/alibaba-cloud-csi-driver/master/deploy/cpfs/cpfs-provisioner.yaml

2.2 部署cpfs-plugin

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/alibaba-cloud-csi-driver/master/deploy/cpfs/cpfs-plugin.yaml

2.3 检查运行状态

$ kubectl -nkube-system get po |grep cpfs
csi-cpfs-provisioner-0                             1/1     Running
csi-cpfsplugin-g2czx                               2/2     Running
csi-cpfsplugin-l6zp8                               2/2     Running
csi-cpfsplugin-nwt2j                               2/2     Running
csi-cpfsplugin-skjds                               2/2     Running
csi-cpfsplugin-sp9mb                               2/2     Running
csi-cpfsplugin-tmjm5                               2/2     Running

3. 使用CPFS动态存储卷

目前阿里云Kubernetes CSI支持subpath类型的CPFS动态存储卷挂载方式。

当你的多个Kubernetes应用或者Pod需要挂载相同的CPFS存储卷共享数据时,或不同的Pod挂载相同CPFS文件系统的不同子目录时, 可以使用subpath类型的CPFS动态存储卷方式。csi会自动在CPFS文件系统的根目录下创建以该应用PV name为名的子目录,并挂载到应用的pod中。

3.1 创建CPFS文件系统

用户首先使用NAS控制台 创建好CPFS文件系统。
文件系统:
image
查看文件系统详情并获取 挂载点 信息:
image

3.2 创建StoragClass

编辑storageclass.yaml文件, 详细参数说明见:https://github.com/kubernetes-sigs/alibaba-cloud-csi-driver/blob/master/docs/cpfs-dynamic.md

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-cpfs
parameters:
  volumeAs: subpath
  server: "xxxxxx@tcp:xxxxxx@tcp:/xxxxxx"
  archiveOnDelete: "false"
provisioner: cpfsplugin.csi.alibabacloud.com
reclaimPolicy: Delete

替换sever参数的值为挂载点路径信息并运行以下命令创建StorageClass alicloud-cpfs

$ kubectl create -f storageclass.yaml
storageclass.storage.k8s.io/alicloud-cpfs created
3.3 创建PV/PVC和Pod挂载cpfs存储卷

示例应用编排文件deploy.yaml如下所示:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cpfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: alicloud-cpfs
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-cpfs
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
        volumeMounts:
          - name: cpfs-pvc
            mountPath: "/data"
      volumes:
        - name: cpfs-pvc
          persistentVolumeClaim:
            claimName: cpfs-pvc

创建pvc和deployment:

$ kubectl create -f deploy.yaml

$ kubectl get po
NAME                               READY   STATUS    RESTARTS   AGE
deployment-cpfs-7f6977f9f6-s8wdx   1/1     Running   0          25s

至此,我们成功在cpfs文件系统中创建子目录并挂载到应用deployment-cpfs

如果你需要为不同的Pod挂载同一个CPFS文件系统的不同子目录, 则只需分别创建cpfs-pvc-01cpfs-pvc-02以及其对应应用编排。

4. 使用CPFS静态存储卷

CPFS动态存储卷不同的是, CPFS静态存储卷需要手动编排PV资源,并且可自定义subpath 路径,编排文件示例如下:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: cpfs-csi-pv
  labels:
    alicloud-pvname: cpfs-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: cpfsplugin.csi.alibabacloud.com
    volumeHandle: cpfs-csi-pv
    volumeAttributes:
      server: "xxxxxx@tcp:xxxxxx@tcp"
      fileSystem: "xxxxxx"
      subPath: "/k8s"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cpfs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  selector:
    matchLabels:
      alicloud-pvname: cpfs-pv
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-cpfs
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
        volumeMounts:
          - name: cpfs-pvc
            mountPath: "/data"
      volumes:
        - name: cpfs-pvc
          persistentVolumeClaim:
            claimName: cpfs-pvc

5. 参考文档

CPFS CSI Plugin
文件存储CPFS

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
8天前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
24天前
|
专有云 Serverless 持续交付
亚太唯一,阿里云再度入选Gartner®容器管理魔力象限领导者
Gartner正式发布 2024《容器管理魔力象限》报告,阿里云再度成为中国唯一一家入选「领导者象限」的科技公司。
|
8天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
34 4
|
9天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
36 3
|
16天前
|
Kubernetes 监控 开发者
专家级实践:利用Cloud Toolkit进行微服务治理与容器化部署
【10月更文挑战第19天】在当今的软件开发领域,微服务架构因其高可伸缩性、易于维护和快速迭代的特点而备受青睐。然而,随着微服务数量的增加,管理和服务治理变得越来越复杂。作为阿里巴巴云推出的一款免费且开源的开发者工具,Cloud Toolkit 提供了一系列实用的功能,帮助开发者在微服务治理和容器化部署方面更加高效。本文将从个人的角度出发,探讨如何利用 Cloud Toolkit 来应对这些挑战。
32 2
|
17天前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
61 2
|
20天前
|
人工智能 专有云 Serverless
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
93 2
|
1月前
|
Kubernetes Docker 微服务
微服务实践k8s&dapr开发部署实验(1)服务调用(一)
微服务实践k8s&dapr开发部署实验(1)服务调用(一)
48 2
|
1月前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
91 1
|
1月前
|
运维 Kubernetes Cloud Native
云原生时代的容器编排:Kubernetes入门与实践
【10月更文挑战第4天】在云计算的浪潮中,云原生技术以其敏捷、可扩展和高效的特点引领着软件开发的新趋势。作为云原生生态中的关键组件,Kubernetes(通常被称为K8s)已成为容器编排的事实标准。本文将深入浅出地介绍Kubernetes的基本概念,并通过实际案例引导读者理解如何利用Kubernetes进行高效的容器管理和服务部署。无论你是初学者还是有一定经验的开发者,本文都将为你打开云原生世界的大门,并助你一臂之力在云原生时代乘风破浪。

相关产品

  • 容器服务Kubernetes版