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 集群的默认调度器

K8s --K8s调度_第1张图片

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

 添加 nodeSelector 字段到 pod 配置中 

K8s --K8s调度_第2张图片K8s --K8s调度_第3张图片K8s --K8s调度_第4张图片

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

K8s --K8s调度_第5张图片K8s --K8s调度_第6张图片

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

K8s --K8s调度_第7张图片

亲和与反亲和

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

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

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

节点亲和

requiredDuringSchedulingIgnoredDuringExecution     必须满足 preferredDuringSchedulingIgnoredDuringExecution    倾向满足 

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

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

节点亲和性pod示例: 

K8s --K8s调度_第8张图片

你可能感兴趣的:(linq,p2p,c#)