Kubernetes HPA——无法获取资源内存的度量:没有从资源度量API返回度量



下午好

我刚开始使用Kubernetes,我正在使用HPA(HorizontalPodAutoscaler(:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: find-complementary-account-info-1
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: find-complementary-account-info-1
minReplicas: 2
maxReplicas: 5
metrics:
- type: Resource
resource:
name: memory
target:
type: AverageValue
averageUtilization: 50

但当我试图在控制台上查看指标时,它并没有显示:

[dockermd@tmp108 APP-MM-ConsultaCuentaPagadoraPospago]$ kubectl get hpa
NAME                                REFERENCE                                      TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
find-complementary-account-info-1   Deployment/find-complementary-account-info-1   <unknown>/50%   2         5         2          143m

我最喜欢的是:

apiVersion: apps/v1
kind: Deployment
metadata:
name: find-complementary-account-info-1
labels:
app: find-complementary-account-info-1
spec:
replicas: 2
selector:
matchLabels:
app: find-complementary-account-info-1
template:
metadata:
labels:
app: find-complementary-account-info-1
spec:
containers:
- name: find-complementary-account-info-1
image: find-complementary-account-info-1:latest
imagePullPolicy: IfNotPresent
resources:
limits:
memory: "350Mi"
requests:
memory: "300Mi"
ports:
- containerPort: 8083
env:
- name: URL_CONNECTION_BD
value: jdbc:oracle:thin:@10.161.6.15:1531/DEFAULTSRV.WORLD
- name: USERNAME_CONNECTION_BD
valueFrom:
secretKeyRef:
name: credentials-bd-pers
key: user_pers
- name: PASSWORD_CONNECTION_BD
valueFrom:
secretKeyRef:
name: credentials-bd-pers
key: password_pers
apiVersion: v1
kind: Service
metadata:
name: svc-find-complementary-account-info-1
labels:
app: find-complementary-account-info-1
namespace: default
spec:
selector:
app: find-complementary-account-info-1
type: LoadBalancer
ports:
-
protocol: TCP
port: 8083
targetPort: 8083
nodePort: 30025
externalIPs:
- 10.161.174.68

给我看标签

此外,如果我执行kubect描述hpa,它会向我抛出以下内容:

[dockermd@tmp108 APP-MM-ConsultaCuentaPagadoraPospago]$ kubectl describe hpa find-complementary-account-info-1
Name:                                                     find-complementary-account-info-1
Namespace:                                                default
Labels:                                                   <none>
Annotations:                                              <none>
CreationTimestamp:                                        Thu, 29 Oct 2020 13:57:58 -0400
Reference:                                                Deployment/find-complementary-account-info-1
Metrics:                                                  ( current / target )
resource memory on pods  (as a percentage of request):  <unknown> / 50%
Min replicas:                                             2
Max replicas:                                             5
Deployment pods:                                          2 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: unable to get metrics for resource memory: no metrics returned from resource metrics API
Events:
Type     Reason                   Age                     From                       Message
----     ------                   ----                    ----                       -------
Warning  FailedGetResourceMetric  4m49s (x551 over 144m)  horizontal-pod-autoscaler  unable to get metrics for resource memory: no metrics returned from resource metrics API

我不是在云端工作,我是在配置了裸机的内部部署环境中工作

还安装度量服务器:

[dockermd@tmp108 APP-MM-ConsultaCuentaPagadoraPospago]$ kubectl get deployment metrics-server -n kube-system
NAME             READY   UP-TO-DATE   AVAILABLE   AGE
metrics-server   1/1     1            1           177m

我会缺少什么?有人能帮我一把吗?

[dockermd@tmp108 certs]$ kubectl describe pod metrics-server -n kube-system
Name:         metrics-server-5f4b6b9889-6pbv8
Namespace:    kube-system
Priority:     0
Node:         tmp224/10.164.21.169
Start Time:   Thu, 29 Oct 2020 13:27:19 -0400
Labels:       k8s-app=metrics-server
pod-template-hash=5f4b6b9889
Annotations:  cni.projectcalico.org/podIP: 10.244.119.140/32
cni.projectcalico.org/podIPs: 10.244.119.140/32
Status:       Running
IP:           10.244.119.140
IPs:
IP:           10.244.119.140
Controlled By:  ReplicaSet/metrics-server-5f4b6b9889
Containers:
metrics-server:
Container ID:  docker://f71d26dc2c8e787ae9551faad66f9588a950bf0a6d0d5cb90ff11ceb219e9b37
Image:         k8s.gcr.io/metrics-server-amd64:v0.3.6
Image ID:      docker-pullable://k8s.gcr.io/metrics-server-amd64@sha256:c9c4e95068b51d6b33a9dccc61875df07dc650abbf4ac1a19d58b4628f89288b
Port:          4443/TCP
Host Port:     0/TCP
Args:
--cert-dir=/tmp
--secure-port=4443
State:          Running
Started:      Thu, 29 Oct 2020 13:27:51 -0400
Ready:          True
Restart Count:  0
Environment:    <none>
Mounts:
/tmp from tmp-dir (rw)
/var/run/secrets/kubernetes.io/serviceaccount from metrics-server-token-4mn92 (ro)
Conditions:
Type              Status
Initialized       True
Ready             True
ContainersReady   True
PodScheduled      True
Volumes:
tmp-dir:
Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
SizeLimit:  <unset>
metrics-server-token-4mn92:
Type:        Secret (a volume populated by a Secret)
SecretName:  metrics-server-token-4mn92
Optional:    false
QoS Class:       BestEffort
Node-Selectors:  kubernetes.io/arch=amd64
kubernetes.io/os=linux
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:          <none>

错误unable to get metrics for resource memory: no metrics returned from resource metrics API不是由HPA故障引起的,而是由度量服务器无法获取任何度量引起的。

大多数情况下,此错误是由度量服务器部署中缺少命令引起的。这可以通过在部署中添加以下参数来完成。

--kubelet-insecure-tls
--kubelet-preferred-address-types=InternalIP,ExternalIP

由于您使用的是apiVersion:autoscaling/v2beta2,因此指定基于资源的缩放策略的正确方法是

type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60

您还可以使用target.type的AverageValue而不是Utilization,并设置相应的target.averageValue字段而不是target.averageUtilization,以直接值而不是请求值的百分比来指定资源度量

如果您想试用v2beta1,您可以尝试以下度量中的yml,

type: Resource
resource:
name: memory
targetAverageUtilization: 60

问题出现在:

目标:type:平均值平均利用率:50

您指定了类型";平均值";但是用";平均利用率";。您应该将类型更改为";利用率";或带有"0"的值字段;平均值";。

相关内容

  • 没有找到相关文章

最新更新