Postgresql 如何在crunchydata postgres operator中使用nfs存储

Postgresql 如何在crunchydata postgres operator中使用nfs存储,postgresql,docker,kubernetes,nfs,pgo,Postgresql,Docker,Kubernetes,Nfs,Pgo,我正在用图表试用CrunchyData postgres操作符(Helm)。我无法使用NFS创建群集。执行以下配置: 已安装图表回购 helm install nfs-abc stable/nfs-server-provisioner 设置postgres存储值 设置存储配置 创建PGO集群 pgo create cluster -n pgo dravoka --storage-config='nfsstorage' --pgbackrest-storage-config='nfsstorag

我正在用图表试用CrunchyData postgres操作符(Helm)。我无法使用NFS创建群集。执行以下配置:

已安装图表回购

helm install nfs-abc stable/nfs-server-provisioner
设置postgres存储值

设置存储配置

创建PGO集群

pgo create cluster -n pgo dravoka --storage-config='nfsstorage' --pgbackrest-storage-config='nfsstorage' --pvc-size='2Gi'
PVC描述:

kubectl describe -n pgo pvc dravoka
Name:          dravoka
Namespace:     pgo
StorageClass:  standard
Status:        Pending
Volume:
Labels:        pg-cluster=dravoka
               pgremove=true
               vendor=crunchydata
Annotations:   volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/gce-pd
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode:    Filesystem
Mounted By:    <none>
Events:
  Type     Reason              Age                    From                         Message
  ----     ------              ----                   ----                         -------
  Warning  ProvisioningFailed  112s (x10 over 7m45s)  persistentvolume-controller  Failed to provision volume with StorageClass "standard": invalid AccessModes [ReadWriteMany]: only AccessModes [ReadWriteOnce ReadOnlyMany] are supported
kubectl description-n pgo pvc dravoka
姓名:德拉沃卡
名称空间:pgo
StorageClass:标准
状态:待定
卷:
标签:pg cluster=dravoka
pgremove=true
供应商=crunchydata
注释:volume.beta.kubernetes.io/storage-provisioner:kubernetes.io/gce-pd
终结器:[kubernetes.io/pvc保护]
容量:
访问模式:
VolumeMode:文件系统
安装人:
活动:
从消息中键入原因年龄
----     ------              ----                   ----                         -------
警告设置失败112s(x10超过7m45s)persistentvolume控制器无法使用StorageClass“standard”设置卷:无效的访问模式[ReadWriteMany]:仅支持访问模式[ReadWriteOnce ReadOnlyMany]
Pod描述:

kubectl describe -n pgo pod dravoka-backrest-shared-repo-9fdd77886-j2mjv
Name:           dravoka-backrest-shared-repo-9fdd77886-j2mjv
Namespace:      pgo
Priority:       0
Node:           <none>
Labels:         name=dravoka-backrest-shared-repo
                pg-cluster=dravoka
                pg-pod-anti-affinity=preferred
                pgo-backrest-repo=true
                pod-template-hash=9fdd77886
                service-name=dravoka-backrest-shared-repo
                vendor=crunchydata
Annotations:    <none>
Status:         Pending
IP:
IPs:            <none>
Controlled By:  ReplicaSet/dravoka-backrest-shared-repo-9fdd77886
Containers:
  database:
    Image:      registry.developers.crunchydata.com/crunchydata/pgo-backrest-repo:centos7-4.4.1
    Port:       2022/TCP
    Host Port:  0/TCP
    Requests:
      memory:  48Mi
    Environment:
      PGBACKREST_STANZA:           db
      SSHD_PORT:                   2022
      PGBACKREST_DB_PATH:          /pgdata/dravoka
      PGBACKREST_REPO_PATH:        /backrestrepo/dravoka-backrest-shared-repo
      PGBACKREST_PG1_PORT:         5432
      PGBACKREST_LOG_PATH:         /tmp
      PGBACKREST_PG1_SOCKET_PATH:  /tmp
      PGBACKREST_DB_HOST:          dravoka
    Mounts:
      /backrestrepo from backrestrepo (rw)
      /sshd from sshd (ro)
Conditions:
  Type           Status
  PodScheduled   False
Volumes:
  sshd:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  dravoka-backrest-repo-config
    Optional:    false
  backrestrepo:
    Type:        PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:   dravoka-pgbr-repo
    ReadOnly:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  76s (x7 over 9m58s)  default-scheduler  pod has unbound immediate PersistentVolumeClaims (repeated 2 times)

kubectl描述-n pgo吊舱dravoka-backback-shared-repo-9fdd77886-j2mjv
名称:dravoka-backback-shared-repo-9fdd77886-j2mjv
名称空间:pgo
优先级:0
节点:
标签:名称=dravoka靠背共享回购
pg集群=德拉沃卡
pg pod抗亲和力=首选
pgo靠背回购=真
pod模板哈希=9fdd77886
服务名称=德拉沃卡共享回购
供应商=crunchydata
注释:
状态:待定
知识产权:
IPs:
控制人:ReplicaSet/dravoka-backback-shared-repo-9fdd77886
容器:
数据库:
图片:registry.developers.crunchydata.com/crunchydata/pgo-repo:centos7-4.4.1
端口:2022/TCP
主机端口:0/TCP
请求:
内存:48英里
环境:
PGU节:db
SSHD_端口:2022
pgdata\u DB\u路径:/pgdata/dravoka
pgbackback_REPO_路径:/backrestrepo/dravoka backback shared REPO
PGU PG1_端口:5432
pgu日志路径:/tmp
PG靠背\u PG1\u插座\u路径:/tmp
PGU DB_主机:dravoka
挂载:
/从backrestrepo(rw)返回backrestrepo
/来自sshd(ro)的sshd
条件:
类型状态
播客计划错误
卷数:
署方:
类型:Secret(由Secret填充的卷)
秘书名称:dravoka靠背回购配置
可选:false
backrestrepo:
类型:PersistentVolumeClaim(对同一命名空间中PersistentVolumeClaim的引用)
索赔名称:dravoka pgbr repo
只读:false
QoS等级:Burstable
节点选择器:
容差:node.kubernetes.io/未就绪:NoExecute op=存在300秒
node.kubernetes.io/unreachable:NoExecute op=存在300秒
活动:
从消息中键入原因年龄
----     ------            ----                 ----               -------
警告失败调度76s(x7超过9m58s)默认调度程序pod已解除立即PersistentVolumeClaims的绑定(重复2次)
我是否错过了一些配置过的东西,或者做错了什么?我的目的是将NFS用作postgres存储。任何帮助都将不胜感激

未能使用StorageClass“standard”设置卷:无效 AccessModes[ReadWriteMany]:仅AccessModes[ReadWriteOnce] 支持ReadOnlyMany]

这就是问题的根本原因。您正在使用不支持所需访问模式的存储类(即
ReadWriteMany

看一下,你似乎有这样的配置

storage3_name: 'nfsstorage'
storage3_access_mode: 'ReadWriteMany'
storage3_size: '1G'
storage3_type: 'create'
storage3_supplemental_groups: 65534
其中,
storage3\u access\u mode
表示访问模式为
ReadWriteMany
,但不支持这种方式

请尝试将其更改为
ReadWriteOnce



另外,Postgres需要块存储才能工作,因此即使NFS设置正确,您的Postgres群集也不会运行。更多说明

PostgreSQL需要文件系统,无块存储。NFS可以,但我听到了很多关于Linux实现可靠性的令人沮丧的声音。好吧,至少我不能每次都让它在NFS上工作。所以,是的,只是一些额外的信息供参考:)我试着像你说的那样放置
nfs
,但我得到了一个错误
“time=“2020-09-16T06:40:46Z”level=error msg=“error in pgoconfig:check pgo.yaml:PrimaryStorage设置无效:\“nfs\”未定义“func=“internal/apiserver.Initialize()”file=”内部/apiserver/root.go:134“version=4.4.1
查看下面的示例:。我认为您应该放回
nfsstorage
。并将
AccessMode
更新为
ReadWriteOnce
。我将更新我的答案。
kubectl describe -n pgo pod dravoka-backrest-shared-repo-9fdd77886-j2mjv
Name:           dravoka-backrest-shared-repo-9fdd77886-j2mjv
Namespace:      pgo
Priority:       0
Node:           <none>
Labels:         name=dravoka-backrest-shared-repo
                pg-cluster=dravoka
                pg-pod-anti-affinity=preferred
                pgo-backrest-repo=true
                pod-template-hash=9fdd77886
                service-name=dravoka-backrest-shared-repo
                vendor=crunchydata
Annotations:    <none>
Status:         Pending
IP:
IPs:            <none>
Controlled By:  ReplicaSet/dravoka-backrest-shared-repo-9fdd77886
Containers:
  database:
    Image:      registry.developers.crunchydata.com/crunchydata/pgo-backrest-repo:centos7-4.4.1
    Port:       2022/TCP
    Host Port:  0/TCP
    Requests:
      memory:  48Mi
    Environment:
      PGBACKREST_STANZA:           db
      SSHD_PORT:                   2022
      PGBACKREST_DB_PATH:          /pgdata/dravoka
      PGBACKREST_REPO_PATH:        /backrestrepo/dravoka-backrest-shared-repo
      PGBACKREST_PG1_PORT:         5432
      PGBACKREST_LOG_PATH:         /tmp
      PGBACKREST_PG1_SOCKET_PATH:  /tmp
      PGBACKREST_DB_HOST:          dravoka
    Mounts:
      /backrestrepo from backrestrepo (rw)
      /sshd from sshd (ro)
Conditions:
  Type           Status
  PodScheduled   False
Volumes:
  sshd:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  dravoka-backrest-repo-config
    Optional:    false
  backrestrepo:
    Type:        PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:   dravoka-pgbr-repo
    ReadOnly:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  76s (x7 over 9m58s)  default-scheduler  pod has unbound immediate PersistentVolumeClaims (repeated 2 times)

storage3_name: 'nfsstorage'
storage3_access_mode: 'ReadWriteMany'
storage3_size: '1G'
storage3_type: 'create'
storage3_supplemental_groups: 65534