我正在定义我的第一个 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 磁盘?
(迁移自堆栈溢出)
答案1
Kubernetes 持久卷(或 GCE 持久磁盘,两者大致相同)只能挂载到 pod 目录结构中的一个点。但一旦挂载,您当然可以创建绑定挂载或符号链接来按您的意愿组织其文件。您还可以更改应用程序的配置以读取和写入挂载持久卷的任何位置的子目录,但这需要更多工作。
答案2
我决定使用(符号链接)在单个分区的 PD 内使用多个子目录。这也是建议这里(Kubernetes#20835)。