要求:我有两个docker容器,它们都暴露在不同的端口。 (例如,端口9001和9002)
根据要求,我尝试设计kubernetes对象及其关系,但我不确定A或B是否正确。
A)1 Ingres连接到1个服务。并且1个服务连接到1个状态集,其中1个容器包含2个容器
B)2个Ingres连接到2个服务。并且2个服务连接到2个状态集和2个pod。每个pod有1个容器。
我想问下列问题:
您可以在同一个pod上运行两个容器,Java可以在端口8080上运行而Eheterum可以在端口3306上运行。
然后你可以在容器内使用localhost:8080来访问Java,java可以在localhost:3306上访问etherum。
如果不需要来自群集外部的访问,则不需要Ingress。
希望它能回答你的问题。
根据我的理解,您只需要1个有状态的应用程序,另一个可以是无状态的并且在第一个应用程序中保留数据。如果您遵循微服务范例,则应该在无状态和有状态服务中分离您的应用程序。 同样重要的是要注意,除非两个容器紧密耦合,否则它们不应位于同一个容器上。分离允许更灵活的可伸缩性,因为您不需要具有相同数量的两个容器的副本。 最后,我会做以下事情:
入口将允许从集群外部的请求路由到您的应用程序服务。即使你有状态的应用程序不与外部世界通信,为他创建一个服务将允许集群内的应用程序之间更容易的通信(你可以使用固定的IP或even DNS)
1个入口可以服务于多个服务,并根据主机和hostPath路由到服务的外部连接。
1个服务可以为多个端口提供服务,并为每个端口分配不同的节点端口。
1个pod也可以提供多个端口,它取决于您在清单中显示的端口。
状态集更像是pods显示它只是提供了卷的持久性的插件功能。