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 字串,可建立唯讀掛接點。 根據預設,Volume Services 會掛接讀寫檔案系統。
您可以使用 kf bindings 指令,列出 Space 中的所有繫結。畫面會顯示類似以下範例的輸出內容:
$ kf bindings
...
Listing bindings in Space: demo-space
Name App Service Age Ready
binding-spring-music-filestore-nfs spring-music filestore-nfs 71s True
...
從應用程式存取 Volume Service
如要從應用程式存取磁碟區服務,您必須知道要在程式碼中使用哪個檔案路徑。您可以在服務繫結的詳細資料中查看檔案路徑,這些詳細資料會顯示在應用程式的環境變數中。
查看應用程式的環境變數。
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 (讀取和寫入)。 |