Horizo​​ntal Pod Autoscaler无法读取CPU使用率

时间:2017-12-13 15:52:10

标签: kubernetes

我不明白为什么我的水平pod自动调节器无法从我的部署中读取CPU使用率统计信息。

关于我的环境:

  • kubernetes 1.8.4在AWS上,使用k8s部署
  • 3个节点和1个主人
  • 安装了heapster(版本1.5.0)并正在工作(它在Influxdb中写入数据,我可以在grafana中看到它)

以下是有效HPA的列表:

NAME       REFERENCE        TARGETS           MINPODS   MAXPODS   REPLICAS   AGE
api        Deployment/api   <unknown> / 70%   2         5         0          5h
web        Deployment/web   0% / 70%          2         5         2          22h

正如您所看到的,只有一个HPA可以检测到部署的资源使用情况。

web部署(有效的部署):

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
    name: web
name: web
namespace: default
spec:
replicas: 1
selector:
    matchLabels:
    name: web
template:
    metadata:
    labels:
        name: web
    spec:
    containers:
    - image: <private repository image path>
        imagePullPolicy: IfNotPresent
        name: node
        ports:
        - containerPort: 3000
        protocol: TCP
        resources:
        limits:
            cpu: 200m
            memory: 200M
        requests:
            cpu: 200m
            memory: 200M

不起作用的api部署:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
    name: api
name: api
namespace: default
spec:
replicas: 1
selector:
    matchLabels:
    name: api
template:
    metadata:
    labels:
        app: api
    spec:
    containers:
        image: <private repository image path>
        imagePullPolicy: IfNotPresent
        name: node
        ports:
        - containerPort: 3000
        protocol: TCP
        resources:
        limits:
            cpu: 250m
            memory: 200M
        requests:
            cpu: 250m
            memory: 200M

网络HPA(有效的):

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: web
namespace: default
spec:
maxReplicas: 5
minReplicas: 2
scaleTargetRef:
    apiVersion: apps/v1beta1
    kind: Deployment
    name: web
targetCPUUtilizationPercentage: 70

api HPA(不起作用的那个):

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: api
namespace: default
spec:
maxReplicas: 5
minReplicas: 2
scaleTargetRef:
    apiVersion: apps/v1beta2
    kind: Deployment
    name: api
targetCPUUtilizationPercentage: 70

正如您所看到的部署和hpa几乎完全相同,这就是为什么我无法弄清楚为什么只有两个中的一个有效。 任何帮助解决这个问题将非常感激

修改

我只是试图删除工作的hpa并重新应用它,它也不起作用。这让我觉得这是heapster的一个问题。 我更新到最新的heapster版本(1.5.0),但仍然没有运气。

2 个答案:

答案 0 :(得分:0)

原因可能是因为没有正在运行的广告

NAME       REFERENCE        TARGETS           MINPODS   MAXPODS   REPLICAS   AGE
api        Deployment/api   <unknown> / 70%   2         5         0          5h
web        Deployment/web   0% / 70%          2         5         2          22h

作为&#34; api&#34;的副本数量是零,这意味着应用程序没有运行和&#34; web&#34;它是两个。

尝试检查&#34; kubectl获取pod {namespace}&#34; 以便运行pod。

答案 1 :(得分:0)

通过重新启动kube-controller-manager pod,一切都开始工作了。