我正在定义我的第一个 Kubernetes 部署,并想定义一个在两点安装持久存储的容器,比如这样(在Deployment.yaml
里面spec.template.spec.containers.-
):
volumeMounts:
- name: volume1
mountPath: /var/log/app
- name: volume2
mountPath: /var/lib/app
我从 Kubernetes 的MEAN 堆栈示例中了解到,我应该能够创建两个相应的 GCE 磁盘,如下所示:
gcloud compute disks create --size 10GB volume1
gcloud compute disks create --size 10GB volume2
我目前考虑使用两个磁盘而不是一个,因为我需要安装在两个不同的路径上。Kubernetes 服务能否在不同路径上挂载单个卷/磁盘的不同“部分”(可能是分区)?
的规范表明v1.VolumeMount
这在服务规范级别可能是不可能的,因为它仅支持字段name
、readOnly
和mountPath
。
这些答案表明它可能在 EXT4 分区级别上是可能的,但这将要求该卷是只读的。即使在只读情况下(不符合我的要求),我将如何创建带有分区的 GCE 磁盘?
(从StackOverflow迁移而来)
Kubernetes 持久卷(或 GCE 持久磁盘,大致相同)只能挂载到 pod 目录结构中的一个点。但是一旦挂载,您当然可以创建绑定挂载或符号链接来根据需要组织其文件。您还可以更改应用程序的配置以读取和写入安装持久卷的位置的子目录,但这需要更多的工作。
我已决定使用(符号链接到)PD 内的多个子目录,而不是单个分区。此处也建议这样做(Kubernetes #20835)。