kubernetes pod hpa示例
HPA pod说明
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
namespace: default
spec:
# HPA的伸缩对象描述,HPA会动态修改该对象的pod数量
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
# HPA的最小pod数量和最大pod数量
minReplicas: 1
maxReplicas: 10
# 监控的指标数组,支持多种类型的指标共存
metrics:
# Object类型的指标
- type: Object
object:
metric:
# 指标名称
name: requests-per-second
# 监控指标的对象描述,指标数据来源于该对象
describedObject:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
name: main-route
# Value类型的目标值,Object类型的指标只支持Value和AverageValue类型的目标值
target:
type: Value
value: 10k
# Resource类型的指标
- type: Resource
resource:
name: cpu
# Utilization类型的目标值,Resource类型的指标只支持Utilization和AverageValue类型的目标值
target:
type: Utilization
averageUtilization: 50
# Pods类型的指标
- type: Pods
pods:
metric:
name: packets-per-second
# AverageValue类型的目标值,Pods指标类型下只支持AverageValue类型的目标值
target:
type: AverageValue
averageValue: 1k
# External类型的指标
- type: External
external:
metric:
name: queue_messages_ready
# 该字段与第三方的指标标签相关联,(此处官方文档有问题,正确的写法如下)
selector:
matchLabels:
env: "stage"
app: "myapp"
# External指标类型下只支持Value和AverageValue类型的目标值
target:
type: AverageValue
averageValue: 30
HPA 简单例子:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: nsfw-caffe # 名称
namespace: test #k8s命名空间
spec:
maxReplicas: 100 # 最大副本数
minReplicas: 3 # 最小副本数
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nsfw-caffe # 监控名为nsfw-caffe的Deployment
targetCPUUtilizationPercentage: 50 # cpu 阈值
get hpa:
kubectl -n test get hpa
查看原始deployment的resource有没有设置cpu的限制如果没有则加上:
kubectl -n test set resources deployment/nsfw-caffe --limits=cpu=100m