
[英]how to check if kubernetes services like mysql, rabbitmq are reachable by the deployed app
[英]How to use kubernetes replication controllers to replicate message-based services
我们通常使用消息传递将消息发送到解耦的服务。 这使服务发现成为非问题,因为(例如,在RabbitMQ中使用AMQP)您可以使用代理的路由功能将消息分派到提供正确服务的正确队列。 负载平衡也由消息代理处理。
输入kubernetes。
在谈论服务复制和重新生成失败的服务时,通常会列出用例,即您的客户端使用诸如HTTP的活动协议来联系服务,即使该服务异步处理请求也是如此。 在这种情况下,拥有复制控制器是很自然的事,该控制器管理一组服务和一个入口点以在它们之间进行负载平衡。
我喜欢kubernetes的直观概念,例如滚动部署,但是如何控制没有http界面的野兽呢?
更新:我不是在尝试建立消息代理群集。 我正在将消息消费者视为服务。 服务客户端不直接连接到服务,而是将消息发送到消息代理。 消息代理在某种程度上充当负载平衡器,并将消息分派给订阅的队列使用者。 这些消费者实施服务。
我的问题吸引了一个事实,即演示中的大多数使用模式都处理通过http调用的服务,而kubernetes在这里很好地为这些服务创建了服务代理和复制控制器。 是否可以为我的服务创建复制控制器,该服务本身没有http接口,并具有滚动更新和最少实例的所有好处?
我不确定我是否完全理解这个问题。 您是否在问如何将Kubernetes与RabbitMQ结合使用? 或如何设置RabbitMQ集群: https : //www.rabbitmq.com/clustering.html ? 或滚动更新如何与RabbitMQ交互? 或者是其他东西?
我认为您应该能够为每台服务器创建一个服务和一个复制控制器,然后在群集配置文件中使用服务DNS名称。 这也是用于运行Zookeeper的当前方法。 我们有一个长期的TODO来简化此操作( https://github.com/GoogleCloudPlatform/kubernetes/issues/260 ),但是当前的方法应该很简单。 您确实失去了使用单个kubectl滚动更新命令来更新集群的能力,但是直接更新各个实例也很简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.