您是否正在尝试使用kuberneters / configMap将目录安装到文件上(反之亦然)? [英] Are you trying to mount a directory onto a file (or vice-versa) with kuberneters/configMap?

查看:214
本文介绍了您是否正在尝试使用kuberneters / configMap将目录安装到文件上(反之亦然)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我关注了这篇帖子 Kubernetes configMap-仅一个文件以传递配置文件部署,但出现错误。为什么?

I followed this post Kubernetes configMap - only one file to pass a config file to a deployment, but got an error. Why?

配置文件 config-prom-prometheus.yml

scrape_configs:
- job_name: job-leo-prometheus
  kubernetes_sd_configs:
  - role: endpoints

.yaml文件 prom-prometheus.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: prom-prometheus-deployment
spec:
  selector:
    matchLabels:
      app: prom-prometheus
  replicas: 1
  template:
    metadata:
      labels:
        app: prom-prometheus
    spec:
      containers:
      - name: prom-prometheus
        image: 127.0.0.1:30400/prom/prometheus
        ports:
        - name: port9090
          containerPort: 9090
        volumeMounts:
        - name: volume-prometheus
          mountPath: /etc/prometheus/prometheus.yml
          subPath: prometheus.yml
      volumes:
      - name: volume-prometheus
        configMap:
          name: config-prom

---
apiVersion: v1
kind: Service
metadata:
  name: prom-prometheus
spec:
  type: NodePort
  ports:
  - name: port9090
    protocol: TCP
    port: 9090
    targetPort: 9090
    nodePort: 30090
  selector:
    app: prom-prometheus

命令:

kubectl create configmap config-prom --from-file=config-prom-prometheus.yml
kubectl -f prom-prometheus.yaml apply

结果:

Events:
  Type     Reason                 Age               From               Message
  ----     ------                 ----              ----               -------
  Normal   Scheduled              17s               default-scheduler  Successfully assigned prom-prometheus-deployment-66887dcdbf-bfqd4 to minikube
  Normal   SuccessfulMountVolume  17s               kubelet, minikube  MountVolume.SetUp succeeded for volume "default-token-ml6w5"
  Normal   SuccessfulMountVolume  17s               kubelet, minikube  MountVolume.SetUp succeeded for volume "volume-prometheus"
  Warning  Failed                 9s                kubelet, minikube  Error: failed to start container "prom-prometheus": Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"rootfs_linux.go:58: mounting \\\"/var/lib/kubelet/pods/ec99da92-e994-11e8-a578-08002742f2a3/volume-subpaths/volume-prometheus/prom-prometheus/0\\\" to rootfs \\\"/var/lib/docker/overlay2/12c7da1c07c55fe2ec5dff61e5c457fa8aeaa32d47232c28a1d7e127c4f81bf0/merged\\\" at \\\"/var/lib/docker/overlay2/12c7da1c07c55fe2ec5dff61e5c457fa8aeaa32d47232c28a1d7e127c4f81bf0/merged/etc/prometheus/prometheus.yml\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
  Normal   Pulling                7s (x2 over 13s)  kubelet, minikube  pulling image "127.0.0.1:30400/prom/prometheus"
  Normal   Pulled                 7s (x2 over 13s)  kubelet, minikube  Successfully pulled image "127.0.0.1:30400/prom/prometheus"
  Normal   Created                6s (x2 over 10s)  kubelet, minikube  Created container
  Warning  Failed                 4s                kubelet, minikube  Error: failed to start container "prom-prometheus": Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"rootfs_linux.go:58: mounting \\\"/var/lib/kubelet/pods/ec99da92-e994-11e8-a578-08002742f2a3/volume-subpaths/volume-prometheus/prom-prometheus/0\\\" to rootfs \\\"/var/lib/docker/overlay2/7b07728ae4439e4d479386eab6b042948e2cb586c54171941f24d03352a7c8b4/merged\\\" at \\\"/var/lib/docker/overlay2/7b07728ae4439e4d479386eab6b042948e2cb586c54171941f24d03352a7c8b4/merged/etc/prometheus/prometheus.yml\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type


推荐答案

这没有很好的记录,但是根据我的configmap yaml的经验名称(在您的情况下为config-prom-prometheus.yml)应该与 mountPath 和<$ c相同部署中的$ c> subPath 。

This is not well documented but as per my experience name of configmap yaml (config-prom-prometheus.yml in your case) should be the same as mountPath and subPath in Deployment.

如果使用 subPath:prometheus.yml -将 config-prom-prometheus.yml 重命名为 prometheus.yml ,然后重试。

If you use subPath: prometheus.yml - rename config-prom-prometheus.yml to prometheus.yml and try again.

这篇关于您是否正在尝试使用kuberneters / configMap将目录安装到文件上(反之亦然)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆