У меня есть кластер Kubernetes, работающий в Google Kubernetes Engine, где я буду sh, чтобы масштабировать развертывание в зависимости от количества сообщений, находящихся в подписке GCP Pub / Sub. Я нашел и последовал руководство от Google, которое описывает именно этот сценарий , которое включает в себя развертывание custom-metrics-stackdriver-adapter .
Однако, поскольку имя моей подписки закончилось Когда я запускаю kubectl describe hpa <MY_HPA_NAME>
длиной 63 символа, я получаю следующие события.
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedGetExternalMetric 12s (x2 over 27s) horizontal-pod-autoscaler invalid label value: "<MY_VERBOSE_SUBSCRIPTION_NAME>": must be no more than 63 characters
Warning FailedComputeMetricsReplicas 12s (x2 over 27s) horizontal-pod-autoscaler failed to get pubsub.googleapis.com|subscription|num_undelivered_messages external metric: invalid label value: "<MY_VERBOSE_SUBSCRIPTION_NAME>": must be no more than 63 characters
Как мне go использовать имя подписки, которое превышает 63 символа в качестве метри c для запуска HPA ?
Дополнительные вопросы
Я пытался посмотреть, какие значения метри c выставлены, но когда я запрашивал API пользовательских метрик Kubernetes, я не вижу никаких фактических значений для этого метри c выполнив следующее:
$ kubectl get --raw "http://localhost:8001/apis/custom.metrics.k8s.io/v1beta1/namespaces/*/pods/*/pubsub.googleapis.com|subscription|num_undelivered_messages" | jq .
{
"kind": "MetricValueList",
"apiVersion": "custom.metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/custom.metrics.k8s.io/v1beta1/namespaces/%2A/pods/%2A/pubsub.googleapis.com%7Csubscription%7Cnum_undelivered_messages"
},
"items": []
}
Однако, как вы можете видеть, это вернуло пустые списки "items"
, указывающие на то, что значения не были записаны. Я предположил, что это произошло из-за того, что все мои подписные имена были длиной более 63 символов. Чтобы проверить это, я сделал новую подписку с очень коротким именем и воссоздал HPA, который будет вызван этой новой подпиской. На этот раз модули действительно масштабировались так, как я ожидал , но , когда я запрашивал пользовательский API-интерфейс Metri c, как указано выше, он все еще возвращался и пустой список "items"
.
Должен ли я ожидать увидеть значения в этом ответе (и их ярлыки)? Как Кубернетес мог масштабировать стручки, если не было "items"
?