我的博客链接:http://blog.geekidentity.com/k8s/concepts/cluster-administration/federation-cn/
此页面解释了为什么以及如何使用联邦来管理多个Kubernetes集群。
联合可以轻松管理多个群集。 它通过提供2个主要构件来实现:
跨群集同步资源:联邦可以使多个群集中的资源保持同步。 例如,可以确保多个群集中部署相同的程序。
跨群集发现:联邦提供了自动配置DNS服务器和负载均衡器与所有群集后端的功能。例如,您可以确保可以使用全局VIP或DNS记录来访问多个群集的后端。
联邦的一些其它用处如下:
除非有多个集群,否则联邦并没有任何用。你可能需要多个集群的一些原因有:
虽然联邦有很多有吸引力的用处,但也有一些注意事项:
Kubernetes集群联邦可以运行在不同云提供商(例如Google Cloud,AWS)和本地(例如OpenStack)中的集群。 Kubefed是部署联邦集群的推荐方式。
此后,您的API资源可以跨越不同的集群和云提供商。
为了能够联合多个集群,首先需要设置联邦控制台。按照设置指南进行设置。
一旦设置了控制台,就可以开始创建联邦API资源。 以下指南详细解释了一些资源:
API参考文档列出了联邦apiserver支持的所有资源。
Kubernetes 1.6版支持级联删除联邦资源。当从联邦控制台中删除资源时,还会删除所有基础集群中的相应资源。
在使用REST API时,级联删除在默认情况下不会启用。要启用它,请在使用REST API从联邦控制台中删除资源时设置DeleteOptions.orphanDependents=false选项。 使用kubectl delete可以在默认情况下启用级联删除。还可以通过运行kubectl delete –cascade=false来禁用它
注意:Kubernetes版本1.5包括对联邦资源子集的级联删除支持。
在诸如Google Compute Engine或Amazon Web Services之类的IaaS供应商中,虚拟机存在于zone 或AZ中。 我们建议Kubernetes集群中的所有虚拟机应位于相同的可用区域中,因为:
建议在每个可用区域运行更少的虚拟机群集; 但可以在每个可用区域运行多个群集。
选择每个可用区域较少群集的理由是:
有多个集群的原因包括:
选择Kubernetes集群的数量一般是不会变的,只是偶尔会重新审视(revisited occasionally)。 相比之下,集群中的节点数量和服务中的pod数量可能会随着负载和业务增长频繁变化。
要选择集群数量,首先需要确定您需要在哪些区域(region)进行部署,以便在Kubernetes上运行的服务为所有最终用户提供最低的延迟,(如果使用内容分发网络,则CDN- 托管内容不需要考虑)。 法律问题也可能会对此产生影响。 例如,一家拥有全球客户群的公司可能会决定在美国,欧盟,美联社和南非地区拥有集群。需要使用的区域的数量为R。
其次,确定在不影响整体业务的情况下,最多可以容忍有多少个群集同时不可用。将不最多不可用集群数量设为U.如果您不确定,那么U=1是一个不错的选择。
如果允许负载平衡在发生集群故障时将流量引导至任何区域,则至少需要较大的R或U + 1集群。 如果不是(例如,如果要确保发生群集故障时所有用户的延迟较低),则需要具有R *(U + 1)群集(每个R区域中的U + 1)。 无论如何,尝试将每个集群放入不同的区域。
最后,如果需要构建一个比Kubernetes的最大建议节点数量多的集群,则可能需要多个群集。 Kubernetes v1.3支持最多1000个节点的群集。 Kubernetes v1.8支持多达5000个节点的集群。 有关更多指导,请参阅构建大型集群。