乐趣区

如何自建一个k8s ingress

如何自建一个 k8s ingress
ingress 接入方案
我们都知道访问 k8s 集群的服务需要 ingress 接入。
据我所知,ingress 接入的方案有 4 种
1. 云厂商提供 LoadBalance, 比如 aliyun SLB.
2. 官方的实现 ingress controller
3. 第三方实现方案
4. 自建,比如使用 envoy

这里重点记录一下,如何自建一个 ingress 的思路。
### ingress 接入方案的原理 在讲如何自建一个 k8s ingress 之前,这里分别记录一下 ingress 的实现原理。先说官方的实现。https://github.com/kubernetes… 官方的 ingress 接入实现使用 ingress controller + nginx 实现的。

如上图所示
ingress 接入分为配置控制和数据代理。
ingress controller 是一个控制中心,监控的数据来源
1.k8s 集群的 api-server,比如 node、service、pod 变化
2.ingress 实例的 configMap

ingress controller 发现监控的数据有变化,就把监控的数据转换成为 nginx.conf 代理所需要配置。
然后 reload nginx. 从而实现数据流量接入路由。

当然,如果 ingress controller 这一套部署在 k8s 集群内的话,肯定是要暴露端口的。
我接触到到的 aliyun 的 SLB 也类似。SLB 控制中心是一个叫 CMI 的程序,数据代理是有 LVS + nginx 组成。
ingress 接入方案的原理

退出移动版