如何将本地 Kubernetes 集群中的单个文件挂载到 Pod 中

本杰明

我使用 Kind 设置了一个本地 Kubernetes 集群,然后使用 Helm 在其上运行 Apache-Airflow。

要实际创建 Pod 并运行 Airflow,我使用以下命令:

helm upgrade -f k8s/values.yaml airflow bitnami/airflow

它使用airflow来自bitnami/airflowrepo的图表,并使用values.yaml. 该文件values.yaml类似于:

web:
 extraVolumeMounts:
   - name: functions
     mountPath: /dir/functions/

 extraVolumes:
   - name: functions
     hostPath:
       path: /dir/functions/
       type: Directory

其中web是 Airflow 的一个组件(也是我设置中的一个 pod),并且该目录/dir/functions/已从 pod 内的集群成功映射。但是,我无法对单个特定文件而不是整个目录执行相同操作。

有谁知道它的语法?或者有一种将文件映射到 pod 的替代方法的想法(它的整个目录已成功映射到集群中)?

和D

正如文档中所述,有一种File类型的hostPath行为应该符合您的意愿

文件:给定路径中必须存在文件

然后您可以将其与mountPath. 例子:

web:
 extraVolumeMounts:
   - name: singlefile
     mountPath: /path/to/mount/the/file.txt

 extraVolumes:
   - name: singlefile
     hostPath:
       path: /path/on/the/host/to/the/file.txt
       type: File

或者,如果没有问题,您可以将包含它的整个目录挂载到预期路径。


话虽如此,我想指出使用hostPath(几乎总是)从来都不是一个好主意。

如果你有一个包含多个节点的集群,说你的 Pod 正在挂载hostPath并不会限制它在特定的主机上运行(即使你可以强制执行它nodeSelectors等等)这意味着如果 Pod 在一个不同的节点,它的行为可能不同,找不到它期望的目录和/或文件。

但是,即使您将应用程序限制为在特定节点上运行,您也需要接受这样的想法,即如果此类节点不可用,则 Pod 将不会在其他地方自行安排......这意味着您需要手动干预从单节点故障中恢复(除非应用程序是多实例的并且可以抵抗一个实例的宕机)


总结:

  • 如果您想在特定主机上挂载路径,无论出于何种原因,我都会选择本地卷.. 或者至少使用 hostPath 并限制 Pod 在它需要运行的特定节点上运行。
  • 如果你想挂载小的文本文件,你可以考虑从ConfigMaps挂载它们
  • 如果你想配置一个应用程序,在应用程序启动时在某个路径提供一组文件,你可以去一个 init 容器,它在一个 emptyDir 卷中为主容器准备文件

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将Kibana Pod连接到Kubernetes中的Elastic集群

启动时如何将kubernetes Pod实例ID传递到Pod中?

将本地目录挂载到minikube中的pod中

如何在Kubernetes中的Pod中登录

Kubernetes-如何将数据从Pod发送到Kubernetes中的另一个Pod

Kubernetes:如何从 Pod 中获取其他 Pod 的名称?

如何在kubernetes中停止/暂停Pod

如何基于kubernetes中的节点订购Pod

如何重试Kubernetes Pod中的图像?

如何从Pod容器中访问Kubernetes api?

如何在Kubernetes中模拟Pod故障

如何将具有数据(我需要此数据)的Pod容器路径安装到kubernetes中的本地主机路径

Kubernetes-将多个映像部署到单个Pod中

如何覆盖Kubernetes部署文件中pod容器中的文件?

可以挂载:在kubernetes pod中是可选的

如何将数据装载到Kubernetes上的持久存储中并在多个Pod之间共享存储?

如何将一个Pod与Kubernetes中的另一个Pod联网?(简单)

如何将启动参数传递到我的kubernetes pod服务中

如何将Pod自动迁移到kubernetes中的另一个节点?

如何将Docker的--privileged标志添加到Kubernetes pod spec容器YAML定义中

如何将服务连接限制为Kubernetes中的Pod列表?

将文件传递到 Kubernetes Pod 中的 docker 容器

无法删除Kubernetes中的Pod

Kubernetes中的Pod启动命令

在Kubernetes中自动生成Pod

Kubernetes中Pod的IP地址

在 kubernetes 中超时 pod/job

Kubernetes 中 POD 的计划扩展

清除kubernetes中Pod的日志?