9-2 Scheduler--- 玩转pod调度(上)

调度过程

首先需要知道调度哪个pod,pod的信息 pod的信息需要去优先级队列里拿.优先级队列用于存储等待调度的pod的信息,每个pod并不是对等,优先级高的需要提前调度.

informer会通用apiserver 去监听etcd的数据变化,如果发现有等待调度的pod,那就把pod的信息放到优先级队列中,然后informer的工作就完成了.然后循环开始工作.(新增的pod在刚刚创建的时候是没有nodeName的,只有在调度之后才会有.)

cache会从apiserver 拿到节点列表,以及节点的详细信息(cpu mem disk images pods),并缓存在cache中.

然后开始调度,调度一般分为两步,1 预选策略(predicate) 排除不满足要求的节点 剩余的资源满足要求,端口不冲突,vpc满足需要,node状态属于健康. 2 优选策略,对上述节点进行评分,选择最高分的node 成为最终调度的节点.

然后Pod和Node就建立一个绑定关系,并把信息告诉apiserver,然后apiserver就会去更新pod的nodename的字段.

然后指定node上的kubelet会把服务给调度起来

可以通过修改label,影响这个预选策略.

 

[kubernetes]9-2 Scheduler--- 玩转pod调度(上)

 

 

实践

创建 web-dev-node.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-demo-node
  namespace: dev
spec:
  selector:
    matchLabels:
      app: web-demo-node
  replicas: 1
  template:
    metadata:
      labels:
        app: web-demo-node
    spec:
      containers:
      - name: web-demo-node
        image: harbor.pdabc.com/kubernetes/web:v3
        ports:
        - containerPort: 8080
# 亲和性 与 节点亲和性
      affinity:
        nodeAffinity:
# 意思是必须要满足下面的条件 才能调度 
          requiredDuringSchedulingIgnoredDuringExecution:
# 节点的选择策略 可以定义多个nodeSelectorTerms 表示或的关系
            nodeSelectorTerms:
# 匹配一个表达式 必须是
            - matchExpressions:
              - key: beta.kubernetes.io/arch
                operator: In
                values:
                - amd64
# 最好是满足条件 不过没有也没关系 
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: disktype
                operator: NotIn
                values:
                - ssd


 

查看node架构

kubectl  get nodes

kubectl get nodes kubernetes-node-03 -o yaml

[kubernetes]9-2 Scheduler--- 玩转pod调度(上)

[kubernetes]9-2 Scheduler--- 玩转pod调度(上)

 

kubectl  apply -f web-dev-node.yaml 

的确是调度在不是ssd的node上

[kubernetes]9-2 Scheduler--- 玩转pod调度(上)

如果架构不满足 pod会处于pending状态,可以通过describe 查看pending的原因.

相关文章:

  • 2021-06-25
  • 2021-07-19
  • 2021-09-30
  • 2021-12-13
  • 2021-08-20
  • 2021-11-15
  • 2022-12-23
  • 2021-10-28
猜你喜欢
  • 2021-09-17
  • 2021-07-15
  • 2021-09-27
  • 2022-02-16
  • 2021-10-21
  • 2022-12-23
  • 2021-12-01
相关资源
相似解决方案