Kubernetes自动缩放不起作用-显示未知

时间:2019-04-04 12:26:48

标签: kubernetes metrics autoscaling kubernetes-hpa

关于此主题的问题很多,我尝试了很多东西,但仍然无法正常工作。

我是Kubernetes的新手。我有一个Kubernetes群集,其中包含2个节点(1个PC,1个其他PC上的VM),1个主节点,1个节点。我启动了一个网站(Docker Image),并且Pod在Node(不是master)上运行。现在我想自动缩放Pod,这就是我所做的:

  1. --request='cpu=50m'设置到广告连播
  2. 创建的hpa:kubectl autoscale deployment testwebsite --min=1 --max=4 --cpu-percent=25
  3. 已使用:kubectl get hpa -w

现在有一个问题,输出显示为当前值。 我读了很多书,就像我一样,我必须将请求分配给Pod。通过kubectl get pod testwebsite --out=yaml

进行了检查

我还创建了指标服务器1.8+版本。确保它通过以下方式运行:kubectl get pods --all-namespaces

之后,我尝试调试HPA,并通过以下方式对其进行了调查:

kubectl describe hpa testwebsite

那向我展示了这一点:

Name:                                                  testwebsite
Namespace:                                             default
Labels:                                                <none>
Annotations:                                           <none>
CreationTimestamp:                                     Thu, 04 Apr 2019 14:08:57 +0200
Reference:                                             Deployment/testwebsite
Metrics:                                               ( current / target )   resource cpu on pods  (as a percentage of request):  <unknown> / 25%
Min replicas:                                          1
Max replicas:                                          4
Deployment pods:                                       1 current / 0 desired
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: no metrics returned from resource metrics API
Events:
  Type     Reason                        Age                   From                       Message
  ----     ------                        ----                  ----                       -------
  Warning  FailedComputeMetricsReplicas  7m24s (x12 over 10m)  horizontal-pod-autoscaler  failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API
  Warning  FailedGetResourceMetric       5s (x41 over 10m)     horizontal-pod-autoscaler  unable to get metrics for resource cpu: no metrics returned from resource metrics API

10分钟后,它不会显示当前值,即使cpu的使用率为50-100%也不会放大。

正如我所说的,我是Kubernetes的新手,我真的希望有人能帮助我。

最诚挚的问候,

尼科(Nico)又名Myridor

编辑:在两个节点上都使用Ubuntu 18.04 LTS | Kubernetes版本:1.14.0

2 个答案:

答案 0 :(得分:0)

您确定kubernetes指标服务器和指标api正在运行吗?首先需要使用它来检查cpu的使用情况和限制

您可以从部署中删除LIMITS(如果有),然后尝试一下。

答案 1 :(得分:0)

问题不在于HPS本身,而在于指标服务器中,该服务器无法抓取指标。

我通过克隆metrics-server git然后由kubectl create -f deploy/1.8+/来创建问题。

接下来,我通过运行kubectl edit deployment metrics-server -n kube-system

编辑指标服务器部署

spec:-> containers:下添加以下标志:

spec:
      containers:
      - command:
        - /metrics-server
        - --kubelet-insecure-tls

git中所述:

  

--kubelet-insecure-tls:跳过验证Kubelet CA证书的步骤。不建议用于生产环境,但在测试集群中很有用   带有自签名的Kubelet服务证书。

在更新部署并且指标服务器抓取指标后,您应该会看到HPA已更新为当前目标。默认刮擦间隔为60s,您可以通过在上面的--metric-resolution=10s <-设置为10s的间隔中添加以下标志来更改它。