У меня настроены пользовательские метрики.
Когда я запускаю:
kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/my-namespace/deployments.extensions/sample-app/queue_length" | jq
Я получил:
...
"items": [
{
"describedObject": {
"kind": "Deployment",
"namespace": "my-namespace",
"name": "sample-app",
"apiVersion": "extensions/v1beta1"
},
"metricName": "queue_length",
"timestamp": "2018-10-09T18:14:15Z",
"value": "30"
}
]
...
Поэтому я хочу масштабировать свое развертывание с помощью этой метрики:
kind: HorizontalPodAutoscaler
apiVersion: autoscaling/v2beta1
metadata:
name: sample-app
namespace: my-namespace
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: sample-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: Object
object:
metricName: queue_length
target:
apiVersion: extensions/v1beta1
kind: Deployment
name: sample-app
targetValue: 20
Но, похоже, это не сработает, возможно, мне придется указать - type: Object
несколько иначе.
Я попытался изменить kind
на развертывания, deployments.extension, deployments.extensionsи т. д., но я получаю сообщение об ошибке FailedGetScale
Upd.: Я выяснил, что пространство имен для объекта HPA и целевого объекта должно быть одинаковым, поэтому я изменил его.И теперь я получаю
the HPA was unable to compute the replica count: unable to get metric queue_length: Deployment on default sample-app/unable to fetch metrics from custom metrics API: the server could not find the metric queue_length for deployments.extensions sample-app
Upd2.: Понял: hpa был в пространстве имен default
, в то время как метрика была выставлена на my-namespace
.Так что будьте осторожны с пространствами имен!