前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7个简单的Kubernetes性能优化技巧

7个简单的Kubernetes性能优化技巧

作者头像
Java架构师必看
发布2020-08-17 09:52:27
1.7K0
发布2020-08-17 09:52:27
举报
文章被收录于专栏:Java架构师必看
Kubernetes是一个复杂的工具。与大多数复杂工具一样,从Kubernetes获得最佳性能可能很棘手。大多数Kubernetes发行版都没有经过微调来最大化性能(即使这样做,也可能不会针对您的环境进行优化来对其进行调整)。

考虑到这一现实,请继续阅读有关Kubernetes性能优化的技巧。无论您是刚开始构建集群,还是已经建立并运行了生产环境,我们都将专注于可以提高Kubernetes性能的简单操作。

1个在创建新的工作节点之前,向现有工作节点添加资源

改善Kubernetes性能的最明显的方法可能是在集群中添加更多工作节点。您拥有的工作人员越多,可用于驱动工作负载的资源就越多。您还可以获得可用性的提高,因为拥有更多的节点可以减少出现如此多的节点而导致工作负载开始出现故障的机会。

但是,如果您想最大程度地利用工作节点,则可以通过向现有工作节点添加内存和CPU资源而不是创建新节点来获得更大收益。换句话说,最好是拥有20个节点,每个节点具有16 GB的内存,而不是40个节点,每个节点具有8 GB的内存。

这有两个原因。首先,由于主机操作系统,每个节点都有一定量的开销。节点越少意味着以这种方式浪费的资源越少。其次,您拥有的节点越多,调度程序,kube-proxy和其他组件就越难以跟踪所有内容。

显然,您需要考虑可用性,并确保您拥有最少数量的工作节点来满足您的可用性目标。但是,一旦超过该阈值,通过确保为每个节点分配尽可能多的资源,而不是尝试使整个节点的数量最大化,您将获得更好的整体性能。只是不要极端(例如,您可能不希望单个节点上有24 TB的内存),因为如果节点发生故障,您可能会失去这些资源。

当然,在确定节点的资源分配时,您可能有或没有很大的灵活性。如果它们是在云中运行的虚拟机,则可以分配任意数量的资源。如果它们是本地虚拟机或(gasp)物理服务器,这将比较棘手。

2使用多个主节点

在Kubernetes集群中使用多个主服务器的主要原因是为了实现高可用性。您拥有的主机越多,它们全部失败并导致集群崩溃的可能性就越小。

但是,添加更多的主服务器也会带来性能优势,因为它为主服务器上托管的基本Kubernetes组件(如调度程序,API服务器和Etcd)提供了更多的托管资源。Kubernetes将使用所有主节点的集体资源为这些组件供电。

因此,添加一个主节点(或两个或四个)是提高Kubernetes集群性能的好方法。

3设置工作节点得分限制

Kubernetes调度程序要做的部分工作是“对”工作节点进行“评分”,这意味着它确定哪些工作节点适合处理工作负载。在具有几十个或更多工作节点的集群中,调度程序最终可能会浪费时间检查每个工作节点。

为了避免这种低效率,您可以将percentOfNodesToScore参数设置为低于100的百分比。然后,调度程序将仅检查您指定的节点的百分比。

4设置资源配额

设置资源配额是提高Kubernetes性能的一种简单但非常有效的方法,尤其是在多个团队共享的大型集群中。资源配额设置了对给定名称空间可以使用的CPU,内存和存储资源数量的限制。

因此,如果将集群划分为多个命名空间,为每个团队分配一个不同的命名空间,并为每个命名空间设置资源配额,则将有助于确保所有工作负载都能公平分配资源。

资源配额本身并不是性能优化;它们更像是解决嘈杂邻居问题的方法。但是它们确实有助于确保每个名称空间都具有充分执行其工作所需的资源。

5设定极限范围

如果要限制工作负载消耗的资源,但该工作负载与其他工作负载在同一命名空间中运行,该怎么办?这就是极限范围。

资源配额设置了每个命名空间可以消耗多少资源的限制,而限制范围则针对每个容器或每个容器执行相同的操作。

为了简单起见,大多数情况下的最佳实践是使用名称空间和资源配额对工作负载进行分段。但是,如果您处在这种方法不可行的情况下,则限制范围将使您能够保证各个吊舱或容器具有执行所需的所需资源。

6设置端点切片

端点切片是很少讨论的Kubernetes功能,可让您根据服务和端口组合将网络端点分组在一起。设置它们后,kube-proxy在决定如何路由流量时会引用它们。

在具有大量端点的环境中,端点切片可以通过减少kube-proxy为在群集内路由流量而需要执行的工作量来提高性能。

7使用极简主义主机操作系统

最后但并非最不重要的一点是一个基本但有效的技巧:确保托管Kubernetes集群的操作系统尽可能少。运行Kubernetes并非必须的任何额外组件都会导致资源浪费,从而降低群集的性能。

根据您使用的Kubernetes发行版,您是否可以选择主机OS。但是,如果这样做,请选择占用资源最少的Linux发行版。

结论

Kubernetes旨在自动执行许多操作。但是它不会自动执行自己的绩效管理。要从专用于Kubernetes的基础架构中获得最大性能,就需要精通如何设计基础架构以及如何配置某些Kubernetes组件。

您还可以利用Kubernetes服务(例如Platform9 Managed Kubernetes)简化工作,该服务已经过优化,扩展性好,并为每种工作负载提供了解决方案。如果您想试用该平台,可以在此处注册沙盒。

Java架构师(20)k8s(10)

本文由 Java架构师必看 作者:system_mush 发表,其版权均为 Java架构师必看 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1个在创建新的工作节点之前,向现有工作节点添加资源
  • 2使用多个主节点
  • 3设置工作节点得分限制
  • 4设置资源配额
  • 5设定极限范围
  • 6设置端点切片
  • 7使用极简主义主机操作系统
  • 结论
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档