kubernetes 无法为卷装载准备子路径

beq87vna  于 2023-02-15  发布在  Kubernetes
关注(0)|答案(1)|浏览(260)

获取此错误。
Error: failed to prepare subPath for volumeMount "solr-collection-config" of container "upload-config-container"
使用Kubernetes2011年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

solr-collection-config是表示配置Map的卷

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

非常感谢您的帮助。谢谢

kqqjbcuj

kqqjbcuj1#

如果不使用subPath会发生什么?

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

现在,subPath做什么呢?在您的示例中,

volumeMounts:
  - name: solr-collection-config
    mountPath: /tell/carbon/conf
    subPath: conf

意味着,configMap中的密钥conf将作为conf文件装载到/tell/carbon目录下。
但是,你没有这个键。所以得到这个错误。
错误:无法为容器“上载配置容器”的卷装载“solr-collection-config”准备子路径
现在,你可以这样做

volumeMounts:
  - name: solr-collection-config
    mountPath: /tell/carbon/conf
    subPath: stopwords_en.txt

这意味着,来自configMapstopwords_en.txt值将作为conf文件装载在/tell/carbon下。
最后一句话,此subPath实际上是卷的路径,数据来自卷。在您的情况下,subPath应该是configMap中的一个键

相关问题