Kar*_*ter 5 jenkins kubernetes kubernetes-pod jenkins-kubernetes
我正在使用Jenkins Kubernetes 插件,它在 Kubernetes 集群中启动 Pod,充当 Jenkins 代理。Pod 包含 3 个容器以提供从属逻辑、Docker 套接字以及gcloud命令行工具。
通常的工作流程是从机完成其工作并通知主机它已完成。然后 master 终止 pod。但是,如果从属容器由于网络连接丢失而崩溃,则该容器将终止并显示错误代码 255,其他两个容器将继续运行,pod 也会继续运行。这是一个问题,因为 Pod 具有大量 CPU 请求,而且从属设备仅在必要时运行的设置成本低廉,但让多台机器运行 24 小时或周末会造成明显的经济损失。
我知道在同一个 Pod 中启动多个容器并不是 Kubernetes 艺术,但是如果我知道自己在做什么并且我假设我知道的话就可以了。我确信考虑到 Jenkins Kubernetes 插件的工作方式,很难以不同的方式解决这个问题。
如果一个容器失败而没有重生,我可以让 pod 终止吗?带有超时的解决方案也是可以接受的,但不太优选。
免责声明,我对 kubernetes 的了解相当有限,但考虑到以下问题:
也许您可以运行第四个容器,该容器公开一个简单的“活跃性”端点,它可以运行ps -ef或以任何其他方式联系 3 个现有容器,以确保它们处于活动状态。
仅当所有容器都在运行时,此端点才会返回“OK”,如果至少有一个容器被检测为“崩溃”,则返回“ERROR”
然后,您可以设置 kubernetes 的活性探针,以便在从第四个容器返回错误时停止 pod。
当然,如果第四个进程因任何原因自行崩溃(除非有错误或其他什么原因,否则应该不会崩溃),那么活性探针将不会响应,并且 kubernetes 应该停止 pod,这可能就是您想要的真正想要实现的。
| 归档时间: |
|
| 查看次数: |
2791 次 |
| 最近记录: |