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

来源:10-1 健康检查---高可用的守护者

Allen_Liu_1106

2020-06-11

老师你好。
我对服务调用以及负载这块有个问题,假设有个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回答

刘果国

2020-06-12

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

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

0
3
刘果国
回复
Allen_Liu_1106
没错儿
2020-06-13
共3条回复

Kubernetes生产落地全程实践

一个互联网公司落地Kubernetes全过程点点滴滴

2293 学习 · 2216 问题

查看课程