配置 NFS 卷

Kf 支持使用 kf marketplace 装载 NFS 卷。

前提条件

完成 NFS 平台设置

创建 NFS 服务实例

运行 kf marketplace 以查看可用服务。如果平台启用了 NFS,则内置 NFS 服务会显示在列表中。

Broker           Name  Namespace  Description
nfsvolumebroker  nfs              mount nfs shares

装载外部文件系统

创建服务实例

如需装载到现有 NFS 服务,请执行以下操作:

kf create-service nfs existing SERVICE-INSTANCE-NAME -c '{"share":"SERVER/SHARE", "capacity":"CAPACITY"}'

将以下变量替换为所需的值。

  • SERVICE-INSTANCE-NAME 是您要为此 NFS 卷服务实例提供的名称。
  • SERVER/SHARE 是您的服务器和共享的 NFS 地址。
  • CAPACITY 使用 Kubernetes 数量格式。

确认 NFS 卷服务出现在服务列表中。输出结果应类似于以下示例:

$ kf services
...
Listing services in Space: demo-space
Name                Type      ClassName         PlanName  Age    Ready  Reason
filestore-nfs       volume    nfs               existing  6s     True   <nil>
...

将服务实例绑定到应用

如需将 NFS 服务实例绑定到应用,请运行以下命令:

kf bind-service YOUR-APP-NAME SERVICE-NAME -c '{"uid":"2000","gid":"2000","mount":"MOUNT-PATH","readonly":true}'

将以下变量替换为所需的值。

  • YOUR-APP-NAME 是您要为其使用卷服务的应用的名称。

  • SERVICE-NAME 是您在上一步中创建的卷服务实例的名称。

  • uid:UIDgid:GID 指定装载共享的目录权限。

  • MOUNT-PATH 是应将卷装载到应用中的路径。

  • (可选)"readonly":true 是一个可选的 JSON 字符串,用于创建只读装载。默认情况下,卷服务会装载一个读写文件系统。

您可以使用 kf bindings 命令列出空间中的所有绑定。您将看到类似于以下示例的输出:

$ kf bindings
...
Listing bindings in Space: demo-space
Name                                     App           Service             Age  Ready
binding-spring-music-filestore-nfs       spring-music  filestore-nfs       71s  True
...

从应用访问卷服务

如需从应用访问卷服务,您必须知道要在代码中使用哪个文件路径。您可以在服务绑定的详细信息中查看文件路径,该路径显示在应用的环境变量中。

查看应用的环境变量:

kf vcap-services YOUR-APP-NAME

YOUR-APP-NAME 替换为应用的名称。

下面是 kf vcap-services 命令的输出示例:

kf vcap-services *YOUR-APP-NAME*
{
  "nfs": [
    {
      "instance_name": "nfs-instance",
      "name": "nfs-instance",
      "label": "nfs",
      "tags": [],
      "plan": "existing",
      "credentials": {
        "capacity": "1Gi",
        "gid": 2000,
        "mount": "/test/mount",
        "share": "10.91.208.210/test",
        "uid": 2000
      },
      "volume_mounts": [
        {
          "container_dir": "/test/mount",
          "device_type": "shared",
          "mode": "rw"
        }
      ]
    }
  ]
}

使用 volume_mounts 下的属性查看应用所需的任何信息。

属性 说明
container_dir 包含已绑定到应用的装载卷的路径的字符串。
device_type NFS 卷版本。此功能目前仅支持共享设备。共享设备代表一个可同时装载到所有应用实例上的分布式文件系统。
mode 指示应用对 NFS 的访问权限类型的字符串:ro(只读)或 rw(读写)。