如何解决在多个容器中运行的相同微服务如何自我识别
不确定这是否是一个愚蠢的问题。当同一个应用程序/服务在多个容器中运行时,它们如何向zookeeper/etcd报告并识别自己?这样负载均衡器就知道不同的实例并知道与谁交谈,在哪里探测和调度,等等......?或者服务实例会在它们的标识中使用容器中的一些 id?
提前致谢
解决方法
首先,让我用几句话解释一下how it works:
基本构建块从 Pod 开始,它只是一种可以按需创建和销毁的资源。由于 Pod 可以移动或重新安排到另一个节点,因此分配给该 Pod 的任何内部 IP 都可能随着时间的推移而改变。 如果我们连接到这个 Pod 来访问我们的应用程序,它在下一次重新部署时将无法工作。为了在不依赖任何内部 IP 的情况下使 Pod 可访问到外部网络或集群,我们需要另一个抽象层。 K8s 通过我们所谓的服务部署
提供了这种抽象。通过这种方式,您可以创建一个将由负载均衡器等识别的网站。
服务为跨集群统一工作的 Pod 提供网络连接。 服务发现是确定如何连接到服务的实际过程。
您还可以找到有关服务in the official documentation的一些信息:
将在一组 Pods 上运行的应用程序公开为网络服务的抽象方法。 使用 Kubernetes,您无需修改应用程序即可使用不熟悉的服务发现机制。 Kubernetes 为 Pod 提供了自己的 IP 地址和一组 Pod 的单一 DNS 名称,并且可以在它们之间进行负载平衡。
Kubernetes 支持 2 种主要的查找服务模式 - 环境变量和 DNS。您可以阅读有关此主题的更多信息 here 和 here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。