Kubernetes-Ingress(十九)
1 介绍
1.1 概念
Ingress意为进入或进入的行为;进入的权利;进入的手段或地点;入口。
Ingress支持L7(网络第七层,HTTP/HTTPS)负载均衡。
1.2 Ingress的需求
每个LoadBalancer服务都需要自己的负载均衡器,以及独有的公有IP地址,而Ingress只需要一个公网IP就能为许多服务提供访问,当客户端向Ingress发送HTTP请求时,Ingress会根据请求的主机名和路径决定请求转发到的服务。
1.3 Ingress暴露服务
只有Ingress控制器在集群中运行,Ingress资源才能正常工作。
2 Ingress使用
2.1 创建Ingress资源
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress_name
spec:
rules:
- host: ingress.example.com
http:
paths:
- path: /
backend:
serviceName: service_name
servicePort: 80
$ kubectl create -f xxx.yaml
2.2 查询
$ kubectl get ingresses
其中,ADDRESS为服务暴露出来的IP地址。
3 Ingress工作原理
1)客户端首先对ingress.example.com执行DNS查找;
2)DNS服务器(或本地操作系统)返回Ingress控制器的IP;
3)客户端向Ingress控制器发送HTTP请求,并在Host头中指定ingress.example.com;
4)控制器从该头部确定客户端尝试访问哪个服务,通过与该服务关联的Endpoint对象查看pod IP;
5)将客户端的请求转发给其中一个pod。
4 服务映射方式
4.1 将不同的服务映射到相同主机的不同路径
...
- host: service_name.example.com
http:
paths:
- path: /service_path1
backend:
serviceName: service_name1
servicePort: 80
- path: /service_path2
backend:
serviceName: service_name2
servicePort: 80
对service_name.example.com/service_path1的请求转发到service_name1服务上;service_name.example.com/service_path2的请求转发到service_name2服务上。
请求将发送到了两个不同的服务上,客户端可以通过一个IP地址访问两种不同的服务。
4.2 将不同的服务映射到不同的主机上
...
spec:
rules:
- host: service_name1.example.com
http:
paths:
- path: /
backend:
serviceName: service_name1
servicePort: 80
- host: service_name2.example.com
http:
paths:
- path: /
backend:
serviceName: service_name2
servicePort: 80
对service_name1.example.com的请求转发至service_name1服务上;对service_name2.example.com的请求转发至service_name2服务上;
根据请求中的Host头,控制器收到的请求将被转发到service_name1或service_name2服务,DNS需要将service_name1.example.com和service_name2.example.com域名指向Ingress控制器和IP地址。
参考《k8s in action》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
2020-03-04 Kubernetes-卷/存储卷(emptyDir/hostPath/pv/pvc)(十)
2020-03-04 kubernetes-Deployment
2020-03-04 Kubernetes-Service服务(十一)
2020-03-04 Kubernetes-Service