目录
一、 Ingress
简介
-
一种全局的、为了代理不同后端 Service 而设置的负载均衡服务,就是 Kubernetes 里的Ingress 服务。
-
Ingress由两部分组成:
Ingress controller和Ingress服务
。 -
Ingress Controller 会根据你定义的 Ingress 对象,提供对应的代理能力。业界常用的各种反向代理项目,比如 Nginx、HAProxy、Envoy、Traefik 等,都已经为Kubernetes 专门维护了对应的 Ingress Controller。
官网
:https://kubernetes.github.io/ingress-nginx/
Ingress是一个API对象,和其他对象一样,通过yaml文件来配置。ingress通过http或https暴露集群内部service,给service提供外部URL、负载均衡、SSL/TLS能力以及基于host的方向代理。ingress服务的使用必须在策略网络中才能实现,如calico网络
ingress相当于一个7层的负载均衡器
,是k8s对反向代理的一个抽象。大概的工作原理也确实类似于Nginx,可以理解成在Ingress 里建立一个个映射规则 , ingress Controller 通过监听 Ingress这个api对象里的配置规则并转化成Nginx 的配置(kubernetes声明式API和控制循环) , 然后对外部提供服务。
ingress包括:ingress controller和ingress resources
ingress controller:
核心是一个deployment
,实现方式有很多,比如nginx, Contour, Haproxy, trafik, Istio,需要编写的yaml有:Deployment, Service, ConfigMap,
ServiceAccount(Auth),其中service的类型可以是NodePort或者LoadBalancer。ingress resources:这个就是一个类型为Ingress的k8s api对象了,这部分则是面向开发人员
1.ingress部署
ingress是7曾的负载均衡,可以重定向,clinet-ingress-svc-pod,减少vip的分布,域名调度到svc的后端
上传ingress两个镜像到私有仓库下的ingress-nginx项目
查看镜像上传成功
下载所需要的deploy.yaml文件,修改deploy.yaml文件中镜像地址
执行deploy.yaml清单
查看ns为ingress-nginx的所有信息,可以看到ingress-nginx-controller已经running
查看ns为ingress-nginx的pod的信息
查看日志
查看svc暴露端口:32470
测试:
访问server2ip地址加上端口
2.域名访问+ingress-nginx
删除其他的svc
编辑myapp.yaml,添加svc服务