Kuberenetes hpa patch命令不起作用

时间:2018-08-13 13:38:03

标签: kubernetes google-cloud-platform kubectl

我在Google Cloud中托管了Kuberenetes集群。

我部署了部署,并添加了hpa规则以进行扩展。

kubectl autoscale deployment MY_DEP --max 10 --min 6 --cpu-percent 60

等待一分钟,然后运行kubectl get hpa命令以验证我的缩放规则-如预期的那样,我有6个Pod正在运行(根据min参数)。

$ kubectl get hpa
NAME                    REFERENCE                          TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
MY_DEP                  Deployment/MY_DEP                  <unknown>/60%   6         10        6          1m

现在,我想更改min参数:

kubectl patch hpa MY_DEP -p '{"spec":{"minReplicas": 1}}'

等待30分钟,然后运行命令:

$ kubectl get hpa
NAME                    REFERENCE                          TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
MY_DEP                  Deployment/MY_DEP                  <unknown>/60%   1         10        6          30m

预期副本数:1,实际副本数:6

更多信息:

  1. 您可以假定系统没有任何计算能力(0%CPU 利用率)。
  2. 我等了一个多小时。没有改变。
  3. 当我删除缩放规则并部署它时,会看到相同的行为 再次。 replicas参数未更改。

问题:

如果我将MINPODS参数更改为“ 1”,为什么我还有6个吊舱?如何使Kubernetes实际更改我的部署中的min吊舱?

1 个答案:

答案 0 :(得分:1)

  

如果我将MINPODS参数更改为“ 1”-为什么我仍然有6个吊舱?

我相信答案是因为输出中存在<unknown>/60%the walkthrough page声明:

  

请注意,如果某些容器的容器未设置相关的资源请求,则将不会定义容器的CPU利用率,并且自动缩放器不会对该指标采取任何操作

,您可以在{{3}}中看到0% / 50%的示例。因此,我相信,由于kubernetes无法证明消耗了什么的CPU百分比-既不高于也不低于目标-不会采取任何行动,因为担心会产生 every 情况更糟。

至于为什么会有<unknown>,我可能会猜到这是可怕的heapster-to-metrics服务器转换,可能会使kubernetes API中的信息模糊不清。遗憾的是,我没有亲身经验来测试该理论,以便为您提供除“查看您的集群是否正在Kubernetes可以看到的地方收集指标”之外的具体步骤。