【发布时间】:2019-02-03 12:37:18
【问题描述】:
我目前的 k8s 设置存在问题。在生产中,我为每个服务创建了三个副本,并将它们放在一个 pod 中。当 pod 相互对话时,我们希望 pod 以循环方式与 pod 中的每个容器对话。不幸的是,由于 TLS 保持活动状态,Pod 之间的连接永远不会终止 - 我们不想专门更改该部分 - 但我们确实希望 Pod 中的每个容器都能正常通信。这就是我们现在所拥有的:
如果 API 试图与 pod OSS 通信,它将仅与第一个容器通信。我希望 API 能够以循环方式与所有三个对话。
我该怎么做?我知道我需要一个入口控制器,比如 nginx。但是是否有一些真正的教程可以分解我如何实现这一目标?我不确定并且对 k8s 有点陌生。任何帮助都将被接受!
顺便说一句,我正在本地开发 minikube。
编辑:
在生产中,我们为每个服务创建三个副本。当服务A 需要与服务B 对话时,从服务B 中选择一个pod B1 并管理它接收到的任何请求。但是,该 pod B1 成为服务 B 中唯一处理任何通信的 pod;换句话说,豆荚 B2 和 B3 永远不会说话。我正在尝试使用 nginx 解决这个问题,因为我们似乎需要一个负载均衡器来帮助解决这个问题,但我不知道该怎么做。谁能提供一些关于需要做什么的详细解释?具体来说,我如何使用我的服务设置 nginx,以便在服务中使用所有 pod(以某种循环方式),这与现在只使用一个 pod 的情况不同?这是一个问题,因为在生产中,当我们有两个其他 pod 坐在那里什么都不做时,一个 pod 会因请求超载而死亡。我正在 minikube 上进行本地开发。
【问题讨论】:
-
为什么要将所有容器放在一个 pod 中?为了实现您的目标,创建一个具有多个副本的部署(每个容器都有自己的 pod)并创建一个指向这些 pod 的服务。您将使用服务名称来访问所有 pod,kubernetes 将决定到底是哪一个。
-
同意上面的评论。你错误地构建了这个。为每个服务创建一个 Service,让 3 个 Pod 支持该服务,然后让 Kubernetes 调度它们。任何连接到服务的东西都将在 pod 之间循环。然后,为 API 创建入口控制器并将其指向服务后,您将获得所需的行为。
-
@MarcinRomaszewicz 好吧,我实际上错了 - “为每个服务创建一个服务,让 3 个 pod 支持该服务,然后让 Kubernetes 安排它们”。我已经做到了。它们不是 pod 中的容器——它们都是自己的 pod。你能描述一下我将如何创建一个入口控制器吗?我还没有找到一个很好的教程来解释如何正确使用我的服务
标签: nginx kubernetes minikube