文章目录
- ingress简介
- 具体实验
- 直接指定后端的服务名称
- 通过域名的形式来访问后端
- 通过不同的域名定义到不同的后端
- 测试访问同一域名,不同的path时,调度到不同的后端
ingress简介
我们知道service的表现形式为IP:PORT,即工作在第四层传输层(TCP/IP层),那么对于不同的URL地址经常对应用不同的后端服务或者虚拟服务器,这些应用层的转发机制仅通过kubernetes的service机制是无法实现的,这种情况我们可以使用ingress策略定义和一个具体的ingress Controller,两者结合实现一个完整的Ingress 负载均衡,这个负载均衡是基于nginx七层反向代理来实现。
下图即为Ingress Controller这种独特的控制器资源的工作流程图.
需要注意: Ingress Controller 和 Ingress是两个不同的资源。
Ingress它是通过headless service的集群内FQDN获取到它后端所有的Pod资源的IP,因为headless Service没有ClusterIP,它的域名对应的IP为PodIP。
Ingress获取PodIP后,在立刻将其写入到ingress-nginx的配置文件中,
并触发nginx重读配置文件。实现动态更新upstream。
另外,外部LB可以直接跳过Service,直接访问到nginx,这需要将nginx这个Pod作为共享宿主机的网络名称空间才能实现,这时就需要借助于daemonSet控制器来控制着nginx这种七层反代Pod仅允许在指定节点上,并且每个节点上仅运行一个nginx Pod。
具体实验
实验环境和之前的博客是一样的。
1.
2.我是把ingress-controller镜像下载在本地的harbor仓库中,让集群中的节点去harbor仓库中去拿。
拿到yaml文件
编辑此文件,把镜像的位置换成本地仓库中镜像的位置
查看日志,发现service缺少
应用刚才wget的service文件
查看信息
直接指定后端的服务名称
创建ingress服务
service.yaml文件
3.
通过域名的形式来访问后端
在真机中添加ser4的解析
发现实现负载均衡
通过不同的域名定义到不同的后端
1.
2.
访问www2.westos.org时访问到v1
访问www1.westos.org时访问到v2
测试访问同一域名,不同的path时,调度到不同的后端
1.