Kubernetes - 我们可以为两个集群节点使用相同的挂载卷(文件共享)吗 - Windows 和 Linux?

Kubernetes - can we use the same mounted volume (file share) for both Cluster Nodes - Windows and Linux?

我最初只有 Linux 节点上的应用程序并为其使用了装载的卷(Azure 存储帐户和文件共享),并且一切正常。

从 YAML 中提取的定义:

    volumeMounts:
      - name: test-volume
        mountPath: /opt/arena/
  volumes:
  - name: test-volume
    azureFile:
      secretName: test-secret
      shareName: test-share

现在,对于我的第二个应用程序(同一个应用程序,但部署在 Windows 容器上),我需要使用相同的存储帐户和文件共享。 只有我会挂载windows路径。

....
    volumeMounts:
      - name: test-volume
        mountPath: "C:\arena"
    ........ 
  volumes:
    - name: test-volume
      azureFile:
        secretName: test-secret
        shareName: test-share

当为 linux 安装时,我立即得到我的日志目录和文件“ads.log”

log
|__ads.log

但是 Windows 容器中也存在相同的目录“log”和相同的文件“ads.log”。

我想在 Azure 上使用相同的存储帐户和文件共享,以免增加成本。 但是我如何才能实现 Linux 和 Windows 容器都安装到卷中,而且同时区分哪个日志来自哪个容器???

另外一个问题,因为我还没有进行 windows 安装:mountPath: "C:\arena" 是定义它的正确方法吗?因为在网络上的一些例子中,一些插件被提到 windows 等等

谢谢

首先,windows的挂载格式是正确的。所以你不必担心。其次,为了区分同一文件共享中Linux容器和windows容器的日志文件夹,您可以挂载文件共享的子文件夹。

文件共享:

aksshare
│── linux
│── windows

截图:

然后像这样挂载文件共享:

  .....
  volumeMounts:
    - name: azure
      mountPath: /mnt/azure
volumes:
  - name: azure
    azureFile:
      shareName: aksshare/linux
      secretName: azure-secret

这种方式会将文件共享的两个子文件夹分别挂载到不同的容器中,互不影响。