【问题标题】:K8S baremetal nginx-ingress-controllerK8S 裸机 nginx-ingress-controller
【发布时间】:2019-07-29 20:14:25
【问题描述】:

操作系统: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 值设置为 nginx-ingress-controller 的 MASTER 公共 IP 使其工作,但由于缺乏负载均衡器本身,这似乎不是一个正确的解决方案.

使用掌舵图的类似结果:

helm install -n ingress-nginx stable/nginx-ingress --set controller.service.externalIPs[0]="MASTER PUBLIC IP"

【问题讨论】:

  • 嗨,我和你面临同样的问题。您是否设法使其与 NodePort 一起工作?

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


【解决方案1】:

我能够通过 kubectl edit svc 强制 LoadBalancer 服务类型并将 externalIP 值设置为 nginx-ingress-controller 的 MASTER 公共 IP 使其工作,但由于缺乏负载均衡器本身,这似乎不是一个正确的解决方案.

正确,这不是LoadBalancer 的用途。它旨在为 AWS、GCP 或 Azure 等云提供商或具有某种 API 的负载均衡器提供负载均衡器,以便 kube-controller-manager 可以与其交互。如果您查看您的 kube-controller-manager 日志,您应该会看到一些错误。你让它工作的方式显然是一个 hack,但我想它可以工作。

实现这一点的标准方法是使用NodePort 服务并在您的主服务器上使用任何代理/负载平衡器(即 nginx 或 haproxy)来向 NodePorts 发送流量。请注意,我也不建议使用 master 来管理您的服务,因为它已经处理了一些关键的 Kubernetes pod,例如 kube-controller-manager、kube-apiserver、kube-scheduler 等。

唯一的例外是MetalLB,您可以将其与 LoadBalancer 服务类型一起使用。请记住,在撰写本文时,该项目仍处于早期阶段。

【讨论】:

  • MetalLB 怎么样?我的意思是 MetalLB + nginx-ingress-controller ?
  • @YasiuMaster。 MetalLB 应该使用 LoadBalancer 类型。确保您遵循文档并记住该项目处于早期阶段。
猜你喜欢
  • 2021-05-16
  • 2019-03-24
  • 2019-02-24
  • 2019-04-30
  • 2019-11-16
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 2020-01-15
相关资源
最近更新 更多