Kiali – Нет трафика от “Кластера пропуска”

Вопрос или проблема

Я запускаю кластер AKS (Kubernetes на Azure) с их собственным плагином Istio (вставляет istio в aks-istio).

В результате мне пришлось пройти через некоторые конфигурационные ухищрения, чтобы перенаправить все в правильное пространство имен для Istio – все работает.

Кроме Kiali – я не вижу никакого исходящего трафика за пределами Pass Through Cluster.

введите описание изображения здесь

У меня установлено REGISTRY_ONLY, и это работает, как только я удаляю свои Service Entries, трафик останавливается – но я хотел бы видеть исходящий трафик.

Я предполагаю, что это связано с тем, что у меня неправильно настроен Prometheus – так как я не могу найти никаких ссылок на PassThrough Cluster в своих данных – но также нет документации, чтобы помочь с его настройкой.

У меня настроены два Service Monitors – которые захватывают большую часть моего трафика – просто не хватает кластера.

    {
    "apiVersion": "monitoring.coreos.com/v1",
    "kind": "ServiceMonitor",
    "metadata": {
        "labels": {
            "monitoring": "istio-dataplane",
            "release": "prometheus"
        },
        "name": "prometheus-oper-istio-dataplane",
        "namespace": "monitoring",

    "spec": {
        "endpoints": [
            {
                "interval": "15s",
                "path": "/stats/prometheus",
                "relabelings": [
                    {
                        "action": "keep",
                        "regex": "istio-proxy",
                        "sourceLabels": [
                            "__meta_kubernetes_pod_container_name"
                        ]
                    },
                    {
                        "action": "keep",
                        "sourceLabels": [
                            "__meta_kubernetes_pod_annotationpresent_prometheus_io_scrape"
                        ]
                    },
                    {
                        "action": "replace",
                        "regex": "([^:]+)(?::\\d+)?;(\\d+)",
                        "replacement": "$1:$2",
                        "sourceLabels": [
                            "__address__",
                            "__meta_kubernetes_pod_annotation_prometheus_io_port"
                        ],
                        "targetLabel": "__address__"
                    },
                    {
                        "action": "keep",
                        "regex": ".*-envoy-prom",
                        "sourceLabels": [
                            "__meta_kubernetes_pod_container_port_name"
                        ]
                    },
                    {
                        "action": "labelmap",
                        "regex": "__meta_kubernetes_pod_label_(.+)"
                    },
                    {
                        "action": "replace",
                        "sourceLabels": [
                            "__meta_kubernetes_namespace"
                        ],
                        "targetLabel": "namespace"
                    },
                    {
                        "action": "replace",
                        "sourceLabels": [
                            "__meta_kubernetes_pod_name"
                        ],
                        "targetLabel": "pod_name"
                    }
                ],
                "targetPort": "http-envoy-prom"
            }
        ],
        "jobLabel": "envoy-stats",
        "namespaceSelector": {
            "any": true
        },
        "selector": {
            "matchExpressions": [
                {
                    "key": "istio-prometheus-ignore",
                    "operator": "DoesNotExist"
                }
            ]
        }
    }
}
{
    "apiVersion": "monitoring.coreos.com/v1",
    "kind": "ServiceMonitor",
    "metadata": {
        "labels": {
            "release": "prometheus"
        },
        
        "name": "prometheus-oper-istio-controlplane",
        "namespace": "monitoring",
        "resourceVersion": "1152559",
        "uid": "6c4a1080-e2ff-456c-ae86-23caaf73fe73"
    },
    "spec": {
        "endpoints": [
            {
                "interval": "15s",
                "port": "http-monitoring"
            },
            {
                "interval": "15s",
                "port": "http-policy-monitoring"
            }
        ],
        "jobLabel": "istio",
        "namespaceSelector": {
            "any": true
        },
        "selector": {
            "matchExpressions": [
                {
                    "key": "istio",
                    "operator": "In",
                    "values": [
                        "mixer",
                        "pilot",
                        "galley",
                        "citadel",
                        "sidecar-injector"
                    ]
                }
            ]
        }
    }
}

Ответ или решение

Проблема, с которой вы столкнулись в Kiali с отсутствием трафика, отображаемого в "Passthrough cluster", является довольно распространенной среди пользователей Istio, особенно в контексте работы с AKS (Azure Kubernetes Service). Давайте детально рассмотрим возможные причины и способы решения данной проблемы.

1. Понимание концепции Passthrough Cluster

Passthrough Cluster в Istio используется для маршрутизации трафика к сервисам, которые не требуют мьютекса (matching) политики безопасности. Проще говоря, это означает, что трафик не проходит через Istio. В результате Kiali может не отображать статистику этого трафика, так как он не проходит через Envoy (прокси Istio).

2. Проверка конфигурации Istio

Поскольку вы упомянули, что у вас есть специфическая конфигурация для Istio в вашем AKS, необходимо убедиться, что ваши Service Entries настроены правильно. Вот несколько аспектов, на которые следует обратить внимание:

  • Убедитесь, что ваши Service Entries корректно объявлены и соответствуют внешним сервисам, к которым вы хотите позволить доступ.
  • Проверьте, что Service Entries имеют правильные настройки, такие как ports, addresses, и что они включены в активное пространство имен. Неверные конфигурации могут привести к тому, что трафик будет считаться "Passthrough".

3. Настройка Prometheus

Вы упоминаете, что у вас могут быть проблемы с настройкой Prometheus. Для мониторинга трафика в Kiali важно, чтобы Prometheus правильно собирал метрики. Ваши ServiceMonitors выглядят неплохо, но есть несколько рекомендаций:

  • Убедитесь, что ваши ServiceMonitor имеют правильные метки, чтобы они соответствовали вашим подам. Например, в вашем первом ServiceMonitor проверьте наличие меток в контейнере, чтобы исключить их из сбора данных.
  • Проверьте, что настройки путей и портов в ваших ServiceMonitor верны и соответствуют тем, что экспортирует Envoy Proxy (обычно это /stats/prometheus).

Например, если ваши поды не имеют аннотации prometheus.io/scrape, они могут быть пропущены Prometheus:

metadata:
  annotations:
    prometheus.io/scrape: "true"

4. Настройка Kiali

Проверьте настройки Kiali, чтобы убедиться, что вы используете правильные разрешения и настройки подов для извлечения метрик маршрутов. Важные аспекты:

  • Убедитесь, что Kiali настроен для доступа к Prometheus.
  • Проверьте, правильно ли настроен отображение трафика для ваших сервисов в Kiali.

5. Диагностика и логирование

Если ничего из вышеуказанного не помогло, важно включить подробное логирование для Istio и Prometheus, чтобы выявить любые ошибки в маршрутизации или неправильно собранные метрики. Изучение логов поможет уточнить, куда именно уходит трафик и будь то ошибки в передаче данных.

Заключение

Отсутствие трафика в Kiali из "Passthrough cluster" можно исправить путем тщательной проверки конфигурации Istio, настройки Prometheus и Kiali, а также внимательного анализа логов для диагностики проблемы. Убедитесь, что все сервисы правильно настроены и что Prometheus правильно собирает метрики для анализа. Надеюсь, эти рекомендации помогут вам исправить ситуацию и увидеть нужный трафик в Kiali.

Оцените материал
Добавить комментарий

Капча загружается...