简体   繁体   English

Kubernetes 如何在 wsl2 支持的环境中正确安装 windows 路径

[英]Kubernetes how to correctly mount windows path in wsl2 backed environment

I have a local image that runs fine this way: docker run -p 8080:8080 -v C:\Users\moritz\Downloads\1\imageService\examples1:/images -v C:\Users\moritz\entwicklung\projekte\imageCluster\logs:/logs imageservice I have a local image that runs fine this way: docker run -p 8080:8080 -v C:\Users\moritz\Downloads\1\imageService\examples1:/images -v C:\Users\moritz\entwicklung\projekte\imageCluster\logs:/logs imageservice

Now i want this to run as Kubernetes (using built in from Docker-for-Windows v1.19.7) deployment:现在我希望它作为 Kubernetes(使用 Docker-for-Windows v1.19.7 内置)部署运行:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: image-service
spec:
  selector:
    matchLabels:
      app: image-service
  template:
    metadata:
      labels:
        app: image-service
    spec:
      containers:
      - name: image-service
        image: "imageservice"
        resources:
          limits:
            cpu: "0.9"
            memory: "1Gi"
        ports:
        - name: http
          containerPort: 8080
        volumeMounts:
          - mountPath: /images
            name: image-volume
          - mountPath: /logs
            name: log-volume  
      volumes:
        - name: image-volume
          hostPath:
            path: "c:\\Users\\moritz\\Downloads\\1\\imageService\\examples1"
            type: Directory
        - name: log-volume
          hostPath:
            path: /mnt/c/Users/moritz/entwicklung/projekte/imageCluster/logs
            type: Directory

As you see i tried different ways to set up my host path on windows machine but i always get:如您所见,我尝试了不同的方法在 windows 机器上设置我的主机路径,但我总是得到:

  Warning  FailedMount  0s (x4 over 4s)  kubelet            MountVolume.SetUp failed for volume "log-volume" : hostPath type check failed: /mnt/c/Users/moritz/entwicklung/projekte/imageCluster/logs is not a directory
  Warning  FailedMount  0s (x4 over 4s)  kubelet            MountVolume.SetUp failed for volume "image-volume" : hostPath type check failed: c:\Users\moritz\Downloads\1\imageService\examples1 is not a directory 

I also tried other variants (for both):我还尝试了其他变体(两者都适用):

  • C:\Users\moritz\entwicklung\projekte\imageCluster\logs C:\Users\moritz\entwicklung\projekte\imageCluster\logs
  • C:/Users/moritz/entwicklung/projekte/imageCluster/logs C:/Users/moritz/entwicklung/projekte/imageCluster/logs

So how to correctly setup these windows host path.那么如何正确设置这些 windows 主机路径。 (The next step would be to set them as environment variable.) (下一步是将它们设置为环境变量。)

Little update:小更新:

removing type: Directory helps to get rid of the error and pod is starting but the mounts are not working.删除type: Directory有助于消除错误并且 pod 正在启动,但挂载不起作用。 If i "look" into container in /images i don't see the images i have on my host and i don't see any logs in log mount while in container /logs contains the expected files.如果我“查看” /images中的容器,我看不到主机上的图像,并且在容器 /logs 中包含预期文件时,我在日志挂载中看不到任何日志。

in meantime i also tried (no avail)同时我也尝试过(无济于事)

  • /host_mnt/c/... /host_mnt/c/...
  • /C/Users/... /C/用户/...
  • //C/Users/... //C/用户/...

As mentioned here , you can use below hostPath to make it work on wsl2.如此所述,您可以使用下面的 hostPath 使其在 wsl2 上工作。

// C:\someDir\volumeDir
hostPath:
  path: /run/desktop/mnt/host/c/someDir/volumeDir
  type: DirectoryOrCreate

There is also an example you can use.您还可以使用一个示例。

apiVersion: v1
kind: Pod
metadata:
  name: test-localpc
spec:
  containers:
  - name: test-webserver
    image: ubuntu:latest
    command: ["/bin/sh"]
    args: ["-c", "apt-get update && apt-get install curl -y && sleep 600"]
    volumeMounts:
    - mountPath: /run/desktop/mnt/host/c/aaa
      name: mydir
    - mountPath: /run/desktop/mnt/host/c/aaa/1.txt
      name: myfile
  volumes:
  - name: mydir
    hostPath:
      # Ensure the file directory is created.
      path: /run/desktop/mnt/host/c/aaa
      type: DirectoryOrCreate
  - name: myfile
    hostPath:
      path: /run/desktop/mnt/host/c/aaa/1.txt
      type: FileOrCreate

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM