我有一个简单的 OpenShift 设置,服务配置了 2 个后端 PODS。PODS 已配置其就绪探针。该服务通过 NodePort 公开。所有这些配置都很好,它按预期工作。一旦就绪探测失败,服务会将 pod 标记为不可访问,并且任何新请求都不会被路由到 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 发送请求。
有人可以解释为什么他们按照上面描述的方式工作吗?