起因 在truenas的nextcloud升级后,可能是由于容器拉取混乱,k3s里的nextcloud空间也乱了。陆续出现了几个问题:
原本只有3个pod,结果多了nextcloud-postgres-nc
和nextcloud-nc
两个deployment,而且都是比我设置版本低的,读的同一个映射路径(直接删掉多余的deploy)
在nextcloud-postgres容器中出现了2025-01-01T00:10:27.747127138+08:00 2024-12-31 16:10:27.747 UTC [169] FATAL: role "postgres" does not exist
报错。虽然没找到这个错误的起因,但还是尝试解决了一下。
app_api插件更新卡住不动(在将/html/apps/app_api目录先移出目录在移进后就莫名其妙好了)
网上说解决第2个问题的方法都语焉不详。postgres应该是默认的超级管理员用户,现在超级管理员直接没了,所以很多操作实际上是执行不了的。一下说一下我的解决办法
创建临时pg容器 在原有容器中,postgres进程是不能关的,关了后容器会重建,尝试设置了一下pod的restartPolicy为Never也没用。因此创建了一个临时容器来处理,新容器删掉了探针,加了一个tail -f /dev/null
保持容器不关闭。
配置postgres.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 apiVersion: v1 kind: Pod metadata: name: postgres-13.1 labels: app: postgres namespace: default spec: restartPolicy: Never containers: - name: postgres image: postgres:13.1 command: ["tail" , "-f" , "/dev/null" ] ports: - containerPort: 5432 name: postgres volumeMounts: - name: postgres-data mountPath: /var/lib/postgresql/data volumes: - name: postgres-data hostPath: path: /xxxx type: DirectoryOrCreate --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: postgres-pvc namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: standard
接着启动容器
1 2 k3s kubectl apply -f postgres2.yaml k3s kubectl delete pod postgres-13.1 -n default
进入single模式,增加postgres用户 1 2 3 4 5 6 7 8 pg_ctl stop -D /var/lib/postgresql/data/ postgres --single -D /var/lib/postgresql/data/ >CREATE ROLE postgres SUPERUSER LOGIN CREATEDB CREATEROLE INHERIT REPLICATION BYPASSRLS; pg_ctl start -D /var/lib/postgresql/data/ k3s kubectl delete pod postgres-13.1 -n default