k8s 弹性伸缩的使用

news/2024/11/19 7:25:30/

1.手动扩缩容

编辑一个yaml文件

vi deployment-nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:lables:app: nginxname: nginxnamespace: default
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: 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: nginxname: nginxnamespace: default
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec: containers:- name: nginximage: nginximagePullPolicy: Alwaysports:- containerPort: 80resources:requests:   #容器初始值大小memory: 50Micpu: 0.5limits:    #容器限制最大值memory: 100Micpu: 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.ppmy.cn/news/89206.html

相关文章

opencv_c++学习(十九)

一、图像间的距离变换 三种常用的距离计算方法: 欧式距离这里就不在解释。 街区距离:顾名思义,就类似于城市距离一样,并不是通过两点间的距离,而是我们从一个地点到达另一个地点的路程(横纵坐标差值之和)。 棋盘距离…

torch.distributed.launch多卡多机

torch.distributed.launch命令介绍 我们在训练分布式时候,会使用到 torch.distributed.launch 可以通过命令,来打印该模块提供的可选参数 python -m torch.distributed.launch --help usage: launch.py [-h] [--nnodes NNODES] [--node_rank NODE_RANK]…

SpringMVC详情

JavaEE体系结构包括四层,从上到下分别是应用层、Web层、业务层、持久层。Struts和SpringMVC是Web层的框架,Spring是业务层的框架,Hibernate和MyBatis是持久层的框架。 为什么要使用SpringMVC? 很多应用程序的问题在于处理业务数…

Spring Cloud Feign 是什么?如何使用它来简化 RESTful 调用?

Spring Cloud Feign 是什么?如何使用它来简化 RESTful 调用? 在分布式系统中,服务之间的通信是非常常见的场景。通常情况下,服务之间的通信是通过 RESTful API 实现的。但是,手动编写 RESTful 调用代码非常繁琐&#…

云渲染平台为什么越来越多的效果图公司开始使用?

随着3dmax版本的不断更迭,包括常用的V-Ray渲染器和Corona渲染器的不断更新,室内设计行业对于 效果图的渲染要求越来越高。而要求更高的渲染精度和更真实的渲染效果,所需要付出的代价则是不断增长的参数,这会使渲染一张效果图的时间…

vscode插件推荐

Vuter vue代码高亮区分VueHelper 代码提示vue3-snippets-for-vscode 生成vue3模板vue3-snippets 生成vue模板Vue VSCode Snippets 生成vue模板Vue Language Features (Volar) vue高亮区分Vue 3 Support - All In One 生成vue模板Vue 2 Snippets 生成vue模板vscode-icons 文件图…

2023-05-26 mysql列存储引擎-外连接相比内连接过于耗时-分析

摘要: 外连接相比内连接过于耗时,本文记录其分析过程 参考: https://en.wikipedia.org/wiki/Venn_diagram 查询SQL 外连接: SELECTa.ROW_IDFROMc1md_bank_acct aLEFT JOIN (SELECTxx.account_id,xx.fiscal_date,xx.balanceFROM(SELECTaccount_id,MAX(fiscal_date) fiscal_da…

C++ 代码整洁之道

NOTICE: 这篇文章的框架条目来自《C代码整洁之道:C17可持续软件开发模式实践》,作者: [德] 斯提芬罗特。书籍原名"Clean C: Sustainable Software Development Patterns and Best Practices with C 17"。 文章目录 编码基本原则保持简单和直接…