前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S 集群创建多个 Ingress-Nginx 实例

K8S 集群创建多个 Ingress-Nginx 实例

作者头像
Jokey
修改2024-02-28 13:24:06
4510
修改2024-02-28 13:24:06
举报
文章被收录于专栏:云原生搬运工云原生搬运工

背景

如果想在集群中部署多个 Ingress-Nginx 实例,或者在一个命名空间下部署多个实例,需要对 ingress-controller 设置额外的启动参数,以免遇到创建的 ingress 资源的 status IP 被同步为空或者被抢占同步为其他实例的 Service IP 的异常行为。

操作步骤

1. 配置关键启动参数。

如多实例不在同一个命名空间,使用如下配置:

代码语言:yaml
复制
...
  - args:
    - /nginx-ingress-controller
    - --controller-class=k8s.io/prod-internal # 控制器类, 必须唯一
    ...
    - --ingress-class=prod-internal # ingress 类, 必须唯一
    ...
...

如多实例在需要在同一个命名空间, 使用如下配置:

代码语言:yaml
复制
...
  - args:
    - /nginx-ingress-controller
    - --election-id=ingress-controller-leader-prod-internal # 选举ID, 必须唯一
    - --controller-class=k8s.io/prod-internal # 控制器类, 必须唯一
    ...
    - --ingress-class=prod-internal # ingress 类, 必须唯一
    ...
...

2. 创建 ingressClass 资源:

代码语言:yaml
复制
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: prod-internal
spec:
  controller: k8s.io/prod-internal

3. 创建 Ingress 资源时使用 ingressClass 字段指定相关实例类:

代码语言:yaml
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test
  namespace: prod
spec:
  ingressClassName: prod-internal  
  rules:
  - host: "foo.bar.com"
    http:
      paths:
      - path: /testpath
        pathType: Prefix
        backend:
          service:
            name: xwd-social
            port:
              number: 80

参考相关 issues:

https://github.com/kubernetes/ingress-nginx/issues/7890

https://github.com/kubernetes/ingress-nginx/issues/8215

参考官文:https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 操作步骤
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档