0

假设我有两个区域 zone1 和 zone2,每个区域部署了 2 个应用程序。假设 App1 是从 App2 获取信息的客户端,App1 使用 k8s 服务连接到 App2,现在如何配置 zone1 的 app1 以连接到 zone1 的 app2(最好,如果 zone1 的 app2 已加载或向下连接到 app2 的区域 2)。

虽然这可以通过应用层使用 zuul 和带无头服务的功能区来实现,但我想将其移至基础层。有没有可能在 K8s 中做。

我看到 IPVS 支持Locality-Based Least Connection算法,但不确定 k8s 是否支持这种算法,我看到支持的算法是 rr、wrr、lc、sed。但没有关于支持 lblc 的文档。如果支持 lblc,这是更好的解决方案,可以在区域中的 dc/pod 中选择相同的节点/pod。

注意:这是纯粹针对本地 k8s 集群的解决方案。

4

1 回答 1

0

我将仅回答您的部分问题,对这方面的“最佳实践”配置没有经验。但是我想和大家分享的是——kubernetes 绝对支持Locality-Based Least Connection算法。

您可以在源代码中找到它:

LocalityBasedLeastConnection IPVSSchedulerMethod = "lblc"
    // LocalityBasedLeastConnectionWithReplication with Replication assigns jobs destined for the same IP address to the
    // least-connection node in the server set for the IP address. If all the node in the server set are overloaded,
    // it picks up a node with fewer jobs in the cluster and adds it to the sever set for the target.
    // If the server set has not been modified for the specified time, the most loaded node is removed from the server set,
    // in order to avoid high degree of replication.

您可以在此处找到有关如何启用 IPVS 的信息: https ://kubernetes.io/blog/2018/07/09/ipvs-based-in-cluster-load-balancing-deep-dive/

PS 上面的文章不包含任何信息,lblc但根据源代码 - k8s 支持它。

于 2019-07-02T10:02:55.607 回答