首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【赵渝强老师】Kubernetes中Pod的调度策略

【赵渝强老师】Kubernetes中Pod的调度策略

原创
作者头像
赵渝强老师
发布2025-07-21 10:02:50
发布2025-07-21 10:02:50
1320
举报
文章被收录于专栏:容器技术容器技术

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

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

一、 Pod的创建过程

要理解Kubernetes是如何调度Pod的,首先就需要掌握Pod是如何被创建出来的。下图说明了Pod的创建过程。

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

视频讲解如下:

二、 Pod的调度约束

scheduler有默认支持的算法和策略对Pod进行调度,Kubernetes也允许定义自己的调度约束策略,将Pod运行在指定的Node节点上。调度约束可以通过两个字段来进行定义:nodeName和nodeSelector。

其中:

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

下面通过具体的示例来演示它们的用法。

2.1 指定nodeName的调度约束

(1)创建nodename-demo.yaml文件,并在文件中输入下面的内容:

代码语言: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)使用“kubectl apply”命令应用yaml文件。

代码语言:powershell
复制
kubectl apply -f nodename-demo.yaml

(3)查看Pod的详细信息,可以看出“nodename-demo”被调度器调度到了node1的节点上,如下图所示。

代码语言:powershell
复制
kubectl get pod -o wide

2.2 指定nodeSelector的调度约束

(1)给node2添加一个标签。

代码语言:powershell
复制
kubectl label node node2 nodeselector-key=nodeselector-value

(2)创建nodeselector-demo.yaml文件,并在文件中输入下面的内容:

代码语言: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

(3)使用“kubectl apply”命令应用yaml文件。

代码语言:powershell
复制
kubectl apply -f nodeselector-demo.yaml

(4)查看Pod的详细信息,可以看出“nodeselector-demo”被调度器调度到了node2的节点上,如下图所示。

代码语言:powershell
复制
kubectl get pod -o wide

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 Pod的创建过程
  • 二、 Pod的调度约束
    • 2.1 指定nodeName的调度约束
    • 2.2 指定nodeSelector的调度约束
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档