RPi4 K3S集群部署wiki.js时PostgreSQL容器报exec format error
问题原因
wiki.js官方Helm Chart默认依赖Bitnami维护的PostgreSQL子Chart,部分默认绑定的PostgreSQL镜像版本未正确配置多架构镜像清单,在ARM64架构的RPi4节点上会错误拉取amd64架构的镜像,触发exec user process caused: exec format error报错。wiki.js主Chart文档中未直接列出PostgreSQL配置入口,是因为数据库相关配置属于子Chart参数,需要通过特定前缀透传,不需要修改Chart源码。
解决方案
方案1:透传参数修正内置PostgreSQL镜像(推荐)
先清理之前部署失败的实例:
helm uninstall wikijs
重新安装时通过--set参数显式指定已验证支持ARM64架构的PostgreSQL镜像版本,所有PostgreSQL子Chart的参数都通过postgresql.前缀传入:
helm install wikijs requarks/wiki \ --set postgresql.image.repository=bitnami/postgresql \ --set postgresql.image.tag=14.5.0-debian-11-r22 \ --set postgresql.architecture=standalone
注:12.x及以上版本的Bitnami PostgreSQL镜像均提供ARM64架构支持,若需要更新版本,可替换tag为对应多架构版本即可,避开无ARM64适配的老旧tag。
方案2:使用外部PostgreSQL数据库
如果不想使用Chart内置的数据库实例,可以提前部署好兼容ARM64架构的PostgreSQL(集群内/集群外均可),安装时关闭内置数据库,传入外部数据库连接信息:
helm install wikijs requarks/wiki \ --set postgresql.enabled=false \ --set externalPostgresql.host=<数据库访问地址> \ --set externalPostgresql.port=5432 \ --set externalPostgresql.database=wikijs \ --set externalPostgresql.user=wikijs \ --set externalPostgresql.password=<数据库访问密码>
部署验证
安装完成后等待1-2分钟,执行以下命令查看Pod状态:
kubectl get pods
当两个工作负载的STATUS均为Running、READY列显示1/1时即为部署正常:
NAME READY STATUS RESTARTS AGE wikijs-7f6c8b9f54-lz55k 1/1 Running 0 2m12s wikijs-postgresql-0 1/1 Running 0 2m12s
如果需要确认镜像架构匹配,可进入PostgreSQL容器执行arch命令,返回aarch64即说明架构适配正确。
内容的提问来源于stack exchange,提问作者carlosV2
相关产品推荐
相关产品推荐

