如何仅在工作节点上安排gitlab-runner pod?

时间:2020-04-21 13:15:43

标签: kubernetes gitlab

我对k8s中的跑步者吊舱的吊舱调度有1个问题。正如我所看到的,在不同的工作期间,它会创建类似pod-xxxx-project-xxxx-concurrent的容器,并且该容器会动态创建。如何仅为此Pod(runner-xxxx-project-xxxx-concurrent)而不是Runner-gitlab-runner部署配置调度(nodeSelector)?

1 个答案:

答案 0 :(得分:1)

首先,根据您安装主节点的方式,它们通常具有污点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来设置将要安排Pod的节点(通常是一种不好的做法)。

第一个解决方案是在安装期间未完成的情况下污染主节点,使其不进行调度:

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

第二个解决方案:将标签设置为节点以使用nodeSelector

kubectl label nodes node1 gitlab-runner=true

并使用nodeSelector向调度程序指示您想要带有特定标签的节点:

spec:
  containers:
  - [...]
  nodeSelector:
    gitlab-runner: "true"

@Nicolas-pepinster所述,您可以在gitlab-runner(see doc)的[runners.kubernetes]部分中设置标签。