云服务器内容精选
-
分钟依赖分钟 规则:分钟是最小调度粒度,没有自然分钟周期的概念,依赖策略是往前推一个调度周期找依赖实例。 举例1:A依赖B,为同周期分钟作业,在同一时间点,B执行完后开始执行A。 图2 分钟依赖分钟举例一 举例2:A依赖B,A为15分钟周期,B为10分钟周期,A往前推15分钟(包括当前启动整点),依赖范围内的B实例,在2:15分执行A任务依赖1个B实例(2:10分),2:30执行的A任务依赖两个B实例(2:20和2:30)。它的边界范围为(0分:15分],前开后闭区间。 图3 分钟依赖分钟举例二
-
小时依赖小时 规则:每个自然小时周期内的实例产生依赖,区间边界是自然小时[00:00, 00:59]。 举例1:A依赖B,在同自然小时内,无论A、B设置在什么时间点执行,A永远在B之后执行。 图8 小时依赖小时举例一 举例2:A依赖B,A在每小时5分0秒执行,B在12分执行,A会等B执行完成后执行。 图9 小时依赖小时举例二 离散小时依赖离散小时 : 自然天内,依赖关系中的上游、下游任务数量一致,上下游周期数一致。 自然天内,上下游任务数量不一致,下游任务运行当天生成的周期实例,将根据就近原则挂载依赖,依赖距离自己定时运行时间最近的上游实例。从index向前找上游依赖实例,依赖上游一整个区间内的实例;向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例。
-
小时依赖分钟 规则:小时作业依赖分钟作业,往前推到上一个自然小时范围内的所有分钟级实例。区间是前开后闭。 举例1:A依赖B,A为小时作业,每个小时0分执行,B为15m分钟作业;B执行完后执行A。 图6 小时依赖分钟举例一 举例2:A依赖B,A为小时作业,启动时间3:20,B为15m作业,会依赖往前推一个小时内的所有B实例。 图7 小时依赖分钟举例二 如果勾选“最近”的按钮,小时作业只依赖所选作业最近的一个运行实例,比如A在3:20开始调度,A依赖B最近的3:00调度的一个运行实例。 如果作业A在零点进行调度,所依赖作业B可以是昨天的分钟任务。
-
天依赖小时 规则:按自然天,天周期作业实例依赖一天内所有小时作业的实例。A为天作业,依赖B小时作业,A依赖所有B在自然天内的实例,A会在最后一个B小时作业实例执行完成后执行。 举例:A依赖B,A配置的调度时间为每天17点执行一次,B从0点开始,每5个小时执行一次,那么A实际执行时间为JobB在20点的实例运行完之后开始运行。 图12 天依赖小时 如果勾选“最近”的按钮,天作业只依赖所选作业最近的一个运行实例,比如A在每天17点开始调度,A依赖B最近的15:00调度的一个运行实例。
-
天依赖天 规则:按自然天内的实例进行依赖,不会跨天向前推找依赖实例。在同自然天内A依赖B ,无论A、B设置在什么时间点执行,A永远在B之后执行。 天区间为[00:00:00, 23:59:59] 举例1:A依赖B,A在2:00执行,B在3:00执行,A会等B在3:00执行完成后执行。 图13 天依赖天举例一 举例2:A依赖B,A在5:00执行,B在3:00执行,A在B执行完成后,在5:00执行。 图14 天依赖天举例二
-
调度优先级介绍 节点池软亲和调度,是通过节点池上的标签(Label)进行软亲和,具体是通过给每一个节点进行打分的机制来排序筛选最优节点。 原则:尽可能把Pod调度到带有相关标签的节点上。 打分公式如下: score = weight * MaxNodeScore * haveLabel 参数说明: weight:节点池软亲和plugin的权重。 MaxNodeScore:节点最大得分,值为100。 haveLabel:节点上是否存在插件中配置的label,如果有,值为1,如果节点上没有,值为0。
-
配置Volcano节点池软亲和调度策略 在节点池上配置用于亲和调度的标签。 登录CCE控制台。 单击集群名称进入集群,在左侧选择“节点管理”,在右侧选择“节点池”页签。 单击节点池名称后的“更新”,在弹出的“更新节点池”页面中配置参数,在“K8s标签”中配置对应的标签。 示例如下: 单击左侧导航栏的“插件中心”,在右侧找到Volcano调度器,单击“安装”或“编辑”,并在“参数配置”中设置Volcano调度器配置参数。 { "ca_cert": "", "default_scheduler_conf": { "actions": "allocate, backfill, preempt", "tiers": [ { "plugins": [ { "name": "priority" }, { "name": "gang" }, { "name": "conformance" } ] }, { "plugins": [ { "name": "drf" }, { "name": "predicates" }, { "name": "nodeorder" } ] }, { "plugins": [ { "name": "cce-gpu-topology-predicate" }, { "name": "cce-gpu-topology-priority" }, { "name": "cce-gpu" }, { // 开启节点池亲和性调度 "name": "nodepoolaffinity", // 节点池亲和性调度权重及标签设置 "arguments": { "nodepoolaffinity.weight": 10000, "nodepoolaffinity.label": "nodepool1=nodepool1" } } ] }, { "plugins": [ { "name": "nodelocalvolume" }, { "name": "nodeemptydirvolume" }, { "name": "nodeCSIscheduling" }, { "name": "networkresource" } ] } ] }, "server_cert": "", "server_key": "" } 完成以上配置后,单击“确定”。
-
小时依赖小时 规则:每个自然小时周期内的实例产生依赖,区间边界是自然小时[00:00, 00:59],依赖策略是调度周期长的作业,往前推一个调度周期找依赖实例。 A依赖B,在同自然小时内,无论A、B设置在什么时间点执行,A永远在B的前一周期完成后执行。 举例:A在每小时5分0秒执行,B在12分执行,A会在每小时5分时依赖B上一小时生成的实例。 离散小时依赖离散小时 : 自然天内,依赖关系中的上游、下游任务数量一致,上下游周期数一致。 自然天内,上下游任务数量不一致,下游任务运行当天生成的周期实例,将根据就近原则挂载依赖,依赖距离自己定时运行时间最近的上游实例。从index向前找上游依赖实例,依赖上游一整个区间内的实例;向前未找到依赖的实例时,需要向后找,向后查找时,只依赖最近的一个实例。
-
任务场景地图模式操作说明 选中某个任务场景时,右侧会显示出对应场景筛选时间下所有待执行、执行中、已完成的任务/子任务 如果某个人的执法仪有上报位置,地图上有头像,点击头像后显示此人作为执行人的所有当天要执行的任务 鼠标悬停在任务上会显示:任务名称、计划开始时间-计划完成时间,任务场景名称、优先级、状态行信息 图1 任务场景地图模式 图2 任务悬停信息展示 父主题: 如何查看智能调度看板-地图模式?
-
默认应用扩缩容优先级策略 使用默认应用扩缩容优先级策略的情况下,集群中存在两个默认CR资源: Balancer CRD对应的CR资源 apiVersion: autoscaling.volcano.sh/v1alpha1 kind: Balancer metadata: name: default-balancer spec: balancerPolicyTemplateName: default-balancerpolicytemplate targets: - namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: Exists weight: 10 表1 Balancer对象关键参数说明 字段 含义 类型 备注 metadata.name 名称 String 必填字段。 spec. balancerPolicyTemplateName 优先级策略名称 String 必填字段。值为集群中相应BalancerPolicyTemplate CR资源名。 spec.targets 优先级策略作用范围 Slice 必填字段。举例: 针对default命名空间下的应用生效 spec: targets: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: default 针对default、other、another多个命名空间下的应用生效 spec: targets: - namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: In values: - default - other - another 针对所有命名空间下的应用生效 spec: targets: - namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: Exists 只针对名为xxx-xxx-xxx,类型为Deployment的应用生效 spec: targets: - objectSelectors: - name: xxx-xxx-xxx kind: Deployment 只针对命名空间为default,名为xxx-xxx-xxx类型为Deployment的应用生效 spec: targets: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: default objectSelectors: - name: xxx-xxx-xxx kind: Deployment spec.weight 优先级策略权重 int32 必填字段。在集群存在多个Balancer 对象资源情况下,某个应用可能存在于多个Balancer对象作用范围的交集中,此时选择weight值大的Balancer对象生效。 BalancerPolicyTemplate CRD对应的CR资源 apiVersion: autoscaling.volcano.sh/v1alpha1 kind: BalancerPolicyTemplate metadata: name: default-balancerpolicytemplate spec: policy: policyName: Priority priorities: priorityGroups: - priority: 10 requirements: - key: node.cce.io/billing-mode operator: In values: - post-paid - priority: 100 requirements: - key: node.cce.io/billing-mode operator: In values: - pre-paid - priority: 1 requirements: - key: kubernetes.io/role operator: In values: - virtual-kubelet - bursting 表2 BalancerPolicyTemplate对象关键参数说明 字段 含义 类型 备注 metadata.name 名称 String 必填字段。 spec.policy 优先级策略内容 Struct 必填字段。 spec.policy.policyname 优先级策略名 String 必填字段。当前只支持名为“Priority”的优先级策略。 spec.policy.priorities. priorityGroups 优先级策略中定义的具体优先级 Slice 必填字段。举例: 将包周期节点的优先级设置为100 priorityGroups: - priority: 100 requirements: - key: node.cce.io/billing-mode operator: In values: - pre-paid 将按需计费节点的优先级设置为10 priorityGroups: - priority: 10 requirements: - key: node.cce.io/billing-mode operator: In values: - post-paid 将virtual-kubelet/bursting节点的优先级设置为1 priorityGroups: - priority: 1 requirements: - key: kubernetes.io/role operator: In values: - virtual-kubelet - bursting
-
配置应用扩缩容优先级策略 开启应用扩缩容优先级策略开关并成功安装Volcano插件后,会在集群中创建默认扩缩容优先级策略。 获取默认Balancer CR资源。 # kubectl get balancer default-balancer -oyaml apiVersion: autoscaling.volcano.sh/v1alpha1 kind: Balancer metadata: name: default-balancer spec: balancerPolicyTemplateName: default-balancerpolicytemplate targets: - namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: Exists weight: 10 获取默认BalancerPolicyTemplate CR资源。 # kubectl get balancerpolicytemplate default-balancerpolicytemplate -oyaml apiVersion: autoscaling.volcano.sh/v1alpha1 kind: BalancerPolicyTemplate metadata: name: default-balancerpolicytemplate spec: policy: policyName: Priority priorities: priorityGroups: - priority: 10 requirements: - key: node.cce.io/billing-mode operator: In values: - post-paid - priority: 100 requirements: - key: node.cce.io/billing-mode operator: In values: - pre-paid - priority: 1 requirements: - key: kubernetes.io/role operator: In values: - virtual-kubelet - bursting 具体参数含义请参见默认应用扩缩容优先级策略。 部署工作负载,设定实例数为1。 当前应用的Pod将会优先调度到包周期节点上。 apiVersion: apps/v1 kind: Deployment metadata: name: balancer-test namespace: default labels: virtual-kubelet.io/burst-to-cci: 'auto' #如果集群资源不足时,支持将Pod部署到CCI集群 spec: replicas: 1 selector: matchLabels: app: balancer-test template: labels: app: balancer-test spec: containers: image: nginx:latest imagePullPolicy: IfNotPresent name: container-1 resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi schedulerName: volcano 调整工作负载实例数为5。 当前应用的Pod将会优先调度到包周期节点上。在包周期节点资源不足情况下,优先调度到按需计费节点上。在按需计费节点资源不足情况下,优先调度到virtual-kubelet节点(弹性至CCI)。 apiVersion: apps/v1 kind: Deployment metadata: name: balancer-test namespace: default labels: virtual-kubelet.io/burst-to-cci: 'auto' #如果集群资源不足时,支持将Pod部署到CCI集群 spec: replicas: 5 selector: matchLabels: app: balancer-test template: labels: app: balancer-test spec: containers: image: nginx:latest imagePullPolicy: IfNotPresent name: container-1 resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi schedulerName: volcano 查看各种类型节点上Pod的分值。 包周期节点上的Pod。 apiVersion: v1 kind: Pod metadata: annotations: autoscaling.volcano.sh/dominated-by-balancer: default-balancer #当前Pod通过名为default-balancer的Balancer CR资源控制扩缩优先级 openvessel.io/workload-balancer-score: "100" #当前包周期节点对应的优先级,也代表着Pod的分值 ... nodeName: 192.168.20.100 #包周期节点 按需计费节点上的Pod。 apiVersion: v1 kind: Pod metadata: annotations: autoscaling.volcano.sh/dominated-by-balancer: default-balancer #当前Pod通过名为default-balancer的Balancer CR资源控制扩缩优先级 openvessel.io/workload-balancer-score "10" #当前按需计费节点对应的优先级,也代表着Pod的分值 ... nodeName: 192.168.20.196 #按需计费节点 virtual-kubelet节点(弹性至CCI)的Pod。 apiVersion: v1 kind: Pod metadata: annotations: autoscaling.volcano.sh/dominated-by-balancer: default-balancer #当前Pod通过名为default-balancer的Balancer CR资源控制扩缩优先级 openvessel.io/workload-balancer-score: "1" #当前virtual-kubelet节点对应的优先级,也代表着pod的分值 ... nodeName: virtual-kubelet #virtual-kubelet节点 逐步进行工作负载的缩容操作,调小实例数。 virtual-kubelet节点(弹性至CCI)的Pod将优先被删除,其次为按需计费节点上的Pod,最后为包周期节点上的Pod。
-
自定义应用扩缩容优先级策略 BalancerPolicyTemplate 资源用来进行优先级策略定义,如果用户需要自定义应用扩缩容优先级策略,则需要针对其内容进行修改。 如果存在多个BalancerPolicyTemplate资源,扩缩策略执行结果将受到这些资源对象的共同作用。因此,如果用户不存在默认扩缩容优先级策略的应用场景,可以执行如下命令对默认优先级策略进行删除。 kubectl delete balancerpolicytemplate default-balancerpolicytemplate 以“扩容时优先将工作负载调度到HCE2.0操作系统的节点,其次调度到欧拉操作系统的节点;缩容时优先删除欧拉操作系统节点上的工作负载,其次删除HCE2.0操作系统上的工作负载”为例: 编写新BalancerPolicyTemplate 资源对象。 vim new-balancerpolicytemplate.yaml 内容如下: apiVersion: autoscaling.volcano.sh/v1alpha1 kind: BalancerPolicyTemplate metadata: name: new-balancerpolicytemplate spec: policy: policyName: Priority priorities: priorityGroups: - priority: 10 # 设置欧拉操作系统节点优先级为10 requirements: - key: os.name # 节点操作系统标签 operator: In values: - EulerOS_2.0_SP9x86_64 # 可能涉及操作系统的小版本号,用户可以根据自身场景,任意添加 - priority: 100 # 设置HCE2.0操作系统节点优先级为100 requirements: - key: os.name # 节点操作系统标签 operator: In values: - Huawei_Cloud_EulerOS_2.0_x86_64 创建新BalancerPolicyTemplate资源对象。 kubectl create -f new-balancerpolicytemplate.yaml 修改default-balancer对象内容,也可以按需进行新建balancer对象 kubectl edit balancer default-balancer 修改内容如下: apiVersion: autoscaling.volcano.sh/v1alpha1 kind: Balancer metadata: name: default-balancer spec: balancerPolicyTemplateName: new-balancerpolicytemplate targets: - namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: Exists weight: 10 查看各个Pod的注解中openvessel.io/workload-balancer-score对应的值是否满足预期。 EulerOS节点上Pod的openvessel.io/workload-balancer-score注解对应值是10;HCE2.0节点上的pod 的openvessel.io/workload-balancer-score注解对应值是100。
-
应用扩缩容优先级策略介绍 开启应用扩缩容优先级策略,将会在集群中新增两类CRD资源,分别为Balancer与BalancerPolicyTemplate,并创建默认的扩缩容优先级策略,详情请参见默认应用扩缩容优先级策略。Volcano插件根据BalancerPolicyTemplate来获取各个节点的优先级,以控制应用扩容时Pod调度的优先级,同时volcano插件基于Balancer和BalancerPolicyTemplate来设置应用缩容时的优先级。 BalancerPolicyTemplate CRD资源用来进行优先级策略定义。以默认扩缩容优先级策略为例,默认BalancerPolicyTemplate CR资源将会把包周期节点的优先级设置为最高,按需计费节点次之,virtual-kubelet节点(弹性至CCI)设置为最低。 BalancerPolicyTemplate CR资源不支持更新操作。 Balancer CRD资源用来申明扩缩容优先级的作用范围。创建Balancer CR资源时,可以指定某个命名空间下的工作负载作为生效范围,也可以具体指定某个Deployment或者某个ReplicaSet工作负载作为生效范围。 一个Balancer CR资源对应一个BalancerPolicyTemplate CR资源,两者结合共同申明哪些工作负载使用了哪些优先级策略。 插件默认的扩缩容优先级策略通过BalancerPolicyTemplate对象将包周期节点、按需计费节点、virtual-kubelet节点(弹性至CCI)三种类型分成不同的优先级,扩容时,volcano在调度新增Pod时将会考虑这些优先级,优先将Pod调度到优先级高的包周期节点上。 通过Balancer和BalancerPolicyTemplate对象,Volcano插件对Balancer作用范围内的Pod,根据BalancerPolicyTemplate对象定义的优先级分别打上以下注解: openvessel.io/workload-balancer-score:表示Pod的分值,对于高优先级节点上的Pod,其对应的分值也相对较大。 autoscaling.volcano.sh/dominated-by-balancer:表示当前Pod受哪个Balancer对象控制,缩容时会优先缩容分值低的Pod。 如果用户原先的Pod已经存在社区支持的controller.kubernetes.io/pod-deletion-cost注解,那么缩容时将会按照该值定义的优先级来进行缩容。当两个Pod对应controller.kubernetes.io/pod-deletion-cost值相同时,才会按照openvessel.io/workload-balancer-score注解定义的优先级进行缩容。
-
作业实例运行状态 表4 作业实例运行状态说明 运行状态 场景描述 等待运行 如果作业实例依赖的前置作业实例未最终完成(未最终完成的状态包括:未生成实例、等待运行、运行失败),该实例处于等待运行。 运行中 作业正常运行中。说明前置的依赖作业都已完成,该作业调度时间已到。 运行成功 作业真正成功执行了业务逻辑,并且最终成功(包含失败重试的成功)。 强制成功 作业实例处于失败或取消状态时,进行手动执行强制成功。 忽略失败成功 如下图所示,节点B设置了失败处理策略,当B执行失败了,会跳过B继续执行C,当存在这种节点运行失败,整个作业执行完成了就是忽略失败成功。 图5 失败处理策略-继续执行下一节点 运行异常 这种运行状态场景较少。如下图所示,节点B设置了失败处理策略,当B执行失败了,作业实例立即挂起,不会继续执行C,作业实例进入异常运行状态。 图6 失败处理策略-挂起当前作业执行计划 已暂停 这种运行状态场景较少。当某个作业的实例正在运行,测试人员在作业监控界面,手工暂停作业调度。此时,该作业正在运行的实例会进入已暂停状态。 已取消 等待运行状态的作业实例,进行手工停止,则实例处于已取消状态。 如果作业实例依赖的直接上游作业被停止调度了,该作业实例会自动进入已取消状态。作业A依赖作业B,作业B被停止调度,作业A实例生成后会自动取消。 冻结 对于未来时间内尚未生成的作业实例,进行冻结后,该作业实例会进入冻结状态。 失败 作业执行失败。
-
Volcano开启NUMA亲和性调度 开启静态(static)CPU管理策略,具体请参考 开启CPU管理策略。 配置CPU拓扑策略。 登录CCE控制台,单击集群名称进入集群,在左侧选择“节点管理”,在右侧选择“节点池”页签,单击节点池名称后的“ 配置管理”。 将kubelet的拓扑管理策略(topology-manager-policy)的值修改为需要的CPU拓扑策略即可。 有效拓扑策略为“none”、“best-effort”、“restricted”、“single-numa-node”,具体策略对应的调度行为请参见Pod调度预测。 开启numa-aware插件功能和resource_exporter功能。 Volcano 1.7.1及以上版本 登录CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件中心”,在右侧找到Volcano,单击“编辑”,并在“参数配置”中设置Volcano调度器配置参数。 { "ca_cert": "", "default_scheduler_conf": { "actions": "allocate, backfill, preempt", "tiers": [ { "plugins": [ { "name": "priority" }, { "name": "gang" }, { "name": "conformance" } ] }, { "plugins": [ { "name": "drf" }, { "name": "predicates" }, { "name": "nodeorder" } ] }, { "plugins": [ { "name": "cce-gpu-topology-predicate" }, { "name": "cce-gpu-topology-priority" }, { "name": "cce-gpu" }, { // add this also enable resource_exporter "name": "numa-aware", // the weight of the NUMA Aware Plugin "arguments": { "weight": "10" } } ] }, { "plugins": [ { "name": "nodelocalvolume" }, { "name": "nodeemptydirvolume" }, { "name": "nodeCSIscheduling" }, { "name": "networkresource" } ] } ] }, "server_cert": "", "server_key": "" } Volcano 1.7.1以下版本 Volcano插件开启resource_exporter_enable参数,用于收集节点numa拓扑信息。 { "plugins": { "eas_service": { "availability_zone_id": "", "driver_id": "", "enable": "false", "endpoint": "", "flavor_id": "", "network_type": "", "network_virtual_subnet_id": "", "pool_id": "", "project_id": "", "secret_name": "eas-service-secret" } }, "resource_exporter_enable": "true" } 开启后可以查看当前节点的numa拓扑信息。 kubectl get numatopo NAME AGE node-1 4h8m node-2 4h8m node-3 4h8m 启用Volcano numa-aware算法插件。 kubectl edit cm -n kube-system volcano-scheduler-configmap kind: ConfigMap apiVersion: v1 metadata: name: volcano-scheduler-configmap namespace: kube-system data: default-scheduler.conf: |- actions: "allocate, backfill, preempt" tiers: - plugins: - name: priority - name: gang - name: conformance - plugins: - name: overcommit - name: drf - name: predicates - name: nodeorder - plugins: - name: cce-gpu-topology-predicate - name: cce-gpu-topology-priority - name: cce-gpu - plugins: - name: nodelocalvolume - name: nodeemptydirvolume - name: nodeCSIscheduling - name: networkresource arguments: NetworkType: vpc-router - name: numa-aware # add it to enable numa-aware plugin arguments: weight: 10 # the weight of the NUMA Aware Plugin
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格