请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于POD,SERVICE使用的一些场景问题

老师你好。
我对服务调用以及负载这块有个问题,假设有个productService有两个实例组成。
1.是不是这两个实例会放到两个不同POD里面,然后组成一个k8s层面的服务,如果这样的话,每个pod中的实例的application.yml是需要写注册中心地址的,我理解应该写eureka的k8s service的地址,到这里我觉得还没有问题,假设有个订单服务要调用商品服务,它代码里该怎么写呢?这里如果没有k8s的话,我理解订单服务可以通过productService在注册中心上的名字访问,这样spring cloud自带的负载均衡( feign)会起作用;但是现在加上K8S之后,我理解订单服务是不是应该调用的是productService在K8S层面封装的服务,如果这里还是写productService在注册中心上的名字,那么是不是spring cloud就会直接找到商品服务所在的一个pod,并没有通过k8s的Service去进入服务。这里我就迷糊了,k8s service层的负载均衡 和 应用层面的负载均衡(feign)到底啥时候改用啥。
2.我们这里讲到用ingress nginx来暴露服务,是不是通常ingress nginx会和类似zuul这样的组件一起作为网关使用;
对这块内容了解不深,请教一下老师~~

正在回答

1回答

1、pod注册写入的一般是podIp,或者hostIp,不会是serviceIP。注册发现这块,k8s的springcloud的本质就是重复的方案,可以选择使用k8s的基于service的服务发现负载均衡,用名字通过dns解析自动发现;也可以使用feign的服务注册发现机制,服务端把自己的实际地址注册到注册中心,客户端通过注册中心读取服务端地址进行访问。

2、ingress-nginx本质就是一个自动化配置的nginx,跟zuul类似,都是一个前置的代理,做一些负载、转发、过滤、安全等工作,nginx要实现这些功能需要借助一些lua插件,zuul天然支持。可以理解是一个平行产品的关系。当然也有些人会把nginx架设到zuul上面在做一层高可用负载,转发到多个zuul实例。

0 回复 有任何疑惑可以回复我~
  • 提问者 Allen_Liu_1106 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-06-12 10:22:50
  • 提问者 Allen_Liu_1106 #2
    感谢老师敲这么多帮我解释的十分明白;
    我理解了,实际上spring cloud和kubernetes服务发现是重复的概念;
    这样说来,实际上市场上说他们用spring cloud加k8s实际指的只是从这两个体系中摘取项目想要的东西,并不是完整的两个体系融合,比如说我们可以用k8s部署pod,而pod的服务发现用的是eureka,真正负载用的是spring cloud的负载;只是用k8s的方式实现部署;
    老师我对您的理解对吗
    回复 有任何疑惑可以回复我~ 2020-06-12 10:28:58
  • 刘果国 回复 提问者 Allen_Liu_1106 #3
    没错儿
    回复 有任何疑惑可以回复我~ 2020-06-13 09:17:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信