系列目录html
kubernetes支持多种资源调度模式,前面讲过简单的基于nodeName
和nodeSelector
的服务器资源调度,咱们称之为用户绑定策略
,下面简要描述基于PriorityClass
的同一node下不一样pod资源的优先级调度,咱们称其为抢占式调度策略
node
如今版本支持Pod优先级抢占,经过PriorityClass来实现同一个Node节点内部的Pod对象抢占。根据 Pod 中运行的做业类型断定各个 Pod 的优先级,对于高优先级的 Pod 能够抢占低优先级 Pod 的资源。Pod priority指的是Pod的优先级,高优先级的Pod会优先被调度,或者在资源不足低状况牺牲低优先级的Pod,以便于重要的Pod可以获得资源部署.nginx
定义PriorityClass对象:api
apiVersion: scheduling.k8s.io/v1alpha1 kind: PriorityClass metadata: name: high-priority value: 1000000 globalDefault: false description: "This priority class should be used for XYZ service pods only."
在Pod的spec. priorityClassName中指定已定义的PriorityClass名称服务器
apiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent priorityClassName: high-priority
当节点没有足够的资源供调度器调度Pod、致使Pod处于pending时,抢占(preemption)逻辑会被触发。Preemption会尝试从一个节点删除低优先级的Pod,从而释放资源使高优先级的Pod获得节点资源进行部署。code