Kubernetes k8s中Priority和PriorityClass对象之间的差异
我知道k8s中的优先级是什么,但经过大量搜索后,找不到任何关于优先级对象的信息 所以问题是我在我的k8s集群中创建了一个PriorityClass对象,并将其值设置为-100000,然后用这个PriorityClass创建了一个pod。现在当我用库贝特描述吊舱时,我得到了两个不同的场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)
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是什么样子的?