集群中有大量的 ConfigMap,导致 Nginx Ingress 组件创建失败。
Ingress Nginx Controller 默认监听集群中的所有 ConfigMap,组件启动时会加载所有 ConfigMap 资源到内存中。若在业务创建过多 ConfigMap,将导致组件启动时加载资源过多,内存占用太大而引发 OOM 错误。
限制 Ingress Nginx Controller 监听的命名空间。修改启动参数--watch-namespace=xxx-system
,其中设置的命名空间即为当前 controller 所在的命名空间。
注意
此解决方案会导致该 Ingress Nginx Controller 只会对该命名空间中的 Ingress 生效。因此,如果需要在多个命名空间中都使用Ingress,需要在每个命名空间都部署一套 Ingress Nginx Controller,且修改 Ingress Nginx Controller 的启动参数,设置其只监听 Controller 所在命名空间。