对于 Java 等需要预热的语言与框架而言,在容器刚启动的时候,有可能会出现分钟级别的CPU、内存飙高,其可能会造成HPA的误触发。
上面这句原话出自阿里云ACK服务文档,确实也是我在生产中遇到的问题,cpu 给高了吧,有点浪费资源,给低了吧,每次发版启动时就会触发 HPA,也会一直告警,很烦,一开始我以为配置在 HPA 里面,把 HPA 的文档都泛滥了,甚至对于 HPA 的使用更深了,也没找到我需要的内容。有幸找到了阿里云的解决方案
## 以Deployment为例
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-basic
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
annotations:
HPAScaleUpDelay: 3m # m代表分钟,表示HPA在Pod创建3分钟后开始生效,可选单位为[s(秒),m(分)]
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
以上的配置中 spec.template.metadata.annotations.HPAScaleUpDelay
必须是 metric-server 支持的版本才可以使用,最新版本肯定支持,我也没查到哪个版本开始有的,有知道的大佬欢迎留言或者联系