详情页标题前

腾讯云容器服务应用启动时 CPU 突增同尘科技

详情页1

简介

在通常情况下,应用程序在发布或重启过程中可能会出现 CPU 使用率波动增高,甚至可以消耗掉集群所有资源的现象。这主要是因为在应用程序启动时,Java虚拟机(JVM)需要重新进行类加载和对象初始化操作,导致 CPU 在整个过程中承担更多的编译任务。在 Kubernetes 的场景中,应用程序都是通过 Pod 中的容器部署,每个容器都可以设置 Request 和 Limit 来控制资源使用的下限和上限。如果 Limit 设置的过低,就容易导致上述应用启动缓慢,甚至因为资源不够无法启动;如果 Limit 设置得过高,那后续在应用的运行过程中,又容易使用过量资源,与其他应用形成资源竞争关系。

功能说明

使用方式

设置应用的启动时间,以及 Limit 扩大的倍数,在应用启动的初始阶段增加应用使用资源的上限。

注意事项

业务启动时资源突增的能力依赖原生节点的内核,该功能仅支持在 原生节点 中使用。在使用该功能之前,需要提前安装 QoS Agent。确保 QoS Agent 组件版本在1.1.4及以上。

功能原理

在 Kubernetes 中,资源限制(Limit)是通过 CPU cgroup 控制模块中的 cpu.cfs_period_us 和 cpu.cfs_quota_us 两个配置来实现的。Kubernetes 会为容器的 cgroup 配置这两个信息。通过调整 Pod 所在节点的 cgroup 中 cpu.cfs_quota_us 的数值,实现临时资源突增,从而增加应用在启动阶段的资源使用上限。

使用方式

安装组件

1. 登录 容器服务控制台,在左侧导航栏中选择集群。2. 在集群列表中,单击目标集群 ID,进入集群详情页。3. 选择左侧菜单栏中的组件管理,在组件管理页面单击新建。4.新建组件管理页面中勾选 QoS Agent。5. 单击完成即可安装组件。

开启应用启动时资源突增能力

1.组件管理页面,查看 QoS Agent 组件版本。确保 QoS Agent 组件版本在1.1.4及以上。如果版本低于此要求,请单击组件右侧的升级进行升级。如下图所示:

腾讯云容器服务应用启动时 CPU 突增同尘科技


2. 通过 kubectl 创建 PodQoS CRD 对象,将其应用到需要启动突增的工作负载上。示例代码如下:

apiVersion: ensurance.crane.io/v1alpha1kind: PodQOSmetadata:  name: exceedspec:  labelSelector:    matchLabels:      app: 0kusa3 # 匹配到需要启动突增的工作负载上的标签  resourceQOS:    cpuQOS:      limitExceed:        time: 5    # 应用启动多长时间需要突增 Limit。单位:mins        value: "1.2"    # Limit 突增的倍数

3. 创建工作负载。示例代码如下:

apiVersion: apps/v1kind: Deploymentmetadata:  name: nginx-deployment  labels:    app: 0kusa3    # 和 PodQoS 对象中的 matchLabels 要保持一致spec:  replicas: 3  selector:    matchLabels:      app: 0kusa3  template:    metadata:      labels:        app: 0kusa3    spec:      containers:      - name: nginx        image: nginx:1.14.2        ports:        - containerPort: 80

4. 登录 Pod 所在节点,在节点上查看容器对应的 cfs_quota 数值。路径:

/sys/fs/cgroup/cpu/kubepods/burstble/pod//cpu.cfs_quota_us

示例:

/sys/fs/cgroup/cpu/kubepods/burstable/pod44ad741a-cbe6-48a2-a5b7-b6920df2fe40/645a0a88f23c2aca4b207ec2c3d83bbe760a5f2a4db812938042df5cb5054e18/cpu.cfs_quota_us    

其中: pod:来自 Pod YAML 中的 UID 字段。:来自 Pod YAML 中的 containerID 字段。在创建 PodQoS 之前,cpu.cfs_quota_us 的值为 cpu.cfs_period_us * Limit,例如:100000 * 0.5核 = 50000。

腾讯云容器服务应用启动时 CPU 突增同尘科技


在创建 PodQoS 之后,当 Pod 重建后的前 5 分钟内,新的 cpu.cfs_quota_us 值为旧值乘以 1.2,即 Limit 被放大了。注意:Pod 重建后 Pod ID 会变化。

腾讯云容器服务应用启动时 CPU 突增同尘科技




容器服务官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/148188.html

(0)
上一篇 2023年12月9日 下午12:51
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云对象存储单链接限速

    简介 本文档提供关于调用上传下载接口时对链接进行限速。 使用说明 限速值设置范围为819200 – 838860800,单位默认为 bit/s,即800Kb/s – 800Mb/s,如果超出该范围将返回400错误。说明关于单链接限速的更多说明,请参见 单链接限速 开发者指南。 示例一:上传时对单链接限速 cos.putObject({…

    腾讯云 2023年12月9日
  • 腾讯云内容分发网络CDN域名归属权验证

    什么情况下需要进行域名归属校验? 1. 域名首次接入时,例如:a.example.com;该域名接入后,同级域名及次级域名如b.example.com视为已有权限域名,默认可接入,无需校验。但上级域名如example.com接入仍需校验;2. 子域名已在其他账号下接入时,需进行域名归属校验验证当前域名归属权,如验证通过,可通过取回域名接入当前账号;3. 同级…

    2023年12月9日
  • 阿里云负载均衡释放负载均衡实例-云淘科技

    您可以根据需要删除CLB实例,避免不必要的计费。删除CLB实例不会删除后端ECS,也不会影响后端ECS的运行。 前提条件 在释放CLB实例前,确保您已经关闭了删除保护开关。 背景信息 释放CLB实例前,您需要了解以下信息:警告 如果您已经将一个域名解析至CLB实例的公网服务地址,在释放CLB实例之前,建议先将该自定义域名解析至另外一个负载均衡实例,避免业务中…

    2023年12月10日
  • 我参考ADB MySQL湖仓版 实例文档 操作 但是提示有问题 ,怎么解决? -云小二-阿里云

    我参考ADB MySQL湖仓版 实例文档 操作 但是提示有问题 ,怎么解决?

    2023年12月13日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS安装.NET Core SDK-云淘科技

    使用.NET Core SDK进行日志服务各类操作前,您需要安装.NET Core SDK。本文介绍.NET Core SDK的安装方法。 前提条件 已开通日志服务。更多信息,请参见开通日志服务。 已创建并获取AccessKey。更多信息,请参见访问密钥。 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行AP…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。