我想在一个启用本地PV的裸 metakubernetes 1.7中设置一个预定义的PostgreSQL集群。我有三个工作节点。我在每个节点上创建了本地PV,并成功部署了有状态集(使用一些复杂的脚本来设置Postgres复制)。
但是我注意到在volumeClaimTemplates和PersistentVolumeClaim之间有一种命名约定。
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: postgres
volumeClaimTemplates:
- metadata:
name: pgvolume
创建的PVC为pgvolume-postgres-0
、pgvolume-postgres-1
和pgvolume-postgres-2
。
使用一些tricky,我手动创建了PVC,并通过选择器绑定到目标PV。我再次测试了有状态集。似乎有状态集很乐意使用这些PVC。
我成功地完成了我的测试,但我仍然有这个问题。我可以依赖volumeClaimTemplates命名约定吗?这是一个未记录的特性吗?
1条答案
按热度按时间ilmyapht1#
基于statefulset API参考
volumeClaimTemplates是允许pod引用的声明列表。StatefulSet控制器负责以维护pod标识的方式将网络标识Map到声明。此列表中的每个声明在模板的一个容器中必须至少有一个匹配(按名称)的volumeMount。此列表中的声明优先于模板中具有相同名称的任何卷。
所以我想你可以放心。
此外,您可以定义一个存储类来利用持久卷的动态预配置,这样就不必手动创建它们。
有关详细信息,请参阅Dynamic Provisioning and Storage Classes in Kubernetes。