一篇带给你K8s集群稳定性提高手段
发布时间:2022-04-12 09:34:46 所属栏目:云计算 来源:互联网
导读:提升资源利用率 一、 资源浪费场景 1、资源预留普遍存在 50% 以上的浪费 Kubernetes 中的 Request(请求) 字段用于管理容器对 CPU 和内存资源预留的机制,保证容器至少可以达到的资源量,该部分资源不能被其他容器抢占,具体可查看(https://kubernetes.io/d
提升资源利用率 一、 资源浪费场景 1、资源预留普遍存在 50% 以上的浪费 Kubernetes 中的 Request(请求) 字段用于管理容器对 CPU 和内存资源预留的机制,保证容器至少可以达到的资源量,该部分资源不能被其他容器抢占,具体可查看(https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/)。当 Request 设置过小,无法保证业务的资源量,当业务的负载变高时无力承载,因此用户通常习惯将 Request 设置得很高,以保证服务的可靠性。 2、 业务资源波峰波谷现象普遍,通常波谷时间大于波峰时间,资源浪费明显 大多数业务存在波峰波谷,例如公交系统通常在白天负载增加,夜晚负载减少;游戏业务通常在周五晚上开始出现波峰,在周日晚开始出现波谷。 3、不同类型的业务,导致资源利用率有较大差异 在线业务通常白天负载较高,对时延要求较高,必须优先调度和运行;而离线的计算型业务通常对运行时段和时延要求相对较低,理论上可以在在线业务波谷时运行。此外,有些业务属于计算密集型,对 CPU 资源消耗较多,而有些业务属于内存密集型,对内存消耗较多。 二、 提升资源利用率的方法 主要从两方面着手:一是利用原生的 Kubernetes 能力手动进行资源的划分和限制;二是结合业务特性的自动化方案。这里暂时介绍利用k8s原生能力进行资源的划分和限制。 1、 如何资源划分和限制 设想,你是个集群管理员,现在有4个业务部门使用同一个集群,你的责任是保证业务稳定性的前提下,让业务真正做到资源的按需使用。为了有效提升集群整体的资源利用率,这时就需要限制各业务使用资源的上限,以及通过一些默认值防止业务过量使用。 2、 使用 Resource Quota 划分资源 如果你管理的某个集群有4个业务,为了实现业务间的隔离和资源的限制,你可以使用命名空间和 Resource Quota。 Resource Quota 用于设置命名空间资源的使用配额,命名空间是 Kubernetes 集群里面的一个隔离分区,一个集群里面通常包含多个命名空间,例如 Kubernetes 用户通常会将不同的业务放在不同的命名空间里,你可以为不同的命名空间设置不同的 Resource Quota,以限制一个命名空间对集群整体资源的使用量,达到预分配和限制的效果。Resource Quota 主要作用于如下方面,具体可查看(https://kubernetes.io/docs/concepts/policy/resource-quotas/)。 计算资源:所有容器对 CPU 和 内存的 Request 以及 Limit 的总和。 存储资源:所有 PVC 的存储资源请求总和。 对象数量:PVC/Service/Configmap/Deployment等资源对象数量的总和。 (编辑:沧州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐