Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 如何避免在添加新入口时重新启动/断开所有连接?_Nginx_Kubernetes_Google Kubernetes Engine_Nginx Ingress - Fatal编程技术网

Nginx 如何避免在添加新入口时重新启动/断开所有连接?

Nginx 如何避免在添加新入口时重新启动/断开所有连接?,nginx,kubernetes,google-kubernetes-engine,nginx-ingress,Nginx,Kubernetes,Google Kubernetes Engine,Nginx Ingress,我有一个集群,其中几个项目部署在不同的名称空间下 nginx-ingres与helm一起安装在集群上,每个项目都部署了一个新的ingres 问题是在添加新项目时,即创建一个新名称空间并添加多个部署+入口服务,nginx重新启动并断开所有连接,从而中断所有其他名称空间中的服务 看起来,即使nginx入口服务在项目名称空间中,也会在默认名称空间中共享nginx入口吊舱。因此,我想知道是否有一种方法可以将nginx-ingrespod专用于每个名称空间,这样更改一个名称空间的配置不会中断整个集群?您可

我有一个集群,其中几个项目部署在不同的名称空间下

nginx-ingres
与helm一起安装在集群上,每个项目都部署了一个新的ingres

问题是在添加新项目时,即创建一个新名称空间并添加多个部署+入口服务,
nginx
重新启动并断开所有连接,从而中断所有其他名称空间中的服务


看起来,即使
nginx入口
服务在项目名称空间中,也会在默认名称空间中共享
nginx入口
吊舱。因此,我想知道是否有一种方法可以将
nginx-ingres
pod专用于每个名称空间,这样更改一个名称空间的配置不会中断整个集群?

您可以为每个名称空间部署一个专用的入口控制器(使用Helm图表和自定义入口类)

然后使用适当的入口注释来利用它们:

metadata:
  name: fooA
  annotations:
    kubernetes.io/ingress.class: "namespaceA"

metadata:
  name: fooB
  annotations:
    kubernetes.io/ingress.class: "namespaceB"

metadata:
  name: fooC
  annotations:
    kubernetes.io/ingress.class: "namespaceC"
因此名称空间a中的所有POD都使用专用的名称空间a入口控制器,并且不会受到部署到其他名称空间(包括默认名称空间:ingressClass=nginx)的入口控制器重启的影响


请记住,部署一个新的入口控制器可能会导致配置一个新的“物理”负载平衡器(向云提供商的每月账单中添加额外的$$$),因此只有在受到连接断开严重影响的服务(流媒体、WebSocket等)时才值得这么做,设计良好的REST服务不应受到短期入口重启的严重影响。

您可以为每个命名空间部署一个专用入口控制器(使用Helm图表和自定义入口类)

然后使用适当的入口注释来利用它们:

metadata:
  name: fooA
  annotations:
    kubernetes.io/ingress.class: "namespaceA"

metadata:
  name: fooB
  annotations:
    kubernetes.io/ingress.class: "namespaceB"

metadata:
  name: fooC
  annotations:
    kubernetes.io/ingress.class: "namespaceC"
因此名称空间a中的所有POD都使用专用的名称空间a入口控制器,并且不会受到部署到其他名称空间(包括默认名称空间:ingressClass=nginx)的入口控制器重启的影响

请记住,部署一个新的入口控制器可能会导致配置一个新的“物理”负载平衡器(向云提供商的每月账单中添加额外的$$$),因此只有在受到连接断开严重影响的服务(流媒体、WebSocket等)时才值得这么做,设计良好的REST服务不应该受到短期入口重启的严重影响