我有两个区域,每个区域都有主节点。今天我创建了一个简单的 ingress-nginx 控制器,并成功地将 DNS 指向test.example.com
了zone-1
. 但现在我想在其中创建另一个 nginx-controllerzone-2
并使用云 DNS 指向test.example.com
该区域的公共 IP 地址。我应该采取什么方法?有没有最佳实践?
问问题
80 次
1 回答
0
您的问题不清楚,需要通过任何最小的可重现示例来改进。你可以在这里找到手册。
根据您的主题,您在裸机中使用 Kubernetes 集群,但是您提到使用云 DNS。您从哪里获得云 DNS?
如果您使用的是纯裸机,请考虑使用MetalLB。
MetalLB 为不在受支持的云提供商上运行的 Kubernetes 集群提供网络负载均衡器实现,从而有效地允许在任何集群中使用 LoadBalancer 服务。
但是这种方法还有一些其他的限制需要注意,其中之一是关于 Ingress 状态:
- 因为 NodePort 服务没有得到定义分配的 LoadBalancerIP,NGINX Ingress 控制器不会更新它管理的 Ingress 对象的状态
$ 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
在此处查看更多详细信息
于 2021-11-15T15:08:54.133 回答