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

Kubernetes 默认情况下为命名空间设置priorityclass,kubernetes,Kubernetes,我想知道如何在默认情况下为特定名称空间中的所有pod设置priorityClass,而不使用 globalvalue:true 可能是和管理员在一起,但我不知道 你有具体的例子吗?PriorityClass:PriorityClass是一个没有名称空间的对象 apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high-priority value: 1000000 description: "T

我想知道如何在默认情况下为特定名称空间中的所有pod设置priorityClass,而不使用
globalvalue:true

可能是和管理员在一起,但我不知道


你有具体的例子吗?

PriorityClassPriorityClass是一个没有名称空间的对象

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
PriorityClass还有两个可选字段:globalDefault和description

globalDefault字段指示此PriorityClass的值应用于没有priorityClassName的POD

系统中只能存在一个globalDefault设置为true的PriorityClass。如果没有设置globalDefault的PriorityClass,则没有priorityClassName的POD的优先级为零

使用下面的yaml创建优先级类(未设置globalDefault标志)

现在将优先级类添加到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
apiVersion:v1 种类:豆荚 元数据: 姓名:nginx 规格: 容器: -姓名:nginx 图片:nginx priorityClassName:高优先级 $kubectl应用-f吊舱yaml-n优先级测试 pod/nginx已创建 ubuntu@k8s-master-1:~$kubectl获得全部-n优先级测试 名称就绪状态重新启动 pod/nginx 1/1运行0 25s $kubectl描述pod-n优先级测试nginx | grep-i优先级 名称空间:优先级测试 优先权:100万 优先级类名称:高优先级 正常计划的默认计划程序已成功将优先级测试/nginx分配给worker-1
当前每个命名空间的优先级都不可能

但是,如果改为使用
globalDefault:true
设置默认值
priorityClass
,例如
值:1000
,则可以获得类似的结果。接下来创建另一个优先级较低的类,例如
value:100
,并将其添加到所有开发/暂存吊舱中


顺便说一句,与问题没有直接关系,但如果使用
nodeSelector
s并将dev pod安排到单独的节点上,则可以更轻松地完成所需任务。通过这种方式,生产吊舱不必与非必要吊舱争夺资源。

您能否起草一个您想要实现的具体目标的示例?有关更多信息,我想保护系统部署(longhorn grafana prometheus和其他此类应用程序)并自动为少数命名空间设置系统群集关键优先级类,而无需修改这些应用程序。目前我不能对我们的开发团队施加限制或配额,但我必须保护系统吊舱