Hi,are you ready?

准备好开始了?
那就与我们取得联系吧

有一个品牌项目想和我们谈谈吗?您可以填写右边的表格,让我们了解您的项目需求,这是一个良好的开始,我们将会尽快与你取得联系。当然也欢迎您给我们写信或是打电话,让我们听到你的声?

?址:

?话:

E-mail:

Nginx Ingress 控制器工作机制

作者:admin 时间:2020-11-30

本文的意图是阐明 Nginx ingress controller 是怎么作业的,特别是 Nginx 模型是怎么构建的以及咱们为何需求这个模型。

NGINX 模型 一般,一个 Kubernetes 控制器选用 synchronization loop pattern 来查看控制器中所需的状况是否已更新或许需求改变。为了到达这个意图,咱们需求运用集群的不同目标来构建模型,特别是Ingresses,Services,Endpoints,Secrets,以及 Configmaps 来生成反映集群状况的时刻点装备文件。

该模型的用处之一是状况没有改变时防止不必要的从头加载,并检测界说中的抵触。

生成 Nginx 装备的终究画像是从一个 Go template ,针对这个模板所需求的变量经过新的模型输入。

该模型的用处之一是状况没有改变时防止不必要的从头加载,并检测界说中的抵触。

树立模型的操作方法:

经过 CreationTimestamp 字段对 Ingress 规矩排序,即最早创立的规矩优先 假如相同 host 的相同途径被多个 Ingress 界说,那么最早创立的规矩优先 假如多个 Ingress 包含相同 host 的 TLS 部分,那么最早创立的规矩优先 假如多个 Ingresses 界说了一个 annotation 影响到 Server block 装备,那么最早创立的规矩优先 创立一个 NGINX Servers 列表 创立一个 NGINX Upstreams 列表 假如多个 Ingresses 界说了同一个 host 的不同途径,ingress 控制器会兼并这些界说 Annotations 被运用于这个 Ingress 的一切途径 多个 Ingresses 能够界说不同的 annotations。这些界说不会在 Ingresses 之间同享 什么时分从头加载是有必要的

接下来的场景描绘什么时分需求从头加载:

新的 Ingress 资源创立 增加 TLS 部分到现有的 Ingress 改变 Ingress annotations 并不只是影响 upstream 装备。关于实例 load-balance annotation 不需求从头加载 Ingress 的途径被增加/移除 一个 Ingress,Service、Secret 被移除 一些 Ingress 短少引证的目标可用时,如 Service 或许 Secret 一个 Secret 被更新 防止从头加载

在某些情况下,有或许防止从头加载,尤其是在 Endpoints 发送改变的时分,如 Pod 发动或许被替换时。彻底移除从头加载这超过了 Ingress 控制器的规模。这将需求很多的作业,而且有时没有任何含义。仅当 Nginx 改变了读取新装备的方法时,这才能够改变,基本上,新的改变不会代替作业进程。

防止 Endpoints 改变时从头加载

在每个 Endpoint 改变上,控制器从一切能看到的服务上获取 Endpoints 并生成相应的后端目标。然后将这些目标发送给运转在 Nginx 内部的 Lua 处理程序。Lua 程序将这些后端存储在同享内存区域。然后关于在 balancer_by_lua 上下文运转的每个恳求,Lua 代码检测 Endpoints 挑选对应 upstream 并运用现已装备的负载均衡算法。Nginx 担任其他的作业。这样,咱们防止在 endpoint 改变时从头加载 Nginx。留意,这也包含仅影响 Nginx upstream 装备的 annoations 改变。

在频频布置运用的较大集群中,这个特性能够防止很多的 Nginx 从头加载,否则会影响呼应推迟,担任均衡质量等等。

防止因过错的装备而中止 由于 Ingress 控制器运用 synchronization loop pattern ,它对一切匹配到的目标运用装备。假如某些 ingress 目标装备损坏,如 nginx.ingress.kubernetes.io/configuration-snippet annotation 语法过错,生成的装备变得不可用,将不会从头加载并不再考虑其它进口。

树立模型的操作方法:

接下来的场景描绘什么时分需求从头加载:

在某些情况下,有或许防止从头加载,尤其是在 Endpoints 发送改变的时分,如 Pod 发动或许被替换时。彻底移除从头加载这超过了 Ingress 控制器的规模。这将需求很多的作业,而且有时没有任何含义。仅当 Nginx 改变了读取新装备的方法时,这才能够改变,基本上,新的改变不会代替作业进程。

在每个 Endpoint 改变上,控制器从一切能看到的服务上获取 Endpoints 并生成相应的后端目标。然后将这些目标发送给运转在 Nginx 内部的 Lua 处理程序。Lua 程序将这些后端存储在同享内存区域。然后关于在 balancer_by_lua 上下文运转的每个恳求,Lua 代码检测 Endpoints 挑选对应 upstream 并运用现已装备的负载均衡算法。Nginx 担任其他的作业。这样,咱们防止在 endpoint 改变时从头加载 Nginx。留意,这也包含仅影响 Nginx upstream 装备的 annoations 改变。

在频频布置运用的较大集群中,这个特性能够防止很多的 Nginx 从头加载,否则会影响呼应推迟,担任均衡质量等等。

原文链接: NGINX ingress controller - How it works

返回列表

RELATED CASE

相关案例

建站

Nginx Ingress 控制器工作机制

本文的意图是阐明 Nginx ingress controller 是...

建站

用两万字讲述了今年的商业趋势

作者:沈帅波...

建站

Tim Draper:加密货币是未来的趋势 千禧一

1月24日音讯,危险出资家Tim Draper在承受采...

建站

微软将开放神经网络交换格式贡献给 Li

Linux 基金会旗下的 AI 基金会正致力于打造...

建站

​从39岁失业到竞选美国总统,布隆伯格

深响原创 作者|书宁 继唐纳德 特朗普之...

Are you interested in ?

感兴趣吗?

有关我们服务的更多信息,请联系

与我们合作

与我们合作,您将会得到更成熟的品牌建设服务。我们以客户至上,同时也相互挑战,力求呈现最好的品牌建设成果。

品牌咨询热线:

TOP