所以这发生在EKS K8s v1.15上。您可以在描述输出中看到api版本。毫cpu徘徊在80到120之间…这与HPA的副本计数完全不匹配。。。。
这是YAML:
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: sequencer
namespace: djin-content
spec:
minReplicas: 1
maxReplicas: 10
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: sequencer
metrics:
- type: Pods
pods:
metricName: cpu_usage
targetAverageValue: 500
以下是kubectl描述:
[root@ip-10-150-53-173 ~]# kubectl describe hpa -n djin-content
Name: sequencer
Namespace: djin-content
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"autoscaling/v2beta1","kind":"HorizontalPodAutoscaler","metadata":{"annotations":{},"name":"sequencer","namespace":"djin-con...
CreationTimestamp: Wed, 05 Aug 2020 20:40:37 +0000
Reference: Deployment/sequencer
Metrics: ( current / target )
"cpu_usage" on pods: 122m / 500
Min replicas: 1
Max replicas: 10
Deployment pods: 7 current / 7 desired
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale True SucceededRescale the HPA controller was able to update the target scale to 4
ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from pods metric cpu_usage
ScalingLimited False DesiredWithinRange the desired count is within the acceptable range
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulRescale 34m horizontal-pod-autoscaler New size: 10; reason: pods metric cpu_usage above target
Normal SuccessfulRescale 15m (x2 over 34m) horizontal-pod-autoscaler New size: 6; reason: pods metric cpu_usage above target
Normal SuccessfulRescale 10m horizontal-pod-autoscaler New size: 5; reason: All metrics below target
Normal SuccessfulRescale 9m51s (x2 over 23m) horizontal-pod-autoscaler New size: 3; reason: All metrics below target
Normal SuccessfulRescale 5m (x2 over 16m) horizontal-pod-autoscaler New size: 4; reason: pods metric cpu_usage above target
Normal SuccessfulRescale 4m45s (x2 over 15m) horizontal-pod-autoscaler New size: 5; reason: pods metric cpu_usage above target
Normal SuccessfulRescale 4m30s horizontal-pod-autoscaler New size: 7; reason: pods metric cpu_usage above target
自定义指标API填充正确/频繁,运行良好。部署目标正在完美工作。。。我已经完成了API和副本计算的整个k8代码库,这毫无意义。。。
指标似乎不匹配,您有122m(millicores)与/500个原始数据。
"cpu_usage" on pods: 122m / 500
您没有指定计算自定义度量的内容,可能是在122m
中添加了一个额外的0
,使其成为1220 / 500
(我假设cpu_usage
是自定义度量,因为常规度量服务器度量只是cpu
),但您可以尝试:
targetAverageValue: 500m
对CPU使用情况进行HPA的更常见方法是使用度量服务器中的CPU使用百分比。
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 50
...
缩放活动由K8s控制平面中的kube-controlller-manager
管理,如果您启用了EKS控制平面日志,您也可以查看那里以查找更多信息。
✌️
我不久前找到了这个问题的答案,但忘记了更新。在一个著名的k8s项目中,人们对这个话题进行了详细的讨论。它本质上是k8s HPA目标中的一个设计错误(功能?):https://github.com/kubernetes/kubernetes/issues/78761#issuecomment-670815813