本文将介绍Ingress基本概念、Ingress Controller工作原理以及Nginx Ingress Controller的使用说明。
Ingress基本概念
Ingress是Kubernetes集群中一种API对象,属于网络路由和负载均衡中的一个概念。它的主要作用是将外部的流量路由到集群内部的服务,您可以通过Ingress资源来配置不同的转发规则,从而根据不同的规则设置访问集群内不同的Service所对应的后端Pod。Ingress可以看作是在Service的基础上提供了更高级别的负载均衡和路由规则控制。与Service不同的是,Service只提供了基础的负载均衡和服务发现功能。
Ingress Controller工作原理
Ingress API对象的创建需要使用Ingress Controller,它是一个独立于Kubernetes集群之外的组件。Ingress Controller会不断地监视Ingress对象的变化,当检测到Ingress对象的变化时,它会自动更新代理服务器的配置信息。通常情况下,Ingress Controller会将请求代理到运行在同一集群内的Service中,但它也可以被配置为代理到集群外部的其他服务。Ingress Controller 常见的工作流程如下:
- Kubernetes集群中的Ingress Controller通过API Server监控Ingress的创建、删除和更新。
- 当有新的Ingress创建时,Ingress Controller会解析Ingress的规则,并将其实现为代理服务器的转发规则。
- 当有新的Service创建或修改时,Ingress Controller会读取对应的Service的信息,例如其IP和端口等,并将其添加到代理服务器的配置中,实现对后端服务的指向。
- 当新的Pod创建、修改或删除时,Ingress Controller会读取每个Pod上的Service的信息,并将其添加到代理服务器的配置中,实现对后端服务的指向。
- 当有Ingress被删除时,Ingress Controller会删除代理服务器上对应的路由规则。
Nginx Ingress Controller使用说明
目前,Kubernetes官方维护的是Nginx Ingress Controller。SCE则在社区版的Nginx Ingress Controller基础上进行了优化。在创建SCE集群时,您选择安装的Nginx Ingress插件即为SCE 定制版的Nginx Ingress Controller插件。