Service的表现形式为IP地址+端口号的方式,即工作在TCP/IP层,而对于基于HTTP的服务来说,Service机制很难实现,7层应用的复杂转发逻辑。kubenetes在1.1版本开始引入ingress资源对象,用于将集群外部的客户端请求路由到集群内部的服务上,同时提示7层的HTTP核HTTPS路由功能。
kubenetes使用一个ingress策略定义和一个具体提供转发服务的ingress controller,两者结合实现基于灵活ingress策略定义的服务路由功能
部署ingress
wget https://github.com/kubernetes/ingress-nginx/archive/refs/tags/controller-v1.3.0.zip
unzip controller-v1.3.0.zip
cd deploy/static/provider/baremetal/
#修改deploy.yaml,把里面的镜像地址改成
registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.3.0
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
#创建服务
Kubectl apply -f deploy.yaml
首先查看 ingress controller, 使用daemonset类型运行在每一个node上,在node使用的是端口映射的方式,当然你也可以使用hostnetwork直接监听宿主机的网络和端口,或者nodeport方式
从这里也就理解了,负责接受请求的80和443端口,通过ingress controller控制运行在每个node上,因此,我们在配置域名解析时,需要将域名执行对应的node ip上。
配置ingress服务,这里简单多了,只需要配置域名+转发路径+目标服务就可以了