【发布时间】:2020-08-18 10:26:23
【问题描述】:
我有一个简单的 OpenShift 设置,服务配置了 2 个后端 PODS。 PODS 已配置其就绪探针。该服务通过 NodePort 公开。所有这些配置都很好,它按预期工作。一旦就绪探测失败,Service 会将 pod 标记为不可访问,并且任何 NEW 请求都不会路由到 POD。
场景 1: 我执行 CURL 命令来访问服务。在执行 curl 命令时,我引入了 Pod-1 的就绪失败。我看到没有新请求发送到 Pod -1。这很好
场景 2: 我有 Java 客户端并使用 Apache Commons Http 客户端库来启动与 Kubernetes 服务的连接。连接建立并且工作正常。当我介绍 Pod-1 的就绪失败时,问题就来了。我仍然看到客户端仅向 Pod-1 发送请求,即使服务只有 Pod-2 的端点。
我的预感,由于 HttpClient 在通过 NodePorts 公开时使用持久连接和服务,因此 Http 连接的目标地址是 POD-1 本身。因此,即使就绪探测失败,它仍然会向 Pod-1 发送请求。
有人能解释一下为什么按照上面描述的方式工作吗??
【问题讨论】:
标签: kubernetes openshift readinessprobe