需求:开发提出,想要 某一个调用 pod 运行在,只运行在master 节点。

环境:因为是开发 sit 环境,所以机器规格相对来说,比较小。
集群有一个master 两个 node 组成。分别是 一个2-4和两个4-8 的机器。
master 节点 是做了 SchedulingDisabled 的,禁止调度。

192.168.0.5   Ready,SchedulingDisabled   master   20d   v1.14.6
192.168.0.6   Ready                      node     20d   v1.14.6
192.168.0.7   Ready                      node     20d   v1.14.6

一、先要允许 master 节点可被调度。

kubectl uncordon 192.168.0.5 

要想再把master 节点变成不可调度,

kubectl cordon 192.168.0.5

二、制作lable,主要用于pod 调度到指定节点。

root@zhu-test:~# kubectl label node 192.168.0.5 outgress=outgress
node/192.168.0.5 labeled
root@zhu-test:~# kubectl get node --show-labels 
NAME          STATUS                     ROLES    AGE   VERSION   LABELS
192.168.0.5   Ready   master   20d   v1.14.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=192.168.0.5,kubernetes.io/os=linux,kubernetes.io/role=master,outgress=outgress
192.168.0.6   Ready   node     20d   v1.14.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=192.168.0.6,kubernetes.io/os=linux,kubernetes.io/role=node
192.168.0.7   Ready   node     20d   v1.14.6   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=192.168.0.7,kubernetes.io/os=linux,kubernetes.io/role=node

三、标签打完,现在需要,调整服务到指定的 master 节点。

spec:
  podManagementPolicy: OrderedReady
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: outgress
  serviceName: outgress
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: outgress
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: outgress
                operator: In
                values:
                - 'true'

四、ok 搞定,最后 outgress 这个服务调用 master 节点的信息。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐