如何用Skaffold部署Kubernetes清单文件夹?Job部署失败求助
问题描述
我正在实现Kubernetes官方推荐的并行处理扩展Job,通过Skaffold的before hook调用build-jobs.sh脚本生成Job规格文件到/k8s/jobs目录,Docker镜像构建正常,但Skaffold无法部署该目录下的所有YAML文件。当前Skaffold配置如下:
apiVersion: skaffold/v4beta2 kind: Config metadata: name: my-job build: artifacts: - image: MY_IMAGE_LOCATION docker: dockerfile: Dockerfile hooks: before: - command: [ "sh", "-c", "./k8s/build-jobs.sh" ] os: [ darwin, linux ] manifests: rawYaml: - ./k8s/jobs/*.yaml
我试过把rawYaml配置成./k8s/jobs和./k8s/jobs/,都没用。
解决方法
- 检查通配符解析:把通配符用单引号包裹,避免shell提前展开,配置改成:
manifests: rawYaml: - './k8s/jobs/*.yaml' - 验证YAML合法性:用
kubectl apply --dry-run=client -f ./k8s/jobs/检查所有生成的Job文件,格式错误的文件会被Skaffold跳过。 - 改用glob完整写法:针对Skaffold v2+版本,试试明确的glob配置:
manifests: rawYaml: - glob: ./k8s/jobs/*.yaml - 升级Skaffold版本:v4beta2属于测试版本,可能存在通配符解析bug,升级到最新稳定版再测试。
- 确认hook执行时机:在
build-jobs.sh末尾加echo "Generated jobs:" && ls ./k8s/jobs/,运行skaffold deploy -v debug查看日志,确保脚本执行后目录下有YAML文件,且Skaffold读取manifest时能检测到。
内容的提问来源于stack exchange,提问作者Rômulo M. Farias
相关产品推荐
相关产品推荐

