開始使用 NFS 磁碟區

Kf 支援使用 kf marketplace 掛接 NFS 磁碟區。

事前準備

  1. 完成 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 字串,可用來建立唯讀掛載點。根據預設,Volume Services 會掛接讀寫檔案系統。

您可以使用 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 (讀取和寫入)。