kubernetes 我是否可以依赖volumeClaimTemplates命名约定?

but5z9lq  于 2022-12-22  发布在  Kubernetes
关注(0)|答案(1)|浏览(141)

我想在一个启用本地PV的裸 metakubernetes 1.7中设置一个预定义的PostgreSQL集群。我有三个工作节点。我在每个节点上创建了本地PV,并成功部署了有状态集(使用一些复杂的脚本来设置Postgres复制)。
但是我注意到在volumeClaimTemplates和PersistentVolumeClaim之间有一种命名约定。

apiVersion: apps/v1beta1 
kind: StatefulSet
  metadata:   
     name: postgres
  volumeClaimTemplates:
  - metadata:
      name: pgvolume

创建的PVC为pgvolume-postgres-0pgvolume-postgres-1pgvolume-postgres-2
使用一些tricky,我手动创建了PVC,并通过选择器绑定到目标PV。我再次测试了有状态集。似乎有状态集很乐意使用这些PVC。
我成功地完成了我的测试,但我仍然有这个问题。我可以依赖volumeClaimTemplates命名约定吗?这是一个未记录的特性吗?

ilmyapht

ilmyapht1#

基于statefulset API参考
volumeClaimTemplates是允许pod引用的声明列表。StatefulSet控制器负责以维护pod标识的方式将网络标识Map到声明。此列表中的每个声明在模板的一个容器中必须至少有一个匹配(按名称)的volumeMount。此列表中的声明优先于模板中具有相同名称的任何卷。
所以我想你可以放心。
此外,您可以定义一个存储类来利用持久卷的动态预配置,这样就不必手动创建它们。

volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: my-storage-class
      resources:
        requests:
          storage: 1Gi

有关详细信息,请参阅Dynamic Provisioning and Storage Classes in Kubernetes

相关问题