K8s --K8s调度

调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。 

kube-scheduler 是 Kubernetes 集群的默认调度器,并且是集群控制面的一部分。如果你真的希望或者有这方面的需求,kube-scheduler 在设计上是允许你自己写一个调度组件并替换原有的 kube-scheduler。 

在做调度决定时需要考虑的因素包括:单独和整体的资源请求、硬件/软件/策略限制、亲和以及反亲和要求、数据局域性、负载间的干扰等等。 

默认策略可以参考:https://kubernetes.io/zh/docs/concepts/scheduling/kube-scheduler/ 

调度框架:https://kubernetes.io/zh/docs/concepts/configuration/scheduling-framework/

kube-scheduler 是 Kubernetes 集群的默认调度器

nodeSelector 是节点选择约束的最简单推荐形式。

 添加 nodeSelector 字段到 pod 配置中 

给server3的节点添加标签: kubectl label nodes server3 disktype=ssd 

kubectl label nodes server3 disktype- 删除节点上的标签  删除节点标签不会影响pod的运行 查看pod运行情况为running  调动器的调度策略在调度过程中生效 如果已经调度并且运行成功并不会影响到已经调度的pod

亲和与反亲和

nodeSelector 提供了一种非常简单的方法来将 pod 约束到具有特定标签的节点上。亲和/反亲和功能极大地扩展了你可以表达约束的类型。

你可以发现规则是“软”/“偏好”,而不是硬性要求,因此,如果调度器无法满足该要求,仍然调度该 pod

你可以使用节点上的 pod 的标签来约束,而不是使用节点本身的标签,来允许哪些 pod 可以或者不可以被放置在一起。 

节点亲和

requiredDuringSchedulingIgnoredDuringExecution     必须满足 preferredDuringSchedulingIgnoredDuringExecution    倾向满足 

IgnoreDuringExecution 表示如果在Pod运行期间Node的标签发生变化,导致亲和性策略不能满足,则继续运行当前的Pod。

参考:https://kubernetes.io/zh/docs/concepts/configuration/assign-pod-node/

节点亲和性pod示例: 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值