priorityClass 是如何工作的

How does priorityClass Works

我尝试使用 priorityClass。

我创建了两个 pods,第一个具有系统节点关键优先级,第二个具有集群节点关键优先级。

两者 pods 都需要 运行 在标有 nodeName: k8s-minion1 的节点中,但这样的节点只有 2 cpus 而 pods 都要求 1.5 cpu。 然后我希望第二个 pod 运行s 和第一个 pod 处于待处理状态。相反,无论我影响第二个 pod 的类优先级如何,第一个 pod 总是 运行s。

我什至尝试在我应用我的清单后标记节点,但没有改变任何东西。

这是我的清单:

apiVersion: v1
kind: Pod
metadata:
  name: firstpod
spec:
  containers:
  - name: container
    image: nginx
    resources:
      requests:
        cpu: 1.5
  nodeSelector:
    nodeName: k8s-minion1
  priorityClassName: cluster-node-critical
---
apiVersion: v1
kind: Pod
metadata:
  name: secondpod
spec:
  containers:
  - name: container
    image: nginx
    resources:
      requests:
        cpu: 1.5
  priorityClassName: system-node-critical
  nodeSelector:
    nodeName: k8s-minion1

值得注意的是,当我执行 kubectl get priorityclass 时出现错误 "unknown object : priorityclass" 并且当我使用 kubectl get pod secondpod -o yaml 在 yml 中导出我的 运行ning pod 时,我无法找到任何 classpriority: 字段。

这是我的版本信息:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:55:54Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"} 
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0+coreos.0", GitCommit:"6bb2e725fc2876cd94b3900fc57a1c98ca87a08b", GitTreeState:"clean", BuildDate:"2018-04-02T16:49:31Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

知道为什么这不起作用吗?

提前致谢,

阿卜杜勒加尼

PriorityClasses 首次出现在 k8s 1.8 as alpha feature。 它graduated to beta in 1.11

您使用的是 1.10,这意味着此功能处于 alpha 版。

默认情况下未启用 Alpha 功能,因此您需要启用它。

不幸的是,k8s 版本 1.10 不再受支持,所以我建议至少升级到 1.14,其中 priorityClass feature 变得稳定。