k8s 弹性伸缩的使用

news2024/11/22 16:36:13

1.手动扩缩容

编辑一个yaml文件

vi deployment-nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  lables:
     app: nginx
  name: nginx
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        -containerPort: 80

执行yaml生成一下pod

kubectl create -f deployment-nginx.yaml

kubectl get pod -o wide -l app=nginx -n default

kubectl get deployment -o wide -n default

 可以看到三个pod都正常启动了,接下来执行一下手动扩缩容的操作

扩容到5个pod

kubectl scale deployment nginx --replicas=5 -n default

kubectl get pod -o wide -n default 

 可以看到扩容了两个新的pod出来

缩容至2个pod

kubectl scale deployment nginx --replicas=2 -n default

kubectl get pod -o wide -n default -l app=nginx

 可以看到pod的数量缩小为了两个

也可以使用edit命令去做pod的扩缩容,效果是和scale命令一样的,只是scale是专门手动扩缩容pod的命令,edit是手动更新yaml配置的,更新后配置文件的内容自动生效

扩容至3个pod

kubectl edit deployment nginx

 kubectl get pod -n default

 可以看到扩容成了三个pod

2.自动扩缩容HPA 

要实现扩缩容得先安装Metrics Server服务,因为自动扩缩容是通过监控容器得cpu或者memory得上限来实现弹性伸缩的,在 Kubernetes 集群中,Metrics Server 是一个用于收集和聚合集群内部组件的性能指标数据的服务。它可以收集 CPU 使用率、内存使用率、网络 I/O 等指标,并将这些指标暴露给 Kubernetes API Server,以供其他组件使用,在弹性伸缩中,Metrics Server 可以帮助 Kubernetes 自动地监测集群中各个 Pod 的资源使用情况,并根据配置的规则进行自动扩展或缩减

2.1部署Metrics Server服务

从github上下载yaml文件

wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.0/components.yaml

 修改yaml文件配置

vi components.yaml

修改deployment中的配置

配置检查时间间隔和忽略证书验证
- --metric-resolution=15s
- --kubelet-insecure-tls

修改镜像源为阿里云的镜像源
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.5.0

使用yaml文件创建服务

kubectl create -f  components.yaml

查看Metrics Server的pod状态

kubectl get pod -n kube-system |grep metrics

 如果pod启动不起来可以使用以下命令查看错误的日志(pod名称要根据自己查询出来的填写)

kubectl describe pod metrics-server-dcdc8968b-b5lbc -n kube-system

 查看是否获取到监控的值

kubectl top node

 至此Metrics Server服务配置完成

接下来尝试一下配置自动弹性伸缩

修改一下之前的yaml

vi deployment-nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata: 
  labels:
    app: nginx
  name: nginx
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec: 
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: Always
        ports:
        - containerPort: 80
        resources:
          requests:   #容器初始值大小
            memory: 50Mi
            cpu: 0.5
          limits:    #容器限制最大值
            memory: 100Mi
            cpu: 1

重载一下yaml文件配置

kubectl apply -f deployment-nginx.yaml

配置service服务暴露端口

kubectl expose deployment nginx --port=8080 --target-port=80 --type=NodePort

这个命令的效果是创建一个 Service 对象,该对象将端口 8080 映射到 Deployment 中的容器的端口 80,并将 Service 对象的 IP 地址和随机端口号分配给集群节点的 IP 地址和端口号

查看暴露的端口

kubectl get service

配置hpa

kubectl autoscale deployment nginx --min=3 --max=10 --cpu-percent=10

这里为了测试cpu上限设置低一点为10%

用多几台主机使用以下命令访问暴露的端口

while true;do curl -s 10.1.60.119:30537 >> /dev/null;done

查看一下hpa

kubectl get hpa

 可以看到监控的cpu使用率已经涨上去了,但是还没有创建新的容器,需要等一会

查看deployment、hpa、pod

kuebctl get deployment

kubectl get hpa

kubectl get pod -n default -l app=nginx

 可以看到pod数据已经扩容了,变成了7个pod 

kubectl get hpa

 再次查看hpa可以看到pod数量扩容后,cpu使用率降了下来

现在把所有的访问取消掉,等一会在观察,会看到pod的数量回落

kubectl get hpa

kubectl get pod -n default -l app=nginx

 可以看到pod的数量回落到了3个

至此hpa配置完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言交换数组内容

代码&#xff1a; int main() {int arr1[] { 1,2,3,4,5 };int arr2[] { 6,7,8,9,0 };int sz sizeof(arr1) / sizeof(arr1[0]);int i 0;for (i 0;i<sz; i ) {int tmp arr1[i];arr1[i] arr2[i];arr2[i] tmp;}for (i 0; i < sz; i) {printf("%d ", ar…

用Vue简单开发一个学习界面

文章目录 一.首先创建我们的Vue文件夹二.源代码BodyDemoHearderDemoHomeDemoMarkdownDemoFileManager.jsMain.js&#xff08;注意绑定&#xff09;APP源代码 效果图&#xff08;按钮功能&#xff09;新增二级菜单&#xff08;v-for&#xff09;需要的可以私信 一.首先创建我们的…

办公技巧:学会这 7 种 PPT 制作技巧,让 PPT 制作效率飙升

F4 键&#xff1a;重复上一步操作 例如需要你在一分钟内完成 8 个形状的排版&#xff0c;你会怎么做&#xff1f; 如果是最基础的方式&#xff0c;可能得画出一个之后&#xff0c;慢慢的按住 Ctrl 复制新的出来&#xff0c;但这样实在是太慢了&#xff01;&#xff08;你是这样…

游戏安全运营前置化,10项安全测试预见外挂风险

自今年起&#xff0c;游戏版号已恢复常态化发放。据统计&#xff0c;截至目前年内累计发放460款游戏版号&#xff0c;每月的发放数量均超80款。多款热门新游已上线&#xff0c;大量游戏也已进入测试阶段&#xff0c;蓄势待发&#xff0c;游戏行业持续回暖。 在游戏行业动态回暖…

【历史上的今天】5 月 26 日:美国首个计算机软件程序专利;苹果市值首次超越微软;Wiki 的发明者出生

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 5 月 26 日&#xff0c;在 1995 年的今天&#xff0c;微软公司首席执行官比尔盖茨发表了一番讲话&#xff0c;他认为自己的公司在估计互联网的影响和普及方面错…

opencv实践-图像去畸变

目录 1.背景2.镜头成像畸变原因3.去畸变方法4. opencv去畸变函数5.代码实现 1.背景 由于相机的镜头并不完全理想&#xff0c;成像时会产生线条扭曲、失真等。对双目图像、鸟瞰图等进行处理时&#xff0c;首先要矫正去畸变。 2.镜头成像畸变原因 相机的镜头前有一块透镜&…

python+vue垃圾分类论坛的设计与实现85l30

环境保护是一项利国利民的重大民生工程,是造福子孙后代的幸福事,基于全面分析我国大学生环境保护教育现状的基础上提出了高校可通过开设环境类通识任选课、专业课中融入环境保护教育、环境保护实践教学、环境保护第二课堂等有效途径加强对非环境类专业大学生环境保护教育。 本系…

拥挤聚集智能监测算法

拥挤聚集智能监测算法可以通过yolov7网络模型深度学习框架对人员数量、密度等进行实时监测&#xff0c;拥挤聚集智能监算法识别出拥挤聚集的情况&#xff0c;并及时发出预警。YOLOv7 的发展方向与当前主流的实时目标检测器不同&#xff0c;它能够同时支持移动 GPU 和从边缘到云…

开源日志监控采集平台ELKF

---------------------- FilebeatELK 部署 ---------------------- Node1节点&#xff08;2C/4G&#xff09;&#xff1a;node1/192.168.179.20 Elasticsearch Node2节点&#xff08;2C/4G&#xff09;&#xff1a;node2/192.168.179.23 …

All in ECP,转转一站式ES数据清洗解决方案

1. 业务背景 转转作为国内头部的循环经济产业公司&#xff0c;目前业务架构是中台模式。中台负责提供通用的交易能力&#xff0c;灵活快速响应业务需求&#xff0c;业务方负责前台探索创新&#xff0c;为用户提供有价值的服务。 转转交易中台目前分为基础服务、订单、促销、天路…

《深度思维》跨越式*

参考&#xff1a; https://www.zhihu.com/tardis/zm/art/410244111?source_id1005 从思维的技术到思维的格局&#xff0c;再到专注努力与漫长人生中坚忍的精神图腾&#xff0c;作者通过方法理论与案例相结合&#xff0c;介绍了深度思思维的学习方法。 深度思维简介 拥有较长的…

手机一开,说办就办!指尖上的“数字江西”

数字江西科技有限公司&#xff08;下简称“数字江西”&#xff09;是经省委省政府同意&#xff0c;由江西省信息中心&#xff08;大数据中心&#xff09;管理的国有控股合资公司&#xff0c;于2020年3月2日成立&#xff0c;是江西省人民政府的重要实践&#xff0c;也是江西省委…

opencv_c++学习(二十三)

一、点拟合操作 拟合含义如上图&#xff0c;即为通过已知点去拟合一条直线或者一个多边形。 直线拟合函数&#xff1a; fitLine(lnputArray points, OutputArray line, int distType, double param, double reps, double aeps)points:输入待拟合直线的2D或者3D点集。 line:输…

【2023 · CANN训练营第一季】MindSpore模型快速调优攻略 第二章——MindSpore调试调优

1.生态迁移 生态迁移工具使用示例 生态迁移工具技术方案 不同框架间模型定义前端表达差别巨大(相同算子的API技术难点 、 算子功能、模型构建方式差别较大)&#xff1b; 对于同一框架&#xff0c;不管前端表达差异如何&#xff0c;最终对应的计算 图是相似的。因此提出&#x…

node.js+vue房屋租赁管理系统z0g8w

本系统主要包括以下功能模块&#xff1a;租户、出租人、房源信息、预约看房、合同信息等模块。 其中设计的主要功能如下&#xff1a; &#xff08;1&#xff09;用户的注册和登录本系统&#xff0c;登录到系统的首页。 &#xff08;2&#xff09;用户可以发布自己的房源信息…

快速了解iptables

初识 iptables是什么&#xff1f; iptables是一个在Linux操作系统上使用的防火墙工具&#xff0c;它可以用于配置和管理网络数据包的过滤、转发和修改等操作。 过滤数据包&#xff1a;iptables可以根据不同的规则过滤网络数据包&#xff0c;例如根据源IP地址、目标IP地址、端…

如何在华为OD机试中获得满分?Java实现【不含101的数】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

开源开放 生态共建 | openKylin社区单位会员突破200家!

当前&#xff0c;开放、协作、共享的开源模式已成为全球软件技术和产业创新的主导&#xff0c;也为信息技术国产自主化提供了强大助力。openKylin作为中国桌面操作系统开源社区&#xff0c;以聚焦桌面操作系统根技术为核心、以孵化相关领域关键项目为目标、以布道开源文化为抓手…

堪称「史上最详细」的整车信息安全强标将发布!释放了哪些信号?

确保汽车整车信息安全&#xff0c;或成为车企们继智能化竞争的下一个竞争焦点。 可以说&#xff0c;在智能化、网联化的驱动下&#xff0c;智能汽车成为了数据收集、数据传输、数据处理的关键节点&#xff0c;消费者在享受汽车智能化带来便利的同时&#xff0c;也逐渐重视智能…

【操作系统复习】第8章 文件管理

数据项、记录和文件 数据项 ➢ 基本数据项&#xff1a;描述一个对象的某种属性&#xff0c;又称字段 ➢ 组合数据项&#xff1a;由若干个基本数据项组成记录 ➢ 记录是一组相关数据项的集合&#xff0c;用于描述一个对象在某方面的属性。 ➢ 关键字&#xff1a;唯一能…