我想在一个带有EventDeduplicationLambdaIntegrationTest.java enable的裸元kubernetes 1.7中设置一个预定义的PostgreSQL集群。我有三个工作节点。我在每个节点上创建本地PV并成功部署有状态集(使用一些复杂的脚本来设置Postgres复制)。
但是我注意到volumeClaimTemplates和PersistentVolumeClaim之间存在一种命名约定。 例如
R
创建的pvc是apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: postgres
volumeClaimTemplates:
- metadata:
name: pgvolume
,pgvolume-postgres-0
,pgvolume-postgres-1
。
使用一些local PV,我手动创建PVC并通过选择器绑定到目标PV。我再次测试有状态集。似乎有状态的设置非常乐意使用这些PVC。
我成功完成了测试但仍然有这个问题。我可以依赖volumeClaimTemplates命名约定吗?这是一个无证的功能吗?
答案 0 :(得分:4)
基于有状态API reference
volumeClaimTemplates是允许pod引用的声明列表。 StatefulSet控制器负责以维护pod标识的方式将网络标识映射到声明。此列表中的每个声明必须在模板中的一个容器中至少有一个匹配(按名称)volumeMount。此列表中的声明优先于模板中具有相同名称的任何卷。
所以我猜你可以依靠它。
此外,您可以定义存储类以利用持久卷的动态配置,因此您不必手动创建它们。
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: my-storage-class
resources:
requests:
storage: 1Gi
有关详细信息,请参阅Dynamic Provisioning and Storage Classes in Kubernetes。