起因 在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