我在kubernetes中部署了一个postgresql有状态服务,现在像这样将/bitnami/postgresql
映射到NFS卷:
spec:
volumes:
- name: dshm
emptyDir:
medium: Memory
- name: data-reddwarf-postgresql-postgresql-general
persistentVolumeClaim:
claimName: data-reddwarf-postgresql-postgresql-general
containers:
- name: reddwarf-postgresql
image: docker.io/bitnami/postgresql:13.3.0-debian-10-r75
ports:
- name: tcp-postgresql
containerPort: 5432
protocol: TCP
env:
- name: BITNAMI_DEBUG
value: 'false'
- name: POSTGRESQL_PORT_NUMBER
value: '5432'
- name: POSTGRESQL_VOLUME_DIR
value: /bitnami/postgresql
- name: PGDATA
value: /bitnami/postgresql/data
- name: POSTGRES_USER
value: postgres
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: reddwarf-postgresql
key: postgresql-password
- name: POSTGRESQL_ENABLE_LDAP
value: 'no'
- name: POSTGRESQL_ENABLE_TLS
value: 'no'
- name: POSTGRESQL_LOG_HOSTNAME
value: 'false'
- name: POSTGRESQL_LOG_CONNECTIONS
value: 'false'
- name: POSTGRESQL_LOG_DISCONNECTIONS
value: 'false'
- name: POSTGRESQL_PGAUDIT_LOG_CATALOG
value: 'off'
- name: POSTGRESQL_CLIENT_MIN_MESSAGES
value: error
- name: POSTGRESQL_SHARED_PRELOAD_LIBRARIES
value: pgaudit
resources:
limits:
cpu: 600m
memory: 1Gi
requests:
cpu: 250m
memory: 256Mi
volumeMounts:
- name: dshm
mountPath: /dev/shm
- name: data-reddwarf-postgresql-postgresql-general
mountPath: /bitnami/postgresql
现在我想添加另一个从部署到NFS PV的文件夹/docker-entrypoint-preinitdb.d
映射。我是否需要添加一个新的PV来映射新的文件夹?我应该怎么做才能在多个文件夹中使用相同的PVC,这样我就不需要添加额外的NFS映射了?我已经尝试过这样的配置:
volumeMounts:
- name: dshm
mountPath: /dev/shm
- name: data-reddwarf-postgresql-postgresql-general
mountPath: /bitnami/postgresql
- name: data-reddwarf-postgresql-postgresql-general
mountPath: /docker-entrypoint-preinitdb.d
但是NFS文件夹没有创建容器文件夹docker-entrypoint-preinitdb.d
。似乎映射没有成功。
你绝对应该使用一个单独的卷。
即使您设法在不同的位置挂载多个相同的PV,每次挂载仍然会暴露PV中的所有文件和目录。如果/docker-entrypoint-preinitdb.d
包含一堆脚本而没有实际数据,您可以使用ConfigMap而不是创建新的NFS PVC。