Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes配置映射符号链接(…data/):有没有办法避免它们?_Kubernetes_Configmap - Fatal编程技术网

Kubernetes配置映射符号链接(…data/):有没有办法避免它们?

Kubernetes配置映射符号链接(…data/):有没有办法避免它们?,kubernetes,configmap,Kubernetes,Configmap,我注意到,当我创建并挂载包含一些文本文件的配置映射时,容器会将这些文件视为指向。/data/myfile.txt的符号链接 例如,如果我的配置映射名为tc configs,并且包含两个名为stripe1.xml和stripe2.xml的xml文件,那么如果我将此配置映射装载到容器中的/configs,则在容器中,我将具有: bash-4.4# ls -al /configs/ total 12 drwxrwxrwx 3 root root 4096 Jun 4

我注意到,当我创建并挂载包含一些文本文件的配置映射时,容器会将这些文件视为指向
。/data/myfile.txt
的符号链接

例如,如果我的配置映射名为tc configs,并且包含两个名为stripe1.xml和stripe2.xml的xml文件,那么如果我将此配置映射装载到容器中的/configs,则在容器中,我将具有:

bash-4.4# ls -al /configs/
total 12
drwxrwxrwx    3 root     root          4096 Jun  4 14:47 .
drwxr-xr-x    1 root     root          4096 Jun  4 14:47 ..
drwxr-xr-x    2 root     root          4096 Jun  4 14:47 ..2018_06_04_14_47_03.291041453
lrwxrwxrwx    1 root     root            31 Jun  4 14:47 ..data -> ..2018_06_04_14_47_03.291041453
lrwxrwxrwx    1 root     root            18 Jun  4 14:47 stripe1.xml -> ..data/stripe1.xml
lrwxrwxrwx    1 root     root            18 Jun  4 14:47 stripe2.xml -> ..data/stripe2.xml
我猜Kubernetes需要这些符号链接和../data和..timestamp/文件夹,但我知道一些应用程序如果看到不需要的文件或文件夹,可能无法启动


有没有办法告诉Kubernetes不要生成所有这些符号链接并直接挂载文件?

我不知道您是否可以告诉Kubernetes不要生成这些符号链接,尽管我认为这是一种本机行为

如果有这些文件和链接是一个问题,我可以想到的一个解决方法是在初始化容器时将configmap装载到一个文件夹中,并将文件复制到另一个文件夹中:

  initContainers:
    - name: copy-config
      image: busybox
      command: ['sh', '-c', 'cp /configmap/* /configs']
      volumeMounts:
        - name: configmap
          mountPath: /configmap
        - name: config
          mountPath: /configs
但您必须声明两个卷,一个用于configMap(configMap),另一个用于最终目录(config):


显然,您可以随意更改配置卷的卷类型。

我认为这个解决方案是令人满意的:在mountPath中指定精确的文件路径,将消除指向
.data和..2018_06_04_19_31_41.860238952

因此,如果我申请这样的舱单:

apiVersion: v1
kind: Pod
metadata:
  name: my-lamp-site
spec:
    containers:
    - name: php
      image: php:7.0-apache
      volumeMounts:
      - mountPath: /var/www/html/users.xml
        name: site-data
        subPath: users.xml
    volumes:
    - name: site-data
      configMap:
        name: users

---

apiVersion: v1
kind: ConfigMap
metadata:
  name: users
data:
  users.xml: |
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <users>
      </users>
小心不要忘记
子路径
,否则users.xml将成为一个目录

回到我最初的清单:

spec:
    containers:
    - name: php
      image: php:7.0-apache
      volumeMounts:
      - mountPath: /var/www/html
        name: site-data
    volumes:
    - name: site-data
      configMap:
        name: users
我将看到这些符号链接返回:

$ kubectl exec  my-lamp-site -c php -- ls -al /var/www/html
total 12
drwxrwxrwx 3 root root 4096 Jun  4 19:31 .
drwxr-xr-x 3 root root 4096 Jun  4 17:58 ..
drwxr-xr-x 2 root root 4096 Jun  4 19:31 ..2018_06_04_19_31_41.860238952
lrwxrwxrwx 1 root root   31 Jun  4 19:31 ..data -> ..2018_06_04_19_31_41.860238952
lrwxrwxrwx 1 root root   16 Jun  4 19:31 users.xml -> ..data/users.xml

非常感谢on让我走上了正确的道路(他们很快在中被提到)

感谢@iomv:这可能是一个解决办法,没错-尽管我希望有一个“更干净”的解决方案来做到这一点!我在Grafana容器中也有同样的问题,我想将一些东西装载到插件子文件夹中。这导致Grafana无法加载相应的插件,并显示错误消息
无法扫描目录\“/var/lib/Grafana/plugins\”错误:lstat..2020\u 10\u 02\u 06\u 45\u 20.1588884790:没有此类文件或目录“
。不幸的是,
子路径
属性的解决方案对我来说不是解决方案,因为我需要configmap装载的自动更新功能。。。我想目前除了重新启动pod和不使用任何自动更新机制外,我没有其他选择。但是,如果您的configMap包含多个文件,这些文件应该完全作为
users.xml
包含,该怎么办?
spec:
    containers:
    - name: php
      image: php:7.0-apache
      volumeMounts:
      - mountPath: /var/www/html
        name: site-data
    volumes:
    - name: site-data
      configMap:
        name: users
$ kubectl exec  my-lamp-site -c php -- ls -al /var/www/html
total 12
drwxrwxrwx 3 root root 4096 Jun  4 19:31 .
drwxr-xr-x 3 root root 4096 Jun  4 17:58 ..
drwxr-xr-x 2 root root 4096 Jun  4 19:31 ..2018_06_04_19_31_41.860238952
lrwxrwxrwx 1 root root   31 Jun  4 19:31 ..data -> ..2018_06_04_19_31_41.860238952
lrwxrwxrwx 1 root root   16 Jun  4 19:31 users.xml -> ..data/users.xml