2个端口,用于1个Ingres /服务/ statefulsets / pod

时间:2019-03-31 13:05:41

标签: docker networking kubernetes devops

要求: 我有两个docker容器,它们都暴露于不同的端口。 (例如9001和9002端口)

根据需求,我尝试设计kubernetes对象及其关系,但是我不确定A或B是否正确。

A)1个Ingres连接到1个服务。并且1个服务通过2个容器的1个容器连接到1个有状态集

B)2个Ingres连接到2个服务。并且2个服务通过2个pod连接到2个statefulset。每个吊舱都有1个容器。

我想问以下问题:

  1. 1个Ingres或1个服务或1个statefulset或1个pod可以服务2个端口吗?如果可以,那么可能A是正确的,否则B是正确的。
  2. 还基于我的问题,有人可以告诉我我对kubernetes的理解是对还是错?

3 个答案:

答案 0 :(得分:1)

您可以在同一个Pod上运行两个容器, Java可以在端口8080上运行 而且Eheterum可以在端口3306上运行。

然后,您可以在容器内使用localhost:8080到达Java,而Java可以到达localhost:3306上的以太坊。

如果不需要从群集外部进行访问,则不需要进入。

希望它能回答您的问题。

答案 1 :(得分:1)

据我了解,您只需要一个有状态的应用程序,另一个就可以是无状态的,并在第一个应用程序中保留数据。如果您遵循microsservices范例,则应将应用程序分为无状态和有状态服务。
同样重要的是要注意,除非两个容器紧密连接,否则它们不应位于同一吊舱中。这些分隔可提供更灵活的可伸缩性,因为您不需要两个容器都具有相同数量的副本。
最后,我将执行以下操作:

  • 创建仅包含无状态应用程序映像的部署。
  • 为有状态应用创建一个StatefulSet。
  • 创建2个服务,每个应用程序一个。
  • 为您的无状态应用创建1个入口。

该入口将允许从集群外部的请求到您的应用服务的路由。即使您的状态为全状态的应用程序不与外界通信,为他创建服务也将使群集内的应用程序之间的通信更加轻松(您可以使用固定IP或even DNS

答案 2 :(得分:1)

1个入口可以服务n个服务,并根据host和hostPath将外部连接路由到服务。

1服务可以服务多个端口,并且为每个端口分配不同的节点端口映射。

1个Pod可以同时为多个端口服务,这取决于您在清单中公开的端口。

状态集更像豆荚表明的那样,只是它们提供了持久化卷的附加功能。