Pod 优先级和抢占
  2KFP6HqsvpD5 2023年11月02日 100 0


介绍

Pod 可以有优先级。 优先级表示一个 Pod 相对于其他 Pod 的重要性。 如果一个 Pod 无法被调度,调度程序会尝试抢占(驱逐)较低优先级的 Pod, 使新的 Pod 可以被调度。
在一个并非所有用户都是可信的集群中,恶意用户可能以最高优先级创建 Pod, 导致其他 Pod 被驱逐或者无法被调度。 管理员可以使用 ResourceQuota 来阻止用户创建高优先级的 Pod。

优先级与抢占

优先级是什么?

优先级代表一个Pod相对其他Pod的重要性

优先级有什么用

优先级可以保证重要的Pod被调用运行

如何使用优先级和抢占

  • 配置优先级类PriorityClass
  • 创建Pod是为其设置对应的优先级

PriorityClass

PriorityClass是一个全局资源对象,它定义了从优先级类名称到优先级整数值的映射。优先级在values字段中指定,可以设置小于10亿的整数值,值越大,优先级越高
PriorityClass还有两个可选字段:

  • globaDefault:用于设置默认优先级状态,如果没有任何优先级设置,Pod的优先级为零
  • description:用来配置描述性信息,告诉用户优先级的用途

优先级策略

  • 非抢占优先:指的是在调度阶段优先进行调度分配,一旦容器调度完成就不可以抢占,资源不足时,只能等待,对应 preemptionPolicy: Never
  • 抢占优先:强制调度一个Pod,如果资源不足无法被调度,调度程序会抢占(删除)较低优先级的Pod的资源,来保证高优先级Pod的运行,对应 preemptionPolicy: PreemptLowerPriority

实践

PriorityClass

声明

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority-nonpreempting
value: 1000000
preemptionPolicy: Never(Never 表示非抢占,PreemptLowerPriority表示抢占)
globalDefault: false
description: "This priority class will not cause other pods to be preempted."

pod 使用

kind: Pod
apiVersion: v1
metadata:
  name: php2
spec:
  nodeSelector:
    kubernetes.io/hostname: node-01
  priorityClassName: high-priority-nonpreempting      # 指定优先级的名称
  containers:
  - name: php
    image: myos:phpfpm
    resources:
      requests:
        cpu: "1500m"

参考

https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/pod-priority-preemption/


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
2KFP6HqsvpD5