首页 > 解决方案 > Kubernetes 访问网络文件共享

问题描述

最近,我们开始使用 Kubernetes 作为推进新项目的途径。我们开始实施其中的一些,现在我们正在努力解决一个问题。如何访问网络文件共享?

我们的 Kubernetes 集群是安装在 Windows 机器上的基于 linux 的集群。该集群中托管的服务需要能够访问该机器上可访问的文件共享(即 \\myFileShare\myfolder )。

我们找不到解决这个问题的方法。我们曾尝试使用“ https://www.nuget.org/packages/SharpCifs.Std/ ”库通过 SMB 访问文件,但事实证明,该库不支持 SMB 2.0。

我们也在考虑将这个驱动器安装为持久卷,但如果我理解正确,持久卷应该由 Kubernetes 管理其生命周期,所以我认为它不是为这类东西设计的。

我们试图在互联网上找到解决方案,但没有找到任何东西,但我很确定我们不是第一个需要从 Kuberenetes 集群访问网络文件共享的人。以前有没有人为这个问题而苦苦挣扎,并且可以为我们提供一些解决方案?

标签: kubernetes.net-core

解决方案


看看cifs-volumedriver或这个Kubernetes CIFS Volume Driver。它应该适用于您的情况,并且适用于 SMB2.1 以下是使用卷驱动程序的 PersistentVolume 示例。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mycifspv
spec:
  capacity:
    storage: 1Gi
  flexVolume:
    driver: juliohm/cifs
    options:
      opts: sec=ntlm,uid=1000
      server: my-cifs-host
      share: /MySharedDirectory
    secretRef:
      name: my-secret
  accessModes:
    - ReadWriteMany

凭证使用 Secret 传递,可以声明如下:

apiVersion: v1
data:
  password: ###
  username: ###
kind: Secret
metadata:
  name: my-secret
type: juliohm/cifs

注意:注意机密的类型字段,它必须与卷驱动程序名称匹配。否则,秘密值将不会传递给挂载脚本。

另外,请查看Stack 上的这个问题。它的作者有同样的问题,并展示了如何解决它。


推荐阅读