【问题标题】:Nginx ingress class with two ingress controllers not working带有两个入口控制器的 Nginx 入口类不起作用
【发布时间】:2022-08-02 21:03:37
【问题描述】:

我想要两个入口,以便为每个入口(AWS ELB)设置不同的负载均衡器。

我关注official doc,但没有找到示例。

所以我创建了两个入口控制器,每个控制器都有它的类:

controller:
  service:
    ...
  ingressClassResource:
    name: api-ingress
    enabled: true
    default: false
    controllerValue: \"k8s.io/ingress-nginx\" 

另一个(不是以相同的方式创建,所以它是 json):

controller: {
  publishService: { enabled: true },
  // watchIngressWithoutClass: true,
  // ingressClassByName: true,
  ingressClassResource: {
    name: \'streaming-ingress\',
    enabled: true,
    default: false,
    controllerValue: \'k8s.io/ingress-nginx\',
  },

然后我创建了两个入口:

      metadata: {
        name: \'api-ingress\',
      },
      spec: {
        ingressClassName: \'api-ingress\',
        rules: [
          {...

      metadata: {
        name: \'smartproxy-ingress\',
      },
      spec: {
        ingressClassName: \'streaming-ingress\',
        defaultBackend: ...
      },
    },

问题是两个入口都使用相同的控制器api-ingress

入口控制器创建良好,并针对每个配置的不同 LB,但它们混合在一起。每个控制器的日志中都有对应两个入口的事件。我从中了解到入口类不起作用。

I0706 08:53:16.997641       8 event.go:282] Event(v1.ObjectReference{Kind:\"Pod\", Namespace:\"default\", Name:\"api-ingress-ingress-nginx-controller-5f9dc488ff-6tbt8\", UID:\"6dfdc93e-90ab-4abb-9b48-26b67521beef\", APIVersion:\"v1\", ResourceVersion:\"22708\", FieldPath:\"\"}): type: \'Normal\' reason: \'RELOAD\' NGINX reload triggered due to a change in configuration
I0706 08:55:19.423635       8 event.go:282] Event(v1.ObjectReference{Kind:\"Ingress\", Namespace:\"default\", Name:\"api-ingress\", UID:\"2b6ea52a-2dee-4fa7-995f-452bc8fa96c4\", APIVersion:\"networking.k8s.io/v1\", ResourceVersion:\"23218\", FieldPath:\"\"}): type: \'Normal\' reason: \'Sync\' Scheduled for sync
I0706 08:55:19.424410       8 event.go:282] Event(v1.ObjectReference{Kind:\"Ingress\", Namespace:\"default\", Name:\"smartproxy-ingress\", UID:\"74faf321-a9c4-45f8-994b-52bddd2c69a1\", APIVersion:\"networking.k8s.io/v1\", ResourceVersion:\"23219\", FieldPath:\"\"}): type: \'Normal\' reason: \'Sync\' Scheduled for sync

以下是使用相同 LB 的 2 个入口:

任何想法?有人用几个 nginx 入口和控制器成功了吗?

谢谢!

    标签: amazon-web-services kubernetes nginx-ingress


    【解决方案1】:

    答案在文档中(但谷歌没有为我找到它:-))。

    https://github.com/kubernetes/ingress-nginx/blob/main/docs/index.md#how-to-easily-install-multiple-instances-of-the-ingress-nginx-controller-in-the-same-cluster-

    您需要设置正确的参数并查看它在 helm chart 中的映射方式(克隆 github repo 并进行搜索)。

    我缺少的是每个控制器需要不同的选举ID。此外,controllerValue 必须设置为每个控制器的特定值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2020-02-24
      • 2021-01-10
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      相关资源
      最近更新 更多