下午好
我刚开始使用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"的值字段;平均值";。