无法为volumeMount准备子路径

smk*_*smk 3 kubernetes configmap

出现此错误。

Error: failed to prepare subPath for volumeMount "solr-collection-config" of container "upload-config-container"

使用 kubernetes 1.10.11

      - name: upload-config-container
        image: solr:7.4.0-alpine
        imagePullPolicy: Always
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "256Mi"
            cpu: "200m"
        volumeMounts:
        - name: solr-collection-config
          mountPath: /tell/carbon/conf
          subPath: conf
Run Code Online (Sandbox Code Playgroud)

solr-collection-config是代表 ConfigMap 的卷

     volumes:
      - name: solr-collection-config
        configMap:
          name: solr-collection-resources
          items:
          - key: stopwords_en.txt
            path: "conf/lang/stopwords_en.txt"
          - key: _rest_managed.json
            path: "conf/_rest_managed.json"
          - key: currency.xml
            path: "conf/currency.xml"
          - key: protwords.txt
            path: "conf/protwords.txt"
          - key: schema.xml
            path: "conf/schema.xml"
          - key: solrconfig.xml
            path: "conf/solrconfig.xml"
          - key: stopwords.txt
            path: "conf/stopwords.txt"
          - key: synonyms.txt
            path: "conf/synonyms.txt"
      restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助。谢谢

aer*_*ite 5

如果不使用会发生什么subPath

configMap中的所有键都将安装在目录中/tell/carbon/conf。这意味着,每个密钥都将是该目录下的一个单独的文件。

现在,这是subPath做什么的?从你的例子来看,

volumeMounts:
  - name: solr-collection-config
    mountPath: /tell/carbon/conf
    subPath: conf
Run Code Online (Sandbox Code Playgroud)

意味着configMapconf中的密钥将作为文件安装在目录下。conf/tell/carbon

但是,您没有这把钥匙。所以出现这个错误。

错误:无法为容器“upload-config-container”的volumeMount“solr-collection-config”准备子路径

现在,你可以这样做

volumeMounts:
  - name: solr-collection-config
    mountPath: /tell/carbon/conf
    subPath: stopwords_en.txt
Run Code Online (Sandbox Code Playgroud)

这意味着,configMapstopwords_en.txt中的值将作为文件安装在.conf/tell/carbon

最后一句话,这subPath实际上是一条来自数据量的路径,来自数据的来源。在您的情况下,应该是configMapsubPath中的关键之一