Разрешить расписание стручков на мастерском Кубернете?

Я установил Kubernetes на CoreOS на голом железе, используя стандартные сценарии установки. Он работает под управлением текущей стабильной версии 1298.6.0 с версией Kubernetes 1.5.4.

Мы хотели бы иметь высокодоступную мастер-настройку, но у нас сейчас недостаточно оборудования, чтобы выделить три сервера для обслуживания только в качестве мастеров Kubernetes, поэтому я хотел бы иметь возможность планировать пользовательские модули на Мастер Кубернетес. Я установил --register-schedulable = true в /etc/systemd/system/kubelet.service, но он все равно показывался как SchedulingDisabled.

Я попытался добавить настройки для включения узла в качестве рабочего, включая добавление рабочих сертификатов TLS в /etc/kubernetes/ssl, добавление этих настроек в kubelet.service, добавление /etc/kubernetes/worker-kubeconfig.yaml, который указывает на эти сертификаты и добавил эту информацию в /etc/kubernetes/manifests/kube-proxy.yaml. Я использовал свои существующие узлы в качестве шаблона для того, что добавить. Это зарегистрировало другой узел под главным именем хоста, а затем и он, и исходный главный узел были показаны как NotReady, SchedulingDisabled.

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

Ответ 1

Если вы используете Kubernetes 1.7 и выше:

kubectl taint node mymasternode node-role.kubernetes.io/master:NoSchedule-

Ответ 2

Я не знаю, почему главный узел отображается как NotReady; это не должно Попробуйте выполнить kubectl describe node mymasternode чтобы узнать.

SchedulingDisabled объясняется тем, что главный узел dedicated=master:NoSchedule

Выполните эту команду против всех ваших мастеров, чтобы удалить порчу:

kubectl taint nodes mymasternode dedicated-

Чтобы понять, почему это работает, почитайте о порках и терпимости.

Ответ 3

Во-первых, получить имя мастера

kubectl get nodes

NAME     STATUS   ROLES    AGE   VERSION
yasin   Ready    master   11d   v1.13.4

как мы видим, есть один узел с именем yasin и роль master. Если мы хотим использовать его как работника, мы должны запустить

kubectl taint nodes yasin node-role.kubernetes.io/master-

Ответ 4

Для тех, кто использует копы на AWS. Я хотел включить планирование Pods на master.

$ kubectl get nodes -owide дал мне такой вывод:

NAME                                          STATUS
...
...
ip-1**-**-**-***.********.compute.internal    Ready                      node
ip-1**-**-**-***.********.master.internal     Ready,SchedulingDisabled   master
                                                    ^^^^^^^^^^^^^^^^^^
ip-1**-**-**-***.********.compute.internal    Ready                      node
...
...

И $ kubectl describe nodes ip-1**-**-**-***.********.master.internal:

...
...
Taints:             <none>
Unschedulable:      true
...                 ^^^^
...

Исправление мастера с этой командой:

$ kubectl patch node MASTER_NAME -p "{\"spec\":{\"unschedulable\":false}}"

работал для меня, и планирование Pods теперь включено.

Ссылка: https://github.com/kubernetes/kops/issues/639#issuecomment-287015882

Ответ 5

Используйте приведенную ниже команду, чтобы отменить все мастера

kubectl taint nodes --all node-role.kubernetes.io/master-