Kubernetes1.6新特性:POD高级调度-POD调度器配置变化
2017-06-01 08:32
786 查看
(一) 核心概念
Pod是kubernetes中的核心概念,kubernetes对于Pod的管理也就是对Pod生命周期的管理以及对Pod进行调度管理。
Kubernetes早期版本使用系统默认调度器来对Pod进行统一调度管理,在1.2版本中增加了多个调度器特性,多个调度器可以并行调度不同的Pod,并且可以允许用户自己定义新的调度器并以插件的方式供kubernetes使用。
在1.6版本中对POD调度进行了增强,这里称之为“高级调度”,涉及到多个调度器配置变化、节点亲和性/反亲和性特性、Pod亲和性/反亲和性特性、污点和容忍特性、报告节点问题特性。
在1.6版本这些“高级调度”特性中,多个调度器配置变化、节点亲和性/反亲和性特性、Pod亲和性/反亲和性特性、污点和容忍特性,这四个特性属于β特性,报告节点问题特性属于α特性,所以大家在使用的时候应该注意。
(二) POD调度器配置变化介绍
我们先来看看1.6版本中Pod相关的几个核心结构体:
在1.6版本中,PodSpec结构体中新增了四个属性,分别是AutomountServiceAccountToken、Affinity、SchedulerName、Tolerations。其中Affinity属性对应结构体Affinity,负责节点亲和性/反亲和性特性和Pod亲和性/反亲和性特性;Tolerations属性对应结构体Toleration,负责污点和容忍特性;SchedulerName属性就是这篇文章要介绍的多个调度器配置变化。其中结构体Affinity和结构体Toleration在1.5版本中已经存在了,但是并不是通过PodSpec结构体中Affinity和Tolerations两个属性进行关联的。
我们先来看看1.5版本中,是如何配置多个调度器的:annotations:
scheduler.alpha.kubernetes.io/name: my-scheduler
我们在看看现在1.6版本中,是如何配置多个调度器的:spec:
schedulerName: my-scheduler
通过上面两个例子可以看出来,多个调度器这个特性从α版本变成β版本后,由原先使用annotations方式定义Pod变成了直接在spec中定义Pod。
需要注意的是,一旦你使用的是1.6版本,那么就无法使用annotations中scheduler.alpha.kubernetes.io/name来配置多个调度器的,也就是说scheduler.alpha.kubernetes.io/name这个属性在1.6中是无法使用的,只能使用Pod spec中的schedulerName属性来进行多调度器配置。
(三) 配置多个调度器使用示例
1) 定义第一个Pod,使用默认调度器apiVersion: v1
kind: Pod
metadata:
name: annotation-default-scheduler
labels:
name: multischeduler-example
spec:
schedulerName: default-scheduler
containers:
-name: pod-with-default-annotation-container
image: gcr.io/google_containers/pause:2.0
2) 定义第二个Pod,使用自定义调度器apiVersion:v1
kind:Pod
metadata:
name: annotation-second-scheduler
labels:
name: multischeduler-example
spec:
schedulerName: my-scheduler
containers:
- name: pod-with-second-annotation-container
image: gcr.io/google_containers/pause:2.0
这里面我们需要根据自己需要自定义一个调度器my-scheduler,用它来完成我们实现多个调度器同时调度管理不同Pod的目的,文章里面就不详细介绍了。
Pod是kubernetes中的核心概念,kubernetes对于Pod的管理也就是对Pod生命周期的管理以及对Pod进行调度管理。
Kubernetes早期版本使用系统默认调度器来对Pod进行统一调度管理,在1.2版本中增加了多个调度器特性,多个调度器可以并行调度不同的Pod,并且可以允许用户自己定义新的调度器并以插件的方式供kubernetes使用。
在1.6版本中对POD调度进行了增强,这里称之为“高级调度”,涉及到多个调度器配置变化、节点亲和性/反亲和性特性、Pod亲和性/反亲和性特性、污点和容忍特性、报告节点问题特性。
在1.6版本这些“高级调度”特性中,多个调度器配置变化、节点亲和性/反亲和性特性、Pod亲和性/反亲和性特性、污点和容忍特性,这四个特性属于β特性,报告节点问题特性属于α特性,所以大家在使用的时候应该注意。
(二) POD调度器配置变化介绍
我们先来看看1.6版本中Pod相关的几个核心结构体:
在1.6版本中,PodSpec结构体中新增了四个属性,分别是AutomountServiceAccountToken、Affinity、SchedulerName、Tolerations。其中Affinity属性对应结构体Affinity,负责节点亲和性/反亲和性特性和Pod亲和性/反亲和性特性;Tolerations属性对应结构体Toleration,负责污点和容忍特性;SchedulerName属性就是这篇文章要介绍的多个调度器配置变化。其中结构体Affinity和结构体Toleration在1.5版本中已经存在了,但是并不是通过PodSpec结构体中Affinity和Tolerations两个属性进行关联的。
我们先来看看1.5版本中,是如何配置多个调度器的:annotations:
scheduler.alpha.kubernetes.io/name: my-scheduler
我们在看看现在1.6版本中,是如何配置多个调度器的:spec:
schedulerName: my-scheduler
通过上面两个例子可以看出来,多个调度器这个特性从α版本变成β版本后,由原先使用annotations方式定义Pod变成了直接在spec中定义Pod。
需要注意的是,一旦你使用的是1.6版本,那么就无法使用annotations中scheduler.alpha.kubernetes.io/name来配置多个调度器的,也就是说scheduler.alpha.kubernetes.io/name这个属性在1.6中是无法使用的,只能使用Pod spec中的schedulerName属性来进行多调度器配置。
(三) 配置多个调度器使用示例
1) 定义第一个Pod,使用默认调度器apiVersion: v1
kind: Pod
metadata:
name: annotation-default-scheduler
labels:
name: multischeduler-example
spec:
schedulerName: default-scheduler
containers:
-name: pod-with-default-annotation-container
image: gcr.io/google_containers/pause:2.0
2) 定义第二个Pod,使用自定义调度器apiVersion:v1
kind:Pod
metadata:
name: annotation-second-scheduler
labels:
name: multischeduler-example
spec:
schedulerName: my-scheduler
containers:
- name: pod-with-second-annotation-container
image: gcr.io/google_containers/pause:2.0
这里面我们需要根据自己需要自定义一个调度器my-scheduler,用它来完成我们实现多个调度器同时调度管理不同Pod的目的,文章里面就不详细介绍了。
相关文章推荐
- Kubernetes1.6新特性:POD高级调度-亲和性/反亲和性特性
- Kubernetes1.6新特性:POD高级调度-亲和性/反亲和性特性
- Kubernetes1.6新特性:POD高级调度-污点和容忍特性/报告节点问题特性
- Kubernetes 1.6新特性系列 | 高级调度
- Kubernetes 1.6新特性系列 | 高级调度
- Kubernetes 1.6新特性系列 | 动态配置和存储类
- Kubernetes 1.6新特性系列|在Kubernetes里配置私有DNS区域和上游服务器
- kubernetes高级调度特性
- Kubernetes 1.6新特性系列 | 动态配置和存储类
- Kubernetes 1.6新特性系列 | 动态配置和存储类
- Kubernetes1.6新特性-不回收静态POD
- ANT(1.6)高级特性:流程控制
- cisco switch 配置(vlan划分,生成树和高级生成树,高级特性,vlan路由)
- [Redis]Redis高级特性的配置及使用
- Spring学习笔记-IOC高级特性3-用Java Config简化XML配置
- kubernetes1.6新特性:支持新的卷插件
- Kubernetes1.6新特性:全面支持多颗GPU
- Kubernetes1.6新特性-默认使用etcd3.0.14
- Kubernetes 1.6新特性学习:RBAC授权
- java开源R2数据库连接池,运用jdk1.6特性的高性能全参数化配置连接池