网站首页 > 技术文章 正文
HPA自动水平伸缩,可以根据资源使用率进行自动扩容、缩容pod的数量。根据 CPU 使用率或自定义 metrics 自动扩展 Pod 数量(支持 replication controller、deployment);k8s1.6版本之前是通过kubelet来获取监控指标,1.6版本之后是通过api server、heapster或者kube-aggregator来获取监控指标。
Metrics支持
根据不同版本的API中,HPA autoscale时靠以下指标来判断资源使用率:
1,autoscaling/v1
- CPU
2,autoscaling/v2alpha1
- 内存CPU
- CPU
- 自定义metrics
- 多metrics组合: 根据每个metric的值计算出scale的值,并将最大的那个值作为扩容的最终结果
使用示例
k8s环境基于k8s 1.9,仅使用autoscaling/v1 版本API,注意确保k8s 集群插件kubedns 和 heapster 工作正常。
kubectl top node # 检测heapster是否正常
创建deployment测试实例
# kubectl create -f deployment.yaml apiVersion: apps/v1beta2 kind: Deployment metadata: name: dw-gateway labels: app: dw-gateway spec: template: metadata: labels: app: dw-gateway spec: containers: - name: dw-gateway image: xuntian/dw-gateway imagePullPolicy: IfNotPresent ports: - name: http containerPort: 80 protocol: TCP livenessProbe: httpGet: path: /test port: http readinessProbe: httpGet: path: /test port: http resources: limits: cpu: 500m memory: 500Mi requests: cpu: 200m memory: 500Mi
创建hpa
# kubectl create -f hpa.yaml apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: dw-gateway-master-zh-cn namespace: default spec: maxReplicas: 10 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: dw-gateway-master-zh-cn targetCPUUtilizationPercentage: 30
结果
利用jmeter或其他工具对pod进行压力测试
# kubectl get hpa -o wide NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE dw-gateway-master-zh-cn Deployment/dw-gateway-master-zh-cn 0% / 30% 1 10 1 17h # kubectl get hpa -o wide NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE dw-gateway-master-zh-cn Deployment/dw-gateway-master-zh-cn 61% / 30% 1 10 1 # kubectl get hpa -o wide NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE dw-gateway-master-zh-cn Deployment/dw-gateway-master-zh-cn 61% / 30% 1 10 3 17h # kubectl get hpa -o wide NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE dw-gateway-master-zh-cn Deployment/dw-gateway-master-zh-cn 36% / 30% 1 10 8 17h
停止压测,REPLICAS的数量将逐渐降为1
猜你喜欢
- 2024-10-10 K8S集群metrics-server组件安装 k8s集群包含哪些组件
- 2024-10-10 第6课 Kubernetes之深入掌握Pod机制及应用
- 2024-10-10 万字长文 | 使用 RBAC 限制对 Kubernetes 资源的访问
- 2024-10-10 Kubernetes:监控指南 kubernetes 监控
- 2024-10-10 《蹲坑学K8S》之21-1:Metrics-Server监控
- 2024-10-10 K8S架构设计及工作流程分析 k8s 结构图
- 2024-10-10 Metrics Server 快速安装 melsoft安装教程
- 2024-10-10 K8S系统的监控及HPA控制器 k8s dashboard 监控
- 2024-10-10 如何通过在多个Vagrant管理的虚拟机上部署多节点Kubernetes集群
- 2024-10-10 2. Kubernetes设计架构(转载) kubernetes基础
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)