Pod 部署地调度和定向调度(NodeSelector)设置

微信扫一扫,分享到朋友圈

Pod 部署地调度和定向调度(NodeSelector)设置

一、Pod 调度过程

kubernetes Master 上的 Scheduler 服务(kube-scheduler进程)负责实现 Pod 的调度,整个调度过程通过执行一系列复杂的算法最终为每个 Pod 计算出一个最佳的目标节点,这一过程是自动完成的,通常我们无法知道 Pod 最终会被调度到哪个节点上。

二、NodeSelector 定向调度

在实际使用过程中,我们可能需要将 Pod 调度到一个指定的 Node 上,此时,我们可以通过 Node 的标签 (Label)和Pod 的 nodeSelector 属性相匹配,来达到上述目的。

2.1、对 Node 设置标签

可以通过 kubectl lable 命令给目标 Node 打上一个特定的标签:

kubectl label nodes <node-name> <label-key>=<label-value>

2.2、对 Pod 设置 NodeSelector 定向调度

在定义 Pod 的yaml 文件中,在容器编辑的层级设置 nodeSelector 属性。

kind: ReplicationController #副本控制器
spec:  #副本控制器规格设置
replicas: 1 #副本数量
template:  #副本控制器使用的模板
spec:   # 模板的规格设置
containers: #容器信息
nodeSelector: #定向调用信息
label-key:label-value #定向调用的标签

2.3、标签 Label 匹配的几种情况

  1. 多个 Node 都定义了相同的标签,则scheduler 将会根据调度算法从这组 Node 中 挑选一个可用的 Node 进行Pod 调度。
  2. 如果指定了 Pod 的 nodeSelector 条件,但集群中不存在包含相应标签的 Node时,这个 Pod 会调度失败。

2.4、Node 节点预设的标签 Label

除了用户可以自行给 Node 添加标签, kubernetes也会给 Node 预定义一些标签, 可以通过 kubectl describe node nodeName 查看标签信息。

对话最美非遗传人徐攀:走少有人走的路

上一篇

基于golang+lua的Web日志安全分析系统

下一篇

你也可能喜欢

Pod 部署地调度和定向调度(NodeSelector)设置

长按储存图像,分享给朋友