k8s集群的调度

目录

自动调度的原则

调度约束机制:list-watch

apiserver和组件之间的watch机制

调度过程的默认算法

1.预算策略

预算的算法

2.优选策略

优选的算法

*用户定制节点部署

1.强制性节点部署

2.节点标签部署(匹配机制)

标签的增删改查

**亲和性

硬策略和软策略

匹配标签的运算符

节点亲和性 node Affinity

硬策略

软策略

多个软策略

pod亲和性 pod Affinity

硬策略

pod反亲和性 pod Anti-Affinity

硬策略

软策略

练习题


kube-scheduler是集群的调度器,主要任务就是把pod部署到节点上。

自动调度的原则

1.公平性:保证每个可用的节点都可以部署pod

2.资源的高效利用:就是集群当中的资源可以被最大化的使用

3.调度的性能要好:能够对大批量的pod完成调度工作

4.灵活性:用户可以根据自己的需求进行控制

调度约束机制:list-watch

list-watch机制进行每个组件的协作,保持数据同步、实现组件之间的解耦。

apiserver和组件之间的watch机制

kubelet、controller-manager、scheduler这些都是主动监听apiserver的信息,是根据监听到的信息来做出指定的动作,然后再传给apiserver,然后每一步的动作都会通过apiserver传到etcd里。

调度过程的默认算法

1.预算策略

预算策略就是先对节点的条件进行过滤

预算的算法

1. pod的资源适应性:节点上是否有资源能够满足pod请求的资源

2. pod的主机适应性:如果指定了节点,那么要检查集群当中是否有满足要求的节点可供部署

3. pod的主机端口适应性:它会检查节点上使用的端口是否与pod请求的端口冲突

4. pod与主机磁盘的适应性:就是每个pod之间的挂载不能冲突

如果预算条件不满足,pod会进入pending状态

2.优选策略

优选策略就是根据过滤出来的节点选择一个最优的节点

优选的算法

1. 最低请求优先级:它通过计算节点上的cpu和内存的使用率,来确定节点的权重。使用率越低权重就越大,那么就越会被选中作为部署节点。它倾向于选择资源利用率占用较少的节点。

2. 平衡资源分配:它也是根据节点上的cpu和内存的使用率,来确定节点的权重。它的权重是按照cpu和内存之间的使用率的比率,两个使用率越接近越好。(1:1)

3. 镜像本地性优先级:如果节点在本地已经有了需要的镜像,分配的概率更大。

*用户定制节点部署

1.强制性节点部署

nodeName:强制性的选择一个节点,不再需要调度器和算法,直接部署即可。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx1
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx1
  template:
    metadata:
      labels:
        app: nginx1
    spec:
      containers:
      - name: nginx
        image: nginx:1.22
      nodeName: node01

2.节点标签部署(匹配机制)

就是只要标签匹配都可以部署。

kubectl get nodes --show-labels   查看节点标签

注:标签的格式是键值对形式,一个节点可以有多个标签,每个标签以 ,隔开

标签的增删改查

查看标签 kubectl get nodes --show-labels

创建标签 kubectl label nodes node01 test1=a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值