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

云计算 云原生
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对集群外暴露服务的需求,简单灵活。

责任编辑:姜华 来源: 今日头条
相关推荐

2024-02-05 12:08:07

线程方式管理

2024-06-12 08:05:06

2021-08-31 09:55:57

服务开发K8S

2022-07-05 08:05:00

策略模式接口实现类

2023-11-07 08:23:05

2022-04-12 08:02:52

云原生Kubernetes使用率

2023-05-30 08:19:07

kafka集群leader

2023-04-28 12:37:59

Spring@Bean使用方式

2023-04-23 09:50:50

@BeanSpring

2023-12-12 08:41:01

2024-03-19 08:01:54

服务熔断软件设计模式微服务

2024-02-19 08:01:59

服务微服务授权

2022-03-10 08:25:27

JavaScrip变量作用域

2019-12-12 09:23:29

Hello World操作系统函数库

2024-09-18 07:00:00

消息队列中间件消息队列

2021-10-14 06:52:47

算法校验码结构

2022-09-29 15:32:58

云计算计算模式

2023-02-13 08:10:40

Gateway网关Spring

2023-02-20 14:27:56

Kubernetes内存单位

2022-09-22 12:11:38

PodKubernetes
点赞
收藏

51CTO技术栈公众号