在容器上使用CFS

最近更新时间: 2024-06-12 15:06:00

操作场景

容器服务(TKE)是高度可扩展的高性能容器管理服务,提供多种应用发布方式和持续交付能力并支持微服务架构,解决用户开发、测试及运维过程的环境问题、帮助用户降低成本,提高效率。

使用容器的业务,例如业务应用部署、DevOps、机器学习、弹性伸缩等场景下,通常有大量配置文件、模型文件、日志数据、文档附件等需要多个容器共享访问。特别是机器学习、智能推荐、日志数据处理场景下,除了基础的数据共享,更要求共享存储可以提供高并发访问、高吞吐、高 IOPS、低延时的服务。CFS 文件存储只需在容器上简单配置及挂载,就可提供上述共享存储特性,特别适合搭配容器业务使用。本文将介绍如何在 TKE 上使用 CFS 文件存储。

前提条件

本指引的前提是您已经创建好容器集群。若您还未创建容器服务,请参见 部署容器服务 操作指引,先行创建容器。

申请 CFS 文件存储资源并获取挂载点 IP

  • 若您还未拥有文件系统,则请按照 创建 CFS 文件系统 指引创建一个文件系统,创建时请注意 VPC 网络的选择需要与您的容器母机在相同的 VPC 下,以保障网络的互通。

  • 若您已经拥有与容器服务同在一个 VPC 下的文件系统,您可以前往文件系统详情页面获取挂载点 IP 。

配置挂载 CFS 文件系统

步骤1:Node 上启动 NFS 客户端

挂载前,请确保系统中已经安装了nfs-utilsnfs-common,安装方法如下:

  • CentOS

     sudo yum install nfs-utils
  • Ubuntu

     sudo apt-get install nfs-common

步骤2:创建 PV

执行以下命令创建一个类型为 CFS 的 PesistentVolume。

说明:

  • nfs.server:为上面已经获取到的 CFS 文件系统的挂载点 IP,本例子中假设文件系统 IP 为10.0.1.41。
  • nfs.path:为 CFS 文件系统的根目录或者子目录,本案例以根目录为例。
apiVersion: v1
kind: PersistentVolume
metadata:
  name: cfs
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  mountOptions:
    - hard
    - nfsvers=4
  nfs:
    path: /
    server: 10.0.1.41

步骤3:创建 PVC

接下来,创建 PersistentVolumeClaim ,来请求绑定已经创建好的 PersistentVolume。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cfsclaim
spec:
  accessModes:
    - ReadWriteMany
  volumeMode: Filesystem
  storageClassName: ""
  resources:
    requests:
      storage: 10Gi

步骤4:创建 pod

创建一个 Pod 应用来申明挂载使用该数据卷。

kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: cfsclaim

完成上述步骤后,您就可以在新建的 Pod 中使用该文件系统了。