K8s之PriorityClass使用

1 定义

优先级可以作为除QOS之外另一个标识Pod重要程度的属性。在集群中若Pod PreemitionPodA
使用了抢占式priorityClass,如果该pod在集群中无法调度,则scheduler会尝试抢占驱逐低优先级的pod,以使PreemitionPodA完成调度。

2 priorityClass的基本结构

name: 优先级类的名称,用于标识该类。
value: 优先级的数值,数值越大,优先级越高,最大值为1000000000。
globalDefault: 是否将该优先级类设为全局默认,即在没有为Pod指定PriorityClass的情况下使用该类的优先级。
description: 对优先级类的描述。

3 priorityClass分类

3.1 非抢占式priorityClass

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority-nonpreempting   //priority名字
value: 1000000   //priority 对应的值,自定义值不能大于1000000
preemptionPolicy: Never  //声明此Priority是否为抢占式,可选值:Never(非抢占时代)、PreemptLowerPriority(抢占式)。 如果未设置,则默认为PreemptLowerPriority。
globalDefault: false   //指定是否应将此 PriorityClass 视为没有任何优先级类的 Pod 的默认优先级。 只有一个 PriorityClass 可以标记为 globalDefault。 但是,如果存在多个 PriorityClasses 且其 globalDefault 字段设置为 true, 则将使用此类全局默认 PriorityClasses 的最小值作为默认优先级。
description: "This priority class will not cause other pods to be preempted."

3.2 抢占式priorityClass

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority-nonpreempting   //priority名字
value: 1000000   //priority 对应的值,自定义值不能大于1000000
preemptionPolicy: PreemptLowerPriority  //声明此Priority是否为抢占式,可选值:Never(非抢占时代)、PreemptLowerPriority(抢占式)。 如果未设置,则默认为 PreemptLowerPriority。
globalDefault: false   //指定是否应将此 PriorityClass 视为没有任何优先级类的 Pod 的默认优先级。 只有一个 PriorityClass 可以标记为 globalDefault。 但是,如果存在多个 PriorityClasses 且其 globalDefault 字段设置为 true, 则将使用此类全局默认 PriorityClasses 的最小值作为默认优先级。
description: "This priority class will cause other pods to be preempted."

4 使用

4.1 定义priorityClass

使用priorityClass之前要在集群中进行声明,以下是一个自定义priorityclass的定义文件。另外集群中会默认创建两个priorityClass system-node-critical以及system-cluster-critical 优先级类。

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: 9000
globalDefault: false
description: "This is a custom priorityClass"
---
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: low-priority
value: 2000
globalDefault: false
description: "This is a custom priorityClass"

上述文件中声明了两个priorityClass,分别为 high-priority 和 low-priority,优先级分别为9000和2000,且都为抢占式。

4.2 声明pod

apiVersion: v1
kind: Pod
metadata:
  name: high-priority-pod
spec:
  containers:
  - name: nginx-container
    image: nginx:latest
  priorityClassName: high-priority

在此案例中,pod high-priority-pod使用优先级high-priority。

4.3 验证

使用命令 kubectl describe pod high-priority-pod 或者 kubectl get pod high-priority-pod -o jsonpath=‘{.spec.priority}’,验证是否优先级为9000。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值