在Kubernetes集羣中,Ingress作為集羣內服務對外暴露的訪問接入點,其幾乎承載著集羣內服務訪問的所有流量。我們知道,Nginx Ingress Controller是Kubernetes社區很重要的一個子項目,其內部主要依託於高性能的負載均衡軟體Nginx,將Kubernetes Ingress資源對象實時地自動化轉換為Nginx配置規則來對外提供期望的授權訪問入口。
當隨著Kubernetes集羣中部署的微服務越來越多,對外暴露的路由規則越來越複雜,服務後端Endpoint變化的越來越頻繁,那麼對應地都會引起Nginx Ingress Controller組件內Nginx配置文件的變化越來越頻繁;而我們知道,任何一行Nginx配置的變化,都需要Reload Nginx才能生效,這在變化頻率較低的場景下索性還能接受,但在高頻率變化的場景下就會引起Nginx的頻繁Reload。