同步操作将从 openEuler/rubik 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
当前全球云基础设施服务支出费用庞大,然而数据中心用户集群的平均CPU利用率却很低,存在巨大的资源浪费。因此,提升数据中心资源利用率是当前急需解决的一个重要问题。
将多种类型业务混合部署能够显著提升集群资源利用率,但也带来了共峰问题,该问题会导致部分业务服务质量(QoS)受损。如何在提升资源利用率之后,保障业务QoS不受损是技术上的关键挑战。
为此我们提出了Rubik资源利用率提升解决方案,Rubik字面意思为魔方,魔方由Rubik在1974年发明,故Rubik既是人名也指代魔方,在我们的解决方案中,Rubik象征着能够将服务器管理的有条不紊。
Rubik当前支持如下特性:
拉取源代码:
git clone https://gitee.com/openeuler/rubik.git
进入源码目录编译:
cd rubik
make
制作rubik镜像
make image
将相关部署文件安装到系统中:
sudo make install
echo 1 > /proc/sys/vm/memcg_qos_enable
在master节点上使用kubectl命令部署rubik daemonset:
kubectl apply -f /var/lib/rubik/rubik-daemonset.yaml
通过以上方式部署的rubik将以默认配置启动,若用户需要修改rubik的配置,可通过修改rubik-daemonset.yaml文件中的config.json部分后重新部署rubik daemonset。
以下介绍几个常见配置,其他配置详见配置文档
若在rubik config中配置autoConfig为true开启了Pod自动感知配置功能,用户仅需在部署业务pod时在yaml中通过annotation指定其优先级,部署后rubik会自动感知当前节点pod的创建与更新,并根据用户配置的优先级设置pod优先级。
由于自动配置依赖于来自api-server pod创建事件的通知,具有一定的延迟性,无法在进程启动之前及时完成优先级的配置,导致业务性能可能存在抖动。用户可以关闭自动配置,通过修改kubelet,向rubik发送http请求,在更早的时间点调用rubik配置pod优先级,http接口具体使用方法详见http接口文档
rubik支持在启动时对当前节点Pod QoS优先级配置一致性进行校对,这里的一致性是指k8s集群中的配置和rubik对pod优先级的配置之间的一致性。可以通过config选项autoCheck控制是否开启校对功能,默认关闭。若开启校对Pod优先级功能,启动或重启rubik时,rubik会自动校验并更正当前节点pod优先级配置。
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: qosexample
annotations:
volcano.sh/preemptable: "true" # volcano.sh/preemptable为true代表业务为离线业务,false代表业务为在线业务,默认为false
spec:
containers:
- name: nginx
image: nginx
resources:
limits:
memory: "200Mi"
cpu: "1"
requests:
memory: "200Mi"
cpu: "1"
约束限制详见约束限制文档
我们很高兴能有新的贡献者加入!
在一切开始之前,请签署CLA协议
rubik遵从Mulan PSL v2版权协议
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。