kubernetes - 如何在一个 Kubernetes 的 pod 中实现后处理容器
问题描述
我有一个 golang 服务器,用于将 AI 模型训练部署到 kubernetes 中,每次训练都会在 pod 上运行它们的工作。作业完成后,我的服务器需要将模型输出上传到 HDFS/S3。
所以我需要一个后容器来处理上传任务,比如 init-container 在 k8s pod 上执行 init 任务。
现在,我使用一种棘手的方法将模型作业容器添加到 init-containers 并在容器中运行上传任务容器。如果在 init-containers 中没有抛出错误,则此方法有效。但是,如果 init-conttainer 中有错误,则 pod 状态Init:ContainerCannotRun
应该是Failed
正常的。
我知道preStop
如果图像容器是 upload-hdfs/s3 命令工具,我可以将命令附加到容器生命周期事件。但是我不想让模型训练图像包含这些命令。所以这不是我的答案。
所以我的问题是如何实现一个后处理容器,以便我可以在作业完成后运行上传任务?
我也在github中找到了一个相关的问题,如果没有其他选择,我会尝试一下。
解决方案
Kubernetes 有两种方法来处理它——preStop hook和监听SIGTERM信号的代码。
此外,您可以增加终止宽限期,以便在终止 pod 之前有更多时间。
推荐阅读
- javascript - 如何在悬停时使元素位于顶部(过渡后)
- rust - 在闭包内共享连接池
- android - 使用 MediaPlayer 快速连续播放短声音
- python - Pandana OSM 加载程序无法识别 bbox
- angular - ng2-chart 带有插件修剪外部标签 - 饼图
- microsoft-graph-api - 执行 Skype 后端请求 GetThreadS2SRequest 失败
- sql - ORA-04091。表正在变异
- java - Spring Boot 导致 HTTP 状态 404 - 未找到
- html - 在 Microsoft Graph Explorer 多部分边界生成格式错误的 json 语法错误
- java - 传递 MethodHandles.lookup().lookupClass() 与传递 Class到 getLogger 方法