我有一些在集群中运行的burstable pod,我不希望在内存/ CPU压力的情况下被杀死。
有没有办法增加它的优先级或其他东西,这样我们就不必改变它的名称空间(kube-system使它变得至关重要)并且可以保存它?
我发现了一些关于为pod添加优先级的issues。但无法弄清楚解决方案。应该有一些方法来设置优先级,还是我错过了一些大的东西?
在Kubernetes v1.7
之前,不提供Pod优先功能
从v1.8+
,您可以在PodSpec中添加pod的优先级。您需要使用优先级值创建PriorityClass对象,并在Pod中使用该PriorityClass名称。
但是直到v1.9
,PriorityClass仍处于alpha阶段。
apiVersion: scheduling.k8s.io/v1alpha1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000
globalDefault: false
这里,
value
表示优先权。值越高,优先级越高globalDefault
表示此PriorityClass的值应该用于没有PriorityClassName的Pod。系统中只能存在一个globalDefault设置为true的PriorityClass。现在,让我们创建一个具有此优先级的Pod
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
priorityClassName: high-priority
抢占
创建Pod时,如果找不到满足该Pod的所有指定要求的Node,则使用抢占逻辑从节点中删除一个或多个低优先级Pod。在Pod消失后,Node上会安排具有更高优先级的Pod。
查看有关pod priority的详细信息。