通过自定义调度优先级配置,实现在vk弹性场景下,扩容时优先调度到本地CCE集群,缩容时优先缩容CCI业务

举报
可以交个朋友 发表于 2024/01/18 15:22:55 2024/01/18
【摘要】 通过自定义调度优先级配置,实现在vk弹性场景下,扩容时优先调度到本地CCE集群,缩容时优先缩容CCI业务

一、背景说明

   

       Virtual Kubelet插件是基于社区标准生态要求开发的插件,作为一种虚拟的kubelet用来连接Kubernetes集群和其他平台的APIVirtual Kubelet的主要场景是将Kubernetes API扩展到无服务器的容器平台(如CCI)。在当前集群的k8s来看,virtual kubelet进程“伪装”成了一个Node

       CCE/CCE turbo提供企业级kubernetes集群服务,客户在集群中纳管ECS节点,部署容器业务,按照购买的ECS虚拟机规格收费。CCI提供serverless container服务,无需创建集群和节点,秒级拉起业务,依据pod规格按秒付费。CCE集群通过vk插件弹性CCI的方式,可以为客户提供标准kubernetes使用体验的同时,还能应对临时性、大规模弹性业务场景。

       对于客户而言,在实际生产管理过程中,CCE/CCE turbo集群主要按照节点收费,属于固定成本;CCI主要依据pod规格,依据Pod运行时间,按秒收费,属于灵活成本。总成本=固定成本+灵活成本,为了进一步降本增效,最佳的策略应该为:

  • 新pod创建时,如果CCE/CCE turbo集群有空闲资源,pod优先调度到CCE/CCE turbo上,如果集群没有可调度资源再通过vk部署到CCI上,调度到CCI的pod按秒计费,以更大限度提高固定成本的负载率;
  • 当deployment缩容时,如果有运行在CCI的pod,应该优先缩容CCI的pod,以减少灵活成本

二、方案说明

    通过ScheduleProfile CRD资源自定义调度优先级。

三、操作示例

    操作前提为以创建CCE/CCE turbo集群,并且安装Virtual Kubelet插件,本示例不赘述相关步骤

1. 创建nginx演示负载

     
     yaml配置如下,仅供参考:
     
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: default
spec:
  replicas: 0
  selector:
    matchLabels:
      app: nginx
      version: v1
  template:
    metadata:
      labels:
        app: nginx
        version: v1
    spec:
      containers:
        - name: container-1
          image: nginx:perl
          resources:
            limits:
              cpu: 250m
              memory: 512Mi
            requests:
              cpu: 250m
              memory: 512Mi
      dnsPolicy: ClusterFirst      
      schedulerName: default-scheduler

2. 创建ScheduleProfile CRD资源

     

apiVersion: scheduling.cci.io/v1
kind: ScheduleProfile
metadata:
  name: nginx
  namespace: default
spec:
  location:
    cci:
      scaleDownPriority: 50  #定义CCI缩容优先级,值越大越先缩容,取值范围[-100, 100],不设置时,默认值为0
    local:
      scaleDownPriority: -50 #定义CCE本地集群缩容优先级,此处cci.scaleDownPriority > local.scaleDownPriority,说明cci缩容优先级比本地集群更高,优先缩容cci pod
  objectLabels:
    matchLabels:  # 通过label关联相关deployment,本示例中 nginx deployment管理label为app:nginx version:v1,请根据具体业务修改
      app: nginx
      version: v1
  strategy: localPrefer  #配置localPrefer本地优先策略 ,集群资源不足时,将Pod部署到CCI

3. 扩容演示:nginx deploymen扩容时,优先部署在CCE集群中

     调整nginx的副本数到20,由于pod的request和集群节点资源情况,第19、20个pod由于本地没有资源才部署到CCI上,第1-18个pod本地有调度资源,优先调度运行在本地集群中。

     

4. 缩容演示:nginx deployment 缩容时,优先缩容弹性至CCI的pod

    缩容2个实例,调度到CCI的2个pod被优先缩容

   

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。