Kf 支持使用 kf marketplace
装载 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
:UID 和gid
: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 (读写)。 |