gpt4 book ai didi

kubernetes - 如何允许Kubernetes Job访问主机上的文件

转载 作者:行者123 更新时间:2023-12-03 20:51:14 25 4
gpt4 key购买 nike

我已经仔细阅读过Kubernetes文档,但是在运行在K8作业启动的pod内的应用程序与主机文件系统上的文件交互时仍然遇到问题。即使使用最简单的实用程序也会发生这种情况,因此我提供了一个简化的yaml配置示例。此处引用的本地文件'hello.txt'确实存在于主机上的/tmp中(即,在Kubernetes环境之外),我什至chmod 777也已将其保存。我还在主机文件系统中尝试过/tmp以外的其他位置。

Kubernetes作业启动的Pod以Status = Error终止并生成日志ls: /testing/hello.txt: No such file or directory
因为我最终希望以编程方式将其用作更复杂的工作流程的一部分,所以实际上确实需要将其作为工作而不是部署。我希望那是可能的。我正在使用kubectl启动的仅用于测试的当前配置文件是:

apiVersion: batch/v1
kind: Job
metadata:
name: kio
namespace: kmlflow
spec:
# ttlSecondsAfterFinished: 5
template:
spec:
containers:
- name: kio-ingester
image: busybox
volumeMounts:
- name: test-volume
mountPath: /testing
imagePullPolicy: IfNotPresent
command: ["ls"]
args: ["-l", "/testing/hello.txt"]
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /tmp
# this field is optional
# type: Directory
restartPolicy: Never
backoffLimit: 4

在此先感谢您的协助。

最佳答案

看起来好像在安装卷时,无法访问现有数据。

您将需要使用init容器来预填充卷中的数据。

apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-app
image: my-app:latest
volumeMounts:
- name: config-data
mountPath: /data
initContainers:
- name: config-data
image: busybox
command: ["echo","-n","{'address':'10.0.1.192:2379/db'}", ">","/data/config"]
volumeMounts:
- name: config-data
mountPath: /data
volumes:
- name: config-data
hostPath: {}

引用:

https://medium.com/@jmarhee/using-initcontainers-to-pre-populate-volume-data-in-kubernetes-99f628cd4519

关于kubernetes - 如何允许Kubernetes Job访问主机上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52930940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com