【Kubernetes】pod的优先级

Kubernetes中,支持给pod配置更高的优先级属性,使pod的重要程度提升,从而降低被驱逐的可能。特别地,可以用在一些Kubernetes关键组件的pod上,如metrics-serverDNS等服务,毕竟这些服务一旦出现异常,可能会导致Kubernetes部分功能不可用。

而配置pod的优先级,使用的是PriorityClassName资源,模版如下:

1
2
3
4
5
6
7
apiVersion: schedule.k8s.io/v1
kind: PriorityClassName
metadata:
name: xxx
value: 1000 # 数值越大,表明优先级越高
globalDefault: false # 全局默认优先级,一个Kubernetes集群只能有一个为true的PriorityClassName
description: xxx

pod中指定PriorityClassName资源,从而配置pod的优先级属性

1
2
3
4
5
6
7
8
9
apiVersion: v1
kind: pod
metadata:
name: xxx
spec:
containers:
- name: xxx
image: xxx
priorityClassName: xxx # 指定PriorityClassName的metadata.name,此属性缺省表明pod优先级为0(即最低优先级)

默认地,Kubernetes初始会有两个PriorityClassName资源

  • system-cluster-critical
    用于系统关键的podKubernetes系统运行依赖这些pod

  • system-node-critical:
    用于节点关键的pod,节点运行依赖这些pod,优先级会比system-cluster-critical更高,因为Kubernetes系统的正常运行首要条件是节点正常,即只有在节点关键pod正常运行,系统关键pod运行才有意义。

(•̀ᴗ•́)و ̑̑

Share