云原生
Kubernetes基础
容器技术介绍
Docker快速入门
Containerd快速入门
K8S主要资源罗列
认识YAML
API资源对象
Kubernetes安全掌控
Kubernetes网络
Kubernetes高级调度
Kubernetes 存储
Kubernetes集群维护
Skywalking全链路监控
ConfigMap&Secret场景应用
Kubernetes基础概念及核心组件
水平自动扩容和缩容HPA
Jenkins
k8s中部署jenkins并利用master-slave模式实现CICD
Jenkins构建过程中常见问题排查与解决
Jenkins部署在k8s集群之外使用动态slave模式
Jenkins基于Helm的应用发布
Jenkins Pipeline语法
EFKStack
EFK日志平台部署管理
海量数据下的EFK架构优化升级
基于Loki的日志收集系统
Ingress
基于Kubernetes的Ingress-Nginx解决方案
Ingress-Nginx高级配置
使用 Ingress-Nginx 进行灰度(金丝雀)发布
Ingress-nginx优化配置
APM
Skywalking全链路监控
基于Helm部署Skywalking
应用接入Skywalking
服务网格
Istio
基于Istio的微服务可观察性
基于Istio的微服务Gateway实战
Kubernetes高可用集群部署
Kuberntes部署MetalLB负载均衡器
Ceph
使用cephadm部署ceph集群
使用Rook部署Ceph存储集群
openstack
glance上传镜像失败
mariadb运行不起来
创建域和项目错误_1
创建域和项目错误_2
安装计算节点
时钟源
网络创建失败
本文档使用 MrDoc 发布
-
+
首页
水平自动扩容和缩容HPA
HPA全称是Horizontal Pod Autoscaler,翻译成中文是POD水平自动伸缩,HPA可以基于CPU利用率对replication controller、deployment和replicaset中的pod数量进行自动扩缩容(除了CPU利用率也可以基于其他应程序提供的度量指标custom metrics进行自动扩缩容)。pod自动缩放不适用于无法缩放的对象,比如DaemonSets。 HPA由Kubernetes API资源和控制器实现。资源决定了控制器的行为。控制器会周期性的获取目标资源指标(如,平均CPU利用率),并与目标值相比较后来调整Pod副本数量。 创建测试Deployment ``` $ vi php-apache.yaml apiVersion: apps/v1 kind: Deployment metadata: name: php-apache spec: selector: matchLabels: run: php-apache replicas: 1 template: metadata: labels: run: php-apache spec: containers: - name: php-apache image: aminglinux/hpa-example ports: - containerPort: 80 resources: limits: cpu: 500m ##限制Pod CPU资源最多使用500m requests: cpu: 200m ##K8s要保证Pod使用的最小cpu资源为200m --- apiVersion: v1 kind: Service metadata: name: php-apache labels: run: php-apache spec: ports: - port: 80 selector: run: php-apache ``` 应用YAML文件 ``` $ kubectl apply -f php-apache.yaml ``` 安装merics-server(通过它才能获取到具体的资源使用情况) 下载yaml文件 ``` $ wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml ``` 修改YAML文件 ``` $ vi high-availability-1.21+.yaml 将image: k8s.gcr.io/metrics-server/metrics-server:v0.6.2 修改为 image: registry.cn-hangzhou.aliyuncs.com/kavin1028/metrics-server:v0.6.4 在image: 这行上面增加一行: - --kubelet-insecure-tls ```  应用此YAML文件 ``` $ kubectl apply -f high-availability-1.21+.yaml ``` 创建HPA ``` $ vi hpa-php-apache.yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: php-apache spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: php-apache minReplicas: 1 ##最小Pod数为1 maxReplicas: 10 ##最大Pod数为10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 ##当Pod的CPU使用率超过50%时,需要自动扩容 ``` 应用YAML ``` $ kubectl apply -f hpa-php-apache.yaml ``` 模拟php-apache Pod CPU使用率增加 再开一个终端,执行 ``` $ kubectl run -i --tty load-generator --rm --image=busybox:1.28 --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done" If you don't see a command prompt, try pressing enter. OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK! ``` 回到原来终端查看hap和po `kubectl get deployment,po,hpa |egrep 'NAME|php-apache'` ##php-apache Pod副本会逐渐增加,hpa的TARGETS列CPU使用率会越来越高,当超过50%就会自动生成新的Pod副本 ``` $ kubectl get deploy,hpa,po |egrep 'NAME|php-apache' NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/php-apache 9/9 9 9 8m NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE horizontalpodautoscaler.autoscaling/php-apache Deployment/php-apache 34%/50% 1 10 9 9m40s NAME READY STATUS RESTARTS AGE pod/php-apache-756896bc49-275pb 1/1 Running 0 99s pod/php-apache-756896bc49-5ccn9 1/1 Running 0 54s pod/php-apache-756896bc49-8mp28 1/1 Running 0 8m pod/php-apache-756896bc49-bfsbj 1/1 Running 0 99s pod/php-apache-756896bc49-g27dx 1/1 Running 0 114s pod/php-apache-756896bc49-m5nbh 1/1 Running 0 54s pod/php-apache-756896bc49-pk5wf 1/1 Running 0 114s pod/php-apache-756896bc49-r46pm 1/1 Running 0 54s pod/php-apache-756896bc49-xg4hq 1/1 Running 0 54s ``` 停止执行后,缓慢缩容 ``` [root@master01 HPA]# while :; do kubectl get po | grep 'php-apache' | wc -l; sleep 3; done 9 9 9 9 9 8 8 8 8 8 7 7 7 7 7 7 7 7 6 6 6 6 6 4 4 4 4 2 1 1 1 1 1 ```
阿星
2024年1月28日 14:34
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
📢 网站已迁移:
本站内容已迁移至新地址:
zhoumx.net
。
注意:
本网站将不再更新,请尽快访问新站点。
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码