我需要将运行HAProxy的Docker部署到IBM Cloud(Bluemix)Kubernetes服务中,该Docker已经在内置docker上工作 . 我对如何暴露80和443感到有些迷茫 . 在简单的简单码头工具中,它非常简单但在Kubernetes或者至少在IBM Cloud中看起来很复杂 . 我不需要负载 balancer ,虚拟主机或任何额外的配置,因为HAProxy将负责它 . 只需复制(移动)我的内部运行HAProxy将端口80和443暴露为bluemix . (由于多种原因,我想使用HAproxy,因此这里的请求非常具体:在IBM Cloud Kubernetes服务中将HAProxy端口443和80暴露给永久IP地址的最简单方法 .
我可以有一个基本的例子yaml kubectl文件吗?谢谢
3 回答
NodePort
要在两个环境中保持相同的映像运行,您可以为HAProxy容器定义Deployment,并通过NodeIP或clusterIP上的NodePort定义Service . NodePort在概念上类似于运行
docker run -p n:n
.IP:NodePort需要外部访问,HAProxy将从那里接管 . Here's a sample HAProxy setup使用AWS ELB将外部用户引导到节点 . 大多数人不建议通过NodePort运行服务,因为Kubernetes提供了提供更多集成的替代方法 .
LoadBalancer
LoadBalancer专门用于 Cloud 提供商负载均衡器服务的自动配置 . 我不相信IBM Cloud负载均衡器在Kubernetes中有任何支持,也许IBM已经添加了一些东西?如果他们有你可以使用它而不是
NodePort
来到您的服务 .Ingress
如果您在本地运行Docker而在外部运行Kubernetes,那么您已经在窗口中抛出了一致性,因此您可以使用基于HAProxy的Ingress Controller设置Ingress,有一些可用:
https://github.com/appscode/voyager
https://github.com/jcmoraisjr/haproxy-ingress
这为您提供了标准的Kubernetes抽象,了解如何管理服务的入口,但在下面使用HAProxy . 这不是你的HAProxy图像,你可能可以像在HAProxy图像中那样为HAProxy Ingress配置相同的东西 .
Voyagers docco非常好:
IBM Cloud为负载均衡器和Ingress提供了内置解决方案 . 文档包括两者的样本YAML .
负载均衡器:https://console.bluemix.net/docs/containers/cs_loadbalancer.html#loadbalancer
Ingress:https://console.bluemix.net/docs/containers/cs_ingress.html#ingress
如果您需要终止或想要使用路由而不是IP地址来访问您的HAProxy,那么Ingress将是最佳选择 . 如果这些选项无关紧要,那么我建议从提供的负载均衡器开始,看看它是否符合您的需求 .
请注意,负载均衡器和Ingress都需要付费群集 . 对于精简集群,只有NodePort可用 .
这是一个示例YAML,它部署IBM Liberty并通过负载均衡器服务公开它 .
如果您可以在应该公开端口80/443的每个节点上运行此HAProsy,那么请考虑使用
hostNetwork: true
运行DaemonSet . 这将允许您创建直接在节点网络上打开80和443的pod . 如果群集中具有负载均衡器支持,则可以使用Service of LoadBalancer类型 . 它将从高节点端口转发,例如ie . 32080到您的后备haproxy pods,并自动配置前面的LB,为您提供外部IP,并从该IP转发80/443到您的高节点端口(再次,假设您的kube部署支持使用LB服务)