事象
- metrics-server導入済み
- HPA利用時に
Warning FailedGetResourceMetric horizontal-pod-autoscaler missing request for cpu
というメッセージがでる
[root@master vagrant]# kubectl describe hpa nginx Name: nginx Namespace: default Labels: app.kubernetes.io/instance=sanple-nginx Annotations: CreationTimestamp: Tue, 14 Apr 2020 09:31:18 +0000 Reference: Deployment/nginx Metrics: ( current / target ) resource cpu on pods (as a percentage of request): <unknown> / 40% Min replicas: 1 Max replicas: 5 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: did not receive metrics for any ready pods Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedComputeMetricsReplicas 15m (x12 over 18m) horizontal-pod-autoscaler invalid metrics (1 invalid out of 1), first error is: failed to get cpu utilization: missing request for cpu Warning FailedGetResourceMetric 2m50s (x61 over 18m) horizontal-pod-autoscaler missing request for cpu
kubectl top
は見えているのでmetrics-serverは問題なさそう。
[root@master vagrant]# kubectl top pods NAME CPU(cores) MEMORY(bytes) guestbook-ui-85c9c5f9cb-g5sjg 1m 7Mi nginx 0m 1Mi nginx-5ddc966547-wtzkv 0m 1Mi sample-kubectl 0m 0Mi
解決方法
対象のDeploymentのPodに対してlimits
とrequests
を追加する
apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx name: nginx ports: - containerPort: 80 + resources: + limits: + cpu: "1" + requests: + cpu: "0.5"
その後対象のHPAを再作成する。
kubectl delete hpa [HPA名] kubectl apply -f [HPAのマニュフェスト]
memory でも別のタイミングで同じことが起きた。(missing request for memory
)
この時の解消方法は一度問題のある Deployments と HPA を消して再度 Apply したところなおった。