【.com快译】Kubernetes是一个复杂的工具。与大多数复杂工具一样,要从Kubernetes中获得最佳性能可能很棘手。大多数Kubernetes发行版本身并没有针对最佳性能进行微调(即使进行了微调,性能也可能不是您环境的最佳选择)。有鉴于此,下面介绍Kubernetes的性能优化技巧。无论你是刚刚开始搭建集群,还是已经有了生产环境,本文主要介绍提高Kubernetes性能的简单操作。在创建新工作节点之前将资源添加到现有工作节点。提高Kubernetes性能最明显的方法可能是向集群添加更多工作节点。您拥有的工作人员越多,可用于运行工作负载的资源就越多。您还可以提高可用性,因为拥有更多节点可以减少因过多节点失败而导致工作负载开始失败的可能性。但是,如果您想充分利用您的工作节点,最好向现有工作节点添加内存和CPU资源,而不是创建新的工作节点。换句话说,最好有20个节点,每个节点有16GB内存,而不是有40个节点,每个节点有8GB内存。有两个原因。首先,由于主机操作系统,每个节点都有一定的开销。更少的节点意味着以这种方式浪费的资源更少。其次,节点越多,调度程序、kube-proxy和其他组件就越难跟踪所有内容。显然,您需要考虑可用性并确保最小数量的工作节点可以满足可用性目标。但是一旦超过该阈值,您可以通过确保为每个节点分配尽可能多的资源来提高整体性能,而不是试图增加节点总数。但不要走极端(假设您可能不希望单个节点上有24TB的内存),因为如果一个节点发生故障,您可能会失去这些资源。当然,很难说你在决定节点的资源分配上是否有很大的灵活性。如果它们是在云中运行的虚拟机,您可以分配任意数量的资源。如果它是本地虚拟机或物理服务器,那就更棘手了。在Kubernetes集群中使用多个主节点的主要原因是为了高可用性。您拥有的主节点越多,它们全部失败并导致集群崩溃的可能性就越小。但是,添加更多主节点也可以提高性能,因为这为托管在主节点上的基本Kubernetes组件提供了更多托管资源,例如调度程序、API服务器和Etcd。Kubernetes使用所有主节点的集合资源来支持这些组件。因此,增加一个或几个master节点是提高Kubernetes集群性能的好方法。Kubernetes调度程序的一项工作是对工作节点进行“评分”,这意味着它确定哪些工作节点适合处理工作负载。在具有数十个或更多工作节点的集群中,调度程序最终可能会浪费时间检查每个工作节点。为避免这种低效率,可以将percentOfNodesToScore参数设置为小于100的百分比。然后调度程序将仅检查您指定的节点子集。设置资源配额设置资源配额是提高Kubernetes性能的一种简单且非常有效的方法,尤其是在多个团队共享的大型集群中。资源配额限制命名空间可以使用的CPU、内存和存储资源的数量。因此,如果您将集群划分为命名空间,为每个团队分配不同的命名空间,并设置资源配额,这有助于确保所有工作负载都能公平共享资源。资源配额本身并不是一种优化性能的方法,它更像是一种解决嘈杂邻居问题的方法。但它确实有助于确保每个名称空间都拥有充分执行其任务所需的资源。设置限制范围如果您想限制一个工作负载消耗的资源,但该工作负载与其他工作负载运行在同一命名空间中怎么办?这是限制范围派上用场的地方。资源配额限制了每个命名空间可以消耗多少资源,而限制对每个pod或每个容器也是如此。为简单起见,在大多数情况下,一个好的做法是使用命名空间和资源配额来分隔工作负载。但是,如果这种方法不切实际,边界范围可以让您保证各个pod或容器拥有执行任务所需的资源。设置端点切片端点切片是一个鲜为人知的Kubernetes功能,它允许您根据服务和端口组合将网络端点分组在一起。设置完成后,kube-proxy在决定如何路由传输流量时会参考端点切片。在具有大量端点的环境中,端点切片通过减少kube-proxy在集群内路由流量所需的工作量来提高性能。使用极简主机操作系统最后但并非最不重要的是一个基本但有效的提示:确保托管Kubernetes集群的操作系统尽可能最小。运行Kubernetes不需要的任何额外组件都会浪费资源,从而降低集群的性能。您是否可以选择主机操作系统取决于您使用的Kubernetes发行版。如果有选择,请选择占用资源最少的Linux发行版。原标题:7个简单的Kubernetes性能优化技巧
