k8s 调度

k8s 调度

1、 k8s 架构



k8s的架构如图:

我们都知道k8s分为master、node,其中:

master 主要有如下几个组件:

  • Kubernetes Controller Manager(kube-controller-manager):Kubernetes资源对象的”大总管”,是所有资源对象的自动化控制中心,比如Deployment中的pod副本数

  • Kubernetes API Server (kube-apiserver):Kubernetes的“心脏”,是集群控制的入口进程,也是所有资源增、删、查、改等操作的唯一入口

  • Kubernetes Scheduler(kube-scheduler):Kubernetes的”调度室“,负责资源调度(Pod调度)

  • etcd:是用于共享配置和服务发现的分布式,一致性的KV存储系统,被用作Kubernetes集群后端数据的持久化存储


  node 主要包含以下组件:

  • kubelet:负责Pod对应容器的创建、启停和销毁等任务

  • kube-proxy:与Kubernetes Service通信与负载均衡机制

  • Container Runtime:Docker Engine,负责本机容器的创建、启停与销毁等工作

2、k8s 调度


2.1  Pod 调度

这个过程看起来似乎比较简单,但实际生产环境的调度过程中,有很多问题需要考虑:

  • 首先,如何保证全部计算节点调度的公平性?如何保证每个节点都能被分配资源?

  • 其次,计算资源如何能够被高效利用?集群所有计算资源如何才能被最大化的使用?

  • 再次,如何保证Pod调度的性能和效率?如何能够快速的对大批量的Pod完成调度到较优的计算节点之上?

  • 最后,用户最了解自己的业务,用户是否可以根据实际需求定制自己的调度逻辑和策略?


2.2  Pod 调度过程

调度过程分为2个阶段:

  • 第一阶段:预选过程,过滤节点,调度器用一组规则过滤掉不符合要求的主机。比如Pod指定了所需要的资源量,那么可用资源比Pod需要的资源量少的主机会被过滤掉。

  • 第二阶段:优选过程,节点优先级打分,对第一步筛选出的符合要求的主机进行打分,在主机打分阶段,调度器会考虑一些整体优化策略,比如把容一个Replication Controller的副本分布到不同的主机上,使用最低负载的主机等。


代码位置(1.10 ):

https://github.com/kubernetes/kubernetes/tree/release-1.10/pkg/scheduler/algorithm

优选(Priorities)

经过预选策略(Predicates)对节点过滤,获取节点列表,再对符合需求节点列表进行打分,最终选择Pod调度到一个分值最高节点。

最终主机的得分用以下公式计算得出:

finalScoreNode = (weight1 * priorityFunc1) + (weight2 * priorityFunc2) + … + (weightn * priorityFuncn)

2.3  Node 定义

查看一个node的资源信息:

apiVersion: v1
kind: Node
metadata:
  labels:
    beta.kubernetes.io/arch: amd64
    beta.kubernetes.io/os: linux
    kubernetes.io/hostname: node-n1
  name: node-n1
spec:
  externalID: node-n1
status:
  addresses:
  - address: 10.162.197.135
    type: InternalIP
  allocatable:
    cpu: "8"
    memory: 16309412Ki
    pods: "110"
  capacity:
    cpu: "8"
    memory: 16411812Ki
    pods: "110"
  conditions: {...}
  daemonEndpoints:
    kubeletEndpoint:
      Port: 10250
  images: {...}
  nodeInfo: {...}

2.4  Pod 定义

查看一个pod的资源信息:

kubectl explain pod.spec

我们看这个pod:

  • requests:申请范围是0到node节点的最大配置

  • limits:申请范围是requests到无

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值