You need to enable JavaScript to run this app. 为何已创建MongoDB Deployment仍出现OCI runtime error?
优惠活动
大模型
产品
解决方案
定价
更多

为何已创建MongoDB Deployment仍出现OCI runtime error?

报错根因定位

你遇到的OCI runtime error和Deployment本身的配置逻辑没有关系,核心问题出在自定义Secret的编码格式不符合K8s的规范要求。

具体错误点

K8s要求Secret资源的data字段必须是UTF-8标准字符串转换的base64编码值,编码结果不能带换行、空字符、多余引号这类控制字符。你当前配置里的两个Secret值完全不满足要求:

  • mongo-root-username字段值JwB2AG8AbABoAGEAcgBkACcA是按UTF-16格式生成的编码结果,解码后会附带大量空字符,首尾还套了多余的单引号,根本不是可用的合法用户名
  • mongo-root-password字段值JwBEAGgAYQBuAHUAcwBoACcA存在完全相同的问题,解码后是带空字符、多余单引号的密码值
    MongoDB容器启动时,读取到这种带非法内容的环境变量值,会直接触发进程启动崩溃,最终上报OCI runtime类的启动失败报错。

修正操作步骤

  • 重新生成符合规范的Secret编码值,不要使用UTF-16格式的编码结果。直接在本地执行命令生成对应值即可:
    # 生成用户名的base64值,*必须加-n参数*去掉echo默认携带的换行符
    echo -n '实际使用的root用户名' | base64
    # 生成密码的base64值
    echo -n '实际使用的root密码' | base64
    
  • 把命令输出的无换行字符串,替换掉Secret配置里原来错误的两个data值
  • 应用更新后的Secret配置,手动删除当前卡在崩溃状态的旧Pod,Deployment会自动拉起状态正常的新Pod

快速校验方法

配置改完后不用反复拉起Pod试错,可以提前校验Secret的配置是否合规:

  • 执行kubectl get secret mongodb-secret -o jsonpath='{.data.mongo-root-username}' | base64 --decode,如果输出内容和你预期的用户名完全一致,没有多余的引号、空字符,就说明编码配置正确
  • 用相同的方法校验密码字段的解码值,确认没有异常后再观察Pod的启动状态

内容的提问来源于stack exchange,提问作者Dhanush reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 15:54:07