k8s中hpa使用问题记录
程序员文章站
2024-03-13 22:17:04
...
前言
之前说了,hpa没有生效的问题,现在来说说hpa使用的问题。
问题
那么是个什么问题尼?问题就是hpa的百分比设置的太大了,例如:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: istio-ingressgateway
namespace: istio-system
spec:
maxReplicas: 5
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: istio-ingressgateway
targetCPUUtilizationPercentage: 80
比如这里设置的targetCPUUtilizationPercentage,80%,但是由于deployment的request标签的值设置的太小了,所以会极速扩容,
上次说的解决方案是将这个百分比设置的大一些,比如1000%这样,但是这样有个缺点,那就是不大直观,并且一看不知道什么意思,
所以需要解决这个不友好的问题。
分析
通过阅读k8s官网上的对于hpa的描述,发现了其实还可以使用如下的方式使用hpa:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: istio-ingressgateway
namespace: istio-system
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: istio-ingressgateway
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
# type: Utilization
# averageUtilization: 100
type: AverageValue
averageValue: "2m"
- type: Resource
resource:
name: memory
target:
# type: Utilization
# averageUtilization: 100
type: AverageValue
averageValue: "200Mi"
不过这里要注意的点是,apiVersion是v2beta2,大家也许需要通过命令
kubectl api-versions进行确认:
[email protected]_CAIWFENG-MB0 hpa % kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
apps/v1
authentication.k8s.io/v1
authentication.k8s.io/v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
autoscaling.internal.knative.dev/v1alpha1
autoscaling/v1
autoscaling/v2beta1
autoscaling/v2beta2
可以看到这里的autoscaling有三个版本,v1,v2beta1和v2beta2,只有v2beta2是支持memory和cpu的,v1和v2beta1是只支持cpu的,
,细心的小伙伴可以发现,这里的type有两种类型,Utilization(使用率,百分比的形式)和AverageValue(平均值,128Mi或者500m的形式),
之前说的使用百分比就是使用的Utilization的形式,不过需要设置很大的值,才可以正常使用,而如果使用平均值,就可以使用和resource标签
同样的设置的方式,所以会比较直观些。
续
其实hpa的说明是还可以支持自定义的指标类型,但是目前cpu和memory就够用了,所以就没看了。
完
推荐阅读
-
k8s中hpa使用问题记录
-
k8s 1.9 使用问题记录-001
-
分享使用maven过程中遇到的问题,以及解决方案 博客分类: 开发环境 maventomcatsnapshot
-
Eclipse最新版使用过程中遇到的问题总结
-
Eclipse最新版使用过程中遇到的问题总结
-
嵌入iframe页面中使用My97DatePicker问题解决 博客分类: bug调试记录 My97DatePicker跨域浏览器JavaScript
-
asp.net 数据绑定 使用eval 时候报 字符文本中的字符太多 问题的解决方法
-
使用Eclipse开发工具如何解决Java Compiler中Annotation Processin不出现的问题
-
在Spring Boot中如何使用log4j记录日志
-
asp.net 数据绑定 使用eval 时候报 字符文本中的字符太多 问题的解决方法