配置hpa后,target显示<unknown>/50%

背景:

  • 有两个服务,server 负责主要后端请求,bill 负责计量计费请求。
  • 服务都是使用 helm 部署。
  • 测试提了一个缺陷,说全部服务没有配置hpa。

解决一

按照之前的代码结构添加了hpa后,发现:

➜  kubectl get hpa
NAME      REFERENCE            TARGETS                        MINPODS   MAXPODS   REPLICAS   AGE
server    Deployment/server    <unknown>/50%, <unknown>/50%   2         5         2          2m4s

网上查了hpa的文档后,发现是Deployment里面没有配置resource request/limit。
在这里插入图片描述
在这里插入图片描述

按照要求添加了resource request/limit后,确实可以了。

➜  kubectl get hpa
NAME     REFERENCE              TARGETS          MINPODS   MAXPODS   REPLICAS   AGE
server   Deployment/server      6%/50%, 1%/50%   2         5         2          23m

解决二

但 server 服务是可以了,bill 服务还是不行。网上各种找答案,对比配置,最终在官方文档里找到答案:

在每个时间段内,控制器管理器都会根据每个 HorizontalPodAutoscaler 定义中指定的指标查询资源利用率。 控制器管理器找到由 scaleTargetRef 定义的目标资源,然后根据目标资源的 .spec.selector 标签选择 Pod, 并从资源指标 API(针对每个 Pod 的资源指标)或自定义指标获取指标 API(适用于所有其他指标)。

于是根据bill的 deployment 里 .spec.selector 查询出来发现还多了一个pre-job pod,这个pre-job是升级的时候用来更新数据库/crd等资源的pod。

➜  kubectl get po -l app.kubernetes.io/instance=bill,app.kubernetes.io/name=bill                            
NAME                    READY   STATUS      RESTARTS   AGE
bill-7ff45cc64b-d8fm5   1/1     Running     0          138m
bill-7ff45cc64b-swsfb   1/1     Running     0          138m
bill-pre-job-q8m28      0/1     Completed   0          138m

然后给对应的这个pre-job 模板里也加上resource request/limit后,确实可以了。

解决三

测试又提了bug,说这样配置后会导致只能扩展增加副本数,不能减少。

现象很奇怪,怀疑是使用label能查到pre-job的pod导致的,删除pre-job的pod和去掉pre-job的相关label,再测,发现可以正常缩容了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值