【Kubernetes】Pod 的调度策略

Pod 详解》系列,共包含以下几篇文章:

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!

Pod 的 调度 是指,Kubernetes 在创建 Pod 时,将其创建到最合适的 node 节点上,然后由 node 节点上的 kubelet 来运行 Pod。在默认情况下,调度器 scheduler 会根据特定的算法和策略将 Pod 调度到 node 节点上,这样可以满足绝大多数的需求。例如,调度 Pod 到资源满足要求的 node 节点上运行;或者分散到不同 node 节点上,以达到资源的均衡使用。

在一些特殊的场景下,scheduler 的默认调度算法策略并不能满足实际的需求。Kubernetes 也允许用户调整调度约束字段来指定将 Pod 调度到哪些 node 节点上。

1.Pod 的创建过程

在这里插入图片描述

  • 用户通过 kubectl 等接口提交创建 Pod 的 yaml 文件,向 Kubernetes 系统发起资源请求。
  • API Server 接收到用户请求之后,会做出相应的认证,然后检查信息,并且将元数据信息存储到 etcd 中,创建 Pod 资源初始化,这是第一次写 etcd 动作。
  • scheduler 通过 list-watch 的监听机制,查看要创建 Pod 资源,API Server 会立即把创建 Pod 的消息通知 scheduler,scheduler 发现 Pod 的属性中 Dest Node 为空时(Dest Node = ""),便会立即触发调度流程进行调度。
  • kubelet 根据调度结果执行 Pod 创建操作,绑定成功后,会启动容器运行时。scheduler 会调用 API Server 的 API 在 etcd 中创建一个 bound Pod 对象,它描述在一个工作节点上绑定运行的所有 Pod 信息。运行在每个工作节点上的 kubelet 也会定期与 API Server 同步 bound Pod 的信息,一旦发现在该工作节点上运行的 bound Pod 对象没有更新,则调用 Docker API 创建并启动 Pod 内的容器。

在这里插入图片描述

scheduler 在对 Pod 进行调度时,会根据 Pod 和 Pod 中每个容器对资源的需求,选择一个最优的 node 节点去运行这个 Pod。“满足 Pod 资源调度请求的 node 节点” 被称为 可调度节点。如果在集群中不存在这样的可调度节点,则 Pod 将被设置为未调度状态,直到集群中出现可调度节点。

2.自定义 Pod 调度的约束策略

scheduler 有默认支持的算法和策略用于对 Pod 进行调度。Kubernetes 也允许用户自定义 Pod 调度的约束策略,从而将 Pod 运行在指定的 node 节点上。调度约束可以通过以下两个字段来进行定义。

  • nodeName:将 Pod 调度到指定名称的 node 节点上。
  • nodeSelector:将 Pod 调度到匹配 Label 标签的 node 节点上。

2.1 指定 nodeName 的调度约束

  • 创建 nodename-demo.yaml 文件,并在其中输入以下内容:
apiVersion: v1
kind: Pod
metadata:
  name: nodename-demo
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  ##通过nodeName指定到node1节点上,这是节点名
  nodeName: node1

2.2 指定 nodeSelector 的调度约束

  • 创建 nodeselector-demo.yaml 文件,并在其中输入以下内容:
apiVersion: v1
kind: Pod
metadata:
  name: nodeselector-demo
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  ##根据nodeSelector指定的标签将Pod调度到对应的节点上
  nodeSelector:
    nodeselector-key: nodeselector-value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G皮T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值