我正在尝试使用 kubernetes 按需服务容器化应用程序。
按需,我的意思是有一个外部应用程序客户端显示数据集列表。 所需的功能是,经过身份验证的用户可以“打开”数据集。打开数据集意味着在后台启动应用程序的新实例,该实例读取数据集并作为参数传递。然后公开它,设置入口并返回唯一的 URL 供用户访问。 对于资源管理,实例应在用户请求时运行,并在不再需要时终止。
即用户第一次关闭窗口或最大生命周期为 x 小时。 现阶段
挑战
我浏览了相当多有关 kubernetes 生态系统的文档,似乎没有针对此用例的明显内置工具。
线索:入口
认为我们可以监控与入口的连接状态,该入口可以直接在 kubernetes 清单中提供一些标志,以便指定自动终止。似乎 haproxy-ingress 控制器有一种监视活动连接的方法。但是,即使我更改了入口控制器,我也没有找到任何可以安排终止部署的内容。 探针
onload
上有一个事件监听器作为监视端点。 除此之外,对初始应用程序进行大量修改是禁止的。
但是,在探测检查失败时,行为是启动一个新的 pod。-> 理论上,应该可以更改我的作业部署(即终止)并设置
restartPolicy: Never
标志。但这也会取消所有有用的重新启动(例如 pod 故障)。
?>一般来说,我应该使用作业来运行服务吗?从文档来看,它似乎更适合计算任务。尽管如此,它听起来更适合与调度相关的问题。我做了一些测试,暴露一个job也是可以的。将 Pod 放在作业中而不是部署中(或使用无鞍 Pod)还有什么其他缺点? 边车容器
那么遵循最佳实践的方法是什么?这是我的第一个 kubernetes 项目,我很难相信没有内置机制来指定资源的终止策略。
感谢您的帮助。如果需要,您可以在
here