我已经部署了一个应用程序并将其公开为负载均衡器服务。我在部署的 yaml 中添加了资源字段来请求 100m 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
Kubectl 顶级节点命令有效。我部署了一个演示 wordpress 应用程序并为其附加了 HPA,它显示 CPU 利用率而不是未知数。
附加我的 yaml 以进行部署和 HPA。
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