如何配置Kubernetes以实现最大程度的可扩展性

Kubernetes的设计初衷是要解决管理大规模容器化环境时的困难。不过,这并不意味着Kubernetes在任何的环境下均可以进行扩展。有一些方法可让用户最大限度地发挥Kubernetes的扩展能力,而在扩展Kubernetes时,有一些重要事项和限制须要注意,本文中我将对这些内容进行说明。性能

规模和性能

扩展Kubernetes集群,首先要注意的就是规模和性能之间的平衡。好比,Kubernetes 1.6可被用于多达5000个节点的集群。不过5000个节点并非硬性限制的最大值,它只是一个推荐的节点最大值。在实际使用中,节点数能够远超过5000个,只是这样会致使性能降低罢了。设计

这个问题具体来讲是这样的:Kubernetes有两个服务层级的目标,一个是在一秒内返回99%的API调用。另外一个是在5秒内启动99%的pods。尽管这些目标并非完整的一套性能指标,但它们确实为评估通用集群性能提供了良好的基准。而据Kubernetes所说,超过5000个节点的集群可能没法实现这些服务层级的目标。内存

因此有一点请你们注意,在有些时候,为了发挥Kubernetes的扩展性,你有可能不得不牺牲一部分的性能,这些牺牲对你来讲既多是值得的,也多是不值得的,而这取决于你具体的部署场景。资源

配额(quotas)

在创建很是大规模的Kubernetes集群时,你可能会遇到的一个主要问题就是配额问题。对于基于云的节点尤其如此,由于云服务提供商一般状况下会设置配额限制。部署

这个问题之因此如此重要,是由于部署大规模的Kubernetes集群其实是一个看似简单的过程。config-default.sh文件有NUM_NODES的设置。表面上,你能够经过加大与此设置相关联的值来构建大规模集群。虽然这在某些状况下可行,但最终也可能会遭遇到配额问题。所以,在你打算扩展集群以前,颇有必要就现有的任何配额先和云供应商进行沟通。云供应商不只可让你了解现有配额的状况,并且至少一部分云供应商会赞成用户增长配额限制的请求。虚拟机

当你在评估这些限制的时候,须要注意,尽管配额限制会直接限制你建立Kubernetes集群的数量,然而集群大小的限制更可能是出自与Kubernetes间接相关的配额。例如,提供商可能会限制容许你使用的IP地址数量,或者限制你建立的虚拟机实例数量。而好消息是,主要的几个云服务商已经有屡次和Kubernetes打交道的经验,应该可以帮助你解决这些问题。集群

主节点

除了上述的限制外,还须要考虑的一个问题是集群大小对所需的主节点大小和数量的影响。这些取决于Kubernetes的实现方式,不过要记住的一点是,集群越大,所需的主节点数量也越多,而那些主节点的功能需求也就越高。容器

若是你正在从头构建新的Kubernetes集群,这多是一个无关的问题,毕竟肯定须要的主节点数量是集群规划过程当中的正常阶段。但是若是你打算扩展示有Kubernetes集群,那么你更须要去多加考虑主节点的需求,由于在集群启动时主节点的大小就已经设置好了,并且不可以动态调整。扩展

扩展附加组件(scaling add-ons)

另外一件须要咱们注意的是,Kubernetes定义了附加组件容器的资源限制。这些资源限制可确保附加组件不会消耗过多的CPU和内存资源。云服务

这些有关限制的问题是,它们是基于相对较小的集群进行定义的。若是你在大规模集群中运行某些附加组件,它们可能会须要超额使用更多的资源。这是由于附加组件必须服务更多的节点,也所以须要额外的资源。若是开始出现与组件相关限制的问题,那么你就会看到附加组件一个一个地被kill掉。

总结

Kubernetes集群能够大规模扩展,但可能会遇到与配额和性能相关的问题。所以,在向Kubernetes集群添加大量新节点以前,请必定要仔细考虑横向扩展所出现的各类需求。

相关文章
相关标签/搜索