k8s ingress、istio网关
k8s ingressingress 三大组件1负载均衡器nginx,Haproxy之类的2ingress controllerngress Controller实质上可以理解为是个监视器,Ingress Controller通过不断地跟Kubernetes API打交道,实时的感知后端Service、Pod等变化,然后更新反向代理负载均衡器。3ingress配置文件,哪个域名对应哪个服务。api
k8s ingress
ingress 三大组件
1负载均衡器
nginx,Haproxy之类的
2ingress controller
ngress Controller实质上可以理解为是个监视器,Ingress Controller通过不断地跟Kubernetes API打交道,实时的感知后端Service、Pod等变化,然后更新反向代理负载均衡器。
3ingress
配置文件,哪个域名对应哪个服务。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-test-ingress # ingress 名称
namespace: default # 命名空间
spec:
rules:
# 域名
- host: k8s.nginx.com
http:
paths:
- path: /
backend:
# 后端service
serviceName: nginx-service
# service 端口
servicePort: 80
总结
在边缘放置一个nginx,然后弄一个监视器叫ingress controller时时刻刻监视着k8s里service、pod变化,当我们想让foo.bar.com/foo请求转发到foo服务,我们需要写一个映射关系,这个映射关系就是ingress,然后ingress controller 根据 ingress 和 service、pod生成nginx配置,然后更新反响代理服务器。
istio 网关
IngressGateway
Istio IngressGateway 的功能与 Kubernetes Ingress 类似,IngressGateway 部署是一个基于 Envoy 代理的封装,也是类似nginx
Gateway
Gateway 资源是用于配置 IngressGateway 的一种 Kubernetes 的自定义资源,Istio Gateway资源本身只能配置L4-L6的功能,例如暴露的端口,TLS设置等。
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: httpbin-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "httpbin.example.com"
VirtualService
Gateway 可与 VirtualService 绑定,在 VirtualService 中可以配置七层路由规则,例如按比例和版本的流量路由,故障注入,HTTP 重定向,HTTP 重写等所有 Mesh 内部支持的路由规则。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: httpbin
spec:
hosts:
- "httpbin.example.com"
gateways:
- httpbin-gateway
http:
- match:
- uri:
prefix: /status
route:
- destination:
port:
number: 8000
host: httpbin
总结
Istio IngressGateway 属于 8s ingress的加强版,可以指定复杂的流量路由规则,如流量拆分或流量镜像等,而且将l4-l6与l7解耦,而且可以从控制平面进行配置。
架构方案
虽然Ingress Controller通过七层网关为后端的多个Service提供了统一的入口,但由于其部署在集群中,因此并不能直接对外提供服务。实际上Ingress需要配合NodePort和LoadBalancer才能提供对外的流量入口,如下图所示:
istio 入口网关前面也要有一个负载均衡,比如80端口的请求代理到网关A,60端口的请求代理到网关B。
因此,我们需要在k8s集群前再放置一个负载均衡器,例如loadbalancer,对于没有loadbalancer的我们可以用搭一个负载均衡集群保证集群的高可用。
参考:
https://cloudnative.to/blog/how-to-pick-gateway-for-service-mesh/
https://mp.weixin.qq.com/s/Dt4ge1H4JXhHS91vRMBUWA
https://zhuanlan.zhihu.com/p/142380204?utm_source=wechat_session&utm_medium=social&utm_oi=675340860045004800&wechatShare=1&s_r=0
https://mp.weixin.qq.com/s/fPjwSqIt4rvHcnK-LNjTDw
更多推荐
所有评论(0)