【问题标题】:How openshift service loadbalance between pods?如何在 pod 之间使用 openshift 服务负载均衡器?
【发布时间】:2021-07-15 19:46:27
【问题描述】:

这是一个非常基本的问题,所以我想我一定遗漏了一些明显的东西,openshift 服务是否使用循环来在 pod 之间进行负载平衡?还是将请求转发到可用资源最多的 pod?还是完全随机的?

我的服务配置如下:

kind: service
metadata:
  name: temp
  labels:
    app: temp
spec:
  port:
    targetPort: temp-port
  to:
    kind: Service
    name: temp

【问题讨论】:

标签: kubernetes openshift


【解决方案1】:

在 Kubernetes(OpenShift 只是一个 Kubernetes 发行版)中,服务会产生 iptables 规则。这意味着对于具有多个 Pod 的 Service,流量通过 iptables 分配/重定向到 Service 选择的不同 Pod。

例如,如果一个 Service 选择了三个 Pod,我们可以在底层 Worker 节点上看到以下带有 --probability 的 iptables 条目:

-A KUBE-SVC-C5D5TE7O3IX6LYPU -m comment --comment "openshift-logging/fluentd:metrics" -m statistic --mode random --probability 0.20000000019 -j KUBE-SEP-K7BWKR3YFNRALYRO
-A KUBE-SVC-C5D5TE7O3IX6LYPU -m comment --comment "openshift-logging/fluentd:metrics" -m statistic --mode random --probability 0.25000000000 -j KUBE-SEP-SLOSD6E2CHTNQQZ7
-A KUBE-SVC-C5D5TE7O3IX6LYPU -m comment --comment "openshift-logging/fluentd:metrics" -m statistic --mode random --probability 0.33333333349 -j KUBE-SEP-I2MJAF47DZ7EPTNC
-A KUBE-SVC-C5D5TE7O3IX6LYPU -m comment --comment "openshift-logging/fluentd:metrics" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-QCINKYOFNQTK2FRX
-A KUBE-SVC-C5D5TE7O3IX6LYPU -m comment --comment "openshift-logging/fluentd:metrics" -j KUBE-SEP-RWL5ZKQM57XO3TAF

所以您的问题的答案是通过服务分配流量是随机的

另一方面,OpenShift Route 可以更好地控制流量如何分配到 Pod。您可以选择不同的负载平衡算法。可用选项为sourceroundrobinleastconn。 您可以在documentation about OpenShift Routes 中找到更多选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2021-03-17
    相关资源
    最近更新 更多