亲爱的,我正在使用 nfs 使数据在 postgresql 部署中持久保存,部署文件如下所示
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-deployment
spec:
selector:
matchLabels:
app: postgres
replicas: 1 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:10.4
ports:
- containerPort: 5432
envFrom:
- configMapRef:
name: postgres-config
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: nfs-pvc
部署启动后,成功了。但是当我尝试连接服务(通过 NodePort 公开)时,出现了以下错误
psql -h XXXX --port=31329
psql: error: FATAL: could not open relation mapping file "global/pg_filenode.map": Stale file handle
这看起来像是一个权限问题,所以我分析了 nfs 挂载和导出命令,得到了这个
root@nginx-deployment-6ff6548d78-45zkq:/# ls -l /var/lib/postgresql/
ls: cannot access '/var/lib/postgresql/data': Stale file handle
total 0
d????????? ? ? ? ? ? data
和
[admin@ip-XXXXX ~]$ sudo ls -l /srv/nfs/postgres/
[sudo] password for admin:
total 56
-rw-------. 1 systemd-coredump input 3 Mar 4 17:33 PG_VERSION
drwx------. 6 systemd-coredump input 54 Mar 4 17:34 base
drwx------. 2 systemd-coredump input 4096 Mar 4 17:37 global
drwx------. 2 systemd-coredump input 6 Mar 4 17:33 pg_commit_ts
drwx------. 2 systemd-coredump input 6 Mar 4 17:33 pg_dynshmem
-rw-------. 1 systemd-coredump input 4535 Mar 4 17:34 pg_hba.conf
-rw-------. 1 systemd-coredump input 1636 Mar 4 17:33 pg_ident.conf
drwx------. 4 systemd-coredump input 68 Mar 4 17:38 pg_logical
冲突似乎是由于systemd coredump - 系统核心转储用户和输入nfs 服务器上的组。
你能帮忙吗
答案1
您的部署文件包含以下条目:
volumeMounts:
- mountPath: /var/lib/postgresql/data
检查 NFS 是否存在。这主要是由于缺少挂载路径。执行ls -l <mountPath>
。这也会给你一个Stale file handle
错误。