我在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
更多信息:
replicas
参数未更改。如果我将MINPODS
参数更改为“ 1”,为什么我还有6个吊舱?如何使Kubernetes实际更改我的部署中的min
吊舱?
答案 0 :(得分:1)
如果我将MINPODS参数更改为“ 1”-为什么我仍然有6个吊舱?
我相信答案是因为输出中存在<unknown>/60%
。 the walkthrough page声明:
请注意,如果某些容器的容器未设置相关的资源请求,则将不会定义容器的CPU利用率,并且自动缩放器不会对该指标采取任何操作
,您可以在{{3}}中看到0% / 50%
的示例。因此,我相信,由于kubernetes无法证明消耗了什么的CPU百分比-既不高于也不低于目标-不会采取任何行动,因为担心会产生 every 情况更糟。
至于为什么会有<unknown>
,我可能会猜到这是可怕的heapster-to-metrics服务器转换,可能会使kubernetes API中的信息模糊不清。遗憾的是,我没有亲身经验来测试该理论,以便为您提供除“查看您的集群是否正在Kubernetes可以看到的地方收集指标”之外的具体步骤。