POD 平均调度到 不同 Node

简介: 1. 前言:      云上购买的 ECS 所支持的最大连接数,CPU 等资源有限,而 k8s 调度 pod 部署到 Node 按照资源水位等条件分配,部分高耗资源应用需要平均分布到不同的 Node 上,以防止同一个 Node 包含多个该应用 POD 导致网络链接数等资源消耗过大。 2. 实现思路: 将已经部署当前应用的Node 设置为不可调度; 获取部署

1. 前言:

     云上购买的 ECS 所支持的最大连接数,CPU 等资源有限,而 k8s 调度 pod 部署到 Node 按照资源水位等条件分配,部分高耗资源应用需要平均分布到不同的 Node 上,以防止同一个 Node 包含多个该应用 POD 导致网络链接数等资源消耗过大。

2. 实现思路:

  1. 将已经部署当前应用的Node 设置为不可调度;
  2. 获取部署当前应用且包含多个该应用 POD 的POD Name,删除该 POD, k8s 自动重新调度部署该 POD 到可调度的 Node 上;
  3. 如果还有未平均分布的 Node,多次循环执行以上操作;
  4. 将所有设置为不可调度的 Node 恢复为可以调度。

POD 均匀分布到 Node

3. 实现脚本

#!/bin/bash
## 设置 已经包含应用的Node为不可调度
for i in $(kubectl get nodes|grep Ready|awk '{print $1}') 
do
    echo $i
    check_results=$(kubectl describe node $i | grep {app_name} | awk "{print $2}"|wc -l)
    if (( $check_results > 0 )); then
       echo $check_results
       kubectl cordon $i 
    fi
done
## 删除多个 POD 部署的
for i in $(kubectl get nodes|grep Ready|awk '{print $1}')
do
    echo $i
    check_results=$(kubectl describe node $i | grep {app_name} | awk "{print $2}"|wc -l)
    if (( $check_results > 1 )); then
       echo $check_results
       check_results=$(kubectl describe node $i | grep {app_name} | awk '{print $2}'|head -1)
       echo $check_results
       kubectl delete pods $check_results --grace-period=0 --force -n {app_name}
    fi
done

## 设置 恢复Node 为可调度
for i in $(kubectl get nodes|grep Ready|awk '{print $1}') 
do
    echo $i
    kubectl uncordon $i 
done
目录
相关文章
|
调度 Perl
POD 平均调度到 不同 Node
1. 前言:  云上购买的 ECS 所支持的最大连接数,CPU 等资源有限,而 k8s 调度 pod 部署到 Node 按照资源水位等条件分配,部分高耗资源应用需要平均分布到不同的 Node 上,以防止同一个 Node 包含多个该应用 POD 导致网络链接数等资源消耗过大。
1519 0
|
2天前
|
JavaScript
nodejs安装之npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED reason: certificate has expired-证书错误通用问题解决方案-优雅草央千澈
nodejs安装之npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED reason: certificate has expired-证书错误通用问题解决方案-优雅草央千澈
|
2月前
|
Web App开发 JavaScript 前端开发
2024年5月node.js安装(winmac系统)保姆级教程
本篇博客为2024年5月版Node.js安装教程,适用于Windows和Mac系统。作者是一名熟悉JavaScript与Vue的大一学生,分享了Node.js的基本介绍、下载链接及简单安装步骤。安装完成后,通过终端命令`node -v`验证版本即可确认安装成功。欢迎关注作者,获取更多技术文章。
34 2
2024年5月node.js安装(winmac系统)保姆级教程
|
2月前
|
存储 JavaScript 搜索推荐
Node框架的安装和配置方法
安装 Node 框架是进行 Node 开发的第一步,通过正确的安装和配置,可以为后续的开发工作提供良好的基础。在安装过程中,需要仔细阅读相关文档和提示,遇到问题及时解决,以确保安装顺利完成。
109 2
|
4月前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
3月前
|
JavaScript 开发工具 git
已安装nodejs但是安装hexo报错
已安装nodejs但是安装hexo报错
48 2
|
3月前
|
JavaScript 算法 内存技术
如何降低node.js版本(nvm下载安装与使用)
如何降低node.js版本(nvm下载安装与使用)
|
4月前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)
|
3月前
|
Web App开发 JavaScript 前端开发
JavaWeb 22.Node.js_简介和安装
JavaWeb 22.Node.js_简介和安装
|
4月前
|
SQL JavaScript 数据库
sqlite在Windows环境下安装、使用、node.js连接
sqlite在Windows环境下安装、使用、node.js连接