将 Azure 文件的文件夹装载到 Kubernetes 中?

Mount Azure Files' folder into Kubernetes?

作为 direct mount or persistent volume claim,Azure 文档展示了如何将 Azure 文件存储帐户装载到 Kubernetes pod。这会将整个存储安装为安装路径。我该如何将 Azure 文件存储中的文件夹挂载到 Kubernetes?

在 Azure 文件上,我有以下内容:

AzureFiles
|- folder1
   |- file1
|- folder2
   |- file2

当我将 Azure 文件存储帐户装载到 Kubernetes(到 /mnt/azure)时,我看到了:

/mnt
|- azure
   |- folder1
      |- file1
   |- folder2
      |- file2

相反,我希望在挂载 Azure 文件的路径时看到这个 folder1:

/mnt
|- azure
   |- file1

如何更改我的 Pod definition 以指定此路径:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - // ... snip ...
    volumeMounts:
      - name: azure
        mountPath: /mnt/azure
  volumes:
  - name: azure
    azureFile:
      secretName: azure-secret
      shareName: aksshare
      readOnly: false
      // TODO: how to specify path in aksshare

我相信你可以使用subPath。所以像这样:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - // ... snip ...
    volumeMounts:
      - name: azure
        mountPath: /mnt/azure
        subPath: folder1
  volumes:
  - name: azure
    azureFile:
      secretName: azure-secret
      shareName: aksshare
      readOnly: false
      // TODO: how to specify path in aksshare

编辑

找了几天,终于弄明白怎么把Azure File Share的子文件夹挂载到AKS pod上了。您可以像这样设置 yaml 文件:

volumes:
  - name: azure
    azureFile:
      secretName: azure-secret
      shareName: share/subfolder
      readOnly: false

设置目录共享名即可,注意不要在最后追加/。结果截图在这里:

有关详细信息,请参阅 Naming and Referencing Shares, Directories, Files, and Metadata