Ответ 1
Если вы используете Kubernetes 1.7 и выше:
kubectl taint node mymasternode node-role.kubernetes.io/master:NoSchedule-
Я установил 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.
Этот вопрос указывает на то, что планирование модулей на главном узле должно быть возможным, но я почти ничего не могу найти по этому вопросу.
Если вы используете Kubernetes 1.7 и выше:
kubectl taint node mymasternode node-role.kubernetes.io/master:NoSchedule-
Я не знаю, почему главный узел отображается как NotReady
; это не должно Попробуйте выполнить kubectl describe node mymasternode
чтобы узнать.
SchedulingDisabled
объясняется тем, что главный узел dedicated=master:NoSchedule
Выполните эту команду против всех ваших мастеров, чтобы удалить порчу:
kubectl taint nodes mymasternode dedicated-
Чтобы понять, почему это работает, почитайте о порках и терпимости.
Во-первых, получить имя мастера
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-
Для тех, кто использует копы на 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
Используйте приведенную ниже команду, чтобы отменить все мастера
kubectl taint nodes --all node-role.kubernetes.io/master-