前言
在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务,在Kubernetes 目前 提供了以下几种方案:
- NodePort
- LoadBalancer
- Ingress
这三种方案中,考虑到NodePort是直接开放外部端口,这样需要管理所有服务开放的端口,跟我们原本使用k8s的初衷略有违背,我们初衷是希望对外是服务访问,对内可以不针对每个服务所在的服务器以及端口进行管理,在降低运维压力同时,实现负载均衡,因此一般不选择这种方案实现对外暴露服务,而LoadBalancer需要云端服务支持,就是一般是需要付费,考虑成本也是不在参考范围里面的,因此最后的Ingress这根稻草,在安全与成本的方向的考虑,满足了大部分人的需求,基础部署参考:helm3.0部署nginx-ingress.
Ingress 简介
在kubernetes集群中,我们知道service和pod的ip仅在集群内部访问。如果外部应用要访问集群内的服务,集群外部的请求需要通过负载均衡转发到service在Node上暴露的NodePort上,然后再由kube-proxy组件将其转发给相关的pod。 而Ingress就是为进入集群的请求提供路由规则的集合,通俗点就是
提供外部访问集群的入口,将外部的HTTP或者HTTPS请求转发到集群内部service上。
Ingress访问原理
Ingress代理的并不是pod的service,而是pod,之所以在配置的时候是配置的service,是为了通过service来获取所有pod的信息。
访问原理如下:

Ingress实现生产环境服务暴露方案
Ingress通常使用http://domain/path的方式暴露服务,对于生产环境,是已经配置了一层Nginx代理,通过80/443端口对外开放应用入口
具体访问原理如下:

当服务部署到k8s之后,能不能用原本的方案呢?

探讨Kubernetes中Ingress的原理与实践,对比NodePort和LoadBalancer,介绍如何使用Ingress实现生产环境服务的优雅暴露,包括配置、规则编写及解决常见问题。
最低0.47元/天 解锁文章
1365

被折叠的 条评论
为什么被折叠?



