Во-первых, в зависимости от того, как вы установили свои мастер-узлы, они обычно имеют помехи node-role.kubernetes.io/master:NoSchedule
, чтобы избежать планирования пакетов.
$ kubectl describe nodes node1
Name: node1
Roles: master
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/hostname=node1
node-role.kubernetes.io/master=
Annotations: node.alpha.kubernetes.io/ttl=0
volumes.kubernetes.io/controller-managed-attach-detach=true
Taints: node-role.kubernetes.io/master:NoSchedule
Так что, если ваша установка kubernetes соответствует, нет необходимо использовать nodeSelector
, чтобы установить узел, на котором будут планироваться модули (обычно это плохая практика).
Первое решение состоит в том, чтобы испортить ваш главный узел без планирования, если это не было сделано во время установки. :
kubectl taint nodes node1 node-role.kubernetes.io/master:NoSchedule-
Второе решение: установить метку для узлов, чтобы использовать nodeSelector
kubectl label nodes node1 gitlab-runner=true
И использовать nodeSelector
, чтобы указать планировщику, что вы хотите узел с указанной c меткой :
spec:
containers:
- [...]
nodeSelector:
gitlab-runner: "true"
Как уже упоминалось @ Nicolas-pepinster , вы можете установить метку в разделе [runners.kubernetes]
нашего gitlab-runner ( см. Do c).