无法在 OpenShift 上为 Postgres pod 副本附加或挂载卷

时间:2021-04-28 15:09:35

标签: postgresql docker kubernetes openshift kubernetes-pvc

我在 OpenShift 上部署了一个 postgres pod 和一个 PVC,我认为我正确附加了它,但我可能是错误的。这是我的 PVC,它已正确绑定 -

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: postgres-pvc
spec:
 accessModes:
   - ReadWriteOnce
 resources:
   requests:
     storage: 1Gi
 storageClassName: xxxxx

我使用 PGDATA 环境设置为 /var/lib/postgresql/pgdata 创建了 postgres pod,并像这样安装了 PVC -

oc set volume dc/postgres --add --name=postgres-pvc --type=persistentVolumeClaim \
    --claim-name=postgres-pvc --mount-path=/var/lib/postgresql/pgdata --containers=postgres

我最初尝试通过覆盖原始容器卷将 PVC 附加到 /var/lib/postgresql/data,但它说存在诸如直接安装到该 data 文件夹路径之类的问题,因此这就是我使用 {{ 1}} 一个。

pgdata

我现在得到的错误是当我尝试通过 DC 扩展 pod/添加副本时,它给出了以下错误 -

oc set volume dc/postgres --add --overwrite --name=postgres-volume-1 --type=persistentVolumeClaim \
  --claim-name=postgres-pvc --mount-path=/var/lib/postgresql/data --containers=postgres

Unable to attach or mount volumes: unmounted volumes=[postgres-pvc], unattached volumes=[postgres-volume-1 postgres-pvc postgres-token-h7jvr]: timed out waiting for the condition

是不是因为我的 PVC 安装不正确?还是我需要创建一个新的 PVC,然后手动将新 pod 更新为新创建的 PVC?

1 个答案:

答案 0 :(得分:2)

正如你所看到的错误

<块引用>

已经连接到另一个节点 xx.xx.xxx.x 并且有活动的 pod [postgres-7-6p6sz] 使用它

您正在使用块存储作为 pv,它的 accessModesReadWriteOnce,这意味着在任何给定时间,卷都可以附加到单个 kubernetes 节点,然后在该节点上,一个 pod可以挂载。 现在,如果您想附加到另一个 Pod,则需要删除现有的 Pod,这将使 pv 与之前的节点断开连接,重新附加到新节点。

了解更多详情persistent-volumes/