您的问题不清楚,需要通过任何最小的可重现示例来改进。你可以找到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