Есть ли способ избежать выполнения приложения, развернутого как DaemonSet на мастере?
Я видел, что это ожидаемое поведение, но я хотел бы каким-то образом избежать выполнения.
Обычные модули не планируются на мастере, но модули DaemonSet делают это.
Если да, можно ли установить эту информацию в файле yml (параметр..etc??)?
kubectl create -f mydaemon.yml
logspri-4zwl4 1/1 Running 0 <invalid> X.X.X.X k8s-master-e7c355e2-0
logspri-kld2w 1/1 Running 0 <invalid> X.X.X.X k8s-agent-e7c355e2-0
logspri-lksrh 1/1 Running 0 <invalid> X.X.X.X k8s-agent-e7c355e2-1
Я бы не хотел, чтобы мой модуль работал на k8s-master-e7c355e2-0
Я пытался :
annotations:
scheduler.alpha.kubernetes.io/affinity: >
{
"nodeAffinity": {
"requiredDuringSchedulingRequiredDuringExecution": {
"nodeSelectorTerms": [
{
"matchExpressions": [
{
"key": "kubernetes.io/role",
"operator": "NotIn",
"values": ["master"]
}
]
}
]
}
}
}
Попытка также применить следующую роль (как было предложено), но она не работает:
kubectl get nodes
NAME STATUS AGE VERSION
k8s-agent-e7c355e2-0 Ready 49d v1.5.3
k8s-agent-e7c355e2-1 Ready 49d v1.5.3
k8s-master-e7c355e2-0 Ready,SchedulingDisabled 49d v1.5.3
Выполню ли я:
VirtualBox:~/elk/logspout$ kubectl taint node k8s-master-e7c355e2-0 k8s-master-e7c355e2-0/ismaster=:NoSchedule
node "k8s-master-e7c355e2-0" tainted
Даже если кажется, что мастер испорчен, я вижу, что приложение всегда находится на мастере.
Role:
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/instance-type=Standard_D2
beta.kubernetes.io/os=linux
failure-domain.beta.kubernetes.io/region=northeurope
failure-domain.beta.kubernetes.io/zone=0
kubernetes.io/hostname=k8s-master-e7c355e2-0
Annotations: volumes.kubernetes.io/controller-managed-attach-detach=true
Taints: <none>
CreationTimestamp: Wed, 17 May 2017 14:38:06 +0200
Phase:
Conditions:
Что не так? Не могли бы вы дать мне правильную команду для выполнения?
та же проблема сообщается здесь без очевидного решения:
kubectl taint nodes nameofmaster dedicated=master:NoSchedule
Спасибо, Приско.