最新文章

认识一下 Kubernetes 多集群服务 API

认识一下 Kubernetes 多集群服务 API

由于各种原因,采用 Kubernetes 的企业内部存在着几个、几十甚至上百个集群。比如处于研发流程上的考虑,不同环境下都存在独立的集群;监管层面的考虑,就地存储的用户数据需要搭配应用集群;单个集群的容量限制,无法满足业务体量;可用性要求的多云、多地、多中心;Kubernetes 原地升级成本大进而考虑新建集群,等等各种原因。然而,Kubernetes 设计之初并没有考虑多集群。 这些集群彼此之间看似独立,但又有着千丝万缕的关系。比如高可用性的多集群,实现了集群级的灾备,但集群中的服务如何实现跨集群的故障迁移? 我们先看下集群内的应用如何对集群外提供服务。由于 Kubernetes 网络隔离特性,存在着天然的网络边界,需要借助某些方案(如 Ingress、NodePort)来将服务暴露到集群外。虽然解决了连通性的问题,但是服务的注册和发现还无法解决。 通常我们将 Service 作为 Kubernetes 平台的服务注册和发现,今天要介绍的 Multi-Cluster Service(多集群服务 API,简称 MCS API) 则可以看成是 跨 Kubernetes 集群的服务注册发现。 MCS 介绍 MCS API 来自 Kubernetes Enhancement Proposal KEP-1645: Multi-Cluster Services API 目前还处于提案阶段。 MCS 的目标是既然多集群不可避免,那就定义一套 API 来实现服务的跨集群注册和发现,并且这套 API 足够轻量级,做到能够像访问本地服务一样访问其他集群的服务。