我部署了一个应用程序,并将其作为负载均衡器服务公开。我在部署的yaml中添加了resource字段,以请求100米的cpu。定义了HPA,以在CPU超过50%时扩展应用程序。应用程序无法自动缩放,cpu利用率始终显示为未知。kubectl describe hpa
给出以下结果:
Name: storyexporter-hpa
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"autoscaling/v2beta1","kind":"HorizontalPodAutoscaler","metadata":{"annotations":{},"name":"storyexporter-hpa","namespace":"...
CreationTimestamp: Sat, 24 Oct 2020 18:23:46 +0530
Reference: Deployment/storyexporter-deployment
Metrics: ( current / target )
resource cpu on pods (as a percentage of request): <unknown> / 50%
Min replicas: 1
Max replicas: 3
Deployment pods: 1 current / 0 desired
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale True SucceededGetScale the HPA controller was able to get the target's current scale
ScalingActive False FailedGetResourceMetric the HPA was unable to compute the replica count: missing request for cpu
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedGetResourceMetric 11s (x7 over 103s) horizontal-pod-autoscaler missing request for cpu
Warning FailedComputeMetricsReplicas 11s (x7 over 103s) horizontal-pod-autoscaler invalid metrics (1 invalid out of 1), first error is: failed to get cpu utilization: missing request for cpu
Kuectl top node命令有效。我部署了一个演示wordpress应用程序,并为其附加了HPA,它显示了CPU利用率,而不是未知。
附上我的部署和HPA的yaml。
apiVersion: v1
kind: Service
metadata:
name: storyexporter
labels:
app: storyexporter
spec:
ports:
- port: 8080
selector:
app: storyexporter
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: storyexporter-deployment
spec:
selector:
matchLabels:
app: storyexporter
replicas: 1
template:
metadata:
labels:
app: storyexporter
spec:
containers:
- name: storyexporter
image: <ImagePath>
env:
- name: STORYEXPORTER_MONGO_HOST
value: storyexporter-mongodb
- name: STORYEXPORTER_MONGO_USERNAME
value: admin
- name: STORYEXPORTER_MONGO_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb-password
key: password
- name: STORYEXPORTER_RABBIT_HOST
value: storyexporter-rabbitmq
- name: STORYEXPORTER_RABBIT_USERNAME
value: guest
- name: STORYEXPORTER_RABBIT_PASSWORD
valueFrom:
secretKeyRef:
name: rabbitmq-password
key: password
- name: EXPIRED_RESOURCES_TTL
value: '3600000'
- name: CHROMIUM_TIMEOUT_IN_SECONDS
value: '900'
- name: CHROMIUM_WINDOW_SIZE
value: '1920,1020'
- name: AVG_MB_PER_STORY
value: '1000'
- name: CHROMIUM_ATTEMPTS_BEFORE_FAIL
value: '0'
- name: JAVA_OPTS
value: ''
- name: SKIP_EQS_ROUTING
value: 'false'
- name: CHROMIUM_POOL_SIZE
value: '4'
- name: DEV
value: 'true'
- name: LOCAL
value: 'true'
ports:
- containerPort: 8080
resources:
requests:
cpu: "100m"
limits:
cpu: "200m"
imagePullPolicy: Always
imagePullSecrets:
- name: regcred
HPA YAML
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: storyexporter-hpa
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: storyexporter-deployment
minReplicas: 1
maxReplicas: 3
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 50
如果使用基于多容器的Pod,则必须为所有容器设置资源(即CPU和内存的请求和限制(。
+ resources:
+ requests:
+ cpu: 100m
+ memory: "256Mi"
+ limits:
+ cpu: 200m
+ memory: "512Mi"