You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes Pod中正确创建SSH隧道Sidecar容器并解决CrashLoopBackOff报错

问题原因及解决步骤

  1. 镜像拉取策略导致加载了旧版本镜像
    你本地测试的sql-proxy:latest镜像已经包含tunnel.sh,但Kubernetes节点上缓存了更早构建的、未包含tunnel.sh的同标签镜像,你的Deployment中sidecar容器配置的imagePullPolicy: IfNotPresent会让节点直接使用本地缓存的旧镜像,因此出现找不到脚本的报错。
    解决方法:
  • 将sidecar容器的镜像拉取策略修改为imagePullPolicy: Always,每次启动都会拉取最新的镜像
  • 更稳妥的方案是给镜像打唯一版本标签(比如sql-proxy:v1),避免latest标签的版本混淆问题
  1. 卷名称配置不匹配
    即使解决了脚本找不到的问题,后续运行SSH隧道仍然会报错,原因是卷名配置不一致:
    sidecar容器的volumeMounts中引用的卷名是keys-sql-proxy,但你在volumes段定义的存储SSH密钥的Secret卷名是spoonity-sql-proxy,两者完全不匹配,导致/keys目录没有正确挂载到密钥Secret,自然找不到私钥文件。
    解决方法:
    将sidecar容器的volumeMounts配置修改为:
volumeMounts:
- mountPath: /keys
  name: spoonity-sql-proxy
  readOnly: true
  1. 可选:修复SSH私钥权限问题
    SSH客户端默认要求私钥文件权限为600,否则会出于安全考虑拒绝连接。你当前Secret配置的defaultMode: 420对应八进制权限644,权限过高会导致后续SSH连接报错。
    解决方法:
    将Secret的defaultMode修改为384(对应八进制权限600):
- name: spoonity-sql-proxy
  secret:
    defaultMode: 384
    secretName: spoonity-sql-proxy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:27:03