Как работает priorityClass

Я пытаюсь использовать priorityClass.

Я создаю два модуля, первый из которых имеет приоритет, критичный для системного узла, а второй - приоритет, критический для кластерного узла.

Оба модуля должны работать в узле, помеченном как nodeName: k8s-minion1, но такой узел имеет только 2 процессора, в то время как оба модуля запрашивают 1,5 процессора. Затем я ожидаю, что второй модуль будет запущен, а первый находится в состоянии ожидания. Вместо этого первый модуль всегда запускается независимо от приоритета класса, который я устанавливаю для второго модуля.

Я даже попытался пометить узел после того, как применил свой манифест, но ничего не изменил.

Вот мой манифест:

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

Стоит отметить, что у меня появляется ошибка "unknown object : priorityclass" когда я делаю kubectl get priorityclass и когда я экспортирую свой запущенный модуль в yml с помощью kubectl get pod secondpod -o yaml, Я не могу найти ни одного 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"}

Есть идеи, почему это не работает?

Заранее спасибо,

Абдельгани

1 ответ

Решение

PriorityClasses впервые появились в k8s 1.8 как альфа-функция. Он перешел на бета-версию в 1.11

Вы используете 1.10, а это значит, что эта функция находится в альфа-версии.

Функции альфа-версии не включены по умолчанию, поэтому вам необходимо включить их.

К сожалению, k8s версии 1.10 больше не поддерживается, поэтому я предлагаю обновить его хотя бы до 1.14, где функция priorityClass стала стабильной.

Другие вопросы по тегам