【问题标题】:Multiple ingress controller different zone bare-metal多个入口控制器不同区域裸机
【发布时间】:2021-12-24 00:12:31
【问题描述】:

我有两个区域,每个区域都有主节点。今天我创建了一个简单的 ingress-nginx 控制器,并成功地将 DNS test.example.com 指向了zone-1 中的一个公共 IP。 但现在我想在zone-2 中创建另一个 nginx 控制器,并将test.example.com 指向该区域的公共 IP 地址,并使用云 DNS。 我应该采取什么方法?有什么最佳做法吗?

【问题讨论】:

    标签: kubernetes kubernetes-ingress nginx-ingress bare-metal-server


    【解决方案1】:

    您的问题不清楚,需要通过任何最小的可重现示例来改进。你可以找到manual here

    根据您的主题,您在裸机中使用 Kubernetes 集群,但是您提到使用云 DNS。您从哪里获得云 DNS?

    如果您使用的是纯裸机,请考虑使用MetalLB

    MetalLB 为不在受支持的云提供商上运行的 Kubernetes 集群提供网络负载均衡器实现,从而有效地允许在任何集群中使用 LoadBalancer 服务。

    但这种方法还有一些其他限制需要注意,其中之一是关于 Ingress 状态:

    • 由于 NodePort 服务未获得按定义分配的 LoadBalancerIP,NGINX 入口控制器不会更新其管理的入口对象的状态
    $ kubectl get ingress
    NAME           HOSTS               ADDRESS   PORTS
    test-ingress   myapp.example.com             80
    

    尽管没有负载均衡器为 NGINX Ingress 控制器提供公共 IP 地址,但可以通过设置 ingress-nginx 服务的 externalIPs 字段来强制所有托管 Ingress 对象的状态更新。

    请看下面的例子:

    给定以下3节点Kubernetes集群(以添加外部IP为例,在大多数裸机环境中该值为)

    $ kubectl get node
    NAME     STATUS   ROLES    EXTERNAL-IP
    host-1   Ready    master   203.0.113.1
    host-2   Ready    node     203.0.113.2
    host-3   Ready    node     203.0.113.3
    

    可以编辑ingress-nginx 服务并将以下字段添加到对象规范中

    spec:
      externalIPs:
      - 203.0.113.1
      - 203.0.113.2
      - 203.0.113.3
    

    这将反过来反映在 Ingress 对象上,如下所示:

    $ kubectl get ingress -o wide
    NAME           HOSTS               ADDRESS                               PORTS
    test-ingress   myapp.example.com   203.0.113.1,203.0.113.2,203.0.113.3   80
    

    查看更多详细信息here

    【讨论】:

    • @WytrzymałyWiktor 还没有,当我运行 kubectl get node -o wide 我收到:EXTERNAL-IP none 我正在运行 metall layer2 配置。
    • @PayamKhaninejad,有更新吗?
    • @Bazhikov 还没有。我正在做其他事情,我会让你知道结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 2018-07-22
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多