postgresql.conf找不到当使用卷装入

hyrbngr7  于 2023-03-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(190)

我有以下部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgres-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: postgres
  template:
    metadata:
      labels:
        component: postgres
    spec:
      volumes:
        - name: postgres-storage
          persistentVolumeClaim:
            claimName: postgres-persistent-volume-claim
      containers:
        - name: postgres
          image: prikshet/postgres
          ports:
            - containerPort: 5432
          volumeMounts:
            - name: postgres-storage
              mountPath: /var/lib/postgresql/data
              subPath: postgres

当我包含第23-26行并执行kubectl apply时,pod会出现错误并且不会运行,但当我删除第23-36行时,pod会运行。我想使用第23-26行创建卷挂载。检查此pod的日志时出现的错误是:

postgres: could not access the server configuration file "/var/lib/postgresql/data/postgresql.conf": No such file or directory

postgres持久卷声明是:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-persistent-volume-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

如何解决这个问题?

bpsygsoo

bpsygsoo1#

实际上有两种可能性会发生此错误:
1.您的文件/var/lib/postgresql/data/postgresql.conf实际上并不存在。在这种情况下,您需要在挂载它之前创建它。
1.正如评论中提到的meaningqo good,您使用了错误的subPath。您的文件/var/lib/postgresql/data/postgresql.conf存在,但您试图挂载基于subPath的错误文件。请查看explanationmountPathsubPath之间的区别:
mountPath显示了引用卷在容器中的挂载位置。例如,如果将卷挂载到mountPath: /a/b/c,则该卷将在目录/a/b/c下对容器可用。挂载卷将使mountPath下的所有卷可用。如果只需要挂载卷的一部分,例如卷中的单个文件,您可以使用subPath指定必须挂载的部分。例如,mountPath: /a/b/csubPath: d将使d在目录/a/b/c下挂载的卷中的任何内容。请注意,当subPath是文件夹时,该文件夹的内容将挂载到mountPath

相关问题