小编给大家分享一下Kubernetes Ingress控制器的技术选型技巧有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
-
集群:是指容器运行所需云资源的集合,包含了若干台云服务器、负载均衡器等云资源。 -
实例(Pod):由相关的一个或多个容器构成一个实例,这些容器共享相同的存储和网络空间。 -
工作负载(Node):Kubernetes 资源对象,用于管理 Pod 副本的创建、调度以及整个生命周期的自动控制。 -
服务(Service):由多个相同配置的实例(Pod)和访问这些实例(Pod)的规则组成的微服务。 -
Ingress:Ingress 是用于将外部 HTTP(S)流量路由到服务(Service)的规则集合。
-
NodePort 的缺点是一个端口只能挂载一个 Service,而且为了更高的可用性,需要额外搭建一个负载均衡。
-
LoadBalancer 的缺点则是每个服务都必须要有一个自己的 IP,不论是内网 IP 或者外网 IP。更多情况下,为了保证 LoadBalancer 的能力,一般需要依赖于云服务商。
-
第一个问题:Nginx Ingress用了一些 OpenResty 的特性,但最终配置加载还是依赖于原有的 Nginx config reload。当路由配置非常大时,Nginx reload 会耗时很久,时间长达几秒甚至十几秒,这样就会严重影响业务,甚至造成业务中断。
-
第二个问题:Nginx Ingress 的插件开发非常困难。如果你认为 Nginx Ingress 本身插件不够用,需要使用一些定制化插件,这个额外的开发任务对程序员来说是十分痛苦的。因为Nginx Ingress自身的插件能力和可扩展性非常差。
选型原则
-
必须开源的,不开源的无法使用。 -
Kubernetes 中Pod 变化非常频繁,服务发现非常重要。 -
现在 HTTPS 已经很普及了,TLS 或者 SSL 的能力也非常重要,比如证书管理的功能。 -
支持 WebSocket 等常见协议,在某些情况下,可能还需要支持 HTTP2 、QUIC 等协议。
2.基础软件
3.功能需求
-
协议:是否支持 HTTP2、HTTP3; -
负载均衡算法:最基本的WRR、一致性哈希负载均衡算法是否能够满足需求,还是需要更加复杂的类似EWMA负载均衡算法。 -
鉴权限流:仅需要简单的鉴权,或更进阶的鉴权方式。又或者需要集成,能够快速的开发出像腾讯云 IM 的鉴权功能。Kubernetes Ingress除了前面我们提到的存在Nginx reload 耗时长、插件扩展能力差的问题,另外它还存在后端节点调整权重的能力不够灵活的问题。
-
第一部分:需要将 Kubernetes 集群中的配置、或 Kubernetes 集群中的状态同步到 APISIX 集群。 -
第二部分:需要将 APISIX中 的一些概念,比如像服务、upstream 等概念定义为 Kubernetes 中的 CRD。
-
APISIX Ingress:APISIX Ingress 的优点前面也提到了,它具有非常强大的路由能力、灵活的插件拓展能力,在性能上表现也非常优秀。同时,它的缺点也非常明显,尽管APISIX开源后有非常多的功能,但是缺少落地案例,没有相关的文档指引大家如何使用这些功能。
-
Kubernetes Ingress:即 Kubernetes 推荐默认使用的 Nginx Ingress。它的主要优点为简单、易接入。缺点是Nginx reload耗时长的问题根本无法解决。另外,虽然可用插件很多,但插件扩展能力非常弱。
-
Nginx Ingress:主要优点是在于它完全支持 TCP 和 UDP 协议,但是缺失了鉴权方式、流量调度等其他功能。
-
Kong:其本身就是一个 API 网关,它也算是开创了先河,将 API 网关引入到 Kubernetes 中当 Ingress。另外相对边缘网关,Kong 在鉴权、限流、灰度部署等方面做得非常好。Kong Ingress 还有一个很大的优点:提供了一些 API、服务的定义,可以抽象成 Kubernetes 的 CRD,通过K8S Ingress 配置便可完成同步状态至 Kong 集群。缺点就是部署特别困难,另外在高可用方面,与 APISIX 相比也是相形见绌。
-
Traefik :基于 Golang 的 Ingress,它本身是一个微服务网关,在 Ingress 的场景应用比较多。他的主要平台基于 Golang,自身支持的协议也非常多,总体来说是没有什么缺点。如果大家熟悉 Golang 的话,也推荐一用。
-
HAproxy:是一个久负盛名的负载均衡器。它主要优点是具有非常强大的负载均衡能力,其他方面并不占优势。
-
Istio Ingress 和 Ambassador Ingress 都是基于非常流行的 Envoy。说实话,我认为这两个 Ingress 没有什么缺点,可能唯一的缺点是他们基于 Envoy 平台,大家对这个平台都不是很熟悉,上手门槛会比较高。
看完了这篇文章,相信你对“Kubernetes Ingress控制器的技术选型技巧有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注云行业资讯频道,感谢各位的阅读!