2

我已经部署了一个应用程序并将其公开为负载均衡器服务。我在部署的 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
4

1 回答 1

1

如果您使用基于多容器的 Pod,则必须为所有容器设置资源(即 CPU 和内存的请求和限制)。

+  resources:
+    requests:
+      cpu: 100m
+      memory: "256Mi"
+    limits:
+      cpu: 200m
+      memory: "512Mi"
于 2021-07-27T02:13:24.997 回答