Kubernetes--NodeSelector定向调度

 一、NodeSelector 定向调度
      Kubernetes Master上的Scheduler服务(kube-scheduler进程)负责实现Pod调度,整个调度过程通过执行一系列的复杂算法,最终为每个Pod计算出最佳节点,这个过程是自动完成的,通常我们无法
知道Pod最终会被会调用到哪个节点。而在实际的情况下,可能需要将Pod调度到指定的一些Node上,可以通过Node的标签(Label)和Pod的nodeSelector属性相匹配,达到上述目的。
 (1)  首先通过 kubectl label命令给目标Node打上一些标签:
kubectl label nodes  =

      为node4节点上打一个zone=north标签,表明它是"北方"的一个节点

kubectl label nodes node4 zone=north

  (2) 然后,在Pod的定义中加上nodeSelector的设置,就会将Pod调度到node上拥有"zone=north"标签上:

apiVersion: v1
kind: ReplicationController
metadata:
  name: redis-master
  labels:
    name: redis-master
spec:
  replicas: 1
  selector:
    name: redis-master
  template:
    metadata:
      labels:
         name: redis-master
    spec:
      containers:
      - name: master
        image: kubeguide/redis-master
        ports:
        - containerPort: 6379
      nodeSelector:
        zone: north

   如果多个Node都定义了相同的标签,则master节点上的scheduler会根据调度算法从这组Node上挑选一个可用的Node进行Pod调度。
     通过基于Node标签的调度方式,我们可以把集群中具有不同特点的Node都贴上不同的标签,在部署应用时就可以根据应用的需求设置NodeSelector来进行指定Node范围的调度。
   需要注意的是,如果指定了Pod的nodeSelector条件,且在集群中不存在包含相应标签的Node,则即使在集群中有其他可供使用的Node,这个Pod也无法被成功调用
       NodeSelector通过标签的方式,简单实现了限制Pod所在的节点的方法

 

你可能感兴趣的:(Kubernetes,kubernetes,容器,云原生)