外部网关如何请求到pod
两种方式:
- 通过nginx代理转发到ingress
- 通过路由表
一、通过Nginx代理方式请求后端pod:
1、本例子中,通过k8s运行一个Pod,此pod通过域名方式注册到eureka中,然后用户通过网关发起请求,如图:

2、eureka部署方式可参考网上自行部署,部署后访问显示如下:

二、环境:
- 网关:zuul,IP地址:10.9.2.57
- eureka地址:http://10.9.2.57:8001/
- podIP:10.244.122.134
三、验证:
1、配置应用注册到eureka中,以java项目为例,配置内容如下:

注:上图中是在jar包中配置,还需要将jar包制作成镜像,并通过k8s跑起来
2、启动后,在eureka中可以看到注册过来的信息,如图:

3、创建server以及ingress,并测试是否可以正常访问,如图:


注:service的8888端口映射到pod的9008端口,最后通过ingress域名实现访问
4、配置网关,首先可将网关也注册到eureka,方便查看信息,如图:

注:本例子中,网关通过域名方式注册到eureka,端口为8002
在网关zuul位置,添加路由转发规则,如图:

注:/hello/表示实际请求的路由,serviceId为eureka中注册位置显示的Application名称
5、配置Nginx,配置文件内容如下:

注:Nginx中的域名就是eureka中pod注册过来的域名,端口9008也是pod注册过来的,下面的代理地址为pod服务对应的ingress信息
6、接下来通过网关地址和端口,以及配置的路由信息,进行访问,如图:

二、通过路由表方式:
1、首先在集群中请求pod的内容,如图:

注:podIP为10.244.32.144,端口为8000
2、将pod注册到eureka中,serviceId名称为test-eureka,查看如下:

3、查看网关所在机器(10.9.2.247)的路由表如下:

添加路由表,以k8s集群所在宿主机IP为网关,如图:

注:上图中路由可在交换机中添加或者通过vip方式映射到各个节点,不要直接用节点IP,防止单点故障
测试到pod的IP是否可以ping通,以及是否可以访问,如图:

配置网关中的路由地址,如图:

4、最后通过网关IP地址端口以及路由访问,如图:



