云服务器内容精选
-
基于优先级抢占调度的亲和/反亲和示例 在Pod间亲和场景中,不推荐Pod与比其优先级低的Pod亲和。如果pending状态的Pod与节点上的一个或多个较低优先级Pod具有Pod间亲和性,对较低优先级的Pod发起抢占时,会无法满足Pod间亲和性规则,抢占规则和亲和性规则产生矛盾。 在这种情况下,调度程序无法保证pending状态的Pod可以被调度。详情请参见与低优先级Pod之间的Pod间亲和性。 在Pod间反亲和场景中,如果启用优先级抢占,当deploy1与比其优先级低的deploy2亲和,volcano-scheduler为保证业务自运维,将驱逐deploy3,并将deploy1调度到节点上。被驱逐的deploy3将会在新节点准备好后,调度到新节点上。 图2 与低优先级的Pod亲和场景 在Pod间反亲和场景中,volcano-scheduler为减少对其它业务的影响,将不驱逐deploy2和deploy3,而是在新节点准备好后,调度到新节点上。 图3 与低优先级Pod反亲和场景
-
基于优先级调度示例 如果集群中存在两个空闲节点,存在3个优先级的工作负载,分别为high-priority,med-priority,low-priority,首先运行high-priority占满集群资源,然后提交med-priority,low-priority的工作负载,由于集群资源全部被更高优先级工作负载占用,med-priority,low-priority的工作负载为pending状态,当high-priority工作负载结束,按照优先级调度原则,med-priority工作负载将优先调度。 通过priority.yaml创建3个优先级定义(PriorityClass),分别为:high-priority,med-priority,low-priority。 priority.yaml文件内容如下: apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 100 globalDefault: false description: "This priority class should be used for volcano job only." --- apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: med-priority value: 50 globalDefault: false description: "This priority class should be used for volcano job only." --- apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: low-priority value: 10 globalDefault: false description: "This priority class should be used for volcano job only." 创建PriorityClass: kubectl apply -f priority.yaml 查看优先级定义信息。 kubectl get PriorityClass 回显如下: NAME VALUE GLOBAL-DEFAULT AGE high-priority 100 false 97s low-priority 10 false 97s med-priority 50 false 97s system-cluster-critical 2000000000 false 6d6h system-node-critical 2000001000 false 6d6h 创建高优先级工作负载high-priority-job,占用集群的全部资源。 high-priority-job.yaml apiVersion: batch.volcano.sh/v1alpha1 kind: Job metadata: name: priority-high spec: schedulerName: volcano minAvailable: 4 priorityClassName: high-priority tasks: - replicas: 4 name: "test" template: spec: containers: - image: alpine command: ["/bin/sh", "-c", "sleep 1000"] imagePullPolicy: IfNotPresent name: running resources: requests: cpu: "1" restartPolicy: OnFailure 执行以下命令下发作业: kubectl apply -f high_priority_job.yaml 通过 kubectl get pod 查看Pod运行信息,如下: NAME READY STATUS RESTARTS AGE priority-high-test-0 1/1 Running 0 3s priority-high-test-1 1/1 Running 0 3s priority-high-test-2 1/1 Running 0 3s priority-high-test-3 1/1 Running 0 3s 此时,集群节点资源已全部被占用。 创建中优先级工作负载med-priority-job和低优先级工作负载low-priority-job。 med-priority-job.yaml apiVersion: batch.volcano.sh/v1alpha1 kind: Job metadata: name: priority-medium spec: schedulerName: volcano minAvailable: 4 priorityClassName: med-priority tasks: - replicas: 4 name: "test" template: spec: containers: - image: alpine command: ["/bin/sh", "-c", "sleep 1000"] imagePullPolicy: IfNotPresent name: running resources: requests: cpu: "1" restartPolicy: OnFailure low-priority-job.yaml apiVersion: batch.volcano.sh/v1alpha1 kind: Job metadata: name: priority-low spec: schedulerName: volcano minAvailable: 4 priorityClassName: low-priority tasks: - replicas: 4 name: "test" template: spec: containers: - image: alpine command: ["/bin/sh", "-c", "sleep 1000"] imagePullPolicy: IfNotPresent name: running resources: requests: cpu: "1" restartPolicy: OnFailure 执行以下命令下发作业: kubectl apply -f med_priority_job.yaml kubectl apply -f low_priority_job.yaml 通过 kubectl get pod 查看Pod运行信息,集群资源不足,Pod处于Pending状态,如下: NAME READY STATUS RESTARTS AGE priority-high-test-0 1/1 Running 0 3m29s priority-high-test-1 1/1 Running 0 3m29s priority-high-test-2 1/1 Running 0 3m29s priority-high-test-3 1/1 Running 0 3m29s priority-low-test-0 0/1 Pending 0 2m26s priority-low-test-1 0/1 Pending 0 2m26s priority-low-test-2 0/1 Pending 0 2m26s priority-low-test-3 0/1 Pending 0 2m26s priority-medium-test-0 0/1 Pending 0 2m36s priority-medium-test-1 0/1 Pending 0 2m36s priority-medium-test-2 0/1 Pending 0 2m36s priority-medium-test-3 0/1 Pending 0 2m36s 删除high_priority_job工作负载,释放集群资源,med_priority_job会被优先调度。 执行 kubectl delete -f high_priority_job.yaml 释放集群资源,查看Pod的调度信息,如下: NAME READY STATUS RESTARTS AGE priority-low-test-0 0/1 Pending 0 5m18s priority-low-test-1 0/1 Pending 0 5m18s priority-low-test-2 0/1 Pending 0 5m18s priority-low-test-3 0/1 Pending 0 5m18s priority-medium-test-0 1/1 Running 0 5m28s priority-medium-test-1 1/1 Running 0 5m28s priority-medium-test-2 1/1 Running 0 5m28s priority-medium-test-3 1/1 Running 0 5m28s
-
优先级调度与抢占介绍 用户在集群中运行的业务丰富多样,包括核心业务、非核心业务,在线业务、离线业务等,根据业务的重要程度和SLA要求,可以对不同业务类型设置相应的高优先级。比如对核心业务和在线业务设置高优先级,可以保证该类业务优先获取集群资源。当集群资源被非核心业务占用,整体资源不足时,如果有新的核心业务提交部署请求,可以通过抢占的方式驱逐部分非核心业务,释放集群资源用于核心业务的调度运行。 CCE集群支持的优先级调度如表1所示。 表1 业务优先级保障调度 调度类型 说明 支持的调度器 基于优先级调度 调度器优先保障高优先级业务运行,但不会主动驱逐已运行的低优先级业务。基于优先级调度配置默认开启,不支持关闭。 kube-scheduler调度器/Volcano调度器 基于优先级抢占调度 当集群资源不足时,调度器主动驱逐低优先级业务,保障高优先级业务正常调度。 Volcano调度器
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格