我有一个docker镜像,它提供一个简单的静态网页。 我有一个有4个节点的Kubernetes集群(物理服务器不在云端的任何地方)。
我想在4个Kubernetes节点中的2个节点上运行该docker镜像,并让群集外的世界可以访问它并进行负载平衡,并且如果有人死亡,则将其移动到另一个节点。
我是否需要制作一个pod然后是一个复制控制器然后是一个kube代理? 或者我是否需要制作复制控制器并以某种方式公开它? 我需要提供服务吗?
我不需要帮助如何制作任何这些东西,这似乎有很好的记录,但我无法告诉我需要做什么。
答案 0 :(得分:2)
您需要的是公开您的服务(包含 pods ,复制运行/扩展/重新启动控制器强>)。使用部署而不是复制控制器具有额外的好处(主要用于更新应用程序)。
如果您使用的是裸机,那么您可能希望通过type: NodePort
公开您的服务 - 因此群集中的每个节点都会打开一个静态端口,将流量路由到pod。
然后,您可以将负载均衡器指向该端口上的节点,或者为所有Kubernetes节点创建DNS条目。
答案 1 :(得分:1)
你需要:
1)群集中某个节点上的负载均衡器,即nginx
之类的反向代理Pod,用于将流量代理到upstream
。
需要使用hostPort
ports:
- containerPort: 80
hostPort: 80
name: http
- containerPort: 443
hostPort: 443
name: https
2)服务,它将使用Web服务器选择器作为目标。
3)将服务名称(将解析为服务IP)设置为nginx config中的上游
4)部署您的Web服务器Pod,它将使服务器成为目标选择器。
您可能还想查看服务的外部IP http://kubernetes.io/docs/user-guide/services/#external-ips
但我个人从来没有设法让我的裸机群上工作。