gpt4 book ai didi

kubernetes - Kubernetes 服务上的加权路由

转载 作者:行者123 更新时间:2023-12-02 11:51:56 24 4
gpt4 key购买 nike

我有一个主服务和多个从服务。主服务使用来自 Google PubSub 的订阅者不断地轮询主题。从服务是 REST API。主服务收到消息后,会将消息委托(delegate)给从服务。目前我在 Kubernetes 中使用 ClusterIP 服务。我的一些请求运行时间很长,有些请求很短。

我碰巧观察到,有时如果有一个短时间运行的请求而一个长时间运行的请求正在处理中,它必须等到长时间运行的请求才能完成,即使许多 pod 可用而没有提供任何流量。我认为这是由于循环负载平衡。我一直在尝试寻找解决方案并研究诸如使用入口和内部 HTTP 负载平衡器设置外部 HTTP 负载平衡器之类的方法。但是我真的很困惑这两者之间的区别以及哪一个适用于我的用例。您能建议哪种方法可以解决我的用例吗?

最佳答案

TL;DR

假设您希望 20% 的流量流向 x 服务,其余 80% 流向 y 服务。为 2 个目标中的每一个创建 2 个入口文件,具有相同的主机名,唯一的区别是其中一个将带有以下 入口注释:

nginx.ingress.kubernetes.io/canary: "true" #--> tell the controller to not create a new vhost

nginx.ingress.kubernetes.io/canary-weight: "20" #--> route here 20% of the traffic from the existing vhost

为什么和如何

加权路由有点超出ClusterIP。正如您自己所说,是时候让新玩家进入游戏了-ingress controller .

这是 load balancer 的 k8s 抽象。 - 一个强大的服务器位于您的应用程序前面,并在 ClusterIPs 之间路由流量。

install ingress controller on gcp cluster

安装并运行后,使用其 canary 功能执行加权路由。这是使用以下注释完成的:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: http-svc
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "20"
spec:
rules:
- host: echo.com
http:
paths:
- backend:
serviceName: http-svc
servicePort: 80

here是完整的指南。

外部与内部负载平衡

(这是来自谷歌云文档的相关定义,但其他云提供商的概念相似)

GCP's load balancers can be divided into external and internal load balancers. External load balancers distribute traffic coming from the internet to your GCP network. Internal load balancers distribute traffic within your GCP network.

https://cloud.google.com/load-balancing/docs/load-balancing-overview

关于kubernetes - Kubernetes 服务上的加权路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58154623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com