我使用 Kind 设置了一个本地 Kubernetes 集群,然后使用 Helm 在其上运行 Apache-Airflow。
要实际创建 Pod 并运行 Airflow,我使用以下命令:
helm upgrade -f k8s/values.yaml airflow bitnami/airflow
它使用airflow
来自bitnami/airflow
repo的图表,并使用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 的替代方法的想法(它的整个目录已成功映射到集群中)?
正如文档中所述,有一种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 将不会在其他地方自行安排......这意味着您需要手动干预从单节点故障中恢复(除非应用程序是多实例的并且可以抵抗一个实例的宕机)
总结:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句