k8s负载均衡器问题

k8s负载均衡器问题

老师,这一章节有点没明白。

k8s没有内置的负载均衡器吗?

能不能在service所在的节点上开通对外的端口?然后外界访问service,service再去访问多个pod,不就实现了负载均衡了吗?

设置了type=loadBalancer是什么意思?是在service外面又封装了一层腾讯云的负载均衡器?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
bobby 2022-12-02 11:21:42

目前k8s不支持grpc的负载均衡,主要支持http的负载均衡,你这里使用service的话配合着type=loadBalancer确实会有负载均衡的效果,但是注意:

    service不会帮你维护grpc连接池,这就意味着你每次调用grpc服务的时候你都不得不去dial拨号,这样你每次拨号会给你做负载均衡选择一个节点连接,但是这样的话你的grpc长链接就变成短连接了,grpc长链接优势全无, 所以想要做grpc负载均衡你得自己去注册中心拉取服务地址并在本地维护连接池,这样每次调用的时候都会从连接池中获取一个连接而不用重连,所以你想用grpc的负载均衡你可以使用k8s的coredns作为服务发现的地址,但是你的程序也不能强依赖k8s的coredns,因为这样就意味着你的服务想要部署以后不得不部署一套k8s了

  • 提问者 lieh1203 #1
    这个项目用了grpc-gateway库创建了网关服务,可以接收http请求的,我的意思是在gateway服务上配置nodePort和外界打通,然后gateway服务里面根据service name去连接其他的服务,例如:外面http请求过来,先打到gateway服务上,然后根据路由转换成不同的grpc请求,连接到dial上的service name,然后service会把流量打到下面多个pod上面。 老师的意思是,连接dial到service name,在找下面的pod时,service不会维护grpc连接池?是这个意思吗? 然后老师下面又说了,grpc负载均衡使用coredns作为服务发现,如果按照这个方式实现负载均衡,是不是grpc-gateway库创建的网关服务就不能用了? 谢谢~
    2022-12-02 13:46:27
  • bobby 回复 提问者 lieh1203 #2

    每次一个请求重新连接grpc-gateway和直接使用http有何区别? grpc-gateway只是帮你生成http的接口而已并不会做连接池, 也做不到grpc的长连接和连接池维护

    2022-12-02 20:29:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师