准备YAML文件
该示例主要基于k8s集群训练场景,通过配置YAML文件,指定宿主机挂载目录、容器内日志存储路径,以及容器内目录路径和宿主机路径映射关系等。具体如下:
- 配置容器内环境变量。主要用于指定GROUP_NAME、HOST_IP等环境变量,用于创建训练作业日志目录。
- 配置宿主机与容器目录挂载关系。主要用于指定容器内目录路径和宿主机目录路径的挂载关系。将容器内日志落盘至宿主机指定路径。
- 配置训练容器执行命令。主要用于执行日志转储配置脚本和训练脚本。
配置容器内环境变量
为训练容器配置环境变量,指定JOB NAME的环境变量与日志挂载目录。
containers:
- name: ${训练容器名}
..... # 其他配置项
env:
- name: GROUP_NAME
valueFrom:
fieldRef:
fieldPath: metadata.annotations['scheduling.k8s.io/group-name']
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: ASCEND_LOG_ROTATE_SCRIPT_DIR
value: /var/log/ascend_log/script
.....
scheduling.k8s.io/group-name为Volcano调度器设置的注解键,用户可根据实际情况自定义GROUP_NAME。
配置宿主机与容器目录挂载关系
配置PoD挂载宿主机目录与容器内路径映射关系,挂载容器内日志目录至宿主机。以下示例中,以/var/log/ascend_log为挂载路径名。
containers:
- name: ${训练容器名}
..... # 其他配置项
volumeMounts:
# 映射到容器目录
- name: ascend-log-path
mountPath: /var/log/ascend_log
- name: ascend-script-path
mountPath: /var/log/ascend_log/script
- name: host-log-path
mountPath: /var/log/messages
volumes:
# 挂载本地目录
- name: ascend-log-path
hostPath:
path: /var/log/ascend_log
- name: ascend-script-path
hostPath:
path: /var/log/ascend_log/script
- name: host-log-path
hostPath:
path: /var/log/messages # 部分OS系统日志保存在/var/log/syslog,请根据实际情况调整
配置训练容器执行命令
为训练容器配置执行命令。在训练脚本启动前、结束后分别执行日志转储脚本。
containers:
- name: ${训练容器名}
..... # 其他配置项
command:
- "/bin/bash"
- "-c"
- |
source /var/log/ascend_log/scripts/ascend_log_rotate.sh 1
bash ${训练脚本}
source /var/log/ascend_log/scripts/ascend_log_rotate.sh 0
该步骤主要用于执行训练脚本启动前、结束后分别执行日志转储脚本,进行日志采集。
- source /var/log/ascend_log/scripts/ascend_log_rotate.sh 1/0 中的参数1代表训练前收集,参数0代表训练后收集,请严格按照执行顺序执行,否则会导致日志采集失败。
父主题: 训练任务日志采集配置