1. 功能列表

功能点 功能详述 优先级 API
创建 HPA 对象 创建 HPA 资源对象
支持 CPU / Memory Utilization
P0 CreateUK8SResource
展示 HPA 对象 展示 HPA 资源列表
及各个 HPA 对象详细信息
P0 ListUK8SResource
DescribeUK8SResource
修改 HPA 对象 修改 HPA 资源对象 P1 UpdateUK8SResource
删除 HPA 对象 删除 HPA资源对象 P1 DeleteUK8SResource

2. 功能详细设计

2.1 创建 HPA 对象

2.1.1 表单添加

image.png
调用 CreateUK8SResource API,前端根据输入拼接 Yaml

  1. # 创建一个针对 nginx Deployment,目标 CPU/Memory 扩容阈值均为 50%,最小副本数 1,最大副本数 10 的 HPA 对象
  2. apiVersion: autoscaling/v2beta2
  3. kind: HorizontalPodAutoscaler
  4. metadata:
  5. name: nginx # HPA 对象名称
  6. namespace: Default # 命名空间
  7. spec:
  8. scaleTargetRef:
  9. apiVersion: apps/v1
  10. kind: Deployment # 应用类型
  11. name: nginx # 应用名称
  12. minReplicas: 1 # 伸缩区间下限
  13. maxReplicas: 10 # 伸缩区间上限
  14. metrics:
  15. - type: Resource
  16. resource:
  17. name: memory
  18. target:
  19. type: Utilization
  20. averageUtilization: 50 # memory 利用率阈值
  21. - type: Resource
  22. resource:
  23. name: cpu
  24. target:
  25. type: Utilization
  26. averageUtilization: 50 # CPU 利用率阈值

2.1.2 Yaml 添加

弹出 Yaml 输入框,展示 2.1.1 中的 Yaml 文件

2.2 展示 HPA 对象

将集群伸缩作为一个单独的横向标签页,放在集群管理页面,下设 HPA、CronHPA、CA 子页
通过 ListUK8SResource 获取 HPA 资源对象列表,其中
Kind: HorizontalPodAutoscaler
ApiVersion: autoscaling/v2beta2
image.png如 ListUK8SResource 没有返回足够的信息,可用 DescribeUK8SResouce
image.png

展示字段 API 返回字段
名称 Name
应用类型 Reference “/“ 前半部分
应用名称 Reference “/“ 后半部分
伸缩区间 Min replicas ~ Max replicas
副本数 Deployment(或 StatefulSet)pods
CPU 指标 Metrics.resource cpu on pods
Memory 指标 Metrics.resource memory on pods
Yaml 按钮 展示资源 Yaml

2.3 修改 HPA 对象

调用 UpdateUK8SResource
Kind: HorizontalPodAutoscaler
重新拼接 Yaml 传入
image.png
仅支持修改扩容阈值(可删除、添加、更换指标)和伸缩区间

2.4 删除 HPA 对象

调用 DeleteUK8SResource
Kind: HorizontalPodAutoscaler
image.png