設定 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 是您在上一個步驟中建立的磁碟區服務執行個體名稱。

  • uidUIDgidGID 指定掛接共用項目的目錄權限。

  • 是磁碟區在應用程式中應掛接的路徑。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
...

從應用程式存取音量服務

如要從應用程式存取磁碟區服務,您必須知道要在程式碼中使用哪個檔案路徑。您可以在服務繫結的詳細資料中查看檔案路徑,這些詳細資料會顯示在應用程式的環境變數中。

查看應用程式的環境變數:

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 (讀取和寫入)。