【发布时间】:2022-01-12 13:34:02
【问题描述】:
我有一个在 Kubernetes 上运行的应用程序,它需要访问在所述应用程序中动态配置的 SMB 共享(主机、凭据等)。我正在努力使用 Kubernetes(干净地)实现这一目标。
我面临几个困难:
- 我不想要“a”存储,我想要明确指定的 SMB 共享
- 这些共享是在应用程序中动态定义的,事先不知道
- 我有可变数量的共享,并且单个 pod 需要能够访问所有这些
我们目前有一个解决方案,在每个 kubernetes 工作节点上,所有共享都挂载到公共文件夹中的挂载点。然后将此文件夹作为HostPath 卷提供给需要访问这些存储的容器。最后,每个容器都有一个逻辑来访问与他需要的存储相匹配的子文件夹。
缺点,也是我寻找更清洁替代品的原因是:
-
HostPath卷存在安全风险 - 对于这个解决方案,我需要 Kubernetes 之外的东西,在每个 Kubernetes 节点上自动挂载 SMB 共享
有没有更好的解决方案我错过了?
似乎与这种方法最匹配的 Kubernetes 对象是 Projected Volume,因为它“将现有的卷源映射到同一目录中”。但是,它不支持我需要的卷源类型,我认为在不重新启动使用此 Projected Volume 的 Pod 的情况下动态添加/删除卷源是不可能的。
【问题讨论】:
-
所以所有 pod 的 SMB 共享都不相同?您说 SMB 共享是动态配置的 - 它(SMB 共享)是否在一个 pod 上发生变化?您使用的是哪个 Kubernetes 版本?
-
所有 pod 的 SMB 共享相同。份额是可配置的。添加共享后,除了其他共享,所有 pod 都必须能够访问该新共享(在需要时)。我们使用 Kubernetes 1.21。
标签: kubernetes dynamic persistent-volumes