文档章节

Kubernetes 联邦机制介绍

侯法超
 侯法超
发布于 03/17 15:45
字数 1915
阅读 332
收藏 3

我的博客链接:http://blog.geekidentity.com/k8s/concepts/cluster-administration/federation-cn/

Federation(联邦)

此页面解释了为什么以及如何使用联邦来管理多个Kubernetes集群。

为什么联邦

联合可以轻松管理多个群集。 它通过提供2个主要构件来实现:

  • 跨群集同步资源:联邦可以使多个群集中的资源保持同步。 例如,可以确保多个群集中部署相同的程序。

  • 跨群集发现:联邦提供了自动配置DNS服务器和负载均衡器与所有群集后端的功能。例如,您可以确保可以使用全局VIP或DNS记录来访问多个群集的后端。

联邦的一些其它用处如下:

  • 高可用:通过在群集之间传播负载并自动配置DNS服务器和负载平衡器,联邦会将群集故障的影响降至最低。
  • 避免提供者锁定(lock-in):通过更轻松地跨群集迁移应用程序,联邦会阻止群集提供者锁定(lock-in)。

除非有多个集群,否则联邦并没有任何用。你可能需要多个集群的一些原因有:

  • 低延迟:让多个区域中的集群通过向距离它们最近的集群提供服务来最大限度地减少延迟。
  • 故障隔离:最好有多个小型集群而不是一个单独人大型集群来进行故障隔离(例如:云提供商的不同可用区域中有多个集群)。
  • 可扩展性:单个kubernetes集群具有可扩展性限制(大多数用户不应该这样做,更多详情请参阅Kubernetes Scaling和Performance Goals)。
  • 混合云:可以在不同的云提供商或本地数据中心上拥有多个群集。

注意事项

虽然联邦有很多有吸引力的用处,但也有一些注意事项:

  • 增加网络带宽和成本:联邦控制台监视所有群集以确保当前状态符合预期。如果集群在云提供商或不同云提供商的不同区域(regions)运行,这可能会导致显着的网络成本。
  • 减少跨群集隔离:联邦控制台中的错误可能影响所有群集。通过将联邦控制台中的逻辑保持最简,可以缓解这一问题。 只要可能,它大部分都会委托给控制台的kubernetes集群中。 设计和实施也在安全方面做了很多考虑,并避免发生错误时多集群停机。
  • 成熟度:联邦项目相对较新,不太成熟。 并非所有资源都可用,许多资源仍然是alpha状态。 Issue 88列举了团队忙于解决的系统已知问题。

混合云功能

Kubernetes集群联邦可以运行在不同云提供商(例如Google Cloud,AWS)和本地(例如OpenStack)中的集群。 Kubefed是部署联邦集群的推荐方式。

此后,您的API资源可以跨越不同的集群和云提供商。

设置联邦

为了能够联合多个集群,首先需要设置联邦控制台。按照设置指南进行设置。

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集群相比,单点故障的数量更少。
  • 与跨越可用区域的集群相比,更容易推断单区域群集的可用性属性。
  • 当Kubernetes开发人员正在设计系统时(例如对延迟,带宽或相关故障进行假设),他们假设所有机器都位于单个数据中心或连接非常近。

建议在每个可用区域运行更少的虚拟机群集; 但可以在每个可用区域运行多个群集。

选择每个可用区域较少群集的理由是:

  • 在某些情况下,在一个群集中有更多节点(更少的资源),可以改进Pod的装箱包装。
  • 降低了运维开销(尽管随着操作工具和流程的成熟,优势没那么明显了)。
  • 降低每个集群固定资源花费的成本,例如, apiserver虚拟机(但对于大中型集群整体集群成本的比例很小)。

有多个集群的原因包括:

  • 严格的安全策略要求将一类工作与另一类工作隔离(但请参阅下面的分区集群)
  • 测试群集canary 到新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个节点的集群。 有关更多指导,请参阅构建大型集群

What’s next

© 著作权归作者所有

共有 人打赏支持
侯法超
粉丝 152
博文 57
码字总数 105341
作品 0
大兴
程序员
私信 提问
容器中运行有状态服务? Kubernetes Says “Yes!”

编者按:本文作者是 Diamanti 的产品 VP Mark Balch,他将更多的分享他们向 Kubernetes做出的一些贡献。这篇文章是关于 Kubernetes 1.3 新功能的一系列深入文章中的第五篇。 首先,祝贺 Kube...

时速云
2016/08/08
327
0
跨集群服务——如何利用Kubernetes 1.3实现跨区高可用

编者按:这篇文章是关于Kubernetes 1.3新功能的一系列深入文章的一部分。本文是第七篇。 用户使用Kubernetes 对生产环境上的部署进行弹性伸缩,同时我们听到一个明确的声音:希望跨区域、跨数...

时速云
2016/08/09
729
0
时速云企业级容器PaaS技术沙龙 第九期【深圳站】

Docker容器技术的出现改变了企业应用从开发、构建到发布、运行的整个生命周期,而Kubernetes经历近4年的发展也已成为容器集群管理领域的事实标准,基于容器 + Kubernetes 的新型 PaaS 逐渐成...

wx5af5464b24a76
05/11
0
0
时速云企业级容器PaaS技术沙龙 第九期【深圳站】

Docker容器技术的出现改变了企业应用从开发、构建到发布、运行的整个生命周期,而Kubernetes经历近4年的发展也已成为容器集群管理领域的事实标准,基于容器 + Kubernetes 的新型 PaaS 逐渐成...

时速云
05/14
15
0
Kubernetes 1.5 强势来袭,容器集群管理系统

9月底我们喜迎Kubernetes 1.4版本,现在仍能清楚记得kubeadm带来的震撼。时隔70多天,我们再次怀着激动的心情等候Kubernetes 1.5版本的发布。 在Github上,Kubernetes已拥有接近20,000颗星、...

O0oo0O
2016/12/09
4.2K
13

没有更多内容

加载失败,请刷新页面

加载更多

Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
10
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
17
0

中国龙-扬科
昨天
2
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
11
0
java框架学习日志-6(bean作用域和自动装配)

本章补充bean的作用域和自动装配 bean作用域 之前提到可以用scope来设置单例模式 <bean id="type" class="cn.dota2.tpye.Type" scope="singleton"></bean> 除此之外还有几种用法 singleton:......

白话
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部