Kubernetes k8s中Priority和PriorityClass对象之间的差异

Kubernetes k8s中Priority和PriorityClass对象之间的差异,kubernetes,pod-priority,Kubernetes,Pod Priority,我知道k8s中的优先级是什么,但经过大量搜索后,找不到任何关于优先级对象的信息 所以问题是我在我的k8s集群中创建了一个PriorityClass对象,并将其值设置为-100000,然后用这个PriorityClass创建了一个pod。现在当我用库贝特描述吊舱时,我得到了两个不同的场 Priority: 0 PriorityClassName: imagebuild-priority 我的准入控制器抛出以下错误 Error from server (Forbidden)

我知道k8s中的优先级是什么,但经过大量搜索后,找不到任何关于优先级对象的信息

所以问题是我在我的k8s集群中创建了一个PriorityClass对象,并将其值设置为-100000,然后用这个PriorityClass创建了一个pod。现在当我用库贝特描述吊舱时,我得到了两个不同的场

Priority:           0

PriorityClassName:  imagebuild-priority
我的准入控制器抛出以下错误

Error from server (Forbidden): error when creating "/tmp/tmp.4tJSpSU0dy/app.yml": 
pods "pod-name" is forbidden: the integer value of priority (0) must not be provided in pod spec; 
priority admission controller computed -1000000 from the given PriorityClass name
在某个地方,它将优先级设置为0,PriorityClass尝试将其设置为-10000

PriorityClass对象具有全局默认值:False

命令运行

kubectl创建-f app.yml

Yaml文件

---
apiVersion: v1
kind: Pod
metadata:
  name: image-builder-serviceacc
spec:
  securityContext:
    runAsUser: 0
  serviceAccountName: {{ serviceaccount }}
  automountServiceAccountToken: false
  containers:
  - name: container
    image: ....
    imagePullPolicy: Always
    env:
    - name: PATH
      value: "$PATH:/bin:/busybox/"
    command: [ "sh", "-c", "--" ]
    args: [ "while true; do sleep 30; done;" ]
  initContainers:
  - name: init-container
    image: ....
    imagePullPolicy: Always
    env:
    - name: PATH
      value: "$PATH:/bin:/busybox/"
    command: [ "sh", "-c", "--" ]
    args: [ "ls" ]
  restartPolicy: Always

突变控制将根据以下内容附加PriorityClass

PriorityClass还有两个可选字段:globalDefault和description。globalDefault字段指示此PriorityClass的值应用于没有priorityClassName的POD系统中只能存在一个globalDefault设置为true的PriorityClass。如果没有设置globalDefault的PriorityClass,则没有priorityClassName的POD的优先级为零

这个错误意味着你有冲突

the integer value of priority (0) must not be provided in pod spec; 
priority admission controller computed -1000000 from the given PriorityClass name
您可以通过两种方式修复它:

您应该在全局默认值:true之间进行选择:

优先类:

apiVersion: scheduling.k8s.io/v1beta1
kind: PriorityClass
metadata:
  name: high-priority-minus
value: -2000000
globalDefault: True
description: "This priority class should be used for XYZ service pods only."
apiVersion: scheduling.k8s.io/v1beta1
kind: PriorityClass
metadata:
  name: high-priority
value: 1000000
globalDefault: false
description: "This priority class should be used for XYZ service pods only."
吊舱:

priorityClassName可以在此处使用,但不需要

或使用全局默认值:false

您需要在pod中选择1选项、priorityClassName或priority,如您的消息错误中所述

优先类:

apiVersion: scheduling.k8s.io/v1beta1
kind: PriorityClass
metadata:
  name: high-priority-minus
value: -2000000
globalDefault: True
description: "This priority class should be used for XYZ service pods only."
apiVersion: scheduling.k8s.io/v1beta1
kind: PriorityClass
metadata:
  name: high-priority
value: 1000000
globalDefault: false
description: "This priority class should be used for XYZ service pods only."
吊舱:


当您遇到此错误时,您正在运行什么命令,您的yaml是什么样子的?