码迷,mamicode.com
首页 > Web开发 > 详细

kubernetes高级调度简单说明

时间:2018-03-20 16:29:53      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:nodeaffinity   podaffinity   nodeselector   nodename   tolerations   

Node label使用说明

1.查看node label

kubectl get nodes --show-labels=true

2.创建label

kubectl label node $(node_name)  $key=$value

3.更新label

kubectl label --overwrite node  $(node_name)  $key=$value

4.删除

kubectl label node $(node_name)  $key-

Node调度几种模式

首先看一下,我测试环境node label
技术分享图片
1.nodeName模式

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: hello-world 
spec:
  replicas: 3
  template:
    metadata:
      labels:
        k8s-app: hello-world 
    spec:
      nodeName: node1
      containers:
      - name: hello-world 
        image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest

2.nodeSelector模式

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: hello-world 
spec:
  replicas: 3
  template:
    metadata:
      labels:
        k8s-app: hello-world 
    spec:
      nodeSelector:
        kubernetes.io/hostname: node1
          containers:
      - name: hello-world 
        image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest

3.affinity模式

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: hello-world
spec:
  replicas: 4
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-world
        image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: "kubernetes.io/hostname"
                operator: NotIn
                values: ["node2"]
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 10
            preference:
              matchExpressions:
              - key: zone 
                operator: In
                values:
                - ali

解读
上面规则说明:除node2节点外,分配到zone=ali标签的node上,反之随机调度
requiredDuringSchedulingIgnoredDuringExecution :硬要求,在调度期间要求满足亲和性或者反亲和性规则,如果不能满足规则,则POD不能被调度到对应的主机上。在之后的运行过程中,系统不会再检查这些规则是否满足。
preferredDuringSchedulingIgnoredDuringExecution:软要求,在调度期间尽量满足亲和性或者反亲和性规则,如果不能满足规则,POD也有可能被调度到对应的主机上。在之后的运行过程中,系统不会再检查这些规则是否满足。
operator四种模式: In NotIn Exists NotExists


Taints and Tolerations (污点和容忍)

运行下面命令,标记节点为污点进行测试

kubectl taint nodes node1 node-role/node1=:NoSchedule
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: hello-world
spec:
  replicas: 4
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      tolerations:
      - key: node-role/node1
        operator: Exists
        effect: NoSchedule
      containers:
      - name: hello-world
        image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: "kubernetes.io/hostname"
                operator: In
                values: ["node1"]

Pod调度模式

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: hello-world
spec:
  replicas: 4
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-world
        image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: k8s-app
                operator: In
                values:
                - redis
              topologyKey: kubernetes.io/hostname 
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: k8s-app
                  operator: NotIn
                  values:
                  - nginx
              topologyKey: kubernetes.io/hostname

kubernetes高级调度简单说明

标签:nodeaffinity   podaffinity   nodeselector   nodename   tolerations   

原文地址:http://blog.51cto.com/2759492/2088997

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!