操作系统: RHEL7 / k8s版本: 1.12/13 \x{e 010} kubespray =裸金属
我已经部署了一个标准的kubespray裸金属集群,我正在尝试了解部署nginx入口控制器的最简单的推荐方法,它将允许我部署简单的服务。没有提供负载平衡器。我想要我的主公共IP作为我的服务的端点。

Github k8s ingress nginx 建议 NodePort服务是一个“强制性”步骤,这似乎不足以使它与kubespray的ingress_controller一起工作。
我使它能够工作,强迫LoadBalancer服务类型,并通过kubectl edit svc将externalIP值设置为主公共IP到nginx入口控制器,但由于缺乏负载均衡器本身,它似乎不是一个正确的解决方案。
使用helm图表的类似结果:
helm install -n ingress-nginx stable/nginx-ingress --set controller.service.externalIPs[0]="MASTER PUBLIC IP"发布于 2019-03-07 20:52:07
我通过kubectl编辑svc使其能够工作,强制LoadBalancer服务类型并将externalIP值设置为主公共IP到nginx-ingress控制器中,但由于缺乏负载均衡器本身,它似乎不是一个正确的解决方案。
没错,这不是LoadBalancer的目的。它的目的是提供负载均衡器与云提供商,如AWS,GCP,或Azure,或一个负载均衡器,有某种API,以便库贝控制器管理器可以与它接口。如果您查看您的kube-控制器-管理日志,您将看到一些错误。你让它工作的方式,这显然是一个黑客,但我认为它是有效的。
实现此功能的标准方法是使用NodePort服务,并在主服务器上配置任何代理/负载均衡器(即nginx或have )来向NodePorts发送流量。请注意,我不建议主程序在您的服务前面,因为它已经处理一些关键的Kubernetes吊舱,如kube控制器-经理,kube-apiserver,kube-调度器,等等。
唯一的例外是MetalLB,您可以与LoadBalancer服务类型一起使用它。请记住,在撰写这篇文章时,项目还处于早期阶段。
https://stackoverflow.com/questions/55052325
复制相似问题