OpenShift 4 - 使用 Descheduler 重新调度OpenShift 集群节点的 Pod(附视频)

59 篇文章 2 订阅

OpenShift / RHEL / DevSecOps 汇总目录
文本已在OpenShift 4.10环境中进行验证。

场景说明

当新的 Worker 节点加入 OpenShift 集群后,通常只有在原有集群的 Worker 节点的资源比较吃紧的时候, 分布在原有集群的 Worker 节点的 Pod 才会被强制重新调度新节点上,否则只有新创建的 Pod 才会被调度到新节点上。

为了能将集群中已有 Pod 重新分配到新 Worker 节点上,可以使用 OpenShift 提供的 Kube Deschedule Operator,并配置对应策略。这样可以让应用负载尽快地、合理地分布在集群中的 Worker 节点之间。

验证 Descheduler

说明:验证环境的 OpenShift 集群有 3个 Worker 节点。另外,为了能够验证新节点加入进群的过程,我们使用了通过 IPI 安装的 OpenShift 具备的 MachineSet 自动创建新节点来替换故障节点的功能。实现方法参见《OpenShift 4 - 5 分钟自动替换 OpenShift 集群故障节点 》。

部署测试应用

  1. 部署测试应用,并将 pod 数量调整到 20。
oc new-project hello
oc new-app openshift/hello-openshift
oc scale --replicas=20 deployment/hello-openshift
  1. 执行命令,确认 pod 是分布在 3 个 worker 节点中运行的。
oc get pod -o wide

在这里插入图片描述

关闭一个 Machine

  1. 根据《OpenShift 4 - 5 分钟自动替换 OpenShift 集群故障节点 》,先通过机器集减少一个 worker 机器,完成后再增加一个 worker 机器。
  2. 执行命令,确认 pod 已经分布在 2 个 worker 节点中运行了。
oc get pod -o wide | grep Running

在这里插入图片描述

安装配置 Kube Deschedule Operator

  1. 进入 OpenShift 控制台的 “管理”-“命名空间” 菜单,新建 openshift-kube-descheduler-operator 命名空间。
  2. 在 OpenShift 的 OpeartorHub 中找到 Kube Descheduler Operator,然后将其安装到 openshift-kube-descheduler-operator 项目中。
  3. 在安装好的 Kube Descheduler Operator 中创建一个 Kube Descheduler 实例,将 Descheduling Interval Seconds 设为 300,Profiles 设为 TopologyAndDuplicates(可以让 pod 尽量分布在所有允许的节点上)。
    在这里插入图片描述
  4. 可以查看这个新建的 Kube Descheduler 实例包括的 Kubernetes 对象。在这里插入图片描述

确认重新调度结果

反复执行以下命令,最后确认 pod 再次运行在 3 个 worker 节点中了。

oc get pod -o wide

在这里插入图片描述

演示视频

视频

参考

https://www.qikqiak.com/post/k8s-cluster-balancer/
https://github.com/kubernetes-sigs/descheduler

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值