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

标签 kubernetes

我已经仔细阅读过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/

相关文章:

jenkins - Jenkins构建作业A使用其他构建作业B docker镜像配置

spring-boot - 如何从安装为文件的 kubernetes Secrets 中填充 application.properties 文件值

amazon-web-services - 应用程序负载均衡器在弹性beantalk和kubernetes之间分配

json - json格式的Kubernetes configmap错误

kubernetes - 如何通过SSH连接到Kubernetes节点或服务器

kubernetes - 在Kubernetes中,如何在闲置时将Deployment缩放为零

kubernetes - Kubectl 命令检查命名空间是否准备就绪

docker - 公共(public) GKE 集群中的 pod 无法访问互联网

kubernetes - 您是否指定了正确的主机或端口? Kubernetes 上的错误

wordpress - 使用kubernetes部署wordpress应用程序时,在不停机的情况下部署新版本的图像