Kubernetes向集群外部暴露服务的方式,你知道吗?

Kubernetes向集群外部暴露服务的方式,你知道吗?

作者:路多辛 2023-02-27 07:56:55

云计算

云原生 Ingress相当于service的service,可以将外部请求通过按照不同规则转发到对应的service。实际上,ingress相当于一个7层的负载均衡器,是k8s对反向代理的一个抽象,大概的工作原理类似于Nginx。

Kubernetes向进群外暴露服务的方式有三种:Ingress、LoadBlancer类型的Service、NodePort类型的Service。

Ingress

Ingress相当于service的service,可以将外部请求通过按照不同规则转发到对应的service。实际上,ingress相当于一个7层的负载均衡器,是k8s对反向代理的一个抽象,大概的工作原理类似于Nginx。

Ingress工作原理(以Nginx Ingress为例):

Ingress-controller通过和Kubernetes APIServer交互,动态感知集群中Ingress规则的变化,感知到规则的变化后生成对应的Nginx配置,将配置写到nginx-ingress-controller的pod里(ingress-controller的pod里运行着一个Nginx服务,ingress-controller会把生成的 nginx配置写入/etc/nginx.conf文件中),然后执行reload使配置生效。

LoadBlancer类型的Service

创建service时,指定type类型为LoadBalancer,需要有外部负载均衡器的支持,绝大部分云厂商都支持创建外部负载均衡。

NodePort类型的Service

创建service时,指定type类型为NodePort,这样,服务就会暴露在集群节点ip的指定端口上。

几种方式的优缺点

NodePort方式有如下缺点:

  • 当服务比较多的时候,会占用集群节点的大量端口,难以维护;
  • 多了一层NAT,请求量比较大的时候会对性能产生影响。

LoadBlancer方式有如下缺点:

  • 每个service一个外部负载均衡器,麻烦又浪费;
  • 需要有外部负载均衡器支持,有局限性。

Ingress相比上面两种方式,只需要一个NodePort或者一个LoadBlancer就可以满足所有service对集群外暴露服务的需求,简单灵活。

文章标题:Kubernetes向集群外部暴露服务的方式,你知道吗?
文章URL:http://www.shufengxianlan.com/qtweb/news6/388656.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联