nfs

NFS是Network File System的缩写,即网络文件系统。其功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。

因此nfs卷可以被用于多节点环境下的集群中,因为任何一个Node上向NFS暴露出的目录中写入数据,其他Node中相同目录中的数据都会被更新。

可以用下图来表示nfs卷被使用时的情况:

nfs卷挂载至Pod中容器的文件系统

创建nfs卷

因为nfs卷需要用到NFS服务器,因此NFS服务器需要安装NFS相配置以启用功能,这里就不作赘述。

nfs卷的创建可以分为两步:

  1. 定义卷:在Pod的spec.volumes中定义卷,并且在spec.volumes.nfs中定义该卷相关的配置,主要是pathserver,即NFS服务器暴露的路径和NFS服务器的IP地址;

  2. 挂载卷:在Pod的spec.containers.volumeMounts中指定挂载点和挂载的卷名;

下面举一个例子,创建一个名为mongodb的Pod,该Pod将一个名为mongodb-data的nfs卷挂载至容器的/usr/share/nginx/html目录下,并且该卷是由IP地址为1.2.3.4的NFS服务器暴露的/etc/export路径,并且是只读的:

apiVersion: v1
kind: Pod
metadata:
  name: mongodb 
spec:
  volumes:    # 定义卷
  - name: mongodb-data    # (必须)卷名
    nfs:    # 定义一个hostPath卷
      path: /etc/export    # (必须)NFS服务器暴露的路径
      server: 1.2.3.4    # (必须)NFS服务器的IP地址或域名
      readOnly: true    # 该卷为只读 
  containers:
  - image: mongo
    name: mongodb
    volumeMounts:    # 挂载点
    - name: mongodb-data    # (必须)需要挂载的卷名
      mountPath: /usr/share/nginx/html    # (必须)挂载至容器的文件系统中的路径
    ports:
    - containerPort: 27017
      protocol: TCP

Last updated

Was this helpful?