情况:很多沉重的码头工人定期受到打击,然后长时间不使用。
希望:按需启动容器(比如systemd通过套接字激活启动)并在空闲一段时间后停止它们。对最终用户没有可见停机时间。
选项:
任何想法都赞赏!
答案 0 :(得分:3)
你可以使用Kubernetes的内置Horizonal Pod Autoscaling (HPA)从每个容器的1个实例扩展到处理负载所需的数量,但是没有内置的功能可以实现0比1的扩展接收请求,我不知道任何广泛使用的解决方案。
答案 1 :(得分:0)
您可以使用systemd管理docker容器。请参阅https://developer.atlassian.com/blog/2015/03/docker-systemd-socket-activation/
前段时间我和pantheon.io谈了一个关于如何用docker做这类事情的ops家伙。我想在Kubernetes出现之前就已经过了。万神殿做drupal主持。他们设置的方式,他们为客户运行的每个服务器都是容器化的,但正如您所描述的那样,容器在不需要时会消失。除了磁盘存储之外,唯一保留的资源是主机上的套接字号。
他们有一个相当简单的守护进程,它监听所有非活动服务器的套接字。当它收到请求时,守护程序停止侦听该套接字上的更多传入连接,启动所需的容器以及请求新容器的代理。后续连接直接进入容器,直到它空闲一段时间,并且侦听器守护程序再次接管端口。这和我所知道的关于他们所做的事情的细节差不多,但你明白了。
我想像Pantheon实现的守护进程可以用来向Kubernetes发送命令,而不是直接发送到Docker守护进程。也许基于系统的动态启动容器的方法也可以根据需要与Kubernetes通信。这些中的任何一个都可能允许您启动pod,而不仅仅是容器。