我想知道默认情况下如何为特定命名空间中的所有Pod设置一个priorityClass是可能的
globalvalue: true
可能与准入控制器一起使用,但我不知道。
您有一个具体的例子吗?
答案 0 :(得分:2)
PriorityClass : PriorityClass是一个没有命名空间的对象
PriorityClass还具有两个可选字段:globalDefault和description。
globalDefault字段指示此PriorityClass的值应用于不具有priorityClassName的Pod。
系统中只能存在一个将globalDefault设置为true的PriorityClass 。如果没有设置带有globalDefault的PriorityClass,则没有priorityClassName的Pod的优先级为零。
使用以下Yaml创建优先级类别(未设置globalDefault标志)
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000
description: "This priority class should be used for pods."
$ kubectl get priorityclasses.scheduling.k8s.io
NAME VALUE GLOBAL-DEFAULT AGE
high-priority 1000000 false 10s
现在将优先级类别添加到pod清单并在您的命名空间中安排它们
$ kubectl create namespace priority-test
namespace/priority-test created
$ kubectl get namespaces
NAME STATUS AGE
default Active 43m
kube-node-lease Active 43m
kube-public Active 43m
kube-system Active 43m
priority-test Active 5s
示例:pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
priorityClassName: high-priority
$ kubectl apply -f pod.yaml -n priority-test
pod/nginx created
ubuntu@k8s-master-1:~$ kubectl get all -n priority-test
NAME READY STATUS RESTARTS AGE
pod/nginx 1/1 Running 0 25s
$ kubectl describe pod -n priority-test nginx | grep -i priority
Namespace: priority-test
Priority: 1000000
Priority Class Name: high-priority
Normal Scheduled <unknown> default-scheduler Successfully assigned priority-test/nginx to worker-1
答案 1 :(得分:0)
当前无法按名称空间设置优先级。
但是,如果您将priorityClass
设置为默认值globalDefault: true
,例如, value: 1000
。接下来创建另一个较低优先级的类,例如value: 100
并将其添加到所有开发/登台吊舱。
顺便说一句。与问题没有直接关系,但是如果使用nodeSelector
并安排开发容器到单独的节点,则可以轻松完成所需的工作。这样,生产吊舱无需与非必要吊舱竞争资源。