HPA 自动伸缩

HPA:horizontal Pod Autoscaling的水平自动伸缩。

这是k8s自带的模块。

pod占用cpu比例到达一定阀值,会触发伸缩机制。

replication controller 副本控制器

deployment controller 节点控制器 部署pod

hpa控制副本的数量一键控制部署pod。

1,hpa基于kube-controll-manager服务,周期性的检测pod的cpu使用率 默认30秒

2,hpa和replication controller,deployment controller,都属于k8s的资源对象。通过跟踪分析副本和deployment的pod的负载变化,针对性的调整目标pod的副本数。

阀值:正常情况下,pod的副本数,以及到达阀值之后,pod的扩容做的数量。

3,metrics

targets:阀值 minpods 最小的pod数 maxpods最大的pod数,peplicas当前的pod数

实验

每个node节点拖入镜像

安装hpa

mkdir hpa

cd hpa

docker load -i metrics-server.tar

master放入yaml文件

kubectl apply -f components.yam

部署在kube-system命名空间

测试创建pod

kubectl create deployment nginx1 --image=nginx:1.22 --replicas=3

查看top,节点占用主机的cpu的情况

查看pod占用cpu的情况

完成

查看HPA如何实现

vim hpa-test.yaml

命令行的方式指定(不推荐):

在容器内进行压力测试

没有进行限制资源

当没有获取到限制资源,无法监控

添加了资源限制之后

重新进行压力测试:

沾满了,开始扩容

最多会变成指定最大的5个

会慢慢缩容

在同一个节点上测试(作业)

在另一个上压力测试,

pod自扩容到最大的5个pod

HPA的规则:

1,定义的时候必须要有资源限制,否则HPA无法进行监控

2,扩容是及时的,只要超过阀值会立刻扩容,不是立刻扩容到最大副本数。他会在最小值和最大值波动。如果扩容的数量满足了需求,不会在扩容。

3,缩容是缓慢的。如果业务的峰值较高,回收的策略太积极的话,可能会产生业务的崩溃。缩容的速度是比较慢的。

周期性的获取数据,缩容的机制问题。

面试题:

pod的副本数扩缩容有两种方式:

1,手动方式,修改控制器的副本数

一,通过命令行修改

kubectl scale deployment centos-test --replicas=5

二,

kubectl edit deployments.apps centos-test

三,修改yaml文件,apply -f 再重新部署更新。

2,hpa自动扩缩容,hpa监控的是cpu

自动扩缩容的的机制,扩的快,缩的慢,快的话系统容易崩溃。

资源限制:

pod的资源限制:

resources:

limits:

cpu: "1"

memory: 512Mi

pod最大占用1个cpu ,内存最大为512Mi

命名空间的资源限制:

lucky-cloud项目----部署再test1的命名空间,如果lucky-cloud不做限制,或者命名空间不做限制,他依然会占满所有集群资源。

部署到指定的命名空间

其他配置

设置多个svc

到低三个就不能建了

查看命名空间的资源限制

kubectl describe ns default

通过命名空间来对pod进行资源限制:

最多就占1个

不需要对每一个pod进行进行资源限制。

type的类型有三种,Container Pod Pvc

总结:

HPA 自动扩缩容

命名空间

第一种:

ResourceQuota

可以对命名空间进行资源限制。

第二种:

LimitRange:

直接在命名空间当中创建pod,容器的资源限制,这是一种统一限制。所有的pod都受这个条件的制约。

pod的资源限制,一般是我们创建的时候就声明好的,生产中是必加选项

resources:

limit

命名空间资源限制 对命名空间实验cpu和内存一定会做限制。

ResourceQuota

命名空间统一资源限制

limitRange

面试:

在生成中,一定会对命名空间和命名空间中的pod做cpu和内存的限制

核心:防止整个集群的资源被一个服务或者一个命名空间占满。

HPA:自动伸缩

作业固定在一个pod,观察,扩容之后是否会下降。

k8s集群部署pod的最大数量:10000

哪些服务会部署再k8s当中

中间件:

kafka:6

redis:3

业务服务:

自定义的镜像创建的容器

前端:nginx 3-6

12个左右。每个都是一个独立的业务。

在容器内抓包

复制id

在指定节点上将id解析为数字

72055 就是容器是pid号

进入容器内的网络命名空间,

获取网络设备名称

开始抓包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值