HPA(Horizontal Pod Autoscaling):pod的水平自动伸缩
这是K8S自带的模块
pod占用CPU的比率到达一定的阀值,会触发伸缩机制
replication controller:副本控制器。pod的副本数
deployment controller:节点控制器。部署pod
HPA控制副本的数量以及控制部署pod
1、HPA基于kubecontroll-manager服务,周期性的检测pod的cpu使用频率,默认30s
2、HPA和replication controller、deployment controller都属于K8S的资源对象。通过跟踪分析副本控制器和deployment的pod的负载变化,针对性的调整目标pod的副本数
针对性:会有一个阀值,定义的是:在正常情况下pod的副本数以及达到阀值后pod的扩容最大数量
3、metrics-server部署到集群中,对外提供度量的数据
HPA的规则:
1、定义pod的时候必须要有资源限制,否则HPA无法进行监控
2、扩容是即时的,只要超过调值会立刻扩容,但是不是立刻扩容到最大副本数。会在最小值和最大值之间波动。如果扩容的数量满足了要求,不会再扩容
3、缩容是缓慢的。如果业务的峰值较高,回收的策略太积极的话,可能会产生业务的崩溃。缩容的速度是比较慢的
周期性的获取数据,缩容的机制问题
pod的副本数扩缩容有两种方式:
1、手动(修改控制器的副本数)
① kubectl scale deployment centos-test --replicas=5
② kubectl edit deployments .apps centos-test
③ 修改yaml文件
replicas: 1
apply -f 部署更新
2、自动扩缩容
HPA HPA监控的是CPU
资源限制:
①pod的资源限制
②命名空间资源限制
lucky-cloud项目.-部在test1的命名空问,如果lucky-coloud不做限制,或者命名空问不做限制,他依然会占满所有集群资源
K8S集群部署pod的最大数量:10000个
busybox: 就是最小化的centos 4M
哪些服务会部署在k8s当中:
中间件:
kafka:6个
redis:3个
业务服务:
自定义的镜像创建的容器:
pluigs
前端:
nginx 3-6个 50%
电网: 配电云主站
12个左右
mysql是独立的,是实机部署
ELK不好说
docker
k8s
真机
配电云主站:没有elk
命名空间资源限制:
HPA 自动扩缩容
命名空间
第一种:
ResourceQuota
可以对命名空间进行资源限制
第二种:
LimitRange:
直接声明在命名空问当中创建的pod,容器的资源限制,这是一种统一限制。所有的pod都受这个条件的制约
pod资源限制 (一般是我们创建的时候声明好的,必加选项)
resources:
limit
命名空间资源限制 对命令空间使用cpu和内存一定会做限制
命名空间资源限制
ResourceQuota
核心: 防止整个集群的资源被一个服务或者一个命名空间占满。
命名空间统一资源限制
LimitRange
HPA:自动伸缩。
nodeName固定在一个pod,观察,扩容之后,调值是否会下降