无法为 volumeMount 准备子路径
Failed to prepare subPath for volumeMount
收到此错误。
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
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
非常感谢您的帮助。谢谢
如果不使用 subPath
会怎样?
来自 configMap 的所有密钥都将安装在目录 /tell/carbon/conf
中。这意味着,每个密钥都将是该目录下的一个单独文件。
现在,subPath
有什么作用?根据您的示例,
volumeMounts:
- name: solr-collection-config
mountPath: /tell/carbon/conf
subPath: conf
意味着,来自 configMap 的密钥 conf
将作为文件 conf
安装在 /tell/carbon
目录下。
但是,您没有这个密钥。所以得到这个错误。
Error: failed to prepare subPath for volumeMount "solr-collection-config" of container "upload-config-container"
现在,你可以这样做
volumeMounts:
- name: solr-collection-config
mountPath: /tell/carbon/conf
subPath: stopwords_en.txt
这意味着,configMap 中 stopwords_en.txt
的值将作为 conf
文件安装在 /tell/carbon
.
下
最后一句话,这个 subPath
实际上是一条来自 volume 的路径,来自您的数据来源。在您的情况下,subPath
应该是 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
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
非常感谢您的帮助。谢谢
如果不使用 subPath
会怎样?
来自 configMap 的所有密钥都将安装在目录 /tell/carbon/conf
中。这意味着,每个密钥都将是该目录下的一个单独文件。
现在,subPath
有什么作用?根据您的示例,
volumeMounts:
- name: solr-collection-config
mountPath: /tell/carbon/conf
subPath: conf
意味着,来自 configMap 的密钥 conf
将作为文件 conf
安装在 /tell/carbon
目录下。
但是,您没有这个密钥。所以得到这个错误。
Error: failed to prepare subPath for volumeMount "solr-collection-config" of container "upload-config-container"
现在,你可以这样做
volumeMounts:
- name: solr-collection-config
mountPath: /tell/carbon/conf
subPath: stopwords_en.txt
这意味着,configMap 中 stopwords_en.txt
的值将作为 conf
文件安装在 /tell/carbon
.
最后一句话,这个 subPath
实际上是一条来自 volume 的路径,来自您的数据来源。在您的情况下,subPath
应该是 configMap