0
点赞
收藏
分享

微信扫一扫

第五章 k8s Pod水平自动缩放

官网

​​https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale/​​

原理

基本原理:HPA 通过监控分析控制器控制的所有 Pod 的负载变化情况来确定是否需要调整 Pod 的副本数量

HPA的实现有两个版本:

  • autoscaling/v1,只包含了根据CPU指标的检测,稳定版本
  • autoscaling/v2,支持根据memory或者用户自定义指标进行伸缩

第五章 k8s Pod水平自动缩放_数据

  • metric-server,只是数据的中转和聚合,两者都是调用的 kubelet 的 api 接口获取的数据,而 kubelet 代码中实际采集指标的是 cadvisor 模块,你可以在 node 节点访问 10250 端口获取监控数据:
  • Kubelet Summary metrics: ​​https://127.0.0.1:10250/metrics,暴露​​ node、pod 汇总数据
  • Cadvisor metrics: ​​https://127.0.0.1:10250/metrics/cadvisor,暴露​​ container 维度数据


部署教程

​​https://github.com/kubernetes-sigs/metrics-server​​

开始部署hpa

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.1/components.yaml


hap部署验证

kubectl top pod  # 查看pod资源使用
kubectl top node # 查看node资源使用


创建hpa

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa-mem
namespace: test # 跟要自动伸缩的deploy要在同一个命名空间
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment # 这里指定要自动伸缩的deployment的名字
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa-cpu
namespace: test # 跟要自动伸缩的deploy要在同一个命名空间
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment # 这里指定要自动伸缩的deployment的名字
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 80


查看结果

kubectl describe deployment nginx-deployment -n test
kubectl describe hpa nginx-hpa-mem -n test
kubectl describe hpa nginx-hpa-cpu -n test


注意事项

Deployment对象必须配置requests的参数,不然无法获取监控数据,也无法通过HPA进行动态伸缩

举报

相关推荐

0 条评论