3 совета по развертыванию APISIX в Kubernetes (Часть 2)

Wei Jin

Wei Jin

May 7, 2024

Technology

Эра облачных вычислений привела к широкому распространению Kubernetes как платформы для оркестрации контейнеров, а Apache APISIX стал высокопроизводительным, облачным динамическим API-шлюзом. Развертывание Apache APISIX в Kubernetes становится все более распространенным. Однако, несмотря на относительно простой процесс развертывания Apache APISIX в Kubernetes, есть несколько ключевых вопросов, которые необходимо учитывать. В этой серии статей мы рассмотрим следующие темы:

  1. Вопросы, связанные с методами развертывания
  2. Проверки работоспособности, логирование и мониторинг
  3. Работа с пользовательскими плагинами и конфигурациями

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

Проверки работоспособности

При развертывании APISIX в Kubernetes проверки работоспособности особенно важны, так как они представляют собой базовое требование для приложений в Kubernetes. В Kubernetes, настраивая Liveness и Readiness Probes, можно обеспечить работоспособность и доступность экземпляров APISIX.

  • Liveness Probe используется для определения, работает ли приложение. Если приложение считается неработоспособным, Kubernetes перезапустит экземпляр.

  • Readiness Probe используется для определения, готово ли приложение принимать трафик. Если приложение еще не готово, оно не будет получать трафик. Это помогает предотвратить отправку трафика на экземпляры, которые либо не полностью запущены, либо повреждены.

Правильно настроив Liveness и Readiness Probes, Kubernetes может автоматически управлять неработоспособными экземплярами Pod. Это означает, что при возникновении проблем Kubernetes автоматически перезапустит экземпляры или прекратит отправку трафика на неработоспособные экземпляры, тем самым повышая доступность и стабильность системы.

Пример конфигурации YAML:

apiVersion: v1 kind: Deployment metadata: name: my-apisix-pod spec: containers: - name: my-apisix-container image: my-apisix-image livenessProbe: httpGet: path: /healthz port: 9080 initialDelaySeconds: 15 periodSeconds: 10 readinessProbe: httpGet: path: /readyz port: 9080 initialDelaySeconds: 10 periodSeconds: 5

Этот пример определяет Liveness и Readiness Probes для контейнера. Liveness Probe отправляет HTTP GET-запрос на путь /healthz каждые 10 секунд, чтобы проверить состояние контейнера. Если контейнер не отвечает или возвращает код состояния, отличный от 200, Kubernetes считает контейнер неработоспособным и пытается его перезапустить. Readiness Probe работает аналогично, но используется для проверки готовности контейнера принимать трафик.

Мониторинг

Существует несколько способов мониторинга APISIX во время выполнения, и интеграция с Prometheus является рекомендуемым подходом. Фактически, Prometheus остается наиболее широко используемым компонентом мониторинга на сегодняшний день.

Интеграция с Prometheus помогает собирать и отслеживать метрики для APISIX и проксируемых им сервисов. Эти метрики могут включать частоту запросов, частоту ошибок, задержку и другие ключевые показатели производительности. Мониторинг этих метрик позволяет своевременно выявлять проблемы, а также проводить настройку производительности и устранение неполадок. Убедитесь, что метрики и правила оповещения настроены правильно, чтобы оперативно реагировать на возникающие проблемы.

Включение плагина Prometheus в APISIX довольно просто. Сначала установите export_uri в config.yaml.

plugin_attr: prometheus: export_uri: /apisix/metrics

Затем включите плагин на API или сервисе, который необходимо анализировать с помощью Prometheus.

curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/hello", "plugins": { "prometheus":{} }, "upstream": { ... } }'

Наконец, сервер Prometheus может периодически получать конфигурации из export_uri.

scrape_configs: - job_name: "apisix" scrape_interval: 15s metrics_path: "/apisix/prometheus/metrics" static_configs: - targets: ["127.0.0.1:9091"]

В реальном использовании Prometheus также требует развертывания в высокодоступном режиме, например, с использованием открытых решений, таких как Thanos. Интеграция с APISIX может быть достигнута с использованием режима sidecar Thanos.

Логирование

В APISIX важные логи можно разделить на два типа: логи трафика и логи аудита.

  • Логи трафика относятся к записи каждого запроса, когда APISIX выступает в роли обратного прокси. Эти логи содержат информацию о запросе и ответе, а также внутренние логи операций APISIX, что важно для отслеживания и устранения неполадок. Обычно для записи устанавливаются соответствующие уровни и форматы логов. В реальных сценариях рекомендуется выводить логи в централизованную систему логирования, такую как ELK (Elasticsearch, Logstash и Kibana), Fluentd или Splunk. APISIX предоставляет плагины для логирования на выбор.

  • Логи аудита в основном относятся к логам, которые генерируются при управлении конфигурациями APISIX. Они не только помогают соответствовать требованиям соответствия, но и используются для анализа безопасности. Анализируя логи аудита, можно выявить потенциальные риски безопасности, неправильные конфигурации или действия управления, а также принять соответствующие меры для повышения безопасности системы.

Открытая версия APISIX предоставляет Admin API для удобного распределения конфигураций, но не включает конфигурации, связанные с логами аудита. Обычно пользователям необходимо самостоятельно записывать эти логи или использовать корпоративную версию APISIX.

Конфигурация логирования в Kubernetes не сильно отличается от других сред. Стоит отметить, что при настройке upstream и связанной информации в APISIX часто используется обнаружение сервисов Kubernetes. Рекомендуется записывать имя сервиса в логи для упрощения устранения неполадок в дальнейшем.

Заключение

Настроив механизмы проверки работоспособности для обнаружения неработоспособных экземпляров APISIX, Kubernetes может оперативно принимать меры для перенаправления трафика и восстановления, тем самым обеспечивая непрерывность и стабильность API-сервисов. APISIX также поддерживает интеграцию с продвинутыми инструментами мониторинга, такими как Prometheus, что позволяет отслеживать производительность и стабильность API, включая ключевые метрики, такие как частота запросов, частота ошибок и задержка. Эта возможность мониторинга позволяет организациям быстро выявлять потенциальные проблемы, проводить своевременную настройку производительности и оптимизацию, обеспечивая эффективную работу API-сервисов.

Tags: