k8s——13、调度

49 篇文章 0 订阅
46 篇文章 2 订阅


使用阿里云主机ECS,
四台主机信息如下:
server1 — 私网IP:10.0.0.2 ----公网IP: 47.108.54.185 ---- 搭建docker仓库harbor—nfs服务器
server2 — 私网IP:10.0.0.3 ----公网IP: 47.108.144.231 ---- k8s集群主节点
server3 — 私网IP:10.0.0.4 ----公网IP: 47.108.115.206 ---- k8s集群节点
server4 — 私网IP:10.0.0.5 ----公网IP: 47.108.28.42 ---- k8s集群节点


k8s调度方式

  • 调度器通过Kubernetes的watch机制来发现集群中新创建且未被调度到Node上的Pod。调度器会将发现的每一个未调度的Pod调度到一个合适的Node上运行
  • Kube-scheduler是kubernetes集群的默认调度器,并且是集群控制面的一部分。如果有调度需求,kube-scheduler在设计上是允许用户自己写一个调度组件并替换原有的kube-schduler
  • 在做调度决定时需要考虑的因素包括:单独和整体的资源请求硬件/软件/策略限制亲和以及反亲和要求数据局限性负载间的干扰等等

NodeName

nodeName时节点选择约束的最简单方法,但一般不推荐。如果nodeName在PodSpec中指定了,则它优先于其他的节点选择方法。

使用nodeName来选择节点的一些限制:
– 如果指定的节点不存在,则调度失败;
– 如果指定的节点没有资源来容纳pod,则pod调度失败
– 云环境中的节点名称并非总是可预测或稳定的

在这里插入图片描述

在这里插入图片描述

nodeselector

nodeSelector是节点选择约束的最简单推荐形式。
调度器只会调度到满足标签要求的节点上。

在这里插入图片描述调度失败,当前没有节点符合标签disktype=ssd

在这里插入图片描述只要有节点满足要求,pod就会running

在这里插入图片描述
在这里插入图片描述

亲和性和反亲和性

  • nodeSelector提供了一种非常简单的方法来将Pod约束到具有特定标签的节点上。亲和/反亲和功能极大的扩展了可以表达约束的类型
  • 可以发现规则是“软”/“偏好”,而不是硬性要求,因此,如果调度器无法满足该要求,仍然调度该Pod
  • 可以使用节点上的Pod标签来约束,而不是使用节点本身的标签,来允许哪些Pod可以或者不可以被放置在一起

节点亲和性

  • requireDuringSchedulingIgnoredDuringExcution 必须满足
  • preferredDuringSchedulingIgnoredDuringExecution 倾向满足
  • 其中,IgnoreDuringExcution 表示如果在Pod运行期间Node的标签发生变化,导致亲和性策略不能满足,则继续运行当前Pod

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pod亲和性

在这里插入图片描述

运行pod:demo

在这里插入图片描述设置亲和性,和pod demo运行在同一个节点上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pod的反亲和性

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

node的属性污点Taints

  • NodeAffinity节点亲和性,是Pod上定义的一种属性,使Pod能够按要求调度的某个Node上,而Taints相反,可以让Node拒绝运行Pod,甚至驱逐Pod
  • Taints(污点)是Node的一个属性,设置了Taints后,调度器便不会调度POd到该Node。如果在Pod上设置了Tolerations(容忍),可以容忍Node上的污点,则调度器可以忽略污点,可以(不是必须)把pod调度过去
创建:kubectl taint nodes server3 key=value:NoSchedule
查询:kubectl describe nodes server3 |grep Taints
删除: kubectl taint nodes server3 key:NoSchedule-

设置的污点范围:
    Noschedule(Pod不会被调度到被标记为Taints的节点)
    PreferNoSchedule(NoSchedule的软策略版本)
    NoExecute:该选项意为着一旦Taint生效,如该节点的正在运行的Pod没有相应Tolerate设置,会被直接驱逐

给节点添加污点Taints

在这里插入图片描述
在这里插入图片描述

给pod设置容忍

Tolerations中定义的key,value,effect要与node上设置的taint保持一致

  • 如果operator是Exists,value可以忽略
  • 如果operator是Equal,则key与value之间的关系必须相等
  • 如果不指定operator属性,则默认值为Equal
    两个特殊值:
  • 当不指定key,再配合Exists就能匹配所有的key和value,可以容忍所有污点
  • 当不指定effect,则匹配所有的effect

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

去除节点上的污点

在这里插入图片描述

cordon、drain停止调度

表示后期创建的pod不会调度到该节点上,相同作用的还有指令drain、delete,但是cordon影响最小
cordon只会将node调为SchedulingDisabled,新创建pod,不会被调度到该节点,节点原有pod不受影响,仍正常对外提供服务。

drain 驱逐节点: 首先驱逐node上的pod,使其在其他节点重新创建。然后将节点调为SchedulingDisabled
delete 删除节点:最暴力的一个,首先驱逐node上的pod,使其在其他节点重新创建,然后,从master节点删除该node,master失去对其控制,如要恢复调度,需进入node节点,重启kubelet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值