Kubernetes-内部负载平衡安全
我们正在扩展我们的微服务群应用程序,我正在研究Kubernetes以满足我们的需求。在深入研究现代编排之前,我曾以以下方式思考服务发现:Kubernetes-内部负载平衡安全,kubernetes,Kubernetes,我们正在扩展我们的微服务群应用程序,我正在研究Kubernetes以满足我们的需求。在深入研究现代编排之前,我曾以以下方式思考服务发现: 集群是用某种分布式服务注册中心(在我们的例子中是concur)引导的 启动每个服务时都会以某种方式传入service registry端点 每个服务都在注册表中自我注册 每当服务需要一些其他服务地址时,它就会从注册表中获取联系人 在这种情况下,如果任何服务出现故障或某种网络中断,客户端服务可能会继续与下一个接触点进行连接,并最终成功(如果它没有完全断开)。
- 集群是用某种分布式服务注册中心(在我们的例子中是concur)引导的
- 启动每个服务时都会以某种方式传入service registry端点
- 每个服务都在注册表中自我注册
- 每当服务需要一些其他服务地址时,它就会从注册表中获取联系人
- 所有吊舱均在kubernetes中自行注册
- Kubernetes提供单个负载平衡器实例,将流量传递给服务
- 负载平衡器本身可能通过环境变量或DNS查询被发现(这可能会导致令人毛骨悚然的事情,例如从DNS记录中获取端口或只是过时的环境变量)
这让我有点困惑。如果我是正确的(如果是这样的话,请随时告诉我我不是),这基本上会将负载平衡器变成SPOF,它可能会在整个应用程序死机时停止运行。我说得对吗?Kubernetes是否保证此类情况不会发生或将在中得到解决?Kubernetes中的集群内负载平衡器(kube代理)分布在集群的所有节点中。它将所有服务端点同步到节点上的iptables规则。Kube代理由kubelet进行健康检查,如果30秒内不健康,将重新启动(我认为这是可配置的)。实际的流量不会通过kube代理二进制文件,因此如果kube代理被卡住,最糟糕的情况是您对服务端点的看法过时。查看文档和服务文档,以及这个kubernetes网络平台,了解有关kube代理的更多详细信息 对于服务发现,每个服务都可以通过kube dns按名称访问。POD的搜索路径中有kube dns,因此不需要环境变量magic。同一组中有一个完整的DNS->虚拟IP->Pod流量演练
因此,负载平衡器并不是真正的SPOF。它应该主要与运行在同一节点上的工作负载共享命运。Kube dns可以是服务发现的SPOF,但它可以根据您的喜好进行复制。Kubernetes中的集群内负载平衡器(Kube代理)分布在您集群的所有节点中。它将所有服务端点同步到节点上的iptables规则。Kube代理由kubelet进行健康检查,如果30秒内不健康,将重新启动(我认为这是可配置的)。实际的流量不会通过kube代理二进制文件,因此如果kube代理被卡住,最糟糕的情况是您对服务端点的看法过时。查看文档和服务文档,以及这个kubernetes网络平台,了解有关kube代理的更多详细信息 对于服务发现,每个服务都可以通过kube dns按名称访问。POD的搜索路径中有kube dns,因此不需要环境变量magic。同一组中有一个完整的DNS->虚拟IP->Pod流量演练
因此,负载平衡器并不是真正的SPOF。它应该主要与运行在同一节点上的工作负载共享命运。Kube dns可以作为服务发现的SPOF,但无论您喜欢什么,它都可以复制。我现在很困,但我想我明白了。我最不想问的是——iptables实现总是路由到同一个后端,直到重新配置,对吗?一个连接将路由到同一个后端,但多个连接将实现负载平衡。kube proxy为每个后端配置iptables w/
-m statistic--mode random--probability{1/N}
,其中N是后端的数量。我现在很困,但我想我明白了。我最不想问的是——iptables实现总是路由到同一个后端,直到重新配置,对吗?一个连接将路由到同一个后端,但多个连接将实现负载平衡。kube proxy为每个后端配置iptables w/-m statistic--mode random--probability{1/N}
,其中N是后端的数量。