【问题标题】:Kubernetes check if "silent" pod finished executingKubernetes 检查“静默” pod 是否完成执行
【发布时间】:2019-03-14 15:17:09
【问题描述】:

假设我定义了一个简单地运行几段代码然后退出的 pod。在允许其他 pod 运行之前,我需要确保此 pod 退出。实现这一点的最佳方法是什么?

我曾经通过执行网络请求来检查 Pod 是否准备就绪,例如一旦准备就绪,一些 webapps pod 将阻塞并监听预定义的端口,因此我可以让等待的 pod 向它们执行 netcat 请求。但在这种特殊情况下,pod 不需要打开任何端口,因此这种方法不起作用。任何人都可以提出替代方案吗?

谢谢

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    如果需要在每个 pod 启动/重新启动时运行“代码片段”,您可能正在寻找 Init Container 实现:

    初始化容器是在应用程序之前运行的专用容器 容器,可以包含不存在于 应用图片。

    如果您的代码是多个 pod 的依赖项并且需要运行一次(例如,在每次新部署时),您可以考虑使用 Job Controller,并在部署新 pod 之前实现一个逻辑来检查它是否已完成/容器。 (您可以在部署脚本上使用 kubectl wait --for=condition=complete job/myjob 之类的命令)。

    如果你使用helm进行部署,最好的选择是使用k8s作业结合pre-installpre-upgradehelm hooks

    【讨论】:

    • 我最终通过工作 + 等待条件解决了这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2022-01-02
    • 2019-05-23
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    相关资源
    最近更新 更多