我有一个使用以下规范运行的复制控制器:
apiVersion: v1
kind: ReplicationController
metadata:
name: owncloud-controller
spec:
replicas: 1
selector:
app: owncloud
template:
metadata:
labels:
app: owncloud
spec:
containers:
- name: owncloud
image: adimania/owncloud9-centos7
ports:
- containerPort: 80
volumeMounts:
- name: userdata
mountPath: /var/www/html/owncloud/data
resources:
requests:
cpu: 400m
volumes:
- name: userdata
hostPath:
path: /opt/data现在我使用autoscale命令运行一个hpa。
$ kubectl autoscale rc owncloud-controller --max=5 --cpu-percent=10我还使用kubernetes run命令启动了heapster。
$ kubectl run heapster --image=gcr.io/google_containers/heapster:v1.0.2 --command -- /heapster --source=kubernetes:http://192.168.0.103:8080?inClusterConfig=false --sink=log在这一切之后,自动缩放再也不会起作用了。从日志中看,似乎没有报告实际的CPU利用率。
$ kubectl describe hpa owncloud-controller
Name: owncloud-controller
Namespace: default
Labels: <none>
Annotations: <none>
CreationTimestamp: Thu, 26 May 2016 14:24:51 +0530
Reference: ReplicationController/owncloud-controller/scale
Target CPU utilization: 10%
Current CPU utilization: <unset>
Min replicas: 1
Max replicas: 5
ReplicationController pods: 1 current / 1 desired
Events:
FirstSeen LastSeen Count From SubobjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
44m 8s 92 {horizontal-pod-autoscaler } Warning FailedGetMetrics failed to get CPU consumption and request: metrics obtained for 0/1 of pods
44m 8s 92 {horizontal-pod-autoscaler } Warning FailedComputeReplicas failed to get CPU utilization: failed to get CPU consumption and request: metrics obtained for 0/1 of pods这里我漏掉了什么?
发布于 2016-06-01 03:49:17
很可能heapster在错误的命名空间中运行("default")。HPA期望heapster在"kube-system“命名空间中。请将--namespace=kube-system添加到kubectl运行heapster命令。
发布于 2017-07-07 05:51:14
我在名称空间"kube-system“下安装了hepaster,它工作正常。在运行heapster之后,请确保它正在运行,然后再为您的应用程序使用HPA。
如何在Kubernetes集群中运行Heapster
我把所有的文件都放在这里了https://gitlab.com/abushoeb/kubernetes/tree/master/heapster。它们是从官方Kubernetes Repository收集的,并进行了微小的更改。
如何运行Heapster
转到包含grafana.yaml、heapster.yaml和influxdb.yaml的目录堆,然后运行以下命令
$ kubectl create -f .如何停止Heapster
转到相同的heapster目录,然后运行以下命令
$ kubectl delete -f .如何检查Heapster是否正在运行
您可以从运行heapster的pod访问heapster指标模型,以确保heapster正常工作。通过访问http://heapster-pod-ip:heapster-service-port/api/v1/model/metrics/,可以通过web浏览器访问它。执行以下命令可以看到相同的结果。
$ curl -L http://heapster-pod-ip:heapster-service-port/api/v1/model/metrics/如果您看到指标列表,则表明heapster正在正确运行。您还可以浏览grafana仪表板来查看它(找到运行grafana的pod的ip和access it http://grafana-pod-ip:grafana-service-port)。
完整的Heapster Metric Model文档可以在here上找到。
另外,只需运行($ kubectl cluster-info)并查看它是否显示如下结果:
Kubernetes master在https://cluster-ip:6443上运行
堆生成器在https://cluster-ip:6443/api/v1/proxy/namespaces/kube-system/services/heapster上运行
kubernetes-仪表板在https://cluster-ip:6443/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard上运行
监控-grafana正在https://cluster-ip:6443/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana上运行
监视-influxdb正在https://cluster-ip:6443/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb上运行
检查influxdb
如果influxdb中有数据,你也可以检查它。本地计算机上的Install Influxdb Client以连接到infuxdb数据库。
$ influx -host <cluster-ip> -port <influxdb-service-port>一些示例influxdb查询
来自"cpu/node_capacity"的
参考资料和帮助
https://stackoverflow.com/questions/37482382
复制相似问题