Situation: viele schwere Docker-Container, die regelmäßig für eine Weile getroffen werden, bleiben dann für längere Zeit unbenutzt.
Wunsch: Starten Sie die Container auf Nachfrage (wie systemd startet Dinge durch Socket-Aktivierung) und stoppen Sie sie nach Leerlauf für einen bestimmten Zeitraum. Keine sichtbare Ausfallzeit für den Endbenutzer.
Optionen:
Irgendwelche Ideen geschätzt!
Sie können die integrierte Horizonal Pod Autoscaling (HPA) von Kubernetes zum Skalieren verwenden von 1 Instanz jedes Containers bis zu so vielen, die benötigt werden, um die Last zu bewältigen, aber es gibt keine integrierte Funktionalität für die 0-zu-1-Skalierung beim Empfang einer Anfrage, und mir ist keine allgemein verwendete Lösung bekannt.
Sie können systemd verwenden, um Ihre Andock-Container zu verwalten. Siehe Ссылка
Vor einiger Zeit habe ich mit einem Ops-Typ für pantheon.io darüber gesprochen, wie sie so etwas mit Docker machen. Ich denke, es wäre gewesen, bevor Kubernetes überhaupt herauskam. Pantheon drupal Hosting. So wie die Dinge eingerichtet sind, wird jeder Server, den sie für Clients ausführen, containerisiert, aber wie Sie beschreiben, verschwindet der Container, wenn er nicht benötigt wird. Die einzige Ressource, die dann außer dem Plattenspeicher reserviert ist, ist eine Socket-Nummer auf dem Host.
Sie haben einen ziemlich einfachen Daemon, der die Sockets aller inaktiven Server abhört. Wenn der Daemon eine Anforderung empfängt, hört er nicht mehr auf eingehende Verbindungen auf diesem Socket zu, startet den erforderlichen Container und gibt diese Anforderung an den neuen Container weiter. Nachfolgende Verbindungen gehen direkt in den Container, bis sie für einen bestimmten Zeitraum inaktiv sind und der Listener-Daemon den Port erneut übernimmt. Das ist ungefähr so detailliert wie ich weiß, was sie getan haben, aber Sie bekommen die Idee.
Ich kann mir vorstellen, dass etwas wie der von Pantheon implementierte Daemon dazu verwendet werden kann, Befehle an Kubernetes zu senden und nicht direkt an den Docker-Daemon. Vielleicht könnte ein systembasierter Ansatz zum dynamischen Starten von Containern auch mit Kubernetes kommunizieren, wenn dies erforderlich ist. In beiden Fällen können Sie Pods und nicht nur Container starten.
Tags und Links docker kubernetes docker-swarm