这是一个非常基本的问题,所以我想我一定忽略了一些显而易见的东西,openshift 服务是否使用循环在 pod 之间进行负载平衡?还是它将请求转发到具有最多可用资源的 pod?还是完全随机的?
我的服务配置如下:
kind: service
metadata:
name: temp
labels:
app: temp
spec:
port:
targetPort: temp-port
to:
kind: Service
name: temp
答案1
发布这个社区维基答案来指出 Openshift 和 Kubernetes 的官方文档(在附加资源中),应该可以回答所提出的问题。
请随意编辑和扩展。
根据 OpenShift 文档 ( v3.11
):
服务
Kubernetes 服务充当内部负载均衡器。它识别一组复制的 Pod,以便将收到的连接代理到这些 Pod。可以在服务保持持续可用的情况下任意向服务添加或从服务中删除支持 Pod,从而使任何依赖于该服务的内容都可以在一致的地址引用它。默认服务 clusterIP 地址来自 OpenShift Container Platform 内部网络,用于允许 Pod 相互访问。
服务代理模式
OpenShift Container Platform 有两种不同的服务路由基础设施实现。默认实现完全基于 iptables,并使用概率 iptables 重写规则在端点 pod 之间分配传入的服务连接。旧的实现使用用户空间进程来接受传入的连接,然后代理客户端和其中一个端点容器之间的流量。
基于 iptables 的实现效率更高,但它要求所有端点始终能够接受连接;用户空间实现速度较慢,但可以依次尝试多个端点,直到找到一个可行的端点。如果您有良好的就绪性检查(或通常可靠的节点和 pod),那么基于 iptables 的服务代理是最佳选择。否则,您可以在安装时或在部署集群后通过编辑节点配置文件来启用基于用户空间的代理。
回答关于流量在前往以下地址时如何进行负载平衡的问题Service
:
默认实现完全基于 iptables,并且使用概率 iptables 重写规则在端点舱之间分配传入的服务连接。
我认为您还可以查看其他资源: