Kubernetes部署WordPress-MySQL遇CreateContainerConfigError:找不到mysql-pass Secret
解决Kustomize生成Secret自动加后缀导致Pod无法找到的问题
问题原因
你用Kustomize的secretGenerator生成Secret时,默认会根据Secret内容的哈希值自动添加后缀(比如mysql-pass-kkcc2b926b),但WordPress和MySQL的Pod配置里引用的是不带后缀的mysql-pass,自然找不到对应的Secret,导致Pod卡在CreateContainerConfigError状态。
解决方案
方法1:禁用Secret名称后缀哈希(推荐)
修改你的Kustomize配置,添加generatorOptions字段关闭自动加后缀的功能,这样生成的Secret名称会严格匹配你定义的mysql-pass:
generatorOptions: disableNameSuffixHash: true secretGenerator: - name: mysql-pass literals: - password=123456
保存配置后,重新执行部署命令:
kubectl apply -k .
此时再查看Secret,名称就是mysql-pass,Pod就能正常拉取Secret启动。
方法2:手动修改Pod配置引用带后缀的Secret(不推荐)
如果暂时不想修改Kustomize配置,可以直接修改WordPress和MySQL的Deployment配置文件,把引用的Secret名称改成实际生成的带后缀的名字(比如mysql-pass-kkcc2b926b)。但这个方法存在缺陷:后续只要Secret内容变化,Kustomize会生成带新后缀的Secret,你又得重新修改Pod配置,维护成本很高。
总结
优先选择方法1,通过禁用名称后缀哈希来保持Secret名称固定,避免后续出现类似的匹配问题。
内容的提问来源于stack exchange,提问作者eastwater
相关产品推荐
相关产品推荐

