默认情况下为名称空间设置priorityclass

时间:2020-07-30 06:56:43

标签: kubernetes

我想知道默认情况下如何为特定命名空间中的所有Pod设置一个priorityClass是可能的 globalvalue: true

可能与准入控制器一起使用,但我不知道。

您有一个具体的例子吗?

2 个答案:

答案 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并安排开发容器到单独的节点,则可以轻松完成所需的工作。这样,生产吊舱无需与非必要吊舱竞争资源。