首页 > 解决方案 > 默认情况下为命名空间设置 priorityclass

问题描述

我想知道如何在不使用 globalvalue: true

可能与准入控制器有关,但我不知道。

你有一个具体的例子吗?

标签: kubernetes

解决方案


PriorityClassPriorityClass 是一个非命名空间对象

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

推荐阅读