Kubernetes AutoScaler Not Scaling,HPA显示目标<unknown>

Mat*_*nja 5 autoscaling kubernetes

我对kubernetes很新,与Docker不太相关.

我一直在研究这个例子,但我坚持使用自动缩放器(它似乎没有扩展).

我正在通过这里的例子https://kubernetes.io/docs/tasks/run-application/horizo​​ntal-pod-autoscale-walkthrough/#step-one-run--expose-php-apache-server

你会在底部找到构建

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
Run Code Online (Sandbox Code Playgroud)

kubectl get hba 节目

NAME         REFERENCE               TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
php-apache   Deployment/php-apache   <unknown>/50%   1         10        0          7s
Run Code Online (Sandbox Code Playgroud)

<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
Run Code Online (Sandbox Code Playgroud)

那么我手动添加它...

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)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ris 8

直接回答这个问题,如果您已设置 HPA 资源并使用指标服务器,并遇到此错误。

此错误意味着在您的 pod 中(可能有多个容器),其中一个或两个容器尚未定义资源请求:

Resources:
     requests:
       cpu: <this is missing! Add it>
Run Code Online (Sandbox Code Playgroud)

检查所有容器是否都定义了资源请求。

要直接添加编辑和添加资源,请使用 kubectl edit <resource>

如果您使用 helm,即使带有强制标志,Kubernetes 也可能不允许您更新。

请注意,如果您尚未设置,这可能会导致停机PodDisruptionBudgets,因此请在运行编辑之前进行设置


Pra*_*dha 6

由于 Heapster 在更高版本(v 1.13)的 kubernetes 中已弃用,您也可以使用公开您的指标metrics-server,请查看以下答案以获取设置 HPA 的分步说明:

如何为 HPA 自动缩放指标启用 KubeAPI 服务器