根据我的理解,我们可以在一个集群中使用Ingress类注释来使用多个Nginx入口控制器。但是,我有一个用例,需要在同一个名称空间中使用多个入口控制器来使用各自创建的入口规则在同一个名称空间中公开不同的服务。我按照https://kubernetes.github.io/ingress-nginx/deploy/#azure创建一个示例入口控制器。如果我想要在同一个命名空间中拥有多个Nginx入口控制器,那么应该修改所有的参数。
提前感谢
发布于 2021-07-13 09:05:16
从您的帖子中还不清楚您是否打算部署多个nginx入口控制器或不同的入口控制器。但是,两者都可以部署在同一个命名空间中。
在部署不同的入口控制器时,应该可以很容易地部署在同一个命名空间中,并使用类注释来指定哪个入口规则是由哪个入口控制器处理的。但是,如果要在同一个命名空间中部署多个nginx-ingress控制器,则必须将名称/标签或其他标识符更新到不同的名称。
例如-你提到的链接https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/cloud/deploy.yaml需要更新为-
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
helm.sh/chart: ingress-nginx-3.33.0
app.kubernetes.io/name: ingress-nginx-internal
app.kubernetes.io/instance: ingress-nginx-internal
app.kubernetes.io/version: 0.47.0
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: controller
name: ingress-nginx-internal
namespace: ingress-nginx
automountServiceAccountToken: true假设我们将第二个nginx入口控制器称为ingress nginx- in;同样,在链接中创建的所有资源都需要修改并部署在同一个命名空间中。
此外,您还必须更新部署args以指定ingress.class,您的控制器将针对-
spec:
template:
spec:
containers:
- name: nginx-ingress-internal-controller
args:
- /nginx-ingress-controller
- '--ingress-class=nginx-internal'
- '--configmap=ingress/nginx-ingress-internal-controller'链接https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/解释了如何控制多个入口控制器。
发布于 2022-06-12 10:42:33
我在AKS上遇到了类似的问题(K8s版本1.22.4)。我有两个Nginx入侵控制器,内部和外部。在为每个指定唯一的选择id之后,问题就解决了。
这篇文章可能会有所帮助:https://stackoverflow.com/a/72591382/4049017
https://stackoverflow.com/questions/68358574
复制相似问题