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

如何在Kubernetes中以最简方式运行Docker深度学习训练容器?

在Kubernetes GPU集群上运行深度学习训练任务的最简方案

核心思路

用Kubernetes的Job资源来运行一次性训练任务——Job专为批处理、一次性任务设计,任务完成后自动终止,完美匹配你的需求(无需长期部署,仅执行脚本并获取日志)。

步骤1:构建并推送Docker镜像

先把你的Dockerfile构建成镜像,推送到集群可访问的镜像仓库(比如学校内部的私有镜像库):

# 构建镜像,替换<镜像仓库地址>为实际地址,例如harbor.example.com
docker build -t <镜像仓库地址>/dl-training:v1 .
# 推送到镜像仓库
docker push <镜像仓库地址>/dl-training:v1

步骤2:编写最简Job配置文件

创建名为training-job.yaml的文件,内容如下:

apiVersion: batch/v1
kind: Job
metadata:
  name: dl-training-job
spec:
  # 任务失败最多重试3次,按需调整
  backoffLimit: 3
  template:
    spec:
      containers:
      - name: training-container
        # 替换为你推送的镜像地址
        image: <镜像仓库地址>/dl-training:v1
        # 请求并限制GPU资源,按需调整数量
        resources:
          requests:
            nvidia.com/gpu: 1
          limits:
            nvidia.com/gpu: 1
      # 仅当Pod失败时重启,避免正常完成后重复执行
      restartPolicy: OnFailure

注意:确保集群已部署NVIDIA设备插件,否则Kubernetes无法识别GPU资源(学校GPU集群一般已配置)。

步骤3:提交任务到集群

执行命令提交Job:

kubectl apply -f training-job.yaml

步骤4:查看任务状态

  • 查看Job整体状态:
kubectl get jobs
# 当COMPLETIONS列显示1/1时,任务完成
  • 查看对应的Pod运行状态:
kubectl get pods
# 找到名称包含dl-training-job的Pod,状态为Completed则任务结束

步骤5:获取训练日志

方式1:直接查看/保存控制台日志(推荐)

如果你的train.py将日志输出到标准输出(stdout)或标准错误(stderr),直接用以下命令获取:

# 查看实时日志(类似tail -f)
kubectl logs -f <你的Pod名称>
# 保存日志到本地文件
kubectl logs <你的Pod名称> > training_result.log

方式2:获取容器内生成的日志文件(若脚本生成本地文件)

如果训练脚本会生成日志文件到容器内路径(比如/tmp/training.log),需要给Pod挂载持久化存储(PVC),避免Pod删除后文件丢失。修改Job配置文件,添加存储挂载:

apiVersion: batch/v1
kind: Job
metadata:
  name: dl-training-job
spec:
  backoffLimit: 3
  template:
    spec:
      containers:
      - name: training-container
        image: <镜像仓库地址>/dl-training:v1
        resources:
          requests:
            nvidia.com/gpu: 1
          limits:
            nvidia.com/gpu: 1
        # 挂载存储到容器内日志输出路径
        volumeMounts:
        - name: training-storage
          mountPath: /tmp  # 假设脚本将日志写入/tmp目录
      volumes:
      - name: training-storage
        # 使用提前创建好的PVC,替换为你的PVC名称
        persistentVolumeClaim:
          claimName: training-pvc
      restartPolicy: OnFailure

任务完成后,可通过PVC对应的存储后端(比如NFS、Ceph)直接获取日志文件,或进入Pod拷贝:

kubectl cp <你的Pod名称>:/tmp/training.log ./local_training.log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:50:15