1个Ingres / services / statefulsets / pods的2个端口

问题描述 投票:0回答:3

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

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

A)1 Ingres连接到1个服务。并且1个服务连接到1个状态集,其中1个容器包含2个容器

B)2个Ingres连接到2个服务。并且2个服务连接到2个状态集和2个pod。每个pod有1个容器。

我想问下列问题:

  1. 1个Ingres或1个服务或1个statefulset或1个pod可以服务2个端口吗?如果可能那么可能A是正确的,否则B是正确的。
  2. 同样基于我的问题,任何人都可以告诉我,我对kubernetes的理解是正确还是错误?
docker networking kubernetes devops
3个回答
1
投票

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

然后你可以在容器内使用localhost:8080来访问Java,java可以在localhost:3306上访问etherum。

如果不需要来自群集外部的访问,则不需要Ingress。

希望它能回答你的问题。


1
投票

根据我的理解,您只需要1个有状态的应用程序,另一个可以是无状态的并且在第一个应用程序中保留数据。如果您遵循微服务范例,则应该在无状态和有状态服务中分离您的应用程序。 同样重要的是要注意,除非两个容器紧密耦合,否则它们不应位于同一个容器上。分离允许更灵活的可伸缩性,因为您不需要具有相同数量的两个容器的副本。 最后,我会做以下事情:

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

入口将允许从集群外部的请求路由到您的应用程序服务。即使你有状态的应用程序不与外部世界通信,为他创建一个服务将允许集群内的应用程序之间更容易的通信(你可以使用固定的IP或even DNS


1
投票

1个入口可以服务于多个服务,并根据主机和hostPath路由到服务的外部连接。

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

1个pod也可以提供多个端口,它取决于您在清单中显示的端口。

状态集更像是pods显示它只是提供了卷的持久性的插件功能。

© www.soinside.com 2019 - 2024. All rights reserved.