k8s专栏-pod(二)

前言:

参考k8s教程由浅入深

八、pod调度策略-创建pod流程

用户流程:通过apiserver发起创建任务--->写入etcd中

scheduler:使用apiserver,watch etcd,有新数据则使用调度算法,将pod调度到某一个结点上

node结点:使用kubelet访问apiserver,读取etcd,拿到分配给当前结点的pod,再使用docker创建容器,并将结点创建docker的状态返回给apiserver,最终写入etcd

九、影响调度的属性

1.pod的资源限制

调度系统会根据request找到足够pod结点运行的node

2.节点选择器标签影响pod调度

apiVersion: apps/v1
kind: Pod
metadata:
  name: pod-test
spec:
  # 节点选择标签
  nodeSelector:
    env_role: dev
  containers:
  - image: nginx:1.14
    name: nginx
    imagePullPolicy:Always
  restartPolicy:Never

步骤:a.对节点组合进行分类,命令:

kubectl label node node名称 env_role=dev

例如:          

             b.使用结点选择器 nodeSelector env_role分配类别,选择部署集群

3.结点亲和性

与nodeSelector类似,根据节点上的标签来决定调度到哪些节点

类别:硬亲和性(约束必须满足) 软亲和性(尝试满足,不保证满足) 反亲和性(notIn notExist)

apiVersion: apps/v1
kind: Pod
metadata:
  name: pod-test
spec:
  affinity:
    nodeAffinity:
      # 硬亲和性 
      requireDuringSchedulingIgnoredDuringExecution:
        nodeSelectTerms:
        - matchExpressions:
          - key: env_role
            operation: In
            values:
            - dev
            - test
      # 软亲和性
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 1
        preference:
        - matchExpressions:
          - key: group
            operator: In
            values:
            - otherprod
  containers:
  - image: nginx:1.14
    name: nginx
    imagePullPolicy:Always
  restartPolicy:Never

支持常用操作符:In  NotIn  Exists  Gt  Lt  NotExists

4.污点和污点容忍

a.与nodeSelecoter和nodeAffinity区别

nodeSelecoter和nodeAffinity为pod属性,调度时实现

Taint污点:节点属性,节点不做普通分配调度

b.应用场景

  • 专用节点配备
  • 配置特定硬件节点配备
  • 基于Taint驱逐

c.演示

查看污点指令

kubectl describe node k8smaster | grep Taints

污点值:

NoSchedule:一定不被调度  

PreferNoSchdule :尽量被调度

NoExecute: 不会调度,并且会驱逐到Node已有Pod

为节点添加污点

kubectl taint node [node] key=value:污点的三个值

删除污点

kubectl taint node node名称 key:value-

污点容忍

允许容器被调度到含有污点key=value的node节点上

apiVersion: apps/v1
kind: Pod
metadata:
  name: pod-test
spec:
  # 污点容忍
  tolerations:
  - key: "key"
    oprator: "Equal"
    value: "Value"
    effect: "NoSchedule"
  containers:
  - image: nginx:1.14
    name: nginx
    imagePullPolicy:Always
  restartPolicy:Never

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值