探索生活本源
传递多元价值

Ingress:解决K8s服务暴露难题的利器,揭秘K8s中Ingress的神奇魅力

K8s中核心对象Ingress展开,先介绍了K8s Service的类型及特点,引出Ingress产生的背景,接着阐述了Ingress的实现机制,通过官方demo和作者自己的Demo进行验证,最后分析了Ingress – nginx的优势以及其底层原理。

嘿,各位朋友!这里是有态度马甲的第185篇原创文章,趣味性那可是足足5颗星,实用性也能达到4颗星哦。

在这篇文章里,我们将详细记录K8s中核心对象Ingress的产生背景以及它的实现机制。

大家都清楚,K8s Service是一种把Pods通过网络暴露出来的抽象概念。每一个服务都定义了一组和Pod相关的端点,而且Service有好几种类型呢。

  • ClusterIP:这是默认类型,它以集群内IP的形式,为集群内部提供了可访问性。也就是说,在集群内部的其他组件可以通过这个IP来访问对应的服务。

  • NodePort:它会在每个节点的静态端口上对外暴露服务。这样一来,外部的请求就可以通过节点的IP和指定的端口来访问服务。

  • LoadBalancer:这是借助外部负载均衡器来工作的,能够将流量均衡地分配到后端的服务上。

我们仔细想想,常规的对外暴露服务的方式好像就只有NodePort这一种比较直接呢。

大家要注意哦,流量的走向是从 client –> nginx pod –> service Pod。

Ingress会记录注册到它上面服务的路由规则。而Ingress – Nginx Controller则是本次业务的声明式核心控制器,它的作用是确保产生满足这些规则的NodePort类型的nginx服务。不过要注意哦,还需要前置负载来提供跨节点负载均衡能力。

接下来,我们找个demo来快速验证一下。

k8s ingress官方给出了一个通过Ingress引流到“hello world”这样的演示服务。但是让人有点疑惑的是,它的服务采用了NodePort形式。既然都用NodePort了,那还要Ingress干啥呢?

我的Demo是以默认的ClusterIP形式快速启动了Nginx服务。

Ingress – nginx可以分为两大块:Ingress规则和Ingress – nginx controller。

这两者相互配合,一举解决了NodePort暴露服务的一些缺陷。通过Ingress暴露服务,既能有效地节约节点端口,又具备负载均衡能力,而且还是广大程序员喜闻乐见的7层协议来进行路由分流,实在是太方便了。

不过说到底,Ingress – nginx底层其实还是NodePort服务和ClusterIP服务的积木组合,不得不说这设计真是巧妙啊。

本文先介绍了K8s Service的几种类型,引出Ingress产生的必要性,详细说明了Ingress的工作机制和流量走向,通过官方和自己的Demo进行验证,最后指出Ingress – nginx解决了NodePort的缺陷,且底层是NodePort和ClusterIP服务的组合,展示了Ingress在K8s服务暴露方面的重要作用和优势。

赞(0)
未经允许不得转载:果源资讯 » Ingress:解决K8s服务暴露难题的利器,揭秘K8s中Ingress的神奇魅力

评论 抢沙发