K8S外部流量相关的服务类型介绍

原创
2021/08/02 20:19
阅读数 135

有三种服务类型可以处理外部流量:ClusterIP、NodePort以及LoadBalancer。 还有第4种解决方案: 再添加一个抽象层,称为Ingress Controller 如下图所示:


1. ClusterIP

ClusterIP是Kubernetes中默认的服务类型,它可以让你在集群内部与其他服务进行通信,声明为ClusterIP的服务不应该可以从外部直接可见。


2.NodePort:

因为每个节点有一个固定的IP地址,K8S通过将一个服务声明为NodePort,服务将会暴露节点IP地址,以便你可以从外部访问它。可以在生产环境中使用NodePort,但对于拥有许多服务的大型应用程序来说,手动管理所有不同的IP地址十分麻烦,所以一般不直接使用NodePort来进行外部网络访问。


3.LoadBalancer:

声明一个LoadBalancer类型的服务,就可以使用云提供商的LoadBalancer向外部公开。有了这个解决方案,你不必管理集群中每个节点的所有IP地址,但你将为每个服务配备一个load balancer。缺点是,每个服务都有一个单独的load balancer,你将按照load balancer实例付费。


4.Ingress:

Ingress不是一个服务,而是一个API对象,它可以管理外部对集群服务的访问。它作为反向代理和单一入口点(entry point)进入你的集群,将请求路由到不同的服务。我通常使用NGINX Ingress Controller,它承担了反向代理,同时也作为SSL发挥作用。暴露ingress的最佳生产方案是使用一个load balancer。

借助这一解决方案,你可以使用单个load balancer暴露任意数量的服务,所以你可以让费用保持在最低水平。



本文分享自微信公众号 - 灰子学技术(huizixueguoxue)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部