Kubernetes AutoScaler 未扩展,HPA 显示目标 <unknown>
Kubernetes AutoScaler Not Scaling, HPA shows target <unknown>
我是 kubernetes 的新手,对 docker 不是很了解。
我一直在研究这个例子,但我被自动缩放器困住了(它似乎无法缩放)。
您会在底部找到构建
kubectl create -f https://k8s.io/docs/tasks/run-application/hpa-php-apache.yaml
看起来像这样
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 50
kubectl get hba
显示
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache <unknown>/50% 1 10 0 7s
<unknown>
部分中的线索。
然后kubectl describe hba
显示
Name: php-apache
Namespace: default
Labels: <none>
Annotations: <none>
CreationTimestamp: Sat, 14 Apr 2018 23:05:05 +0100
Reference: Deployment/php-apache
Metrics: ( current / target )
resource cpu on pods (as a percentage of request): <unknown> / 50%
Min replicas: 1
Max replicas: 10
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale False FailedGetScale the HPA controller was unable to get the target's current scale: deployments/scale.extensions "php-apache" not found
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedGetScale 12s (x14 over 6m) horizontal-pod-autoscaler deployments/scale.extensions "php-apache" not found
然后我手动添加它...
kubectl run php-apache --image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose --port=80
然后如果我再次 运行 kubectl describe hpa
我得到这个错误..
Name: php-apache
Namespace: default
Labels: <none>
Annotations: <none>
CreationTimestamp: Sat, 14 Apr 2018 23:05:05 +0100
Reference: Deployment/php-apache
Metrics: ( current / target )
resource cpu on pods (as a percentage of request): <unknown> / 50%
Min replicas: 1
Max replicas: 10
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale
ScalingActive False FailedGetResourceMetric the HPA was unable to compute the replica count: unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedGetScale 1m (x21 over 11m) horizontal-pod-autoscaler deployments/scale.extensions "php-apache" not found
Warning FailedGetResourceMetric 8s (x2 over 38s) horizontal-pod-autoscaler unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)
Warning FailedComputeMetricsReplicas 8s (x2 over 38s) horizontal-pod-autoscaler failed to get cpu utilization: unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)
由于 Heapster 在 kubernetes 的更高版本 (v 1.13) 中被弃用,您也可以使用 metrics-server
公开您的指标,请查看以下答案以了解设置 HPA 的分步说明:
直接回答问题,如果你设置了HPA资源并使用了metrics server,并且运行进入这个错误。
这个错误意味着在你的pods中,可能有多个容器,其中一个或两个容器没有定义资源请求:
Resources:
requests:
cpu: <this is missing! Add it>
检查所有容器是否都定义了资源请求。
要直接添加编辑和添加资源,请使用
kubectl edit <resource>
如果您使用 helm,即使带有 force 标志,Kubernetes 也可能不允许您更新。
请注意,如果您尚未设置 PodDisruptionBudgets
,这可能会导致停机,因此请在您 运行 您的编辑
之前设置这些
确保 HPA 正常运行需要两件事
- 指标服务器是 运行
- 可扩展资源 (Pod/Statefulset) 定义了 CPU/Memory 资源请求和限制。 (仅在cpu/mem范围内讨论,其他自定义指标可以启用HPA使用)
检查指标服务器是否 运行 -
kubectl get po -n kube-system | grep metric
如果您 none 已列出,则您的指标服务器还没有 运行。
参考 Readme 并安装度量服务器。添加 CPU 限制不会有帮助,除非您的指标服务是 运行.
现在请确保您在 Pod 或可扩展目标中定义了资源请求和限制。
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "250m"
此外,只有当您根据 cpu/mem数据进行扩展时,指标服务器才会有用。
我是 kubernetes 的新手,对 docker 不是很了解。
我一直在研究这个例子,但我被自动缩放器困住了(它似乎无法缩放)。
您会在底部找到构建
kubectl create -f https://k8s.io/docs/tasks/run-application/hpa-php-apache.yaml
看起来像这样
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 50
kubectl get hba
显示
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache <unknown>/50% 1 10 0 7s
<unknown>
部分中的线索。
然后kubectl describe hba
显示
Name: php-apache
Namespace: default
Labels: <none>
Annotations: <none>
CreationTimestamp: Sat, 14 Apr 2018 23:05:05 +0100
Reference: Deployment/php-apache
Metrics: ( current / target )
resource cpu on pods (as a percentage of request): <unknown> / 50%
Min replicas: 1
Max replicas: 10
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale False FailedGetScale the HPA controller was unable to get the target's current scale: deployments/scale.extensions "php-apache" not found
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedGetScale 12s (x14 over 6m) horizontal-pod-autoscaler deployments/scale.extensions "php-apache" not found
然后我手动添加它...
kubectl run php-apache --image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose --port=80
然后如果我再次 运行 kubectl describe hpa
我得到这个错误..
Name: php-apache
Namespace: default
Labels: <none>
Annotations: <none>
CreationTimestamp: Sat, 14 Apr 2018 23:05:05 +0100
Reference: Deployment/php-apache
Metrics: ( current / target )
resource cpu on pods (as a percentage of request): <unknown> / 50%
Min replicas: 1
Max replicas: 10
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale
ScalingActive False FailedGetResourceMetric the HPA was unable to compute the replica count: unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedGetScale 1m (x21 over 11m) horizontal-pod-autoscaler deployments/scale.extensions "php-apache" not found
Warning FailedGetResourceMetric 8s (x2 over 38s) horizontal-pod-autoscaler unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)
Warning FailedComputeMetricsReplicas 8s (x2 over 38s) horizontal-pod-autoscaler failed to get cpu utilization: unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)
由于 Heapster 在 kubernetes 的更高版本 (v 1.13) 中被弃用,您也可以使用 metrics-server
公开您的指标,请查看以下答案以了解设置 HPA 的分步说明:
直接回答问题,如果你设置了HPA资源并使用了metrics server,并且运行进入这个错误。
这个错误意味着在你的pods中,可能有多个容器,其中一个或两个容器没有定义资源请求:
Resources:
requests:
cpu: <this is missing! Add it>
检查所有容器是否都定义了资源请求。
要直接添加编辑和添加资源,请使用
kubectl edit <resource>
如果您使用 helm,即使带有 force 标志,Kubernetes 也可能不允许您更新。
请注意,如果您尚未设置 PodDisruptionBudgets
,这可能会导致停机,因此请在您 运行 您的编辑
确保 HPA 正常运行需要两件事
- 指标服务器是 运行
- 可扩展资源 (Pod/Statefulset) 定义了 CPU/Memory 资源请求和限制。 (仅在cpu/mem范围内讨论,其他自定义指标可以启用HPA使用)
检查指标服务器是否 运行 -
kubectl get po -n kube-system | grep metric
如果您 none 已列出,则您的指标服务器还没有 运行。 参考 Readme 并安装度量服务器。添加 CPU 限制不会有帮助,除非您的指标服务是 运行.
现在请确保您在 Pod 或可扩展目标中定义了资源请求和限制。
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "250m"
此外,只有当您根据 cpu/mem数据进行扩展时,指标服务器才会有用。