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

将Init容器迁移至Kubernetes Job后start.sh无法执行求助

问题:Kubernetes Job未执行Dockerfile中定义的start.sh脚本

我们正将Init容器迁移至Kubernetes Job,已在job.yaml的containers字段中配置了Init容器的镜像地址,但该容器Dockerfile中定义的start.sh脚本未被执行。

相关配置文件

job.yaml

apiVersion: batch/v1
kind: Job
metadata:
  name: "{{ .Release.Name }}-init-job"
  namespace: {{ .Release.Namespace }}
spec:
  template:
    metadata:
      annotations:
        linkerd.io/inject: disabled
        "helm.sh/hook-delete-policy": before-hook-creation
        "helm.sh/hook": pre-install,pre-upgrade,pre-delete
        "helm.sh/hook-weight": "-5"
    spec:
      serviceAccountName: {{ .Release.Name }}-init-service-account
      containers:
        - name: app-installer
          image: artifactorylocation/test-init-container:1.0.1
          command:
            - /bin/bash
            - -c
            - echo Hello executing k8s init-container
          securityContext:
            readOnlyRootFilesystem: true
      restartPolicy: OnFailure

test-init-container的Dockerfile

FROM repository/java17-ol8-x64:adddd4c

WORKDIR /

ADD target/test-init-container-ms.jar ./
ADD target/lib ./lib

ADD start.sh /
RUN chmod +x /start.sh

CMD ["sh", "/start.sh"]
EXPOSE 8080

问题原因

Kubernetes容器配置中的command字段会完全覆盖Dockerfile里定义的CMD指令。当前job.yaml里的command指定执行echo Hello executing k8s init-container,根本没有调用start.sh,自然不会执行脚本。

另外需要注意:当前配置了readOnlyRootFilesystem: true,如果start.sh所在路径没有可执行权限会导致脚本无法运行,但这不是当前问题的核心原因。

解决方法

方法1:移除自定义command(推荐)

直接删除job.yaml中containers下的command字段,Kubernetes会自动使用Dockerfile中定义的CMD来启动容器,从而执行start脚本:

containers:
  - name: app-installer
    image: artifactorylocation/test-init-container:1.0.1
    securityContext:
      readOnlyRootFilesystem: true

方法2:在command中直接调用start.sh

如果需要保留自定义command逻辑(比如添加前置操作),可以在command里显式调用start.sh:

command:
  - /bin/bash
  - -c
  - /start.sh

如果需要同时执行echo和脚本:

command:
  - /bin/bash
  - -c
  - echo Hello executing k8s init-container && /start.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:50:24