我正在尝试在Kubernetes中构建一个Pod,将文件从我的本地系统挂载到Pod,方法类似于挂载docker-compose
文件中的卷
我尝试了以下操作,试图将本地文件夹./test
和文件挂载到/blah/
文件夹下的Pod中。然而,库伯内斯抱怨说,MountVolume.SetUp failed for volume "config-volume" : hostPath type check failed: ./test/ is not a directory
这是我的yaml
文件。我是不是遗漏了什么?
kind: Service
metadata:
name: vol-test
labels:
app: vol-test
spec:
type: NodePort
ports:
- port: 8200
nodePort: 30008
selector:
app: vol-test
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: vol-test
spec:
replicas: 1
selector:
matchLabels:
app: vol-test
template:
metadata:
labels:
app: vol-test
spec:
containers:
- name: vol-test
image: nginx
imagePullPolicy: "IfNotPresent"
volumeMounts:
- name: config-volume
mountPath: /blah/
ports:
- containerPort: 8200
volumes:
- name: config-volume
hostPath:
path: ./test/
type: Directory
5条答案
按热度按时间vkc1a9a21#
如果您只想将文件或目录传递到Pod以读取配置值(我从您选择的卷挂载
config-volume
中假定了这一点),并且不需要更新文件/目录,那么您只需将文件放在如下所示的ConfigMap中:或者,您可以从运行
kubectl
命令并执行的位置导入文件内容(假设文件名为nginx.conf
):然后,您可以通过将
volumes
和volumeMount
添加到部署规范来装载文件:如果您实际上希望拥有对文件的读写访问权限,那么您可以按照另一个答案的建议使用PersistentVolume和PersistentVolumeClaim,尽管如果您有多个工作节点,我不建议使用
hostPath
。xzv2uavs2#
你可以这样做
cvxl0en23#
如果您想要从主机添加本地文件,则可以执行以下操作
pwuypxnk4#
服务、部署等工作负载资源无法将卷装载到Pod中不存在的文件夹。
确保在挂载Pod之前已在Pod中创建了该文件夹。如果您正在创建自己的图像,最好的方法是在docker文件中定义This,或者使用脚本在Pod的开头创建所需的文件夹。
ikfrs5lh5#