HPA no matches for kind Deployment in group 的问题
问题
hpa.yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: pc-hpa
namespace: dev
spec:
minReplicas: 1 #最小pod数量
maxReplicas: 10 #最大pod数量
targetCPUUtilizationPercentage: 3 # CPU使用率指标,cpu使用达到3%
scaleTargetRef: # 指定要控制的nginx信息
apiVersion: /v1
kind: Deployment
name: nginx
在我创建了hpa之后,pod,server等都是正常启动,Metrics也正常安装了 kubectl top
命令也是有效的,但是无法监控hpa控制器对应的cpu使用率
hpa日志
现象
排查
参考:
https://github.com/kubernetes-sigs/metrics-server/issues/389
看看github的说法
真是一语点醒梦中人,之前我还以为我哪里yaml写的有问题,各种排查,这上面说的是,集权是由Metrics检测的,那为啥不看看控制器的管理日志呢,之前一直看pod,server,hpa的日志,找到hpa日志,以为发现问题所在,但是并没有找到解决办法,有的解决办法试了下也不行,这种就换个思路看看
查看controller-manager的pod的日志
# 查找pod
kubectl get pod -n kube-system
# 查看日志
kubectl logs -n kube-system kube-controller-manager-master
Event(v1.ObjectReference{Kind:"HorizontalPodAutoscaler", Namespace:"dev", Name:"pc-hpa", UID:"3b1aa606-c29e-4cf7-9c8a-7d7b3888c988", APIVersion:"autoscaling/v2beta2", ResourceVersion:"884669", FieldPath:""}): type: 'Warning' reason: 'FailedGetScale' no matches for kind "Deployment" in group ""
仔细看这个日志,我明明指定的是apiVersion: autoscaling/v1
,为什么这日志上显示APIVersion:"autoscaling/v2beta2"
,看来这才是问题所在
查看是否是版本问题
关于这些版本的区别可以参考
https://www.cnblogs.com/alisystemsoftware/p/11236151.html
难道就是算是旧版底层使用的是最新版的?
把版本升一下试试
# 复制配置
cp pc-hpa.yaml pc-hpa2.yaml
# 修改配置 autoscaling/v1 ===》 autoscaling/v2beta2 , metadata.name 改为 pc-hpa2
vi pc-hpa2.yaml
# 创建一个
kubectl apply -f pc-hpa2.yaml
提示创建失败,这也不行呀,难道是因为缺失这个版本?
最终原因
在我反复排查无果后,我左看看右看看出去点上了一根“快乐助手”,回来一看我好看犯了一个低级错误scaleTargetRef
选项里好像漏了点啥,没错就是漏了apps
,啊哈哈哈,修正后的yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: pc-hpa
namespace: dev
spec:
minReplicas: 1 #最小pod数量
maxReplicas: 10 #最大pod数量
targetCPUUtilizationPercentage: 3 # CPU使用率指标,cpu使用达到3%
scaleTargetRef: # 指定要控制的nginx信息
apiVersion: apps/v1
kind: Deployment
name: nginx
查看最后结果
kubectl get hpa -n dev
这次排查提醒我,要注意细节,还有就是如果你指定的版本不对,k8s会默认按照最新版本创建