首页 > 解决方案 > Kubernetes + Jenkins:如何将所有 jenkins 从属分配给一个特定节点

问题描述

在我的集群中,我有一个节点 vm1,标签为“kubernetes.io/hostname: vm-1”。我可以配置将所有 Pod 从站分配给 vm-1 节点吗?我尝试在 Jenkins > 配置 > 云中设置“节点选择器”,但它不起作用。

谢谢,

标签: jenkinskubernetesjenkins-plugins

解决方案


你需要做的就是在Deployment你的詹金斯奴隶的中指定这个nodeAffinity,就像这样:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins-slave
  namespace: ci
  labels:
    app: jenkins
    role: slave
spec:
  selector:
    matchLabels:
      app: jenkins
      role: slave
  template:
    metadata:
      labels:
        app: jenkins
        role: slave
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: kubernetes.io/hostname
                    operator: In
                    values:
                      - vm-1

你可以在这里看到一些例子

但是,我不确定kubernetes.io/hostname在选择节点亲和性时是否要使用有效标签,也许您需要创建一个,role例如dedicatedtype


推荐阅读