一般来说,kubernetes 的pod是不在master 节点上运行的。

如果要求pod 必须被调度到master 节点上运行,可以修改pod 的 toleration 和 affinity。

toleration和affinity:

在pod加上toleration和affinity配置

yaml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
spec:
  tolerations:
    - key: "node-role.kubernetes.io/master"
      operator: "Equal"
      value: "true"
      effect: "NoSchedule"
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: node-role.kubernetes.io/master
            operator: Exists

go

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
+                            Operator: apiv1.TolerationOpExists,
+                            Effect:   apiv1.TaintEffectNoSchedule,
+                        },
+                    },
+                    Affinity: &apiv1.Affinity{
+                        NodeAffinity: &apiv1.NodeAffinity{
+                            RequiredDuringSchedulingIgnoredDuringExecution: &apiv1.NodeSelector{
+                                NodeSelectorTerms: []apiv1.NodeSelectorTerm{
+                                    apiv1.NodeSelectorTerm{
+                                        MatchExpressions: []apiv1.NodeSelectorRequirement{
+                                            apiv1.NodeSelectorRequirement{
+                                                Key:      "node-role.kubernetes.io/master",
+                                                Operator: apiv1.NodeSelectorOpExists,
+                                            },
+                                        },
+                                    },
+                                },
+                            },