K8S网络系列之二:Ingress介绍和使用


介绍

Ingress类似一个7层HTTP服务器,通过配置域名、location路径等将访问到ingress的请求反向代理到service,再由service路由到pod。

Ingress需要对应的Controller去实现,实现Ingress Controller的方案和开源项目有很多,最常见的就是Nginx Ingress Controller。除此之外还有Kong、APISIX、HAProxy等。

下表是各类Ingress Controller的对比:

对比项 APISIX Ingress Nginx Ingress Kong Ingress Traefix HAProxy Istio Ingress
协议 http/https,http2,grpc,tcp/udp,tcp+tls,Dubbo http/https,http2,grpc,tcp/udp http/https,http2,grpc http/https,http2,grpc,tcp,tcp+tls http/https,http2,grpc,tcp,tcp+tls http/https,http2,grpc,tcp,tcp+tls,mongo,mysql,redis
基础平台 Openresty/tengine Nginx openresty Traefik Haproxy Envoy
路由匹配 path,method,host,header,nginx变量,args变量,自定义函数 host,path path,method,host,header path,method,host,header,query,path prefix host,path path,method,host,header
命名空间支持 - - 指定命名空间 公用或指定命名空间 公用或指定命名空间 公用或指定命名空间
部署策略 ab部署、灰度发布、金丝雀发布 - 金丝雀部署、蓝绿部署 金丝雀部署、蓝绿部署、灰度发布 蓝绿部署、灰度发布 金丝雀部署、蓝绿部署、灰度发布
upstream探测 重试、超时、心跳、熔断 重试、超时、心跳 心跳、熔断 重试、超时、心跳、熔断 探测url、ip、port 重试、超时、心跳、熔断
负载均衡算法 一致性hash、WRR RR、会话保持、最小连接、最短时间、一致性hash WRR、会话保持 WRR、动态RR、会话保持 RR、static-RR、最小连接、源IP、url、header、会话保持 RR、会话保持、一致性hash、maglev负载均衡

配置说明

ingress.spec字段说明

字段 类型 说明
defaultBackend <Object> 当请求不匹配任何rules时,使用的默认流量处理后端。如果没有rules,则必须指定defaultBackend。如果没有设置defaultBackend,那么对不匹配任何规则的请求的处理将取决于Ingress Controller
ingressClassName <string> 指定ingressClass资源的名字。用于替代退役的annotation ‘kubernetes.io/ingress.class’。当同时设置时并出现冲突时,annotation优先级高于ingressClassName,并发出警告。
xxClassName广泛应用于k8s的各类资源,表示指定对该类资源的一个实现,通常都需要一个安装一个Controller
rules <[]Object> 用于配置Ingress Controller的主机规则列表。如果未指定或者没有匹配的规则,所有流量都被发送到defaultBackend
tls <[]Object> TLS配置。Ingress目前只支持一个TLS端口443.如果列表中的多个成员指定了不同的主机,那么根据SNI TLS扩展指定的主机名,它们将在同一个端口上多路复用,如果实现Ingress的控制器支持SNI。
备注:SNI(Server Name Indication) 是TLS的扩展,用来解决一个服务器拥有多个域名的情况

ingress.spec.rules说明

字段 类型 说明
host <string> 访问主机的FQDN。1.不允许使用IP地址。2.不允许使用":“指定端口,端口隐式的表示为80-http、443-https。3.可以精准使用主机名如foo.bar.com,也可以”"作为前缀如.foo.com,但不能独立使用"*"作为主机名
http <Object> 指向后端的http选择器列表
paths: <[]Object> - required - 将请求映射到后端的路径集合

文章作者: 洪宇轩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 洪宇轩 !
评论
  目录