kubernetes - 如何将容器中的目录挂载到主机中
问题描述
我为微服务创建了一个部署 yaml。我正在使用hostpath
卷类型,persistentVolume
并且必须将数据复制到主机中的路径。但是我想将容器中的目录挂载到主机中,因为数据在容器中,而我需要主机中的这些数据。
我的部署 yaml:
#create persistent volume
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-vol
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /opt/storage/app
#create persistent volume clame
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: app-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
#create Deployment
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deployment
spec:
replicas: 1
selector:
matchLabels:
deploy: app
template:
metadata:
labels:
deploy: app
spec:
hostname: app
hostNetwork: false
containers:
- name: app
image: 192.168.10.10:2021/project/app:latest
volumeMounts:
- mountPath: /opt/app
name: project-volume
volumes:
- name: project-volume
persistentVolumeClaim:
claimName: app-pv-claim
解决方案
由于信息空白,我正在写一个一般性的答案。
首先你应该知道:
HostPath 卷存在许多安全风险,最好的做法是尽可能避免使用 HostPath。当必须使用 HostPath 卷时,它的范围应仅限于所需的文件或目录,并以只读方式挂载。
但使用hostPath
也为某些应用程序提供了强大的逃生舱口。
如果你仍然想使用它,首先你应该检查两个 Pod(创建数据的 Pod 和想要访问数据的第二个 Pod)是否在同一个节点上。以下命令将向您展示。
kubectl get pods -o wide
任何 pod 创建的所有数据都应该保留在hostPath
目录中,并且只要它们在同一个节点上运行,它们就可以用于每个 pod。
另请参阅有关 hostPath 的文档。
推荐阅读
- python - 完成训练后进行预测
- java - 在java程序上获取python数组
- c++ - 如何使用名称调用结构实例的属性
- excel - Excel:当同一个工作表中有两个表格(垂直)时,将新行添加到表格底部
- python - 音乐测验项目
- .net - “域\用户”SQL Server 2008 R2 登录失败
- javascript - 使用 fetch 将 JavaScript 数组转换为 PHP,然后发送电子邮件
- javascript - 使用 Nuxt 从组件访问 Vuex 存储状态
- android - TypeError:无法读取未定义的属性“DETECTION_MODE”-“react-native-awesome-card-io”
- python - pygame:精灵类就像一个对象类