【发布时间】:2022-04-14 21:12:13
【问题描述】:
我们如何在 kubernetes 持久卷中创建一个目录来挂载以在容器中用作 subPath ? eg: mysql 目录应该在声明持久卷时创建
【问题讨论】:
标签: kubernetes
我们如何在 kubernetes 持久卷中创建一个目录来挂载以在容器中用作 subPath ? eg: mysql 目录应该在声明持久卷时创建
【问题讨论】:
标签: kubernetes
我可能会将一个 init 容器放入我的 podspec 中,它只是挂载卷并运行 mkdir -p 来创建目录然后退出。您也可以使用某种脚本在目标容器本身中执行此操作。
https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
【讨论】:
我认为您可以使用 readinessProbe 来使用 execAction 创建子文件夹。它将确保您的文件夹在容器准备好接受请求之前准备就绪。
否则,您可以使用 COMMAND 选项来创建它。但这会在容器启动后执行。
【讨论】:
这就是我使用initContainer 和mkdir -p 实现@brett-wagner 的明智解决方案的方式。我在我的 NFS 服务器卷 /exports 中创建了两个子目录 my-app-data 和 my-app-media:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nfs-server-deploy
labels:
app: my-nfs-server
spec:
replicas: 1
selector:
matchLabels:
app: my-nfs-server
template:
spec:
containers:
- name: my-nfs-server-cntr
image: k8s.gcr.io/volume-nfs:0.8
volumeMounts:
- name: my-nfs-server-exports
mountPath: "/exports"
initContainers:
- name: volume-dirs-init-cntr
image: busybox:1.35
command:
- "/bin/mkdir"
args:
- "-p"
- "/exports/my-app-data"
- "/exports/my-app-media"
volumeMounts:
- name: my-nfs-server-exports
mountPath: "/exports"
volumes:
- name: my-nfs-server-exports
persistentVolumeClaim:
claimName: my-nfs-server-pvc
【讨论】: