Kubernetes(k8s)容器编排Pod调度策略

本文介绍了如何在Kubernetes中进行节点调度和定向调度。节点调度通过指定Pod.spec.nodeName将Pod强制调度到特定Node,而标签调度则通过nodeSelector将Pod分配给具有特定标签的Node,以优化如数据库在SSD节点上的性能。这两种方法都确保了Pod的调度符合预期,但定向调度可能因缺乏匹配节点而导致Pod无法调度。
摘要由CSDN通过智能技术生成


1 节点调度

在这里插入图片描述

​ 一般而言pod的调度都是通过RC、Deployment等控制器自动完成,但是仍可以通过手动配置的方式进行调度,目的就是让pod的调度符合我们的预期。

Pod.spec.nodeName用于强制约束将Pod调度到指定的Node节点上,这里说是“调度”,但其实指定了nodeName的Pod会直接跳过Scheduler的调度逻辑,直接写入PodList列表,该匹配规则是强制匹配。

1.1 创建资源清单

vi pod-node-dispatch.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
        app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeName: node1 #指定调度节点为node1
      containers:
      - name: nginx
        image: nginx:1.20
        ports:
        - containerPort: 80

1.2 应用部署

kubectl apply -f pod-node-selector-dispatch.yml

kubectl get pods -o wide

创建部署后,我们发现节点在node1的节点上

在这里插入图片描述

1.3 删除pod

删除pod应用,pod控制器会重建pod

kubectl delete pod nginx-deployment-5dc7769598-n25q5

我们发现节点删除后,重新的应用还是落在了node1节点上,说明我们的节点调度生效的

在这里插入图片描述

2 定向调度(标签调度)

​ 定向调度是把pod调度到具有特定标签的node节点的一种调度方式,比如把MySQL数据库调度到具有SSD的node节点以优化数据库性能。此时需要首先给指定的node打上标签,并在pod中设置nodeSelector属性以完成pod的指定调度。

2.1 创建标签

给指定的node打上标签

2.1.1 添加标签

给node2添加上disk=ssd的标签

kubectl label nodes node2 disk=ssd

在这里插入图片描述

2.1.2 显示标签

显示node2的所有标签

kubectl label node node2 --list=true

我们发现我们的标签已经添加上去了

在这里插入图片描述

2.3 创建资源清单

vi pod-node-selector-dispatch.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
        app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        disk: ssd # 节点调度到
      containers:
      - name: nginx
        image: nginx:1.20
        ports:
        - containerPort: 80

2.4 应用部署

kubectl apply -f pod-node-selector-dispatch.yml

kubectl get pods -o wide

创建部署后,我们发现两个pod都在node2的节点上

在这里插入图片描述

2.5 删除pod

删除pod应用,pod控制器会重建pod

kubectl delete pod nginx-deployment-5dc7769598-n25q5

我们发现节点删除后,重新的应用还是落在了node2节点上,说明我们的定向调度生效的

在这里插入图片描述

注意:定向调度可以把pod调度到特定的node节点,但随之而来的缺点就是如果集群中不存在响应的node,即使有基本满足条件的node节点,pod也不会被调度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

赵广陆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值