У меня есть кластер с 1 панелью управления и 2 узлами.
Istio устанавливается как Service Mesh.
Я запрашиваю управление через istio ingress.
Я хочу, чтобы он автоматически масштабировался путем обмена метриками между Kubernetes HPA и istio prometheus, но не смог.
Мои модули в kube-system
модули kube-системы
root@ubuntu-master:~# kubectl get pods -n kube-system
ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
coredns-78fcd69978-pk69f 1/1 Работает 1 (2д11ч назад) 2д12ч
coredns-78fcd69978-t5dkx 1/1 Работает 1 (2д11ч назад) 2д12ч
etcd-ubuntu-master 1/1 Работает 1 (2д11ч назад) 48д
kube-apiserver-ubuntu-master 1/1 Запуск 2 (2д11ч назад) 48д
kube-controller-manager-ubuntu-master 1/1 Работает 3 (2д11ч назад) 48д
kube-proxy-72q2r 1/1 Работает 0 2d10h
kube-proxy-8qgr9 1/1 Бег 1 (2д11ч назад) 48д
kube-proxy-t4wgr 1/1 Работает 0 2d10h
kube-scheduler-ubuntu-master 1/1 Запуск 3 (2д11ч назад) 48д
metrics-server-84b4bfc7fb-h8gd2 1/1 Работает 0 18h
Мои модули в istio-системе
istio-система
root@ubuntu-master:~# kubectl get pods -n istio-system
ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
grafana-6ccd56f4b6-bw5md 1/1 Бег 0 2d12h
istio-ingressgateway-57c665985b-wj5gr 1/1 Работает 0 2d12h
istiod-78cc776c5b-qkr6b 1/1 Бег 0 2d12h
jaeger-5d44bc5c5d-db2pj 1/1 Бег 0 2d12h
kiali-79b86ff5bc-mj8bn 1/1 Бег 0 2d12h
prometheus-64fd8ccd65-22znf 2/2 работает 0 2d12h
prometheus-adapter-6d9c6c8fdf-lxfbp 1/1 Работает 0 17h
Результат пользовательского интерфейса Прометея:
Результат пользовательского интерфейса Prometheus
Ответ сервера метрик;
Ответ сервера метрик
root@ubuntu-master:~# kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1"
{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"custom.metrics.k8s.io/v1beta1","resources":[{"name":"namespaces/network_transmit_packets_dropped"," singleName":"","namespaced":false,"kind":"MetricValueList","verbs":["get"]},{"name":"namespaces/processes","singularName":""," namespaced":false,"kind":"MetricValueList","verbs":["get"]},{"name":"namespaces/sockets","singularName":"","namespaced":false,"kind ":"MetricValueList","verbs":["get"]},{"name":"пространства имен/spec_memory_swap_limit_bytes","singularName":"","namespaced":false,"kind":"MetricValueList"," глаголы":["получить"]},{"имя":"jobs.batch/kiali_single_validation_processing_duration_seconds_sum","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":[" get"]},{"name":"jobs.batch/kiali_validation_processing_duration_seconds_count","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]}, {"name":"namespaces/kubelet_container_log_filesystem_used_bytes","singularName":"","namespaced":false,"kind":"M etricValueList","verbs":["get"]},{"name":"namespaces/cpu_system","singularName":"","namespaced":false,"kind":"MetricValueList","verbs": ["get"]},{"name":"pods/cpu_user","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]}, {"name":"namespaces/fs_reads_bytes","singularName":"","namespaced":false,"kind":"MetricValueList","verbs":["get"]},{"name":"services /kiali_validation_processing_duration_seconds_sum","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},......
здесь, в моем определении HPA
istio kubernetes hpa
root@ubuntu-master:~# kubectl описать hpa html-pdf-v2-hpa -n html-pdf-v2
Имя: html-pdf-v2-hpa
Пространство имен: html-pdf-v2
Ярлыки: <нет>
Аннотации: metric-config.object.istio-requests-total.prometheus/query:
сумма(
ставка(
istio_requests_total {
назначение_workload="html-pdf-развертывание",
destination_workload_namespace="html-pdf-v2"
}[1м]
)
) /
считать(
считать(
container_memory_usage_bytes{
пространство имен = "html-pdf-v2",
pod=~"html-pdf-развертывание.*"
}
) по (стручку)
)
CreationTimestamp: Ср, 19 января 2022 г., 18:11:14 +0300
Ссылка: Развертывание/html-pdf-развертывание
Метрики: (текущая / целевая)
«istio-requests-total» в Pod/html-pdf-deploy (целевое значение): <неизвестно> / 10
Минимальные реплики: 1
Максимальное количество реплик: 10
Модули развертывания: 5 текущих / 0 желаемых
Условия:
Тип Состояние Причина Сообщение
---- ------ ------ -------
AbleToScale True SucceededGetScale контроллер HPA смог получить текущий масштаб цели
ScalingActive False FailedGetObjectMetric HPA не удалось вычислить количество реплик: невозможно получить метрику istio-requests-total: Pod на html-pdf-v2 html-pdf-deploy/не удалось получить метрики из пользовательского API метрик: сервер не смог найти метрика istio-requests-total для подов
События:
Тип Причина Возраст от сообщения
---- ------ ---- ---- -------
Предупреждение FailedGetObjectMetric 55s (x4255 более 17 часов) горизонтальное средство автоматического масштабирования модуля не может получить метрику istio-requests-total: модуль на html-pdf-v2 html-pdf-deploy/не может получить метрики из пользовательского API метрик: сервер не может найти метрика istio-requests-total для подов
результат kubectl top pods
root@ubuntu-master:~# kubectl top pods -n istio-system
НАЗВАНИЕ ЦП(ядер) ПАМЯТЬ(байт)
графана-6ccd56f4b6-bw5md 2m 39Mi
istio-ingressgateway-57c665985b-wj5gr 10m 85Mi
istiod-78cc776c5b-qkr6b 7m 61Mi
jaeger-5d44bc5c5d-db2pj 3m 809Mi
киали-79b86ff5bc-mj8bn 4м 1125Ми
прометей-64fd8ccd65-22znf 34m 744mi
прометей-адаптер-6d9c6c8fdf-lxfbp 40m 76Mi
ГПА Ямл.
apiVersion: автомасштабирование/v2beta1
вид: HorizontalPodAutoscaler
метаданные:
имя: html-pdf-v2-hpa
пространство имен: html-pdf-v2
аннотации:
метрика-config.object.istio-requests-total.prometheus/запрос: |
сумма(
ставка(
istio_requests_total {
назначение_workload="html-pdf-развертывание",
destination_workload_namespace="html-pdf-v2"
}[1м]
)
) /
считать(
считать(
container_memory_usage_bytes{
пространство имен = "html-pdf-v2",
pod=~"html-pdf-развертывание.*"
}
) по (стручку)
)
спецификация:
максимальное количество реплик: 10
минРеплики: 1
Масштабная целевая ссылка:
apiVersion: приложения/v1
вид: развертывание
имя: html-pdf-развернуть
показатели:
- тип: Объект
объект:
metricName: istio-requests-total
цель:
апиВерсия: v1
вид: стручок
имя: html-pdf-развернуть
целевое значение: 10
Я беспокоюсь о том, где я ошибся и шел ли я по правильному пути.
Первый пост Жду ответов. Надеюсь, я правильно объяснил.
Спасибо