我想在kubernetes中使用glusterfs通过pvc持久化数据文件,我挂载了目录,它会工作,但是当我尝试挂载文件时,它将失败,因为文件已挂载到目录类型,如何在k8s中挂载数据文件?
答案 0 :(得分:2)
如何在k8s中装载数据文件?
这通常是特定于应用程序的,并且有几种方法可以实现,但是主要是您想了解subPath。
通常,您可以选择:
conf/interpreter.json
看起来是一个很好的例子... 注意事项:
如果使用ConfigMaps,则必须使用subPath引用单个文件才能挂载它,即使ConfigMap中只有一个文件也是如此。像这样:
containers:
- volumeMounts:
- name: my-config
mountPath: /my-app/my-config.json
subPath: config.json
volumes:
- name: my-config
configMap:
name: cm-my-config-map-example
example.sh
将单个/bin
脚本文件安装到容器的ConfigMap
目录的完整示例。您可以调整此示例,以适合将具有任何特权的任何文件放置在任何所需文件夹中的需要。将my-namespace
替换为任何所需的字符(或将default
完全删除)
配置图:
kind: ConfigMap
apiVersion: v1
metadata:
namespace: my-namespace
name: cm-example-script
data:
example-script.sh: |
#!/bin/bash
echo "Yaaaay! It's an example!"
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: my-namespace
name: example-deployment
labels:
app: example-app
spec:
selector:
matchLabels:
app: example-app
strategy:
type: Recreate
template:
metadata:
labels:
app: example-app
spec:
containers:
- image: ubuntu:16.04
name: example-app-container
stdin: true
tty: true
volumeMounts:
- mountPath: /bin/example-script.sh
subPath: example-script.sh
name: example-script
volumes:
- name: example-script
configMap:
name: cm-example-script
defaultMode: 0744
test.txt
文件安装到容器的/bin
目录中的完整示例(文件已经存在于卷的根目录中)。但是,如果您希望使用永久性卷而不是configMap进行挂载,这是另一个以几乎相同的方式进行挂载的示例(test.txt挂载在/bin/test.txt中)...请注意两件事:{{ 1}}必须存在于PV上,并且我正在使用statefulset以便与自动配置的pvc一起运行,并且您可以进行相应的调整...
test.txt