K8S裸机Nginx控制器

时间:2019-03-07 20:30:19

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

  

OS:RHEL7 | k8s版本:1.12 / 13 | kubespray |裸机

我已经部署了一个标准的kubespray裸机集群,我试图了解什么是建议的最简单的部署nginx-ingress-controller的方法,该方法将允许我部署简单的服务。没有提供负载均衡器。我希望我的MASTER公共IP作为服务的终结点。

look-up

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"

1 个答案:

答案 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服务类型一起使用。请记住,在撰写本文时,该项目尚处于初期阶段。