我正在尝试像这里的示例一样测试 Kubernetes HPA
kubectl run php-apache --image=gcr.io/google_containers/hpa-example --requests=cpu=200m --expose --port=80
kubectl autoscale deployment php-apache --cpu-percent=20 --min=1 --max=10
kubectl get hpa
输出是
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache <unknown> / 20% 1 3 0 1h
为什么控制器管理器无法获取当前使用情况?
环境细节:
- K8s 版本 1.7.3,Heapster 在 kube-system 的 80 端口上运行服务。
- InfluxDB 设置为接收器,我可以在 Grafana 以及 Heapster API 中正确查看使用/限制等
- 我可以在部署的 pod 的 yaml 上看到 cpu 请求(200m)。
- 控制器管理器日志中没有错误。我看到的只是 etcd watch 和 pod 创建消息。
- 控制器清单中没有指定“horizontal-pod-autoscaler-sync-period”,默认应为 30 秒。
- “hpa describe”没有列出任何事件(“<none>”)。
- 创建/删除 HPA 不会在控制器管理器中创建任何日志
- 当我没有安装 Heapster 时,控制器管理器日志会抱怨。安装 Heapster 后我没有看到此消息:"
无法根据列出的 Deployment/xx/php-apache 指标计算所需的副本数:无法获取 cpu 利用率:无法获取资源 cpu 的指标:无法获取 pod 资源指标:服务器无法在此完成请求的操作时间,稍后再试(获取服务 http:heapster:)
编辑 1 [9 月 14 日] :
- 我在这里上传了 Heapster 日志。那里没有错误。
我直接检查了 Heapster API 的指标,并得到了响应。
curl http://10.107.55.59/api/v1/model/namespaces/cp/pods/php-apache-593471247-c65fh/metrics/cpu/usage
{
"metrics": [
{
"timestamp": "2017-09-14T13:46:00Z",
"value": 19008838
},
{
"timestamp": "2017-09-14T13:47:00Z",
"value": 19008838
},
{
"timestamp": "2017-09-14T13:48:00Z",
"value": 19008838
}
],
"latestTimestamp": "2017-09-14T13:48:00Z"
}