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 导致网络链接数等资源消耗过大。
1470 0
|
14天前
|
JSON JavaScript 前端开发
❤Nodejs 第九章(token身份认证和express-jwt的安装认识)
【4月更文挑战第9天】Node.js第九章介绍了Token身份认证,特别是JWT(JSON Web Token)作为跨域认证的解决方案。JWT由Header、Payload和Signature三部分组成,用于在客户端和服务器间安全传输用户信息。前端收到JWT后存储在localStorage或sessionStorage中,并在请求头中发送。Express-JWT是一个中间件,用于解析JWT。基本用法包括设置secret和algorithms。注意安全问题,避免混合使用不同算法以防止降级攻击。
36 0
|
1月前
|
JavaScript Windows
Win7内网安装高版本的Node方法,亲测有效node-v16.16.0
Win7内网安装高版本的Node方法,亲测有效node-v16.16.0
38 0
|
2月前
|
JavaScript Linux 数据安全/隐私保护
node内网安装npm私服以及依赖包上传发布verdaccio
node内网安装npm私服以及依赖包上传发布verdaccio
79 1
|
6天前
|
JavaScript 前端开发 Linux
Node.js安装与配置
`Node.js` 是一个基于 `Chrome V8` 引擎的 `JavaScript` 运行环境,它允许开发者使用 `JavaScript` 编写服务器端代码。以下是 `Node.js` 的安装与配置的详细步骤:
Node.js安装与配置
|
7天前
|
JSON JavaScript 关系型数据库
❤Nodejs 第十六章(Nodejs环境安装和依赖使用)
【4月更文挑战第16天】本文介绍了Node.js环境安装和项目搭建步骤。检查Node.js和npm版本安装核心依赖,如Express(Web应用框架)、MySQL库、CORS(解决跨域问题)、body-parser(解析POST数据)、express-jwt和jsonwebtoken(JWT验证)、multer(文件上传处理)、ws(WebSocket支持),以及可选的dotenv(管理环境变量)和ejs(模板引擎)。完整源码可在Gitee开源项目[nexusapi](https://gitee.com/lintaibai/nexusapi)中找到。
17 0
|
14天前
|
JavaScript Linux Python
Linux 安装 Node.js | NPM
Linux 安装 Node.js | NPM
8 0
|
19天前
node安装常用工具
node安装常用工具
9 0
|
25天前
|
数据采集 JavaScript 前端开发
❤Nodejs 第一章(认识安装)
【4月更文挑战第1天】Nodejs 是一个跨平台的 JavaScript 运行时环境,基于Chrome的V8引擎。它以异步I/O和事件驱动为特点,用于构建高效、可扩展的网络应用。Node.js 使用npm作为包管理工具,拥有大量的模块资源。它适合IO密集型应用,但不适宜CPU密集型任务。其应用场景广泛,包括前端框架、后端服务、爬虫、桌面应用、移动应用、构建工具和CICD流程等。
70 1
❤Nodejs 第一章(认识安装)
|
26天前
|
Linux Windows
教你在Linux上安装Node并用Electron打包deb和rpm包
教你在Linux上安装Node并用Electron打包deb和rpm包
32 9