OS:RHEL7 | k8s版本:1.12 / 13 | kubespray |裸机
我已经部署了一个标准的kubespray裸机集群,我试图了解什么是建议的最简单的部署nginx-ingress-controller的方法,该方法将允许我部署简单的服务。没有提供负载均衡器。我希望我的MASTER公共IP作为服务的终结点。
Github k8s ingress-nginx suggests NodePort服务作为“强制性”步骤,似乎不足以使其与kubespray的 ingress_controller 一起使用。
我能够通过强制kubectl edit svc
来强制使用LoadBalancer服务类型并设置externalIP值作为MASTER公共IP到nginx-ingress-controller中,但是由于缺少负载,它似乎不是正确的解决方案平衡器本身。
使用舵图的相似结果:
helm install -n ingress-nginx stable/nginx-ingress --set controller.service.externalIPs[0]="MASTER PUBLIC IP"
答案 0 :(得分:1)
我能够通过强制kubectl edit svc使其能够强制LoadBalancer服务类型并将外部IP值设置为MASTER公共IP到nginx-ingress-controller中,但是由于缺少负载均衡器本身,它似乎不是正确的解决方案
正确,不是LoadBalancer的目的。它旨在用于通过AWS,GCP或Azure等云提供程序来配置负载均衡器,或者具有某种API的负载均衡器,以便kube-controller-manager可以与其交互。如果查看kube-controller-manager日志,应该会看到一些错误。您使它起作用的方式显然是一种破解,但我想它可以起作用。
实现此目的的标准方法是使用NodePort服务,并在主服务器上安装任何代理/负载均衡器(即nginx或haproxy),以将流量发送到NodePort。请注意,我也不建议主服务器为您服务,因为它已经可以处理一些关键的Kubernetes Pod,例如kube-controller-manager,kube-apiserver,kube-scheduler等。
唯一的例外是MetalLB,您可以将其与LoadBalancer服务类型一起使用。请记住,在撰写本文时,该项目尚处于初期阶段。