K8s --K8s调度

本文详细介绍了Kubernetes的调度机制,包括kube-scheduler的工作方式、节点选择器(nodeSelector)、亲和与反亲和性配置,以及Taints和Tolerations的概念和用法。通过设置节点标签和Pod的亲和性规则,可以控制Pod在集群中的调度策略。同时,Taints允许节点拒绝或驱逐Pod,而Tolerations则允许Pod容忍节点的污点,从而灵活调整调度策略。
摘要由CSDN通过智能技术生成

调度器通过 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示例: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值