【问题标题】:Unable to upload a file through a deployment yaml in kubernetes无法通过 kubernetes 中的部署 yaml 上传文件
【发布时间】:2021-02-02 05:31:10
【问题描述】:

我无法通过 Kubernetes 中的部署 YAML 上传文件。
部署 YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        image: openjdk:14
        ports:
        - containerPort: 8080
        volumeMounts: 
        - name: testing
          mountPath: "/usr/src/myapp/docker.jar"
        workingDir: "/usr/src/myapp"
        command: ["java"]
        args: ["-jar", "docker.jar"]        
      volumes: 
      - hostPath: 
          path: "C:\\Users\\user\\Desktop\\kubernetes\\docker.jar"
          type: File
        name: testing

我收到以下错误:

Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  19s                default-scheduler  Successfully assigned default/test-64fb7fbc75-mhnnj to minikube
  Normal   Pulled     13s (x3 over 15s)  kubelet            Container image "openjdk:14" already present on machine
  Warning  Failed     12s (x3 over 14s)  kubelet            Error: Error response from daemon: invalid mode: /usr/src/myapp/docker.jar

当我删除 volumeMount 时,它运行时出现无法访问 docker.jar 的错误。

        volumeMounts: 
        - name: testing
          mountPath: "/usr/src/myapp/docker.jar"

【问题讨论】:

  • Windows 存在一个已知错误 (github.com/kubernetes/kubernetes/issues/59876) 来跟踪此问题,该问题已因不活动而关闭,但人们已找到解决此问题的几种变通方法。您可以尝试修改对某些人有效的/C/Users/user/Desktop/kubernetes/docker.jar 的路径。你可以试试看:
  • 我尝试了解决方案,问题是kubernetes现在不识别它是一个文件,所以当它上传到机器时,我不知道它上传了什么并且可能创建了一个默认文件而不是我的文件。由于这是一个 Windows 问题,我将尝试将它部署在 linux 机器上。谢谢!!!!

标签: kubernetes


【解决方案1】:

这是一个社区 wiki asnwer。随意扩展它。

这是 Docker 在 Windows 上的一个已知问题。目前无法将 Windows 目录正确挂载为卷。

您可以尝试@CodeWizard 在this github thread 中提到的一些解决方法,例如herehere

另外,如果您使用的是 VirtualBox,您可能需要查看this solution

在 Windows 上,您不能直接将 Windows 目录映射到您的 容器。因为您的容器位于 VirtualBox VM 中。 所以你的 docker -v 命令实际上映射了 VM 之间的目录 和容器。

所以你必须分两步完成:

通过VirtualBox manager映射一个Windows目录到VM Map a 将容器中的目录复制到 VM 中的目录您最好使用 Kitematic UI 可以帮助您。这要容易得多。

或者,您可以在 Linux 环境中部署您的设置以完全忽略这些特定类型的问题。

【讨论】:

    猜你喜欢
    • 2020-03-20
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    相关资源
    最近更新 更多